`sudo reboot` проти` reboot` - в чому різниця?


60

Нещодавно я дізнався, що rebootпрацює так само добре, як sudo rebootі з того, що я можу сказати. Однак у багатьох випадках я бачу, як люди це говорять sudo reboot. Чому це? Вони однакові і просто особисті переваги? Або вони різні? Чи sudo rebootбільше reboot?


1
Перезавантаження системи звичайним користувачем навіть не звучить логічно. Зміна рівня запуску кореневого процесу (init) повинно бути можливим кореневим та лише користувачем root. Ви навіть не можете отримати доступ до ярликів файлових систем sysrq жодним іншим користувачем. АЛЕ! Ви можете перезавантажити свій linux за sysrq ключами , це не вимагає sudo:)
Світлана Лінуксенко

sudoє скороченням "Суперкористувач Do". Це не впливає на саму команду (ця істота reboot), вона просто змушує її працювати як надкористувач, а не як ви. Він використовується для того, щоб робити те, на що ви, можливо, не маєте дозволу, але не змінює те, що робити. Якщо ви вже маєте дозвіл на запуск reboot, то добре, просто запустіть reboot.
Лі Крокер

Для цього традиційно потрібно виконувати корінь. Старі звички важко ламаються.
Thorbjørn Ravn Andersen

6
@SvetlanaLinuxenko> Перезавантаження системи звичайним користувачем навіть не звучить логічно Користувач, який сидить за консоллю, може просто натиснути кнопку живлення або витягнути вилку, якщо ми не дозволимо їм перезавантажитися.
Каз

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

Відповіді:


114

Для Ubuntu 14.10 і новіших, sudoпотрібно.

Введення Systemd у 15.04 змінило спосіб обробки Ubuntu shutdownта reboot:

  1. Якщо ввійти в систему один користувач, sudoце не потрібно. Коли ввійти більше одного користувача, тоді sudoпотрібно.

  2. Застосування можуть гальмувати shutdownі reboot. Ви перекриваєте ці гальма sudo.

  3. Один користувач, який увійшов через систему, sshвсе ще потребує sudo.


Я думаю, що це включає і одного користувача, який увійшов у кілька разів.
mckenzm

6
Це не має нічого спільного з кількістю підключених користувачів. Можливість перезавантажуватись без використання sudoзалежить від консолі машини. Якщо ви ввімкнете машину, ви все одно не зможете перезавантажити її sudo, навіть якщо ви єдиний користувач, який увійшов у систему. І навпаки, якщо ви знаходитесь за консоллю, ви можете перезавантажитись sudoнавіть без інших користувачів підключено віддалено.
Дейв Шерохман

1
@DaveSherohman: Це не обов'язково правда - systemd все ще використовує окремі полькітські дії, залежно від того, чи єдина ти людина, яка ввійшла, чи є кілька. Це означає, що distro (або sysadmin) може дуже легко змусити їх вести себе по-різному.
grawity

21

На моїй машині 14.04, коли я (як звичайний користувач) rebootнабираю інформацію

reboot: Need to be root

У цьому різниця.

Як зазначив Терранс у коментарях, він працює інакше на пізніших системах, ніж на моїх. Тож ви, мабуть, бачите старих записів та / або користувачів (як я), які звикли вводити текст sudo reboot!


Цікаво! Мені зараз цікаво, якщо щось змінилося між 14.04 та 17.10, щоб зробити так, що вам не потрібно мати корінь reboot, або якщо в моїй системі є інші фактори, що змінюють це.
Zeke Egherman

3
@ZekeEgherman Я насправді думаю, що різниця сталася, коли вони змінилися з команд Upstart на Systemd для команд. Коли я дивлюсь на свою команду перезавантаження, вона вказує на посилання на /bin/systemctl. Ви можете перевірити своє, ввівши ls -al $(which reboot).
Терранс

@terrance, я також бачу посилання на /bin/systemct1яку версію ви?
Zeke Egherman

Це цікаво! Я щойно спробував це на моїй віртуальній машині перед випуском 18.04, і вона працює, як ви кажете. @ Терранс, я думаю, ви повинні написати справжню відповідь.
Органічний мармур

@ZekeEgherman 16.04. Ubuntu перейшов на Systemd о 15.04. Отже, 14.04 все ще буде Upstart тоді або initd, якщо саме так ви хочете назвати це.
Терранс

9

sudo rebootвикористовується в навчальних посібниках / інструкціях з міркувань сумісності

Поки reboot може працювати

  • якщо ви корінь або
  • якщо ви перебуваєте на хості з systemd та
  • якщо жодна програма не блокує перезавантаження

sudo rebootбуде " завжди " * працювати, незалежно від

  • чи ти корінь
  • чи ввійшли інші користувачі
  • чи блокуються програми
  • чи системний init, System V, Upstart, будь-який інший

* Ну, це, безумовно, спробує - якщо не буде ядерних процесів, які блокують / неправильно поводяться, це повинно працювати.


Він завжди буде працювати * якщо встановлено sudo.
пр.

7

Для себе багато разів, якщо я друкую, rebootце не дозволить мені через інгібітори Chrome під час перегляду YouTube та інших відкритих вкладок. Тому я змушений використовувати sudo reboot- більший молоток.

Це в Ubuntu 16.04


4

Дякую за обговорення, я радий це зараз зрозуміти!

Як згадував Терранс , у версії 15.04 вони перейшли з команд Upstart до Systemd для команд. Ця зміна означає, що rebootбільше не потрібні кореневі привілеї.

Щодо того, чому розпоряджається спільнота * nix sudo reboot, є кілька можливих причин:

  • Звичка - Люди були настільки звикли до sudo rebootперезавантаження, вони продовжують це робити, незважаючи на те, що це не потрібно
  • Неоновлені користувачі - Люди, які доручають користуватися sudo rebootверсіями Ubuntu нижче 15.04 або іншими дистрибутивами, які використовують Upstart для команд.

  • Сумісність - Це те, що здається мені найбільш правдоподібним: люди навчають, sudo rebootтому що гарантовано перезавантажити всі * nix системи, незалежно від того.

Додаткова примітка: від user535733 «и відповіді :

Введення системи в 15.04 змінило спосіб обробки Ubuntu відключення та перезавантаження:

  1. Якщо ввійти в систему один користувач, sudoце не потрібно. Коли ввійти більше одного користувача, sudoце потрібно.

  2. Програми можуть гальмувати відключення та перезавантаження. Ви перекриваєте ці гальма sudo.

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