如何在没有root权限的情况下按电源按钮关闭电脑?

如何在没有root权限的情况下按电源按钮关闭电脑?

当我尝试从命令行或终端关闭计算机时,我必须拥有 root 权限:

amy@amy:~$ shutdown now
shutdown: Need to be root

amy@amy:~$ halt
halt: Need to be root

但是,当使用图形用户界面(即关机按钮或硬件关机按钮)关闭时,不会要求我输入密码。图形界面的关闭意味着什么?为什么它不需要密码或 root 权限?

我正在使用 Ubuntu 11.04 Natty。

答案1

硬件电源按钮触发 ACPI 事件acpid(ACPI 守护程序)注意到并做出反应;在这种情况下,通过关闭系统,尽管您可以让它做任何您想做的事情。 ACPI 守护进程以 root 身份运行,因此它有权关闭系统。桌面环境(例如gdmGnome)通常也以 root 身份运行,所以我怀疑它们的工作方式相同 - 你没有关闭系统的权限,但你可以告诉gdm你想要它关闭并且它可以在代表你

答案2

Michael 的回答正确地讨论了使用硬件电源开关时的系统功能,但大多数桌面环境实际上都用于dbus此目的,而不是自己执行此操作。例如,当单击关机按钮时,GNOME 使用 。发送此消息时,dbus会进行一些检查以确定发送消息的用户是否有权执行关机,如果是,则关闭系统。org.freedesktop.Hal.Device.SystemPowerManagement.Shutdowndbus

您可以使用 来模拟这一点dbus-send。例如,要使用 关闭系统dbus,请使用如下内容:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

相关内容