Was ist der Unterschied zwischen dem Befehl sudo und su?

12

Was ist der Unterschied zwischen dem Befehl sudound su? Warum behandelt OS X diese anders als Linux?

WhitefleaCH
quelle
1
Wenn überhaupt, würde Linux damit anders umgehen als mit OS X. OS X ist Unix-zertifiziert, was bedeutet, dass es einem bestimmten Verhaltensstandard entspricht. Linux ist Unix-ähnlich, aber nicht Unix-zertifiziert und entspricht nicht unbedingt dem Unix-Standard. Wenn es also Unterschiede gibt (abgesehen von dem in der Antwort von Aaron Lake angegebenen Root-Passwort), sind diese auf Seiten der Implementierer der jeweiligen Linux-Distribution nicht konform.
Alesplin

Antworten:

21

OS X behandelt sudoundsu identisch mit Linux.

sudoist ein Befehl, der ohne zusätzliche Optionen einen Befehl als root ausführt. Beispielsweise:

% 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

suAuf der anderen Seite wird der aktuelle Benutzer auf root umgestellt (erneut ohne zusätzliche Befehle). Im folgenden Beispiel muss ich ausführen sudo su, da ich das root-Passwort für mein System nicht kenne:

% whoami
alake
% sudo su
$ whoami
root

Der Hauptunterschied zwischen sudound suist, dass sudoein Befehl als root ausgeführt wird, wohingegen suSie root werden. Ähnlich wie andere Dienstprogramme Kommandozeile gibt es eine Reihe von alternativen Möglichkeiten , beide zu verwenden sudound su, wenn Sie interessiert sind , können Sie immer laufen man <command>zB. man sudoum mehr Informationen zu erhalten.

Aaron Lake
quelle
5
In einfachen Worten sudokann man allerdings von as sprechen super user and do. Wenn Sie sich unter OS X erfolgreich authentifiziert haben, können Sie sudo für kurze Zeit (standardmäßig 5 Minuten, sofern nicht überschrieben sudoers) ohne Kennwort verwenden. Anschließend müssen Sie das Kennwort erneut eingeben.
Binarybob
1
Das 'ohne zusätzliche Optionen' ist ein ziemlich wichtiges Qualifikationsmerkmal. Beide erlauben es Ihnen, andere Benutzer als root zu werden. Beispielsweise sudo su -lm _wwwhaben Sie eine Shell, als ob der Webserver-Benutzer (indem Sie den Befehl als root ausführen, als es hat kein gültiges Passwort)
Joe
2
@ Joe, ich habe überlegt, ob ich diese Informationen hinzufügen soll, aber der Kürze halber weggelassen. Wie Sie beschreiben, sudohandelt es sich um ein recht robustes Hilfsprogramm, das die Zielgruppe, die nach einer Unterscheidung zwischen sudound sucht, letztendlich verwirren oder überwältigen würde, wenn auch nur grundlegende Funktionen abgedeckt werden su.
Aaron Lake
"Der Hauptunterschied zwischen sudo und su ist, dass sudo einen Befehl als root ausführt, während su Sie zum root macht" - false, sudo -sshell ausführt ("macht Sie zum root") und su -c commandcommand als root ausführt.
el.pescado
2
Der Kürze halber habe ich die vielen alternativen Verwendungsmethoden weggelassen sudo. Unter su -c commandOS X ist dies standardmäßig nicht möglich , da Sie das root-Passwort nicht kennen. Sie können dann jedoch sudo sudas Passwort ändern su -c command. Ich habe das Gefühl, dass die Frage beantwortet wurde und es nicht notwendig war, tiefer in die alternative Verwendung von sudo und su einzutauchen. Allerdings werde ich den Beitrag für die neugierigen Leute aktualisieren.
Aaron Lake