当我尝试从命令行或终端关闭计算机时,我必须拥有 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 身份运行,因此它有权关闭系统。桌面环境(例如gdm
Gnome)通常也以 root 身份运行,所以我怀疑它们的工作方式相同 - 你没有关闭系统的权限,但你可以告诉gdm
你想要它关闭并且它可以在代表你
答案2
Michael 的回答正确地讨论了使用硬件电源开关时的系统功能,但大多数桌面环境实际上都用于dbus
此目的,而不是自己执行此操作。例如,当单击关机按钮时,GNOME 使用 。发送此消息时,dbus
会进行一些检查以确定发送消息的用户是否有权执行关机,如果是,则关闭系统。org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
dbus
您可以使用 来模拟这一点dbus-send
。例如,要使用 关闭系统dbus
,请使用如下内容:
dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown