要从终端重新启动或关闭 Linux,可以分别使用reboot和poweroff。但是,这两个命令都需要 root 权限。为什么会这样?不要求它具有 root 权限会带来什么安全风险?GUI 为任何用户提供了一种关闭或重新启动的方法,那么为什么终端命令需要以 root 身份运行?
说到 GUI 中的选项,如果终端需要 root 权限来关闭或重新启动 Linux 计算机,那么 GUI 怎么能够在不需要输入密码的情况下提供执行相同操作的选项?
在 Arch Linux 上,使用 systemd,以下命令都是指向 的符号链接systemctl:
/usr/bin/telinit
/usr/bin/poweroff
/usr/bin/runlevel
/usr/bin/reboot
/usr/bin/halt
/usr/bin/shutdown
Run Code Online (Sandbox Code Playgroud)
我发现他们在授权方面的行为令人困惑:
$ shutdown
Must be root.
$ halt
Must be root.
$ telinit 3
# Asks for Polkit authorization
Run Code Online (Sandbox Code Playgroud)
既不poweroff也不reboot要求授权。poweroff实际上并没有关闭我的系统,笔记本电脑保持开机状态,屏幕上有文字说明它正在关闭 - 无限期。
我没有修改过 Polkit 规则,所以我想知道为什么他们的行为是这样。
wheel./etc/polkit-1/rules.d 似乎只包含一个默认规则集:
# tail /etc/polkit-1/rules.d/*
// DO NOT EDIT THIS FILE, it will be overwritten on update
//
// Default rules for polkit
//
// See the polkit(8) man page …Run Code Online (Sandbox Code Playgroud)