Я только что заметил нечто странное.
Зайдя в систему archlinux как непривилегированный пользователь, я выполнил shutdown
. Как и ожидалось, он вернулMust be root.
К моему удивлению, выполнение shutdown now
этого (судя по всему!) действительнонетпроверить, есть ли у текущего пользователя права root. Он просто выключает машину.
Я попытался воспроизвести это как в tty, так и в терминале в Plasma DE.
Я использую Archlinux с ядром 4.2.2 с текущими пакетами.
Я не думаю, что это связано сПолитики графического интерфейса пользователя.
tl;dr: завершение работы системы без прав root с помощьюshutdown now
решение1
На самом деле это не мой ответ — просто перепечатываю ответ, который, к сожалению, был удален по неизвестным причинам.
В Arch Linux при определенных обстоятельствах вы вполне можете выключить/перезагрузить/перевести в спящий режим... свой компьютер без прав root.
Страница Arch Linux Wiki по управлению питанием в Systemdсостояния:
polkit необходим для управления питанием как непривилегированный пользователь. Если вы находитесь в локальном сеансе пользователя systemd-logind и никакой другой сеанс не активен, следующие команды будут работать без привилегий root:
systemctl выключение питания
перезагрузка systemctl
systemctl приостановить
systemctl спящий режим
Чтобы проверить, разрешено ли вам это делать (то есть, у вас установлен polkit и ваш сеанс не прерван) вы можете использовать следующую команду:
$ loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes
В других systemd
системах, например, в моем Debian 8, это невозможно, несмотря на тот же ответ на эту команду:
$ loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes
$ systemctl reboot
==== AUTHENTICATING FOR org.freedesktop.login1.reboot ===
Authentication is required for rebooting the system.
Authenticating as: ,,, (myusername)
Password:
что указывает на то, что polkit
было установлено по умолчанию по-разному в Arch Linux и Debian. Люди Arch Linux видят преимущество этого над sudo
, в том, что они заявляют, ввики-страница о Polkit:
Polkit используется для управления привилегиями в масштабах всей системы. Он предоставляет организованный способ для непривилегированных процессов общаться с привилегированными. В отличие от таких систем, как sudo, он не предоставляет права root для всего процесса, а скорее обеспечивает более тонкий уровень управления централизованной системной политикой.
Как обычно, YMMV.
Что касается shutdown now
, я предполагаю, что это перенаправление на systemctl poweroff
, которое разрешено непривилегированному пользователю.