2015-07-29 16 views
6

Beide Befehle:Was ist der Unterschied zwischen `sudo -i -u user` und` sudo su-user`?

sudo -i -u username 
sudo su - username 

Will mich in so username anmelden, wenn ich mein Passwort eingeben. Gibt es tatsächlich einen Unterschied zwischen diesen Befehlen?

+2

Führen Sie 'sudo -i -u username' aus und überprüfen Sie Ihre Umgebungsvariablen, führen Sie dann 'sudo su - username' aus und überprüfen Sie Ihre Umgebungsvariablen Sie sollten einen Unterschied sehen – Mischa

+1

wahrscheinlich könnte diese Antwort Ihnen helfen, versuche ich auch um die Antwort für die gleiche Frage zu finden. http://askubuntu.com/questions/376199/sudo-su-vs-sudo-i-vs-sudo-bin-bash-when-does-it-matter-which-is-used – Radan

+1

Es gibt auch sehr bedeutende Konfiguration Änderungen. Wenn Sie 'sudo su' verwenden, dann ist Ihre PAM-Konfiguration für' su' zusätzlich zu Ihrer 'sudoers' Konfiguration wichtig; wenn nur 'sudo' verwenden, dann sind Sie nur auf' sudo' abhängig (und alle die Konfiguration darin enthaltenen durch Bezugnahme - seine PAM-Module, deren Konfiguration, etc.), während mit 'su' zusätzlich bedeutet, dass Sie abhängig auf * zwei * Tools mit unabhängigem Verhalten und Konfiguration (und auf dem ersteren konfiguriert sein, um Letzteres zu ermöglichen). –

Antwort

1

Der su Befehl steht für "substitute user" und ermöglicht es Ihnen, verschiedene Benutzer (Super-User) zu werden. sudo su ändert den aktuellen Benutzer root aber environment settings (PATH) würde bleiben gleich. Es ermöglicht Benutzern, die über Berechtigungen zum Ausführen eines Befehls als Superuser oder einen anderen Benutzer verfügen, wie in der Datei sudoers angegeben.

Mit sudo -i Sie eine saubere Root-Shell erhalten. Die Option -i (simulate initial login) führt die durch den Passwortdatenbankeintrag des Zielbenutzers angegebene Shell als Login-Shell aus. Dies bedeutet, dass Login spezifische Ressourcendateien wie .profile oder .login wird von der Shell gelesen werden. Wenn ein Befehl angegeben wird, wird er über die Option -c der Shell zur Ausführung an die Shell übergeben. Wenn kein Befehl angegeben ist, wird eine interaktive Shell ausgeführt.

+2

Afaik 'su' steht für 'substitute user' und nicht 'switch user' (oder auch 'super user'). – NaN

+0

danke NaN..I korrigiert..apologien für den Tippfehler. – sTg

+0

"ändert den aktuellen Benutzer in root, aber die Umgebungseinstellungen (PATH) bleiben gleich" - das trifft für mich nicht zu – yanoo