Eu tenho um aplicativo GUI que precisa chamar um daemon (escrito em Python) com privilégios de superusuário. Eu gostaria de fazer isso sem solicitar ao usuário uma senha.
Como o daemon é um script, não posso definir o bit SUID diretamente. Eu poderia escrever um invólucro em C para isso, mas prefiro não reinventar a roda, especialmente quando um erro da minha parte poderia levar à segurança do sistema seriamente comprometida.
O que eu normalmente faria nessa situação é adicionar uma linha /etc/sudoers
que permita aos usuários executar o daemon como root sem uma senha, usando a diretiva NOPASSWD. Isso funciona bem na linha de comando. No entanto, quando faço isso a partir da GUI, pkexec
aparece uma caixa de diálogo solicitando a senha do usuário. Parece que no Ubuntu, as chamadas sudo
da GUI estão sendo interceptadas de alguma forma pkexec
.
Existe uma maneira limpa de contornar isso? Eu realmente prefiro não ter que lidar com os aborrecimentos de um script setuid.
sudo somecommand
, a caixa de diálogo exibida é uma pkexec
caixa de diálogo com senha, independentemente de haver uma política de sudoers que permita a execução do programa.