Unix nie jest tak naprawdę systemem desktopowym. To system działający na dużym komputerze, który kosztuje mniej więcej tyle, ile dom zlokalizowany gdzieś w piwnicy Twojej uczelni. Ty, jako ktoś, kogo nie stać na własny komputer, musisz go dzielić z dwoma tysiącami innych, a nawet z kilkudziesięcioma użytkownikami jednocześnie.
Nawiasem mówiąc, obecnie możesz także uruchomić system podobny do Uniksa na swoim komputerze stacjonarnym lub na SoC wielkości karty kredytowej, który kosztuje 20 $.
Zasadniczo jednak Unix nie jest przeznaczony dla pojedynczych użytkowników. Pojedynczy użytkownik nie jest ważny. To, co znajduje się w twoim katalogu domowym, jest twoim problemem, ale to, co może zrobić root
, to problem każdego. Dlatego tylko kilka zadań, które naprawdę wymagają pracy jako root
, powinno być wykonanych z tym użytkownikiem, a najlepiej (aby ograniczyć okno czasowe, w którym możesz wyrządzić krzywdę) nie logując się na to konto, ale jawnie używając sudo
dla pojedynczych poleceń, które tego wymagają. Jest w tym również dużo religii, dlatego niektórzy dystrybutorzy są tak cholernie aroganccy, że grożą ci, gdy wpiszesz su
zamiast sudo
dla każdego z nich 10 różnych poleceń apt
, które musisz uruchomić, aby zainstalować jakąś drobnostkę.
Więc możesz usunąć wszystkie swoje osobiste zdjęcia bez bycia root
. Zgadza się. Złośliwe oprogramowanie może usunąć całą zawartość katalogu domowego, to prawda. Może odmówić usługi, wypełniając dysk, dopóki nie zostanie osiągnięty limit użytkowników, to prawda. Ale z punktu widzenia systemu to tylko twój problem i nikogo to nie obchodzi. Żaden inny użytkownik nie jest (w zasadzie) zagrożony.
Problem z nowoczesnym systemem dla jednego (lub kilku) użytkowników polega na tym, że model zabezpieczeń logiki biwalentnej jest zupełnie nie do zastosowania, podobnie jak „są setki użytkowników „pomysł.
Na szczęście bardzo trudno jest wymyślić coś lepszego. Spójrz na Windows, jeśli chcesz zobaczyć, jak nie ukraść pomysłu (naprawdę udało im się pogorszyć złe podejście).
Niektóre przeglądarki internetowe i systemy operacyjne telefonów (lub smart TV) próbują (i zawodzą ) w dostarczaniu czegoś lepszego, a współczesny Linux ma też bardziej drobnoziarnisty system (ale nie wiedziałbym, jak go poprawnie skonfigurować, nie spędzając tygodni swojego czasu).
Problem polega na tym, że biwalentny model bezpieczeństwa zakłada, że normalne aplikacje nie wymagają żadnych przywilejów (co jest błędne, ponieważ niektóre w większości nieszkodliwe rzeczy wymagają uprawnień), podczas gdy niestandardowe aplikacje wymagają pełnego dostępu do systemu komputerowego (który jest również źle, prawie żaden program nigdy nie potrzebuje pełnego dostępu).
Z drugiej strony nawet bardziej szczegółowe modele zabezpieczeń (które nadal są dość zgrubne) przyjmują błędne założenie, że jeśli aplikacja zażąda zestawu uprawnień , naprawdę potrzebuje tego pełnego zestawu, a użytkownik czuje się komfortowo z jego przyznaniem.
O ile wiem, nie ma rdzeń, w którym aplikacja może zażądać uprawnień A, B i C, a użytkownik może zgodzić się na przyznanie A (ale nie B i C), a aplikacja może następnie zapytać, jakie uprawnienia otrzymała i zdecydować, czy jest w stanie wykonać żądane zadanie, czy nie.
W związku z tym, ogólnie rzecz biorąc, masz możliwość przyznania aplikacji XYZ „przechowywania danych w stałym magazynie” (z czym być może zgadzasz się) oraz „Uzyskaj dostęp do mojej lokalizacji” i „uzyskaj dostęp do moich danych osobowych” lub „zainstaluj sterownik systemowy” (z którym nie zgadzasz się), albo nie możesz uruchomić programu.
Lub możesz zezwolić programowi XYZ aby „wprowadzić zmiany w komputerze”, cokolwiek to znaczy, lub możesz go nie uruchamiać. I za każdym razem musisz to potwierdzać. Co, szczerze mówiąc, naprawdę jest do bani z punktu widzenia użytkownika.