Почему в Ubuntu 16.04 `reboot` и` poweroff` работают без привилегий суперпользователя?

10

Есть много вопросов о том, почему shutdownи rebootтребуются права суперпользователя. Также есть много хороших ответов.

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

Когда я набираю poweroffили rebootнажимаю на терминал Enter, он действительно выключается / перезагружается!

Это нормально для меня, когда poweroffи rebootне требуются права root ... но зачем suspendнужны права root? Когда я набираю suspendтерминал и нажимаю Enter, он не приостанавливается, вместо этого он застревает ... а когда я бегу pm-suspend, он требует sudo.

Северус Тукс
источник
Это должно быть возможно и в более старых версиях, если вы это настроите ( askubuntu.com/a/570969/158442 , обратите внимание на действия для сеансов mutliple). Хотя Systemd делает это по умолчанию. Также видно на Arch Linux.
Муру

Ответы:

3

Для меня как poweroffни rebootнужен пароль на Ubuntu 16.04.

Однако, чтобы это произошло, мне пришлось создать учетную запись пользователя с именем «foo», например, а затем ssh для localhost как этот пользователь или как я. Когда я делаю это, мне нужно аутентифицировать себя. Кажется, чтобы распознать другой пользователь вошел в систему.

Например, я получаю это сообщение:

User foo is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

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

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

Изменить: только что попробовал себя. Если я вошел в систему как foo, мне нужно аутентифицировать себя (кто входит в группу sudo). Если я перезагружаюсь, когда я все еще вошел в систему, я должен ввести systemctl reboot -iпароль без пароля. Полагаю, разница в том, что система знает, что я в группе sudo.

Редактирование 2: Как заметил Северус Тукс, он systemctl suspend -iвел себя так же, как и systemctl reboot -iв предыдущем редактировании.

луч
источник
Ах .. Я не пробовал это. Кстати, команда приостановки работает на вашем компьютере? Мне нужно убедиться, что это ошибка
Северус Тукс
Если я ssh к localhost и приостановить, я потерпел неудачу. Я получаю «-bash: suspend: не могу приостановить оболочку входа».
Рэй
Если я открою окно и попытаюсь «приостановить», окно терминала зависнет. :-) Не очень хороший знак ... Я думаю, что это не связано. В любом случае, спасибо за вопрос! Я никогда не думал попробовать себя, но твой вопрос вызвал у меня любопытство. Я все еще имею привычку перезагружаться с sudo ... не заметил этого тонкого изменения.
Рэй
Спасибо. Как вы сказали о перезагрузке, "systemctl suspend -i" также работает хорошо. подумайте над тем, чтобы добавить это к своему ответу
Северус Тукс
ОК! Возможно, мне следовало добавить все это одним сообщением, но каждый раз, когда я что-то пробовал, это приводило к перезагрузке, поэтому мне приходилось сохранять то, что я публиковал ...
Рэй