Was ist der Unterschied zwischen den beiden Superuser-Befehlen, su -s
und sudo -s
?
Beide geben eine Shell mit Zugriff auf das Superuser-Konto.
In der Praxis werden Sie beide zum Superuser. Sie machen jedoch etwas andere Dinge, auf etwas andere Weise.
Zuerst, su -
wechselt zu einer Login-Shell, wohingegen sudo -s
nicht. In der Praxis bedeutet dies häufig, dass auf Ihre Umgebungsvariablen nicht umgeschaltet wird root
ist für sudo -s
. Beachten Sie, dass Sie nur ausführen können su
zu nicht Holen Sie sich eine Login-Shell, oder sudo -i
um eine Login-Shell zu erhalten [nicht in allen Versionen].
Zweitens, su
und su -
Wechseln Sie zu einem neuen Benutzer, indem Sie aufgefordert werden, sich als neuer Benutzer zu authentifizieren. sudo -s
und sudo -i
(und nur regelmäßig sudo foo
) lassen Sie einen Befehl ausführen, für den Sie eine Vorautorisierung haben [siehe /etc/sudoers
], möglicherweise indem Sie aufgefordert werden, Ihre Eingaben zu bestätigen aktuell ICH WÜRDE.
Wenn du wirklich süß sein willst, kannst du auch rennen sudo su -
, die Sie auffordern, sich als root anzumelden ( su -
) vom root - Benutzer (dem sudo
Teil).
Wenn der Root-Benutzer gesperrt ist (z. B. unter Ubuntu), können Sie sich nicht als Root mit anmelden su
. In diesem Fall müssen Sie verwenden sudo -s
oder sudo -i
sudo
Gewährt normalen Benutzern keine Standardberechtigungen. Auf diesen Systemensu
ist die einzige Option.Wechselt zu einem Benutzer (in diesem Fall root) und startet die von Ihnen angegebene Shell oder eine der wenigen anderen Methoden zum Ermitteln der Shell. Dies ist nützlich, wenn Sie schnell zsh oder eine andere Shell als root verwenden möchten ... und aus irgendeinem Grund sudo nicht verwenden.
Führt einfach eine Shell mit sudo aus, wodurch Sie eine Root-Shell erhalten. Sie können auch eine Shell übergeben.
su -s ist älter, viel älter als der Befehl sudo -s. Ich vermute, dass der Entwickler versucht, den Umstieg auf sudo so einfach wie möglich zu gestalten.
quelle
su ist ein Befehl zum Wechseln zu einem anderen Benutzer, um entweder eine Shell auszuführen oder einen bestimmten Befehl auszuführen. Sie müssen sich als der andere Benutzer authentifizieren. Wenn Sie sich als root anmelden möchten, benötigen Sie das root-Passwort.
sudo ist ein Befehl zum Ausführen eines anderen Befehls (optional einer Shell) als ein anderer Benutzer. Sie müssen sich authentifizieren als Ihr eigener Benutzer . Die Berechtigung zur Verwendung von sudo (und die spezifischen Funktionen, die Sie damit ausführen können) wird von einem Administrator in der sudoers-Datei festgelegt.
Wenn Sie jemandem Zugriff auf su gewähren (indem Sie ihm beispielsweise das root-Passwort geben), kann er alles damit machen - andere Befehle ausführen, eine Shell öffnen, das Passwort ändern, sich remote über ssh anmelden und so weiter. Sie geben ihnen im Wesentlichen Zugriff auf das andere Konto, wobei "su" nur eine Sache ist, die sie damit tun können.
sudo ist viel feinkörniger. Sie können einem Benutzer oder einer Gruppe Berechtigungen erteilen. Sie können einem Benutzer oder einer Gruppe erlauben, innerhalb eines bestimmten Zeitraums (z. B. Montag bis Freitag, 9.00 bis 17.00 Uhr) zu sudo. Sie können eine bestimmte Liste von Befehlen angeben, die sie ausführen dürfen (z. B. nur / usr / local / bin / run_backup), oder Sie können einen bestimmten Benutzer angeben, unter dem sie Befehle ausführen dürfen (z. B. www, backup, staff usw.) ).
Neben seiner Flexibilität ist sudo in jedem Fall eine bessere Lösung, da es keinen Zugriff auf etwas erfordert, das der Benutzer noch nicht hat. Wenn Sie jemandem sudo-Zugriff gewähren, können Sie ihn widerrufen, indem Sie seine Zeile in der sudoers-Datei entfernen oder ihn aus der sudoers-Gruppe entfernen. Wenn Sie ihr Konto löschen, ist ihr Zugriff weg.
Wenn Sie ihnen das root-Passwort geben, selbst wenn sie damit nichts Unangenehmes anfangen, werden sie es für immer wissen. Wenn Sie über mehrere Personen verfügen, die für Verwaltungsaufgaben Root-Zugriff benötigen, müssen Sie entweder alle Root-Kennwörter ändern, wenn jemand das Unternehmen verlässt, oder davon ausgehen, dass diese Personen nach dem Verlassen des Unternehmens uneingeschränkt auf Ihre Systeme zugreifen können.
quelle
quelle
Von Wikipedia :
quelle
Eine Sache, die nicht vollständig besprochen wird, ist die folgende: Welche Sie können Die Verwendung hängt häufig davon ab, welche Distribution Sie verwenden und von wem sie ausgeführt wird. Das Eine oder das Andere (
su
odersudo
) ist wahrscheinlich nicht für den vollen Gebrauch voreingestellt. So deaktivieren beispielsweise OS X und Ubuntu, wie einige erwähnt haben, das Root-Konto (su
) standardmäßig. Ebenso gewährt Debian normalen Benutzern keine Standardrechtesudo
. (Auf allen diesen Systemen können Sie diese Standardeinstellungen ändern, aber nur, wenn Sie zunächst über Administratorrechte verfügen. Wir sprechen vermutlich von einer Situation ohne Server, und Sie verwalten den Computer, da wir in SU sind als SF, aber nur für den Fall.)Schließlich, wenn Sie verwenden möchten
sudo
Feinkörniger sollte man sich anschauenman sudoers
zum Bearbeiten der / etc / sudoers Datei. Das solltest du aber noch nie Bearbeiten Sie es von Hand. Verwenden Sie das Programm visudo - Es wird Sie daran hindern, Ihre Änderungen zu speichern, es sei denn, sie sind mindestens vernünftig. Es ist ein großartiger Schutz vor einfachen Fehlern, durch die Sie die Administratorrechte Ihres eigenen Systems verweigern können.quelle
Auf Systemen, auf denen das Superuser-Konto deaktiviert ist, z. B. Mac OS X,
su
wird nicht funktionieren;sudo -s
werden.Auch scheint es keine zu geben
su -s
verfügbar, zumindest auf meiner Maschine.quelle
sudo
(was nicht immer installiert ist).Diese Einführung kann dir helfen.
su
ist eine Abkürzung fürsu root
und Sie behalten Ihre Rechte als der andere Benutzer auf unbestimmte Zeit. Gefährlicher, aber auch praktischer, wenn Sie über einen bestimmten Zeitraum viele Root-Zugriffsbefehle ausführen.quelle
su erstellt grundsätzlich eine neue Login-Shell mit anderen Benutzerrechten (Login) Mit sudo können Sie den Befehl nur vorübergehend mit dem von Ihnen angegebenen Benutzer ausführen. Unter einigen UNIX-Betriebssystemen wie FreeBDS gibt es keine '-s'-Optionen.
quelle