В чем разница между sudo -i и sudo -s?
Я новый пользователь Ubuntu и нашел, что некоторые люди говорят мне использовать sudo -i
чтобы получить root и другие говорят мне, чтобы использовать sudo -s
, В чем разница? Какой я использую и когда?
2 ответа
Основное различие между sudo -i
а также sudo -s
является:
sudo -i
дает вам корневую среду, т.е.~/.bashrc
игнорируетсяsudo -s
дает вам среду пользователя, поэтому ваш~/.bashrc
уважается.
Вот пример, вы можете видеть, что у меня есть приложение lsl
в моем ~/.bin/
каталог, который доступен через sudo -s
но не доступно с sudo -i
, Также обратите внимание, что приглашение Bash изменяется так же, как и sudo -i
но не с sudo -s
:
dotancohen@melancholy:~$ ls .bin
lsl
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ sudo -i
root@melancholy:~# which lsl
root@melancholy:~# exit
logout
dotancohen@melancholy:~$ sudo -s
Sourced .bashrc
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ exit
exit
Хоть sudo -s
удобен для предоставления вам среды, с которой вы знакомы, я рекомендую использоватьsudo -i
по двум причинам:
- Визуальное напоминание о том, что вы находитесь в "корневой" сессии.
- Вероятность того, что корневая среда будет отравлена вредоносным ПО, таким как мошенническая линия в
.bashrc
,
sudo -i
-i [команда] Опция -i (имитировать начальный вход в систему) запускает спецификацию оболочки записывается в базу данных паролей целевого пользователя как оболочка входа Это означает, что файлы ресурсов для входа в систему такие как.profile или.login будут читаться оболочкой. Если указана команда, передается в оболочку для выполнения через опцию -c оболочки. Если команда не указана, интерактивная оболочка выполнена. Судо пытается измениться на домашний каталог этого пользователя до запуска оболочки. политика безопасности должна инициализировать среду до минимума набор переменных, аналогичный тому, который присутствует, когда пользователь входит в систему в. Раздел Командная среда в руководстве sudoers(5) Документы, как опция -i влияет на среду, в которой команда запускается, когда используется политика sudoers.
sudo -s
-s [команда] Опция -s (shell) запускает оболочку, указанную SHELL переменная окружения, если она установлена, или оболочка, как указано в базе паролей. Если указана команда, это передается в оболочку для выполнения через параметр оболочки -c. Если команда не указана, выполняется интерактивная оболочка.