Permitir que usuário não root execute determinados serviços systemd (não *), sem uma senha, usando uma regra polkit

1

Eu tenho um usuário não raiz que eu preciso para poder iniciar / parar / reiniciar um subconjunto de serviços no meu sistema sem solicitar uma senha de autorização. Idealmente, gostaria que isso fosse feito através do polkit, mas optaria pelo sudo se necessário. De qualquer forma, eu vi soluções aqui que incluem a adição de um arquivo à autoridade local e a inclusão de um arquivo .rules em /etc/polkit-1/rules.d , que especifica o (s) serviço (s) a ser (em) executado (s). Eu devo mencionar que isso é em um sistema CentOS7.

No entanto, a solução de autoridade local era para todos serviços e a solução de arquivo .rules (tirada daqui: systemd: Conceder uma permissão de usuário sem privilégios para alterar um serviço específico ) ainda solicitará uma senha, como" gerenciar unidades "action está definida como" auth_admin "em /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy .

Existe alguma maneira de o polkit permitir que um determinado usuário execute determinados serviços sem senha? Sem precisar dar a esse usuário privilégios abertos para a ação de unidades de gerenciamento? Eu basicamente quero privilégios de unidade de gerenciamento condicional.

Também algo interessante que notei: Se eu executar essa função

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

Funciona, embora para todos os serviços. Mas se eu tentar detalhar os serviços mudando para isso:

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

De repente, solicita uma senha. Não tenho certeza de por que ele também não solicitaria uma senha na primeira função, pois ela ainda está agindo de acordo com a ação de gerenciamento de unidades.

    
por pid_1 18.06.2018 / 22:11

0 respostas