Eu tenho um serviço na forma de um aplicativo node.js configurado com o Systemd no Raspbian Jessie e ele 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 o sudo, tudo funcionará bem.
Existe uma maneira de dizer ao systemd para executar o serviço com o sudo?
systemd
executa os arquivos da unidade com direitos de root.Respostas:
sudo
não tem nada a ver com isso.Normalmente, você instrui o systemd a executar um serviço como um usuário / grupo específico com uma diretiva
User=
eGroup=
na[Service]
seção do arquivo da unidade.Defina-os como root (ou remova-os, pois executar como root é o padrão).
fonte
User=root
. Veja minha resposta.Para limpar, os
systemd
serviços do sistema são executados como raiz por padrão, mas ainda há uma diferença entre o comportamento padrão e a execução de um serviço do sistemaUser=root
.Conforme documentado em Variáveis de ambiente em processos gerados , essas variáveis são definidas apenas se
User=
estiverem definidas:Eu testei para confirmar esta descoberta. Portanto, se você deseja executar um serviço systemd como root que precise de uma das variáveis acima, é necessário definir
User=root
.fonte
uma solução temporária, mas funcionou rapidamente:
Pode ser executado com um usuário que tenha privilégios de sudo em um arquivo de unidade systemd da seguinte maneira:
fonte
sudo
desacelerará um pouco a inicialização. E é desnecessário.Execute-o como um usuário do sistema, neste caso, por padrão, o serviço está sendo executado como root.
fonte