Почему одно предпочтение перед другим в этом примере?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Пожалуйста, предоставьте ссылки на документацию по Ubuntu.
command-line
sudo
chili555
источник
источник
Ответы:
Команда
sudo su
обозначает «переключить пользователя» и позволяет вам стать другим пользователем. Это позволяет разрешенному пользователю выполнять команду от имени суперпользователя или другого пользователя, как указано в файле sudoers.Параметр ‑i (имитировать первоначальный вход в систему) запускает оболочку, указанную в записи базы данных паролей целевого пользователя, в качестве оболочки входа в систему. Это означает, что специфичные для входа файлы ресурсов, такие как .profile или .login, будут читаться оболочкой. Если указана команда, она передается в оболочку для выполнения через параметр оболочки ‑c. Если команда не указана, выполняется интерактивная оболочка.
Источник: ManPage
источник
sudo su
вас спрашивают пароль, а не пароль root. Пользователь root даже не должен иметь пароль. В любом случае, если администратор использует пароль root, это не означает, что все обычные пользователи знают его.sudo
запускаетсяsu
как root, а root можетsu
любой пользователь, не зная его пароля. Фундаментальное недоразумение о том, как работает система, заслуживает отрицательной оценки IMO.sudo -i
не будет запрашивать пароль root, так что это не имеет отношения к вопросу.sudo su
только изменяет текущего пользователя на root. Настройки среды (например, PATH) остаются прежними.sudo -i
создает новую среду, как будто root только что вошел в систему.Разница более заметна, если вы используете других пользователей. После
sudo su bob
вас будет Боб, но там же. Послеsudo -i -u bob
того, как вы будете bob, в домашнем каталоге bob, с оболочкой по умолчанию для bob.profile
и с запущенными bob и другими сценариями входа.Смотрите
man sudo
для более подробной информации о том, что-i
делает. К сожалению,man su
свет на деталях.Найдена версия
man su
(из login-1: 4.1.4.2 + svn3283-3ubuntu5.1), в которой говорится следующее:Так что, и в какой степени
sudo su
изменяет среду, зависит от вашего распространения и настройки. Таким образомsudo -i
, теоретически является более портативным.источник
su
делает настройки изменения окружающей среды, и может быть использовано для имитации входа с использованием-
или-l
. Даже без-l
,$PATH
будет изменен. Проверьте эти претензии, прежде чем делать их! (Вы имели в виду, что этоPWD
остается тем же самым?)sudo su -
иsudo -i
?$PATH
меняется, когда я используюsu
безsudo
(с использованием пароля root). Согласноinfo su
(что может быть лучше сделать ссылку в вашем ответе),su
действительно читает пароль для пользователя, которым вы становитесь. Возможно$PATH
изменение, которое я наблюдаю, зависит от системы (я нахожусь на Debian 7).man su
(который длиннее, чем тот, с которым вы связаны) говорит, что он является частьюshadow-utils 4.1.5.1
. Мояman
страница также говорит, что$PATH
установлена, даже если--preserve-environment
используется. Так что я думаю, это действительно разница между разными версиямиsu
./etc/pam.d/sudo
и/etc/pam.d/su
может быть настроен на совершенно разные или совершенно одинаковые вещи.Основная проблема - одна из (не очень) нормальных настроек среды.
Использование
sudo su
новой оболочки получает свое окружение от пользователя, который выдает команду - что может быть проблематично.С
sudo -i
вас получится чистая корневая оболочка.Смотрите специальные примечания по sudo и оболочкам
Остается заметить, что редко нужно вообще создавать корневую оболочку.
источник
sudo -i
похожи, наsudo su -
самом деле не получают своего окружения от пользователя, выполняющего команду.sudo su
противsudo -i
.