Estou usando o Debian 9.5. Do terminal sempre que eu digitar o comando systemctl halt
, ele dirá:
Authentication is required to start halt.target
e ele vai pedir a senha. Mas eu posso usar comandos systemctl reboot
e systemctl poweroff
eles não pedirão senha e serão executados com sucesso. Eu acho que se ele pedir senha para parar , então ele também deve pedir poweroff .
Em uma versão posterior, systemd v235, halt pode ser permitido sem senha. Para torná-lo permitido, você teria que editar algum arquivo de configuração do polkit.
A descrição no commit que adicionou este recurso para halt, diz que "todo o conceito de parada não é realmente muito útil".[1] Eu acho que esse ponto de vista explica a diferença vs poweroff/reboot :-).
Outra maneira de ver isso é que os botões de desligamento/reinicialização são fornecidos em GUIs comuns e esperamos que funcionem sem a necessidade de uma senha. O projeto systemd está fornecendo uma maneira de implementar isso. Mas o usuário normalmente não quer um botão separado para "parar".
Revisei este commit e ajudei a aprová-lo. Eu senti que era geralmente mais seguro para o systemd não mudar esse comportamento, e não havia uma razão clara para a mudança.
O comportamento original pode ter sido considerado mais simples... manter o código e a documentação para uma API se não esperássemos que ela fosse usada pode ser positivamente indesejável. Ou pode ter sido uma maneira de impedir os usuários de fazer algo que eles realmente não queriam fazer. Não tenho certeza. Eu imaginei vagamente uma outra preocupação. "halt" é definido para entrar no ROM Monitor, se houver. Se houvesse algum monitor ROM hipotético que exigisse uma senha no momento da inicialização, não tenho certeza de que ele solicitaria a senha novamente quando o sistema operacional devolvesse o controle.
Adicionar suporte ao polkit na v235 foi um benefício colateral de interromper o suporte ao logind. Isso foi implementado para fazer com que
systemctl
se comportasse de forma consistente para parar, mas o suporte ao polkit não era realmente o motivo.[1] PR #6944 - "systemctl reboot/suspender tweaks" - commit 36b69c313120 - "logind: add Halt() e CanHalt() APIs"
Link: https://github.com/systemd/systemd/pull/6944/commits/36b69c31312007f522a2a7ae5087ae90bd7867cc
dicas de polkit
Você pode ver as configurações padrão do polkit em
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
. Você pode procurar por entradas semelhantes parapower-off
ereboot
, e observar seu<defaults>
elemento. E na v235 e acima, haverá uma entrada para ahalt
qual você pode comparar.Você pode notar alguns detalhes adicionais. Por exemplo, se você fez login pela rede, o sistema exigirá uma senha de administrador para desligar.
Se você souber o encantamento correto, poderá criar um arquivo em algum lugar sob o
/etc/polkit-1
qual forneça uma configuração diferente do padrão. Meu palpite é que você tem que definir uma "regra".