Permitir "systemctl halt" para todos os usuários? (systemd + debian)

0

É possível permitir "systemctl halt" para todos os usuários?

Atualmente apenas os comandos:

systemctl poweroff & systemctl reboot work on my system (Debian Jessie)

Quando eu chamo systemctl como um usuário normal, recebo a seguinte mensagem:

Failed to start halt.target: Access denied

Eu tentei os seguintes métodos:

  1. Método - tentei adicionar uma nova ação em: /usr/share/polkit-1/actions/org.freedesktop.login1.policy

copiei a ação

<action id="org.freedesktop.login1.power-off"> to
<action id="org.freedesktop.login1.halt">
  1. O método (e que funcionou) foi chmod u + s / sbin / halt mas porque / sbin / halt é um link para - > / bin / systemctl isso provavelmente não é uma boa ideia
por David Stark 26.05.2016 / 13:55

1 resposta

2

Passo 1: Aguarde alguns meses até que o Debian Stretch seja lançado - você precisa pelo menos do systemd v227, com commits 2ac3930f (polkit checando por /sbin/halt ) e 88ced61b (dados estendidos do polkit para systemctl halt etc.)

Passo 2: Crie uma regra de polkit em ... Na verdade, não, isso não será suficiente, porque mesmo o Stretch ainda tem polkit v0.105 , que ainda não suportava as regras baseadas em JS; apenas o formato .pkla consideravelmente mais limitado. Dito isso, v0.113 é finalmente em "experimental".

Mas se você atualizar para o systemd ≥v227 e polkit ≥v0.113, uma regra como essa deve funcionar:

/* copy to /etc/polkit-1/rules.d/systemd-allow-halt.rules */

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.systemd1.manage-units" &&
        action.lookup("unit") == "halt.service")
    {
        return polkit.Result.YES;
    }
});

Então, ensina-se a digitar systemctl poweroff . "Halt" não é o comando normal de desligamento; é o comando para literalmente parar a máquina - sem desligá-la. Não é muito útil.

Se você achar útil, use sudo :

# /etc/sudoers

ALL ALL=(root) NOPASSWD: /usr/bin/systemctl halt, /sbin/halt
    
por 26.05.2016 / 14:58