Почему sudo лучше чем sudo su?


28

Я видел много комментариев здесь в Ask Ubuntu относительно предпочтений при использовании, sudo -sа не sudo su.

Для меня эти две команды делают то же самое. Но почему sudo -sдолжно быть лучше?


1
Я думаю sudo -iили sudo suлучше, чем sudo -sпо причинам, упомянутым здесь: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Кроме того: это возможный дубликат superuser.com/questions/29/…
договориться

Я думаю , что этот вопрос должен быть перемещен в unix.stackexchange.com
IGI

Ответы:


26

Я думаю, что sudo -sне "лучше", это просто другое.

sudo -s

хранит каталог $ HOME, поэтому при запуске программ они будут использовать ваши (а не корневые) файлы конфигурации и т. д. Недостаток: они также могут изменять владельца ваших файлов в каталоге $ HOME, типичным примером является .Xauthorityфайл, но я никогда не испытывал проблем с этим.

sudo su или sudo -i

программы будут использовать домашний каталог root и его конфигурационные файлы. Это может быть более интуитивно понятным, но это также означает, что он не будет использовать какую-либо конфигурацию, которую вы, возможно, настроили для себя (псевдонимы, историю bash, ...).


1
Хорошо, теперь я понимаю разницу. Спасибо!
fitojb

1
«sudo su» не эквивалентно «sudo -i». «sudo -i» эквивалентно «sudo su -», но «sudo su -» сохраняет текущий рабочий каталог, в то время как «sudo -i» перемещает вас в дом пользователя root
Грегори Пакош

13

Потому sudo -sчто не изменится ваша переменная окружения, особенно $HOME, которая останется HOME=/home/USER. Если вы используете sudo suэто, изменится на то, HOME=/rootчто может иметь негативные побочные эффекты, когда программы, которые вы запускаете, пытаются получить доступ к домашнему каталогу вашего пользователя.

Так что в основном это как sudoпротив gksudoпри запуске графических программ.


5

Помимо уже упомянутых различий с переменными среды, я нахожу sudo suглупым и расточительным, потому что вы просите sudoзапустить suот имени пользователя root и попросить его запустить оболочку от имени пользователя root. Зачем просить программу попросить программу предоставить вам корневую оболочку, если вы можете просто дать первой программе эту оболочку? Имеет ли это значение в каком-либо практическом смысле? Нет, я просто педантичен


Вы правы, это несколько избыточно.
fitojb

Ну, не совсем так: если вы используете, sudo suчтобы быть root, да, просто пойти sudo -i, например. Но это действительно помогает , если вы хотите стать другим пользователем: sudo su - myuser.
HGGDH

2
Есть еще одно отличие: он sudo -iперейдет в /rootкаталог и sudo suостанется в том каталоге, в котором вы находитесь.
Лоран

1
@hggdh, sudo -u myuser.
Псуси

3

Я не согласен с другими ответами при рассмотрении случаев, когда вы хотите войти в систему как пользователь, у которого нет оболочки. Это очень распространенный случай с пользователями, назначенными на услуги.

Использование sudo su запустит оболочку, указанную пользователем. Однако в случае, если пользователь назначен на серверный процесс, оболочка имеет вид / usr / bin / false, и запись не будет выполнена. Вместо этого вы должны ввести как:

sudo -sHu <server-user>

который войдет в систему и перейдет на его домашний путь, даже если пользователю не назначена оболочка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.