Por que o systemctl pára a senha, mas o systemctl reinicia e o systemctl não liga?

2

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 pedirá senha. Mas eu posso usar os comandos systemctl reboot e systemctl poweroff e eles não pedirão senha e serão executados com sucesso. Eu acho que se ele pedir uma senha para halt , ele também deve pedir poweroff.

    
por Debian_yadav 04.08.2018 / 10:53

1 resposta

3

Em uma versão posterior, systemd v235, halt poderia ser permitido sem uma senha. Para torná-lo permitido, você teria que editar algum arquivo de configuração do polkit.

A descrição do commit que adicionou este recurso para suspensão, 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 poweroff / reboot são fornecidos em GUIs comuns e esperamos que funcionem sem precisar 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".

Eu revi este commit e ajudei a aprová-lo. Eu senti que era geralmente mais seguro para o sistema 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 de uma API se realmente não esperamos que ela seja usada pode ser positivamente indesejável. Ou pode ter sido uma maneira de impedir que os usuários façam algo que eles realmente não queriam fazer. Não tenho certeza. Eu vagamente imaginei uma outra preocupação. "halt" é definido para entrar no Monitor de ROM, se houver um. Se houvesse algum monitor de ROM hipotético que exigisse uma senha no momento da inicialização, não tenho certeza de que ela solicitaria a senha novamente quando o sistema operacional retornasse o controle.

Adicionar suporte a polkit na v235 foi um benefício colateral de fazer o suporte a logind parar. Isso foi implementado para fazer com que systemctl se comportasse de forma consistente para a parada, mas o suporte ao polkit não era realmente o motivo.

[1] PR # 6944 - "systemctl reboot / suspend tweaks" - commit 36b69c313120 - "logind: adicione as APIs Halt () e CanHalt ()"

Link: link

dicas do polkit

Você pode ver as configurações padrão do polkit em /usr/share/polkit-1/actions/org.freedesktop.login1.policy . Você pode pesquisar por entradas semelhantes para power-off e reboot e observar seu elemento <defaults> . E em v235 e acima, haverá uma entrada para halt que você pode comparar.

Você pode notar alguns detalhes adicionais. Por exemplo, se você tiver efetuado login pela rede, o sistema precisará de uma senha de administrador para desligar.

Se você souber o encantamento certo, poderá criar um arquivo em algum lugar abaixo de /etc/polkit-1 , que fornece uma configuração diferente do padrão. Meu palpite é que você tem que definir uma "regra".

    
por 04.08.2018 / 18:28