Обе команды:
sudo -i -u username
sudo su - username
Войдет в систему как username
, если я введу свой пароль. Есть ли на самом деле какая-то разница между этими командами?
Обе команды:
sudo -i -u username
sudo su - username
Войдет в систему как username
, если я введу свой пароль. Есть ли на самом деле какая-то разница между этими командами?
Команда su
означает «замещающий пользователь» и позволяет вам стать другим пользователем (суперпользователем). sudo su
изменяет текущего пользователя на root, но environment settings (PATH)
остается прежним. Это позволяет пользователю, у которого есть разрешения, выполнять команду в качестве суперпользователя или другого пользователя, как указано в файле sudoers
.
С sudo -i
вы получаете чистую корневую оболочку. Опция ‑i (имитировать начальный вход в систему) запускает оболочку, указанную в записи базы данных паролей целевого пользователя, в качестве оболочки входа в систему. Это означает, что файлы ресурсов для входа в систему, такие как .profile
или .login
, будут считываться оболочкой. Если указана команда, она передается оболочке для выполнения с помощью опции оболочки -c. Если команда не указана, выполняется интерактивная оболочка.
su
означает «замещающий пользователь», а не «переключение пользователя» (или даже «суперпользователь»).
- person NaN; 29.07.2015
sudo -i -u username
и проверьте свои переменные среды, затем запуститеsudo su - username
и проверьте свои переменные среды. Вы должны увидеть разницу - person Mischa   schedule 29.07.2015sudo su
, то ваша конфигурация PAM дляsu
имеет значение в дополнение к вашей конфигурацииsudoers
; если вы используете толькоsudo
, то вы зависите только отsudo
(и всей конфигурации, включенной в него по ссылке - его модули PAM, его конфигурация и т. д.), тогда как использованиеsu
дополнительно означает, что вы зависите от двух< /i> инструменты с независимым поведением и конфигурацией (и в первом случае нужно настроить, чтобы разрешить последнее). - person Charles Duffy   schedule 13.12.2016sudo -i -u someuser
не устанавливает переменные из/etc/environment
, аsudo su - someuser
устанавливает. (sudo -i
в этой системе Ubuntu 14.04 раньше работало.) - person cjs   schedule 18.04.2019