Чому sudo потрібен для перезавантаження в терміналі, але не з GUI?


10

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

Але якщо я відкрию термінал і спробую запустити команду rebootабо shutdownтоді мені потрібно мати root-доступ. Чому це так?

Я можу придумати деякі причини подібної поведінки, як для вас, можливо, це sshвважається бажаним, але я не впевнений у цьому, або я можу зовсім пропустити якийсь момент.


Перевірте dbusсвоє графічне оточення (наприклад, KDE або gnome).
Геннес

Я думаю, що ти можеш це робити на кожному gui, я просто хочу знати, чому існує така особливість дизайну.
Аман Глибокий Гаутам

Відповіді:


6

Його функція безпеки.

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

Використовуючи sudo, це змушує вас використовувати пароль. Якщо ви введете неправильний пароль, він видасть помилку, і, сподіваємось, ви зрозумієте, що ви знаходитесь у неправильному терміналі. Ось чому його найкраща практика мати різний корінний пароль на кожному сервері.


Я теж думав те саме, але просто хотів переконатися, що я чогось не пропускаю .. :)
Aman Deep Gautam

1
Я бачив, як кілька адміністраторів Unix видаляють ім'я комп’ютера зі своїх підказок оболонки, оскільки це займає багато місця і пізніше шкодує про це рішення.
Келтарі

Зауважте, що це не зовсім захисний елемент у розумінні тут. Коли Unix запустився, ви отримали лише консолі (без GUI). І тільки користувач root мав дозвіл на вимкнення / перезапуск. Це все ще так. GUI обходить, використовуючи біт + s у файлах. Хоча ви можете видалити їх у своєму меню, скориставшись цими командами: askubuntu.com/questions/53308/…
Alexis Wilke

Я щойно бачив, що моє CentOS VM стверджує, що "перезавантаження" не було командою, коли я був su-ed root. Я sudo rebootтам набрав , і це спрацювало. Коли я безпосередньо SSH в якості root, він rebootпрацює чудово. Це дивно.
Стівен Лу

@StevenLu Перевірте свої шляхи. ("echo $ {PATH}") Можливо, в деяких випадках каталог "sbin" не стоїть на вашому шляху. У цьому випадку дивацтва може бути не в команді перезавантаження. Використання "яка перезавантаження" також може допомогти пояснити.
TOOGAM

0

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

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