Isso é feito por meio de um gerente de autorização chamado polkit
:
polkit provides an authorization API intended to be used by privileged programs (“MECHANISMS”) offering service to unprivileged programs (“SUBJECTS”) often through some form of inter-process communication mechanism.
Com systemd
e polkit
usuários com sessão não remota podem emitir comandos relacionados à energia. Você pode listar todas as ações polkit
registradas e obter detalhes sobre qualquer uma delas com pkaction
(invocado sem argumentos, listará todos os IDs de ação).
Nesse caso em particular, o ID da ação é org.freedesktop.login1.reboot
, portanto, se você executar:
pkaction --action-id org.freedesktop.login1.reboot --verbose
a saída deve ser algo como:
org.freedesktop.login1.reboot:
description: Reboot the system
message: Authentication is required for rebooting the system.
vendor: The systemd Project
vendor_url: http://www.freedesktop.org/wiki/Software/systemd
icon:
implicit any: auth_admin_keep
implicit inactive: auth_admin_keep
implicit active: yes
Aqui, active: yes
significa que o usuário na sessão ativa está autorizado a
reinicialize o sistema (detalhes sobre autorizações implícitas em polkit
page). Você pode verificar se sua sessão está ativa com:
loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes