Jaka jest różnica między poleceniem sudo
a su
? Dlaczego OS X obsługuje je inaczej niż Linux?
Jaka jest różnica między poleceniem sudo
a su
? Dlaczego OS X obsługuje je inaczej niż Linux?
Odpowiedzi:
OS X uchwyty sudo
i su
identycznie jak Linux.
sudo
to 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
su
z 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 sudo
i su
jest sudo
uruchamianie komendy jako root, natomiast su
powoduje rootowanie. Podobnie jak inne narzędzia wiersza poleceń, istnieje wiele alternatywnych sposobów korzystania z obu, sudo
a su
jeśli jesteś zainteresowany, zawsze możesz uruchomić man <command>
np. man sudo
aby uzyskać więcej informacji.
sudo su -lm _www
pozwolą ci mieć taką powłokę jak użytkownik serwera WWW (uruchamiając polecenie jako root, jako nie ma prawidłowego hasła)
sudo
jest 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 sudo
i su
.
sudo -s
uruchamia powłokę („powoduje rootowanie”) i su -c command
uruchamia polecenie jako root.
sudo
. Ponadto nie można su -c command
domyślnie robić tego w systemie OS X, ponieważ nie znasz hasła użytkownika root. Możesz jednak sudo su
zmienić 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.