O desligamento da roda dentada verifica se você está autorizado a desligar a máquina. Isso é feito por meio do PolicyKit. Em caso de encerramento, esta declaração no arquivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
é verificada:
<action id="org.freedesktop.consolekit.system.stop">
<description>Stop the system</description>
<message>System policy prevents stopping the system</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
O PolicyKit dispara um comando dbus-send
. Em caso de desligamento, seria:
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Existe um daemon rodando em segundo plano com Privilégios-raiz que invoca o comando shutdown para você.
Quando você quiser desligar a máquina "da maneira antiga" via linha de comando ( shutdown, reboot, halt, ...
), então você precisa adicionar o suid-Bit a esses comandos. Mas esteja ciente de que todos em seu sistema, que têm acesso ao shell, podem desligar sua máquina.