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

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

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

27
задан 25 December 2011 в 11:56

4 ответа

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

sudo -s

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

Программы

sudo su или sudo -i

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

26
ответ дан 25 May 2018 в 18:28
  • 1
    Хорошо, теперь я понимаю разницу. Спасибо! – fitojb 4 October 2011 в 23:34
  • 2
    "sudo su" не эквивалентно "sudo -i". "sudo -i" эквивалентно "sudo su - " но "sudo su - " сохраняет текущий рабочий каталог во время "sudo -i" перемещает вас в корневой дом – Gregory Pakosz 23 February 2012 в 03:50

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

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

13
ответ дан 25 May 2018 в 18:28

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

5
ответ дан 25 May 2018 в 18:28
  • 1
    Вы правы, это несколько избыточно. – fitojb 4 October 2011 в 23:31
  • 2
    Ну, не совсем так: если вы используете sudo su для root, да, просто перейдите, например, sudo -i. Но это помогает, когда вы хотите стать другим пользователем: sudo su - myuser. – hggdh 5 October 2011 в 03:31
  • 3
    Существует и другая разница: sudo -i изменится на каталог /root, а sudo su останется в каталоге. – laurent 5 October 2011 в 05:05
  • 4
    @hggdh, sudo -u myuser. – psusi 5 October 2011 в 18:38

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

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

sudo -sHu <server-user>

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

3
ответ дан 25 May 2018 в 18:28

Другие вопросы по тегам:

Похожие вопросы: