Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?

23

Was ist der Unterschied zwischen den beiden Superuser-Befehlen, su -s und sudo -s?

Beide geben eine Shell mit Zugriff auf das Superuser-Konto.

Callum
quelle

Antworten:

30

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

Mikeage
quelle
5
Es lohnt sich auch zu erwähnen, dass dies bei vielen Distributionen der Fall ist sudo Gewährt normalen Benutzern keine Standardberechtigungen. Auf diesen Systemen su ist die einzige Option.
Telemachus
12
su -s

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.

sudo -s

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.

Mark Turner
quelle
9

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.

Dan Udey
quelle
gute Erklärung der Unterschiede zwischen den beiden Befehlen su und sudo.
hot2use
5
  • su werde dich das fragen Wurzel Benutzer-Passwort.
  • sudo werde dich fragen Ihre Passwort (und Sie müssen gelöscht werden, damit sudo darauf zugreifen kann).
badp
quelle
2
Im Allgemeinen ist dies das Standardverhalten für sudo, es kann jedoch auch so konfiguriert werden, dass Sie nach dem root-Kennwort oder einem anderen Kennwort gefragt werden.
theotherreceive
2

Von Wikipedia :

su (Abkürzung für "Ersatzbenutzer" oder "Benutzer wechseln") ist ein Unix-Befehl, der dazu verwendet wird   Starten Sie die Shell eines anderen Benutzers ohne   Ausloggen.

Ein verwandter Befehl wurde aufgerufen sudo führt einen Befehl als anderer Benutzer aber aus   beobachtet eine Reihe von Einschränkungen über   welche Benutzer welche Befehle ausführen können   als welche anderen Benutzer (in der Regel in einem   Konfigurationsdatei mit dem Namen / etc / sudoers,   am besten mit dem Kommando visudo editierbar).   Im Gegensatz zu su authentifiziert sudo Benutzer   gegen ihr eigenes Passwort anstatt   das des Zielbenutzers (um die   Übertragung bestimmter Befehle an   bestimmte Benutzer auf bestimmten Hosts   ohne Passwörter unter ihnen zu teilen   und unter Minderung des Risikos jeglicher   unbeaufsichtigte Terminals).

Yaakov Ellis
quelle
2

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 oder sudo ) 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 Standardrechte sudo. (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 anschauen man 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.

Telemachus
quelle
1

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.

jtbandes
quelle
Das Gegenteil ist oft der Fall. Das heißt, auf vielen älteren Unix-ähnlichen Distributionen haben reguläre Benutzer unter keine Standardberechtigungen sudo (was nicht immer installiert ist).
Telemachus
1

Diese Einführung kann dir helfen. su ist eine Abkürzung für su rootund 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.

Nikhil Chelliah
quelle
1

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.

hendrasaputra
quelle