未经root许可,电源按钮如何关闭计算机?


36

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

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

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

但是当使用图形用户界面(例如“关闭”按钮或硬件“关闭”按钮)关闭时,系统不会要求我输入密码。关闭图形界面会发生什么,为什么它不需要密码或root特权?

我正在使用Ubuntu 11.04 Natty。



1
因为如果攻击者可以物理访问您的计算机,那么您已经迷路了。试图阻止那些触手可及的人做几乎所有的事情,这充其量只是一种拖延战术,并且比起攻击者,这通常导致日常用户更加不便。如果正是出于这个原因,大多数Linux发行版会在启动过程中严肃提示您根提示。
Joseph Rogers

Answers:


33

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


安全吗?“你可以让它做任何你想做的事。”
2011年

7
acpid执行与已执行的操作不同的操作,您必须是root用户,因此您已经具有执行不安全操作的权限。也可以使用SELinux之类的MAC系统进行保护acpid,即使它们以root身份运行,也可以限制它们被允许执行的操作。
沃伦·杨

5
@amyassin好吧,要更改它,您需要root权限;普通用户无法告诉它该怎么做。但是acpid它是可配置的,它可以根据看到的硬件事件运行不同的脚本(例如,acpid按下电源按钮时我已锁定计算机)
Michael Mrozek

7
@amyassen如果某人可以物理访问您的计算机,那么担心安全性为时已晚-如果电源按钮未触发正常关机,他们可以拔下电源线并造成不正常关机。
Shadur 2011年

3
所说的“恶意软件”将必须具有root所有权和SUID权限才能告诉init进行关闭操作-而且,到那时,您可能要担心的问题比可能的关闭要大得多。
Shadur 2011年

11

Michael的回答正确地讨论了使用硬件电源开关时的系统功能,但是大多数台式机环境实际上是dbus出于此目的而不是自己做。例如,GNOME用途dbusorg.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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.