Allow Users to Shutdown (简体中文)
使用 systemd-logind
如果你正在使用Arch的默认 systemd,非远程会话中的用户可以使用电源相关的命令只要安装了 polkit 并且 会话不中断。关机命令:
# systemctl poweroff
按下待机、关机和休眠按钮和盖下显示屏的事件也由 logind 处理(参见 man logind.conf
)。
使用 sudo
首先安装 sudo:
# pacman -S sudo
然后,在 root 用户下用 visudo
命令添加以下到 /etc/sudoers
文件的末端。替换其中的 user
为你的用户名, hostname
为你的主机名。
user hostname =NOPASSWD: /sbin/shutdown -h now,/sbin/halt,/sbin/poweroff,/sbin/reboot
现在你的用户可以用 sudo shutdown -h now
命令关机, sudo reboot
命令重启了。用户也可以使用 poweroff
或 halt
关闭系统。如果你不想被提示输入密码,使用NOPASSWD:
标记。
为了方便起见,如果你已经启用了 ~/.bashrc
,你可以把这些别名添加到里面(或者添加到 /etc/bash.bashrc
使全系统生效):
alias reboot="sudo reboot" alias poweroff="sudo poweroff" alias halt="sudo halt"
使用 dbus 进行电源操作
可以使用 dbus 进行电源操作:
- 关机:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
- 重启:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
- 挂起:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
- 休眠 (挂起到硬盘):
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
方法生效的前提是用户具有调用PolicyKit关机的权限。默认情况下用户组“wheel”具有此权限。可以编辑/etc/polkit-1/localauthority.conf.d/50-localauthority.conf
来改变权限用户组。
使用 acpid
使用acpid可以允许任何人通过电源按钮物理关机。