Чому sudo -s краще, ніж 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

програми використовуватимуть домашній каталог кореня та його конфігураційні файли. Це може бути більш інтуїтивно зрозумілим, але це також означає, що воно не використовуватиме будь-яку конфігурацію, яку ви могли встановити для себе (псевдоніми, історія башів, ...).


1
Гаразд, тепер я розумію різницю. Дякую!
fitojb

1
"sudo su" не еквівалентно "sudo -i". "sudo -i" еквівалентно "sudo su -", але "sudo su -" зберігає поточний робочий каталог, тоді як "sudo -i" переселяє вас у дім кореня
Грегорі Пакош

13

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

Так що в основному це як sudovs gksudoпри запуску графічних програм.


5

Окрім вже згаданих відмінностей із змінними середовища, я вважаю sudo suдурними та марними, тому що ви просите sudoзапустити suяк root, і попросите його запустити оболонку як корінь. Навіщо просити програму попросити програму дати вам кореневу оболонку, коли ви можете просто першою програмою дати вам цю оболонку? Це має значення в будь-якому практичному сенсі? Ні, я просто педантичний.


Ви маєте рацію, це дещо зайве.
fitojb

Ну, не зовсім так: якщо ви використовуєте sudo suroot, так, просто перейдіть sudo -i, наприклад. Але це дійсно допомагає , якщо ви хочете стати іншим користувачем: sudo su - myuser.
hggdh

2
Є ще одна відмінність: sudo -iзміниться в /rootкаталог і sudo suзалишиться в каталозі, який ви є.
Лоран

1
@hggdh, sudo -u myuser.
psusi

3

Я б не погоджувався з іншими відповідями при розгляді випадків, коли ви хочете увійти як користувач, який не має оболонки. Це дуже поширений випадок із користувачами, призначеними для послуг.

Використання "sudo su" запустить оболонку, вказану користувачем. Однак у випадку користувача, призначеного для серверного процесу, оболонка є / usr / bin / false і реєстрація не вдасться. Замість цього слід ввести як:

sudo -sHu <server-user>

це ввійде до вас та перейде на його домашній шлях, навіть якщо користувачеві не призначено оболонки

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.