Configurando o Systemd Service para ser executado com acesso root

11

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 tem as permissões necessárias. Um dos módulos de nó que eu 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?

    
por Luke 02.10.2016 / 13:41

4 respostas

16

tell systemd to run the service with sudo?

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= e Group= na seção [Service] do arquivo da unidade.

Defina-os como root (ou remova-os, já que a raiz é o padrão).

    
por 02.10.2016 / 14:00
6

Para limpar, 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 sistema com User=root .

Conforme documentado em Variáveis de ambiente em processos gerados , essas variáveis são definidas apenas se User= estiver definido:

$USER, $LOGNAME, $HOME, $SHELL

Eu testei para confirmar este achado. Portanto, se você deseja executar um serviço systemd como root que precisa de uma das variáveis acima, é necessário definir User=root .

    
por 01.05.2018 / 15:38
1

Execute-o como um usuário do sistema, neste caso, por padrão, o serviço está sendo executado como root.

    
por 03.10.2016 / 14:16
-1

uma solução temporária, mas conseguiu que funcionasse bem:

/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'

Pode ser executado com um usuário que tenha privilégios sudo em um arquivo de unidade do systemd da seguinte forma:

[Unit]
Description=Rails Webserver
After=syslog.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT

[Install]
WantedBy=multi-user.target
    
por 25.10.2018 / 04:34