答案1
实际上这不是我的答案——只是重新发布了一个答案,遗憾的是,该答案由于未知原因已被删除。
在 Arch Linux 中,在某些情况下,您很可能会在没有 root 权限的情况下关闭/重启/休眠……您的电脑。
Arch Linux Wiki 页面关于 Systemd 下的电源管理状态:
polkit 是非特权用户进行电源管理所必需的。如果您处于本地 systemd-logind 用户会话中,且没有其他活动会话,则以下命令无需 root 权限即可运行:
systemctl 关机
systemctl 重启
systemctl 暂停
systemctl 休眠
要检查您是否被允许执行此操作(IE,您已经安装了 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
,允许非特权用户执行此操作。