Für die Grundoperation - Ausführen von Befehlen als root - ist der sichtbarste Unterschied zwischen sudo und su, dass sudo das Passwort des aufrufenden Benutzers (dh Ihr Passwort) erfordert, während su das Passwort des Zielbenutzers (dh das root-Passwort) erfordert. Die Auswirkungen auf die Sicherheit wurden bereits in einer früheren Frage ausführlich erörtert: Welches ist der sicherste Weg, um Root-Berechtigungen zu erhalten: sudo, su oder login? .
Sudo bietet zusätzliche Funktionen, die über die von su hinausgehen. Insbesondere können Sie, sobald Sie das Kennwort eines Benutzers haben, einen beliebigen Befehl als dieser Benutzer ausführen. Auf der anderen Seite kann sudo so konfiguriert werden, dass der aufrufende Benutzer nur bestimmte Befehle als ein anderer Benutzer ausführen kann. Dies ist möglich, weil sudo keine Authentifizierung erfordert (außer vielleicht durch Eingabe Ihres Passworts zu bestätigen, dass Sie es sind - dies unterscheidet sich jedoch geringfügig von der Authentifizierung Ihres Benutzers für eine Aufgabe).
Sie ändern die sudo-Konfiguration, indem Sie den visudo
Befehl als root ausführen (bearbeiten Sie die Konfiguration niemals direkt). Stellen Sie sicher, dass die Umgebungsvariable EDITOR
oder VISUAL
auf Ihren bevorzugten Editor eingestellt ist. Andernfalls erhalten Sie möglicherweise einen unbekannten Editor. Die sudoers
Manpage ist etwas knapp, hat aber Beispiele. Verwenden Sie die folgenden Zeilen, um dem Benutzer bob
die Ausführung /bin/foo
(mit einer beliebigen Anzahl von Argumenten) und /bin/bar --safe
(jedoch nicht mit einem anderen Argument) als root
zu ermöglichen:
bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Gilles 'SO - hör auf böse zu sein'
quelle
sudo
ist eine tolle Erfindungapache2ctl graceful
ich denke, würde ich es vorziehen, meine Handgelenke aufzuschneiden und es hinter mich zu bringen.Der größte Unterschied ist, dass
sudo
Sie kein root-Passwort benötigen, um einen Befehl als root auszuführen, wie Sie es für tun würdensu
. Sie benötigen das root-Passwort, um jemanden zursudoers
Datei hinzuzufügen, aber danach kann diese Person alle oder einige (wenn Sie es eingeschränkt haben) als root ausführen, ohne ein weiteres Passwort zu benötigen.Der andere Unterschied besteht darin, dass Sie, wie Sie bereits bemerkt haben,
sudo
viel genauer steuern können, welche Befehle ausgeführt werden können.Einzelheiten zum Format der ausgeführten
sudoers
Dateiman sudoers
. Dort finden Sie Beispiele dafür, dass nur bestimmte Befehle als root ausgeführt werden dürfen. Die Grundstruktur jeder Zeile ist:cmd_list kann Details darüber enthalten, zu welchem Benutzer der echte Benutzer wechseln darf. Sie können beispielsweise zulassen, dass ein Webmaster zu wwwroot wechselt, um Apache neu zu starten, aber nicht zu root. Es kann auch andere Optionen enthalten, z. B. ob das Benutzerpasswort vor dem Wechsel erforderlich ist (dies ist die Standardeinstellung).
Eine Beispielzeile könnte sein:
das heißt: lass joe jeden befehl auf jedem host als jeden benutzer ausführen. Eine engere Linie könnte sein:
das heißt: lass joe jeden befehl im verzeichnis / usr / local / ops als benutzer "operator" ausführen.
Es gibt viele Beispiele am Ende der sudoers-Manpage.
Sie sollten
/etc/sudoers
mit dem Befehl bearbeitenvisudo
. Dies prüft, ob die Datei legal ist und verhindert, dass Sie sie versehentlich beschädigen.quelle
sudoers
Datei eingerichtet ist. Es kann so eingerichtet werden, dass ein Kennwort erforderlich ist, oder dass kein Kennwort erforderlich ist.Neben den anderen Antworten bietet sudo Protokollierungsfunktionen, mit denen Sie verfolgen können, welche Befehle von wem ausgeführt wurden. Dies dient nicht der Sicherheit, da ein böswilliger Benutzer, der sudo-Zugriff erhält, das Protokoll löschen kann. Es ist jedoch sehr nützlich, genau herauszufinden, was Sie oder ein anderer Administrator letzte Woche um 2 Uhr morgens mit trüben Augen getan haben.
quelle