Я видел много комментариев здесь в Ask Ubuntu относительно предпочтений при использовании, sudo -s
а не sudo su
.
Для меня эти две команды делают то же самое. Но почему sudo -s
должно быть лучше?
command-line
sudo
su
fitojb
источник
источник
sudo -i
илиsudo su
лучше, чемsudo -s
по причинам, упомянутым здесь: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Кроме того: это возможный дубликат superuser.com/questions/29/…Ответы:
Я думаю, что
sudo -s
не "лучше", это просто другое.sudo -s
хранит каталог $ HOME, поэтому при запуске программ они будут использовать ваши (а не корневые) файлы конфигурации и т. д. Недостаток: они также могут изменять владельца ваших файлов в каталоге $ HOME, типичным примером является
.Xauthority
файл, но я никогда не испытывал проблем с этим.sudo su
илиsudo -i
программы будут использовать домашний каталог root и его конфигурационные файлы. Это может быть более интуитивно понятным, но это также означает, что он не будет использовать какую-либо конфигурацию, которую вы, возможно, настроили для себя (псевдонимы, историю bash, ...).
источник
Потому
sudo -s
что не изменится ваша переменная окружения, особенно$HOME
, которая останетсяHOME=/home/USER
. Если вы используетеsudo su
это, изменится на то,HOME=/root
что может иметь негативные побочные эффекты, когда программы, которые вы запускаете, пытаются получить доступ к домашнему каталогу вашего пользователя.Так что в основном это как
sudo
противgksudo
при запуске графических программ.источник
Помимо уже упомянутых различий с переменными среды, я нахожу
sudo su
глупым и расточительным, потому что вы проситеsudo
запуститьsu
от имени пользователя root и попросить его запустить оболочку от имени пользователя root. Зачем просить программу попросить программу предоставить вам корневую оболочку, если вы можете просто дать первой программе эту оболочку? Имеет ли это значение в каком-либо практическом смысле? Нет, я просто педантиченисточник
sudo su
чтобы быть root, да, просто пойтиsudo -i
, например. Но это действительно помогает , если вы хотите стать другим пользователем:sudo su - myuser
.sudo -i
перейдет в/root
каталог иsudo su
останется в том каталоге, в котором вы находитесь.sudo -u myuser
.Я не согласен с другими ответами при рассмотрении случаев, когда вы хотите войти в систему как пользователь, у которого нет оболочки. Это очень распространенный случай с пользователями, назначенными на услуги.
Использование sudo su запустит оболочку, указанную пользователем. Однако в случае, если пользователь назначен на серверный процесс, оболочка имеет вид / usr / bin / false, и запись не будет выполнена. Вместо этого вы должны ввести как:
который войдет в систему и перейдет на его домашний путь, даже если пользователю не назначена оболочка
источник