Normalmente, o sistema operacional inicia na inicialização um serviço que é executado como root e oferece aos ambientes de desktop algumas possibilidades em relação ao computador. Geralmente é o ConsoleKit ou o systemd-logind.
Por exemplo, no KDE, você pode desligar seu computador da linha de comando como um usuário normal com algo como:
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
Isso é possível porque o gerenciador de sessões do KDE entrará em contato com um serviço DBus que é executado como root e, quando chamado, executará o comando shutdown
com privilégios de root.
Em sistemas que executam o ConsoleKit, você pode usar:
gdbus call -y -d org.freedesktop.ConsoleKit \
-o /org/freedesktop/ConsoleKit/Manager \
-m org.freedesktop.ConsoleKit.Manager.Stop
Em sistemas que usam systemd-logind , o utilitário shutdown
já usa o DBus e não requer privilégios.
Para resumir, você pode desligar seu computador como um usuário normal porque o Desktop Environment executa um serviço que oferece a possibilidade de executar o comando shutdown [1] como root.
[1] Na verdade, o serviço faz outras coisas para garantir que o Ambiente de Área de Trabalho seja desligado corretamente.