Ich habe mich gefragt, ob es einen Unterschied (in der Umgebung?) zwischen
sudo su - user
Und
sudo -iu user
Soweit ich weiß: Mit sudo su - user öffne ich eine neue Shell als Benutzer, und der Bindestrich gibt die Umgebungsvariablen des Benutzers an (während dies bei sudo su user nicht der Fall ist), und auch mit sudo -iu user (-u zur Präzisierung des Benutzers, -i zum „Simulieren der ersten Anmeldung“).
Gibt es also einen Unterschied?
Außer der Tatsache, dass der erste Benutzer su als Root ausführen muss und der zweite bash als Benutzer ausführen muss
Danke !
Antwort1
Hier steht, was auf der Sudo-Manpage über die Option "-i" steht
-i The -i (simulate initial login) option runs the shell specified in
the passwd(5) entry of the user that the command is being run as.
The command name argument given to the shell begins with a `-' to
tell the shell to run as a login shell. sudo attempts to change to
that user's home directory before running the shell. It also ini-
tializes the environment, leaving TERM unchanged, setting HOME,
SHELL, USER, LOGNAME, and PATH, and unsetting all other environment
variables. Note that because the shell to use is determined before
the sudoers file is parsed, a runas_default setting in sudoers will
specify the user to run the shell as but will not affect which
shell is actually run.
was mir im Grunde sagt, dass Sie nur die Shell des referenzierten Benutzers simulieren, abermancheDinge können nicht genau so sein, wie der beabsichtigte Benutzer direkt angemeldet ist. Wenn Sie die Frage stellen "Was" Ich kann es nicht spontan sagen. Aber wenn Sie sudo su - user
den Befehl verwenden, werden keine Fragen gestellt, da Sie einen neuen Shell-Prozess mit den Einstellungen des referenzierten Benutzers starten. In einigen Fällen können diese beiden Befehle zur gleichen Umgebung führen, in anderen wird man meiner Meinung nach jedoch auf Unstimmigkeiten stoßen.