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

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

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

28
задан 9 December 2018 в 02:52

4 ответа

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

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

0
ответ дан 9 December 2018 в 02:52

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

0
ответ дан 9 December 2018 в 02:52

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

sudo -s

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

Программы

, sudo su или sudo -i,

,

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

0
ответ дан 9 December 2018 в 02:52

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

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

sudo -sHu <server-user>

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

.
0
ответ дан 9 December 2018 в 02:52

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

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