Estou trabalhando em um aplicativo Qt que acessa certas funções que exigem permissões de root (por exemplo, acessar recursos de hardware ou certas operações de E/S). Quando executo o aplicativo normalmente, recebo o seguinte erro:
ERRO: permissão de root necessária. ioperm: Operação não permitida Falha de segmentação (core dumped)
No entanto, o aplicativo roda bem quando eu o executo com sudo. Não quero usar sudo toda vez. Existe uma maneira de executar este aplicativo Qt sem precisar de sudo, mas ainda permitindo que ele acesse as funções privilegiadas necessárias?
Você pode instalar
lxqt-sudo
e criar um arquivo *.desktop para iniciar o programa necessário como usuário root.xterm
para seu aplicativo Qt)No seu iniciador de aplicativos, deve haver um novo programa chamado
MyRootApp
. Um prompt sudo aparecerá quando você iniciar esteVocê pode tornar o aplicativo executável setuid root. É assim que os aplicativos do sistema que precisam de permissões de root (como
sudo
ele) são executados.Você deve alterar o proprietário do arquivo para root e ativar o bit setuid:
O
u+s
argumentochmod
é o que define o bit setuid.A propósito. Não importa se é um aplicativo Qt ou não, isso funciona para qualquer arquivo executável binário (não um script).