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

Существует много вопросов о том, почему для shutdown и reboot требуются привилегии root. Есть много хороших ответов.

  • Почему мы должны быть root в терминале для выключения и перезапуска?

  • Почему для перезагрузки и отключения питания требуются привилегии root?

  • Как кнопка питания отключает компьютер без разрешения root?

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

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

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

Для меня, как 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 в систему, я должен ввести systemctl reboot -i без пароля. Я предполагаю, что разница в том, что система знает, что я в группе sudo.

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