Ir para o conteúdo

Executar comandos como root sem autenticação

Em muitos sistemas operacionais baseados em Linux, usuários avançados podem utilizar o arquivo /etc/sudoers para permitir a execução de determinados comandos via sudo sem a necessidade de autenticação. O KDE Linux não conta com o arquivo /etc/sudoers nem com o sudo; então, como é possível obter o mesmo resultado?

A solução consiste em configurar um serviço do systemd que execute o comando especificado e, em seguida, uma regra do polkit que permita invocar esse serviço do sistema sem a necessidade de autenticação.

Serviço do systemd

Aqui está um exemplo de serviço do systemd que executa /usr/bin/systemd-sysext refresh --always-refresh=yes para atualizar as extensões do systemd:

/etc/systemd/system/sysext-refresh.service

[Unit]
Description=Refresh systemd extensions

[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes

Regra do polkit

E aqui está um exemplo de regra do polkit que permite que membros ativos do grupo wheel, com sessão iniciada localmente, invoquem esse serviço do systemd sem a necessidade de autenticação:

/etc/polkit-1/rules.d/50-sysext-refresh.rules

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.systemd1.manage-units" &&
        action.lookup("unit") == "sysext-refresh.service" &&
        action.lookup("verb") == "start" &&
        subject.local &&
        subject.active &&
        subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

Para restringir ainda mais esta regra, de modo que ela ignore a autenticação apenas para você, substitua "wheel" pelo seu nome de usuário.

Use-o

Após criar ambos os arquivos, você pode atualizar as extensões do systemd sem precisar se autenticar, invocando o serviço do systemd: systemctl start sysext-refresh.

O mesmo pode ser feito para quaisquer outros comandos; basta criar os serviços do systemd e as regras do polkit adequados para eles.

Mais informações


Artigo contribuído por sob a licença CC-BY-4.0.