关机与立即关机 - 以非 root 身份关闭系统

关机与立即关机 - 以非 root 身份关闭系统

我刚刚观察到一些奇怪的事情。

以非特权用户身份登录 archlinux 系统后,我执行了shutdown。正如预期的那样,它返回了Must be root.

令我惊讶的是,执行shutdown now它(显然!)确实不是检查当前用户是否具有 root 权限。它只是关闭机器。

我尝试在 Plasma DE 的 tty 和终端中重现此现象。

tty 屏幕录制


我正在运行带有当前软件包的 4.2.2 内核的 Archlinux。

我认为这与GUI 策略

总结:使用非 root 权限关闭系统shutdown now

答案1

实际上这不是我的答案——只是重新发布了一个答案,遗憾的是,该答案由于未知原因已被删除。

来源:http://web.archive.org/web/20151014220049/https://superuser.com/questions/985661/shutdown-vs-shutdown-now-shutting-down-system-as-non-root


在 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: 

这表明polkitArch Linux 和 Debian 默认设置了不同的方式。Arch Linux 的用户认为这比 有优势sudo,因为他们表示,Polkit 的维基页面

Polkit 用于控制系统范围的权限。它为非特权进程与特权进程提供了一种有组织的方式进行通信。与 sudo 等系统不同,它不会向整个进程授予 root 权限,而是允许对集中式系统策略进行更精细的控制。

和往常一样,YMMV。

至于shutdown now,我的猜测是它是到 的重定向systemctl poweroff,允许非特权用户执行此操作。

--https://superuser.com/users/255732/mariusmatutiae

相关内容