Warum ist sudo -s besser als sudo su?

28

Ich habe hier in Ask Ubuntu viele Kommentare zur Bevorzugung der Verwendung von sudo -sstatt gesehen sudo su.

Für mich machen diese beiden Befehle genau dasselbe. Aber warum sudo -ssoll es besser sein?

fitojb
quelle
1
Ich denke , sudo -ioder sudo subesser ist als sudo -saus Gründen erwähnt hier: ubuntuforums.org/showpost.php?p=6188826&postcount=4 auch: dies ist eine mögliche Duplikat superuser.com/questions/29/...
arrangieren
Ich denke, diese Frage sollte nach unix.stackexchange.com verschoben werden
igi

Antworten:

26

Ich finde sudo -ses nicht "besser", es ist einfach anders.

sudo -s

behält Ihr $ HOME-Verzeichnis bei, wenn Sie also Programme starten, werden Ihre Konfigurationsdateien (und nicht die von root) usw. verwendet. Nachteil: Sie können auch den Besitz Ihrer Dateien im $ HOME-Verzeichnis ändern. Ein typisches Beispiel ist die .XauthorityDatei, aber ich habe noch nie ein Problem damit erlebt.

sudo su oder sudo -i

Programme verwenden das Stammverzeichnis und die Konfigurationsdateien des Stammverzeichnisses. Dies mag intuitiver sein, bedeutet aber auch, dass keine Konfiguration verwendet wird, die Sie für sich selbst festgelegt haben (Aliase, Bash-Verlauf, ...).

ordnen
quelle
1
Okay, ich verstehe jetzt den Unterschied. Vielen Dank!
Fitojb
1
"sudo su" ist nicht gleichbedeutend mit "sudo -i". "sudo -i" entspricht "sudo su -", aber "sudo su -" behält das aktuelle Arbeitsverzeichnis bei, während "sudo -i" Sie zu root nach Hause
bringt
13

Denn sudo -sIhre Umgebungsvariablen werden sich nicht ändern, vor allem $HOME, was bleiben wird HOME=/home/USER. Wenn Sie sudo sudies verwenden, HOME=/rootkann dies negative Nebenwirkungen haben, wenn Programme, die Sie starten, versuchen, auf das Home-Verzeichnis Ihres Benutzers zuzugreifen.

Also im Grunde ist es wie sudovs gksudowenn grafische Programme ausgeführt werden .

Drehmoment
quelle
5

Abgesehen von den bereits erwähnten Unterschieden zu Umgebungsvariablen finde ich das sudo sualbern und verschwenderisch, weil Sie darum bitten sudo, suals root ausgeführt zu werden und eine Shell als root auszuführen. Warum ein Programm bitten, ein Programm zu bitten, Ihnen eine Root-Shell zu geben, wenn Sie nur das erste Programm haben können, das Ihnen diese Shell gibt? Ist das praktisch von Bedeutung? Nein, ich bin nur pedantisch.

Psusi
quelle
Du hast recht, es ist etwas überflüssig.
Fitojb
Nun, nicht ganz so: Wenn Sie sudo suroot sind, gehen Sie einfach sudo -izum Beispiel. Aber es hilft , wenn Sie einen anderen Benutzer werden wollen: sudo su - myuser.
hggdh
2
Es gibt noch einen weiteren Unterschied: sudo -iWechselt in das /rootVerzeichnis und sudo subleibt in dem Verzeichnis, in dem Sie sich befinden.
Laurent
1
@hggdh, sudo -u myuser.
Psusi
3

Ich würde anderen Antworten nicht zustimmen, wenn ich die Fälle betrachte, in denen Sie sich als Benutzer ohne Shell anmelden möchten. Dies ist ein sehr häufiger Fall bei Benutzern, die Diensten zugewiesen sind.

Mit "sudo su" wird die vom Benutzer angegebene Shell gestartet. Im Fall eines Benutzers, der dem Serverprozess zugewiesen ist, lautet die Shell / usr / bin / false, und die Protokollierung schlägt fehl. Stattdessen sollten Sie eingeben als:

sudo -sHu <server-user>

Dadurch werden Sie angemeldet und in den Home-Pfad aufgenommen, auch wenn dem Benutzer keine Shell zugewiesen ist

SystematicFrank
quelle