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

25992
Callum

Was ist der Unterschied zwischen den beiden Superbenutzerbefehlen su -sund sudo -s?

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

23

9 Antworten auf die Frage

31
Mikeage

In der Praxis werden Sie beide zum Superuser. Sie machen jedoch etwas anders, auf unterschiedliche Weise.

Zuerst su -wechselt Sie zu einer Login-Shell, während sudo -sdies nicht der Fall ist. In der Praxis bedeutet dies oft, dass Ihre Umgebungsvariablen nicht auf root's' umgestellt werden sudo -s. Beachten Sie, dass Sie nur ausführen können, suum keine Login-Shell oder sudo -ieine Login-Shell abzurufen (nicht in allen Versionen).

Zweitens suund su -wechseln Sie zu einem neuen Benutzer, indem Sie Sie dazu auffordern, sich als neuer Benutzer zu authentifizieren. sudo -sund sudo -i(und nur regelmäßige sudo foo) können Sie einen Befehl ausführen, für die Sie sind vorautorisierte [siehe /etc/sudoers], möglicherweise bitten Sie, Ihre bestätigen aktuelle ID.

Wenn Sie wirklich süß sein wollen, können Sie auch run ausführen sudo su -, um sich als root ( su -) anzumelden, das vom root-Benutzer (dem sudoTeil) ausgeführt wird.

Wenn der root-Benutzer gesperrt ist (z. B. unter Ubuntu), können Sie sich nicht als root anmelden su. In diesem Fall müssen Sie sudo -soder verwendensudo -i

Es ist auch erwähnenswert, dass `sudo` in vielen Distributionen normalen Benutzern keine Standardprivilegien gibt. Auf diesen Systemen ist "su" die einzige Option. Telemachus vor 15 Jahren 6
12
Mark Turner
su -s 

Wechselt zu einem Benutzer (in diesem Fall root) und startet die von Ihnen angegebene Shell oder eine der wenigen anderen Methoden zum Bestimmen der Shell. Dies ist nützlich, wenn Sie zsh oder eine andere Shell sehr schnell als Root verwenden möchten ... und aus irgendeinem Grund verwenden Sie sudo nicht.

sudo -s 

Führt einfach eine Shell mit sudo aus, die Ihnen eine Root-Shell geben würde. 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 Wechsel zu sudo so einfach wie möglich zu machen.

9
Dan Udey

su ist ein Befehl, der zu einem anderen Benutzer geändert werden soll, entweder zum Ausführen einer Shell oder zum Ausführen eines bestimmten Befehls. Sie müssen sich als der andere Benutzer authentifizieren. Wenn Sie ein root-Konto erstellen möchten, benötigen Sie das root-Passwort.

sudo ist ein Befehl zum Ausführen eines anderen Befehls (optional einer Shell) als anderer Benutzer. Sie müssen sich als Ihr eigener Benutzer authentifizieren . Die Berechtigung zur Verwendung von Sudo (und die möglichen Aktionen, die Sie damit machen können) wird von einem Administrator in der Sudoers-Datei festgelegt.

Wenn Sie jemandem Zugriff auf su gewähren (z. B. indem Sie ihm das Root-Passwort geben), kann er damit alles tun - andere Befehle ausführen, eine Shell öffnen, das Passwort ändern, sich per SSH remote anmelden, usw. Sie geben ihnen im Wesentlichen Zugriff auf das andere Konto, wobei 'su' nur eine Sache ist, die sie damit machen können.

Sudo ist viel feiner. 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 bis 17 Uhr) Sudo zu starten. 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, zu dem er Befehle ausführen darf (z. B. www, backup, staff usw.) ).

Sudo ist in allen Fällen eine bessere Lösung, da es keinen Zugriff auf alles erfordert, was der Benutzer noch nicht hat. Wenn Sie jemandem Sudo-Zugriff gewähren, können Sie ihn widerrufen, indem Sie dessen Zeile in der Sudoers-Datei entfernen oder aus der Sudoers-Gruppe entfernen. Wenn Sie ihr Konto löschen, ist der Zugriff gelöscht.

Wenn Sie ihnen das Root-Passwort geben, selbst wenn Sie davon ausgehen, dass sie nichts Unangenehmes damit tun, werden sie es für immer wissen. Wenn Sie über mehrere Personen verfügen, die Root-Zugriff für Verwaltungsaufgaben benötigen, bedeutet dies, dass entweder alle Root-Passwörter geändert werden müssen, wenn jemand verlässt, oder davon ausgegangen wird, dass sie nach dem Verlassen uneingeschränkten Zugriff auf Ihre Systeme haben.

gute Erklärung der Unterschiede zwischen den beiden Befehlen su und sudo. hot2use vor 8 Jahren 0
6
badp
  • su fragt Sie nach dem Root- Benutzerpasswort.
  • sudo fragt Sie nach Ihrem Passwort (und Sie müssen für den Sudo-Zugriff dafür gelöscht werden).
Im Allgemeinen ist dies das Standardverhalten von sudo. Es kann jedoch auch so konfiguriert werden, dass Sie nach dem Root-Kennwort oder einem anderen Kennwort gefragt werden. theotherreceive vor 15 Jahren 2
2
Yaakov Ellis

Von Wikipedia :

su (Abkürzung für Substitute User oder Switch User) ist ein Unix-Befehl, mit dem die Shell eines anderen Benutzers ausgeführt wird, ohne sich abzumelden.

Ein verwandter Befehl namens sudo führt einen Befehl als anderer Benutzer aus, beachtet jedoch eine Reihe von Einschränkungen, welche Benutzer welche Befehle als welche anderen Benutzer ausführen dürfen (im Allgemeinen in einer Konfigurationsdatei mit dem Namen / etc / sudoers, die am besten mit dem Befehl visudo bearbeitet werden kann). Im Gegensatz zu su authentifiziert sudo Benutzer anhand ihres eigenen Passworts anstelle des Zielbenutzers (um die Delegierung bestimmter Befehle an bestimmte Benutzer auf bestimmten Hosts zu ermöglichen, ohne dass Passwörter untereinander ausgetauscht werden und das Risiko unbeaufsichtigter Terminals gemindert wird).

2
Telemachus

Eine Sache, die nicht vollständig gesagt wird, ist folgende: Welche Sie verwenden können, hängt oft davon ab, welche Distribution Sie verwenden und wer sie betreibt. Das eine oder das andere ( suoder sudo) ist wahrscheinlich nicht für die volle Verwendung standardmäßig eingerichtet. Wie beispielsweise einige Leute erwähnt haben, deaktivieren OS X und Ubuntu sustandardmäßig das root-Konto ( ). Gleichermaßen erteilt Debian regulären Benutzern keine Standardberechtigungen sudo. (Auf allen diesen Systemen können Sie diese Standardeinstellungen ändern, aber nur, wenn Sie über einige Administratorrechte verfügen. Ich denke, es handelt sich um eine Situation außerhalb des Servers, und Sie verwalten den Computer, da wir uns eher in SU befinden als SF, aber nur für den Fall.)

Wenn Sie sudoeine feinkörnigere Methode verwenden möchten, sollten Sie prüfen, wie Sie die Datei / etc / sudoersman sudoers bearbeiten können . Sie sollten es jedoch niemals von Hand bearbeiten. Verwenden Sie das Programm visudo - es wird Sie daran hindern, Ihre Änderungen zu speichern, es sei denn, sie sind mindestens minimal. Dies ist ein hervorragender Schutz gegen einfache Fehler, die Sie von den Administratorrechten Ihres Systems ausschließen könnten.

1
jtbandes

Auf Systemen, auf denen das Superuser-Konto deaktiviert ist (z. B. Mac OS X), sufunktioniert dies nicht. sudo -swerden.

Es scheint auch so zu sein, dass es su -szumindest auf meinem Rechner keinen gibt.

Das Gegenteil trifft häufig zu. Das heißt, bei vielen älteren Unix-ähnlichen Distributionen haben reguläre Benutzer keine Standardberechtigung unter "sudo" (die nicht immer installiert ist). Telemachus vor 15 Jahren 0
1
Nikhil Chelliah

Diese Einführung kann Ihnen helfen. suist die Abkürzung für su rootund Sie behalten Ihre Rechte als der andere Benutzer auf unbestimmte Zeit. Gefährlicher, aber auch komfortabler, wenn Sie über einen längeren Zeitraum viele Root-Zugriffsbefehle ausführen.

1
hendrasaputra

Su erstellt im Grunde eine neue Login-Shell mit anderen Benutzerrechten (Login). Sudo ermöglicht es Ihnen, vorübergehend den Befehl mit dem von Ihnen angegebenen Benutzer auszuführen. Bei einigen UNIX-Programmen wie FreeBDS gibt es keine '-s'-Optionen.