Eu tenho um serviço na forma de um aplicativo node.js configurado com Systemd no Raspbian Jessie e está usando sua própria conta de usuário. No entanto, estou descobrindo que o serviço não é executado corretamente porque não possui as permissões necessárias. Um dos módulos de nó que instalei requer acesso root. Se eu executar o aplicativo manualmente com sudo, tudo funciona bem.
Existe uma maneira de dizer ao systemd para executar o serviço com sudo?
sudo
não tem nada a ver.Normalmente, você instrui o systemd a executar um serviço como um usuário/grupo específico com uma diretiva
User=
e na seção do arquivo de unidade.Group=
[Service]
Defina-os como root (ou remova-os, pois executar como root é o padrão).
Para esclarecer,
systemd
os serviços do sistema são executados como root por padrão, mas ainda há uma diferença entre o comportamento padrão e a execução de um serviço do sistema comUser=root
.Conforme documentado em Variáveis de ambiente em processos gerados , essas variáveis só são definidas se
User=
estiverem definidas:Eu testei para confirmar esse achado. Portanto, se você deseja executar um serviço systemd como root que precisa de uma das variáveis acima, você precisa definir
User=root
.uma solução temporária, mas funcionou em uma pitada:
Pode ser executado com um usuário que tenha privilégios sudo em um arquivo de unidade systemd assim:
Execute-o como usuário do sistema, neste caso, por padrão, o serviço está sendo executado como root.