В чем разница между 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 по двум причинам:

  1. Визуальное напоминание о том, что вы находитесь в "корневой" сессии.
  2. Вероятность того, что корневая среда будет отравлена ​​вредоносным ПО, таким как мошенническая линия в .bashrc,
sudo -i
-i [команда]
                 Опция -i (имитировать начальный вход в систему) запускает спецификацию оболочки
                 записывается в базу данных паролей целевого пользователя как
                 оболочка входа Это означает, что файлы ресурсов для входа в систему
                 такие как.profile или.login будут читаться оболочкой. Если
                 указана команда, передается в оболочку для выполнения
                 через опцию -c оболочки. Если команда не указана,
                 интерактивная оболочка выполнена. Судо пытается измениться на
                 домашний каталог этого пользователя до запуска оболочки. 
                 политика безопасности должна инициализировать среду до минимума
                 набор переменных, аналогичный тому, который присутствует, когда пользователь входит в систему
                 в. Раздел Командная среда в руководстве sudoers(5)
                 Документы, как опция -i влияет на среду, в которой
                 команда запускается, когда используется политика sudoers.
sudo -s
 -s [команда]
                 Опция -s (shell) запускает оболочку, указанную SHELL
                 переменная окружения, если она установлена, или оболочка, как указано
                 в базе паролей. Если указана команда, это
                 передается в оболочку для выполнения через параметр оболочки -c.
                 Если команда не указана, выполняется интерактивная оболочка.
Другие вопросы по тегам