Nikt jeszcze nie ma ✓, więc ułożyłem odpowiedź, która zawiera wszystko, o czym mogę myśleć.
1 Po uruchomieniu pliku wykonywalnego czasami system operacyjny odmawia zgody na to. Na przykład uruchomienie make install z prefiksem będącym ścieżką systemową będzie wymagało sudo, podczas gdy prefiks będący ścieżką niesystemową nie będzie pytany o sudo. W jaki sposób system operacyjny decyduje, że uruchomienie pliku wykonywalnego wymagałoby więcej uprawnień niż użytkownik, nawet zanim program coś zrobi?
Nie, nie jest to wykonywane po uruchomieniu pliku wykonywalnego. Odbywa się to, gdy plik wykonywalny próbuje coś zrobić.
System operacyjny sprawdzi uprawnienia systemu plików i możliwości (nie są one objęte uprawnieniami systemu plików i obejmują zmniejszenie ładnego poziomu, mknode, niektóre elementy sieciowe niskiego poziomu, zabijanie procesów innych, restart, ustawianie czasu itp.). Jeśli nie masz uprawnień, nie możesz tego zrobić. Root ma pełny zestaw możliwości, w tym CAP_DAC_OVERRIDE (ignorowanie uprawnień do plików).
2 Czasami uruchomienie programu nie będzie pozbawione uprawnień, ale program będzie mógł robić więcej rzeczy, jeśli zostanie uruchomiony z sudo. Na przykład, gdy uruchomisz du w jakimś katalogu systemowym, tylko z sudo będzie mógł uzyskać dostęp do jakiegoś katalogu. Dlaczego system operacyjny nie odmawia zgody na uruchomienie takiego programu lub preferowane jest powiadomienie przyjazne, zanim program będzie mógł działać?
System operacyjny nie może wiedzieć, co zrobi program. Tak więc program powinien sprawdzić uprawnienia przed uruchomieniem i zdecydować, co zrobić. Nie musi tego jednak robić.
Uwaga: na Androidzie jest manifest, w którym aplikacja deklaruje, jakich uprawnień może użyć. System operacyjny zabije każdą aplikację, która próbuje użyć przywileju, którego nie deklaruje, a system operacyjny nie zawsze gwarantuje, że przywilej ten może zostać uznany. np. dostęp do sieci może być niedostępny.
2 Czy to prawda, że za każdym razem, gdy sudo działa, su również działa, a ilekroć su działa, sudo również działa? czy z su użytkownik może zrobić więcej niż z sudo? Jak system operacyjny decyduje, kiedy sudo działa i kiedy su jest potrzebne?
sudo
i z su
grubsza pobierajcie próbki. Niektóre różnice dotyczą obsługi zmiennych środowiskowych i innych takich problemów związanych z bezpieczeństwem. Są to jednak oba narzędzia, które pozwalają zostać innym użytkownikiem, i oba mają domyślnego użytkownika root.
su
było oryginalnym narzędziem, wymaga podania hasła użytkownika / grupy, na którą się zmieniasz.
sudo
jest nowszy i domyślnie wymaga wprowadzenia własnego hasła, ale można go skonfigurować tak, aby akceptował hasło użytkownika / grupy, do którego się przełączasz, lub w ogóle go nie ma. Umożliwia także wiele konfiguracji, z jakimi poleceniami będzie współpracował, dla kogo i jak będzie się uwierzytelniał w tym programie dla tego użytkownika na tym komputerze. Jest to również sudoedit
część sudo
i może być użyte do umożliwienia edycji jako inny użytkownik i uniknięcia problemu bezpieczeństwa wynikającego z podpaskalowania poza edytorem (wywoływanie exec z edytora w celu uruchomienia dowolnego procesu z eskalowanymi uprawnieniami).