Jaka jest różnica między poleceniem sudo i su?

12

Jaka jest różnica między poleceniem sudoa su? Dlaczego OS X obsługuje je inaczej niż Linux?

whitefleaCH
źródło
1
Jeśli już, Linux będzie traktował je inaczej niż OS X. OS X ma certyfikat Unix, co oznacza, że ​​jest zgodny z pewnym standardem zachowania. Linux jest podobny do Uniksa, ale nie ma certyfikatu Unix i niekoniecznie jest zgodny ze standardem Unix. Jeśli więc istnieją różnice (inne niż problem z hasłem rootem odnotowany w odpowiedzi Aaron Lake), są one niezgodne ze strony implementatorów konkretnej dystrybucji Linuksa.
alesplin

Odpowiedzi:

21

OS X uchwyty sudoi suidentycznie jak Linux.

sudoto polecenie, które bez żadnych dodatkowych opcji uruchomi polecenie jako root. Na przykład:

% touch /newfile
touch: /newfile: Permission denied
% ls -l /newfile
ls: /newfile: No such file or directory
% sudo touch /newfile
% ls -l /newfile 
-rw-r--r--  1 root  wheel  0 Apr 27 11:45 /newfile

suz drugiej strony, zmieni bieżącego użytkownika na root (ponownie bez żadnych dodatkowych poleceń). W poniższym przykładzie muszę uruchomić sudo su, ponieważ nie znam hasła roota dla mojego systemu:

% whoami
alake
% sudo su
$ whoami
root

Kluczową różnicą między sudoi sujest sudouruchamianie komendy jako root, natomiast supowoduje rootowanie. Podobnie jak inne narzędzia wiersza poleceń, istnieje wiele alternatywnych sposobów korzystania z obu, sudoa sujeśli jesteś zainteresowany, zawsze możesz uruchomić man <command>np. man sudoaby uzyskać więcej informacji.

Aaron Lake
źródło
5
W prostym języku sudomożna nazwać as super user and do. Dodatkowo, w OS X, po pomyślnym uwierzytelnieniu, możesz następnie używać sudo bez hasła przez krótki czas (domyślnie 5 minut, chyba że zostanie zastąpione sudoers), po czym będziesz musiał ponownie wpisać hasło.
binarybob
1
„bez dodatkowych opcji” jest dość znaczącym kwalifikatorem ... oba pozwolą ci stać się użytkownikami innymi niż root ... np. sudo su -lm _wwwpozwolą ci mieć taką powłokę jak użytkownik serwera WWW (uruchamiając polecenie jako root, jako nie ma prawidłowego hasła)
Joe
2
@Joe, zastanawiałem się nad dodaniem tych informacji, ale zostało to pominięte ze względu na zwięzłość. Jak opisujesz, sudojest to dość solidne narzędzie, a obejmowanie nawet tutaj podstawową funkcjonalnością ostatecznie dezorientuje lub przytłacza docelowych odbiorców szukających rozróżnienia między sudoi su.
Aaron Lake
„Kluczową różnicą między sudo i su jest to, że sudo uruchamia polecenie jako root, podczas gdy su powoduje rootowanie” - false, sudo -suruchamia powłokę („powoduje rootowanie”) i su -c commanduruchamia polecenie jako root.
el.pescado
2
Znowu ze względu na zwięzłość pominąłem wiele alternatywnych metod używania sudo. Ponadto nie można su -c commanddomyślnie robić tego w systemie OS X, ponieważ nie znasz hasła użytkownika root. Możesz jednak sudo suzmienić hasło su -c command. Wydaje mi się, że odpowiedziano na to pytanie i nie było potrzeby zagłębiania się w alternatywne zastosowania sudo i su. Jednak zaktualizuję post dla ciekawskich ludzi.
Aaron Lake