Antworten:
Ich finde sudo -s
es 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 .Xauthority
Datei, 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, ...).
Denn sudo -s
Ihre Umgebungsvariablen werden sich nicht ändern, vor allem $HOME
, was bleiben wird HOME=/home/USER
. Wenn Sie sudo su
dies verwenden, HOME=/root
kann dies negative Nebenwirkungen haben, wenn Programme, die Sie starten, versuchen, auf das Home-Verzeichnis Ihres Benutzers zuzugreifen.
Also im Grunde ist es wie sudo
vs gksudo
wenn grafische Programme ausgeführt werden .
Abgesehen von den bereits erwähnten Unterschieden zu Umgebungsvariablen finde ich das sudo su
albern und verschwenderisch, weil Sie darum bitten sudo
, su
als 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.
sudo su
root sind, gehen Sie einfach sudo -i
zum Beispiel. Aber es hilft , wenn Sie einen anderen Benutzer werden wollen: sudo su - myuser
.
sudo -i
Wechselt in das /root
Verzeichnis und sudo su
bleibt in dem Verzeichnis, in dem Sie sich befinden.
sudo -u myuser
.
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
sudo -i
odersudo su
besser ist alssudo -s
aus Gründen erwähnt hier: ubuntuforums.org/showpost.php?p=6188826&postcount=4 auch: dies ist eine mögliche Duplikat superuser.com/questions/29/...