Мне было интересно, есть ли какая-то разница (в окружающей среде?) между выполнением
sudo su - user
и
sudo -iu user
Из того, что я знаю: используя sudo su - user, я открываю новую оболочку как пользователь, и тире выдает переменные среды пользователя (в то время как sudo su user этого не делает), а также использую sudo -iu user (-u для точного указания пользователя, -i для «имитации первоначального входа в систему»).
Так есть ли разница?
За исключением того факта, что для первого варианта необходимо, чтобы пользователь мог выполнить su как root, а для второго — чтобы запустить bash как пользователь
Спасибо !
решение1
вот что говорится на странице руководства sudo о параметре "-i"
-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.
что по сути говорит мне, что вы просто имитируете оболочку указанного пользователя, нонекоторыйвещи могут быть не совсем такими, как предполагалось, когда пользователь вошел напрямую. Если вы зададите вопрос "что"Я не могу сказать навскидку. Но если вы используете sudo su - user
команду, то никаких вопросов не возникает, поскольку вы запускаете новый процесс оболочки с настройками указанного пользователя. В некоторых случаях эти две команды могут привести к одной и той же среде, но в других, на мой взгляд, можно столкнуться с расхождениями.