- Po uruchomieniu pliku wykonywalnego czasami system operacyjny odmawia zgody na to. Na przykład konieczne będzie uruchomienie
make install
z prefiksem będącym ścieżką systemowąsudo
, podczas gdy prefiks będący ścieżką niesystemową nie będzie wymaganysudo
. W jaki sposób system operacyjny decyduje, że uruchomienie pliku wykonywalnego wymagałoby więcej uprawnień niż użytkownik, nawet zanim program coś zrobi? - Czasami uruchomienie programu nie zostanie pozbawione uprawnień, ale program będzie mógł robić więcej rzeczy, jeśli zostanie uruchomiony
sudo
. Na przykład, gdy jest uruchomionydu
w jakimś katalogu systemowym, tylko przysudo
nim 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ć? - Czy to prawda, że zawsze, gdy
sudo
działa,su
będzie działać, a kiedysu
działa,sudo
będzie działać? czy zsu
, użytkownik może zrobić więcej niż zsudo
? Jak system operacyjny decyduje, kiedysudo
działa, a kiedysu
jest potrzebny?
permissions
sudo
StackExchange dla wszystkich
źródło
źródło
Odpowiedzi:
sudo
, uruchamiasz go pod nazwą innego użytkownika. Jeśli ten użytkownik jest w stanie „robić więcej rzeczy” niż twój użytkownik, asudo
konfiguracja pozwala ci robić te rzeczy w imieniu innego użytkownika, wówczas tak,sudo
pozwoli ci robić więcej rzeczy. Nie jest to jednak konieczne. Jeśli po prostu przyczepnośćsudo
na na początku linii poleceń, jesteś rzeczywiściesudo
ing jakroot
, więc zwykle jesteś w stanie zrobić coś więcej niż zwykły śmiertelnik.sudo
, musisz podać własne hasło użytkownika, a następnie możesz robić pewne rzeczy w imieniu użytkownika docelowego. Aby go użyćsu
, potrzebujesz hasła użytkownika docelowego, a jeśli go masz, stajesz się użytkownikiem docelowym, jeśli chodzi o system i możesz zrobić wszystko, co użytkownik może zrobić.Zobacz też
źródło
chmod
warunkiem, że jesteś właścicielem pliku lubroot
.chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello
tworzy fajne „Cześć, świecie!” wynik.Dla celów, które opisałeś, system operacyjny nie decyduje, czy potrzebujesz sudo, aby początkowo uruchomić program. Zamiast tego, po uruchomieniu programu, a następnie próbie zrobienia czegoś, co nie jest dozwolone przez bieżącego użytkownika (takiego jak napisanie pliku w
/usr/bin
celu zainstalowania nowego polecenia), system operacyjny uniemożliwia dostęp do pliku. Działanie, jakie należy podjąć w tym stanie, zależy od programu;make
przestaje działać, aledu
po wydrukowaniu wiadomości przechodzi do następnego pliku / katalogu.su
Isudo
polecenia są dwa różne sposoby uruchamiania programu z uprawnieniami administratora. Mogą się różnić drobnymi szczegółami, takimi jak zawartość środowiska podczas uruchamiania nowego programu, w zależności od użytych opcji. System operacyjny nie musi decydować, kiedy jeden lub drugi może działać.źródło
su
isudo
są programami uprzywilejowanymi.su
zmienia (po udanym uwierzytelnieniu) rzeczywisty i skuteczny identyfikator użytkownika i grupy na identyfikator użytkownikasu
. Tak więcsu
jest podobny dologin
. Pamiętaj, żesu
można go zmienić na dowolnego użytkownika, nie tylko root.sudo
zmienia także rzeczywiste i skuteczne identyfikatory użytkowników i grup. Do tego momentusu
isudo
są podobne (ale niezwiązane), poza tym są bardzo różne.Dzięki
su
musisz znać hasło celu, a po uwierzytelnieniu możesz robić, co chcesz jako ten użytkownik. Użyciesu
można ograniczyć, ustawiającSU_WHEEL_ONLY
w/etc/login.defs
. Jeśli jest ustawiony, tylko użytkownicy w grupiewheel
mogą korzystaćsu
, w przeciwnym razie nie jest to ograniczone. Poza tymsu
wszystko jest albo nic.sudo
pod tym względem jest zupełnie inna. Dziękisudo
możesz zdefiniować dość złożone zasady/etc/sudoers
dotyczące tego, co może robić sudoer (użytkownik dzwoniącysudo
). Na przykład można zdefiniować zasady, w których niektórzy użytkownicy mogą uruchamiać tylko niektóre programy z określonymi uprawnieniami, podczas gdy inni użytkownicy mogą uruchamiać inne programy z innymi uprawnieniami.Jedną z charakterystycznych cech
sudo
jest to, że można go skonfigurować tak, aby użytkownik musiał uwierzytelnić się własnym hasłem (zamiast hasła celu). W ten sposóbsudo
stał się bardzo popularny wśród administratorów, ponieważ pozwala autoryzować użytkowników do wykonywania tylko określonych uprzywilejowanych operacji bez podawania hasła administratora, a także zyskujesz pewien stopień odpowiedzialności.źródło
tl; dr Access jest określany przez użytkownika, który uruchamia aplikację i
sudo
uruchamia aplikacje jako inny użytkownik.Pełna wersja:
Nie wie UNIX zarządza uprawnieniami nie na poziomie aplikacji, ale na poziomie systemu plików: użytkownicy mają dostęp do określonych plików. Aplikacje są następnie uruchamiane w imieniu użytkownika - z każdym uruchomionym procesem jest powiązany użytkownik. Ten użytkownik służy do określania uprawnień dla tej aplikacji. Sudo działa, uruchamiając aplikacje w imieniu innego użytkownika (z uprawnieniami powiązanymi z tym innym użytkownikiem), a mianowicie
root
administratora.Jeśli chodzi o twoje przykłady:
Jeśli użytkownik ma dostęp do zapisu do określonego katalogu, może
make install
do niego przejść . W przeciwnym razie mogą toroot
zrobić - za pomocąsudo
.Jeśli nie możesz uzyskać dostępu do plików w katalogu,
du
uruchomienie dla ciebie również nie może uzyskać do niego dostępu.root
ma dostęp do praktycznie każdego pliku, więcsudo du
(du
uruchamiany w imieniuroot
) może również uzyskać do nich dostęp.Tak i nie. Tak, jeśli program jest rzeczywiście działać, powinien zachowywać się tak samo zarówno pod
sudo
asu
.sudo
Zapewnia jednak bardziej szczegółową kontrolę nad tym, kto może uruchamiać to za pomocą zestawu reguł przechowywanych w/etc/sudoers
pliku.su
jest prostsze - jeśli znasz hasło użytkownika docelowego, możesz uruchamiać programy w imieniu tego użytkownika.Ostatnia uwaga: sposób, w jaki aplikacja obsługuje odmowę dostępu (gdy przerywa działanie, ignoruje lub ostrzega użytkownika), zależy od aplikacji.
źródło
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 zsu
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).źródło