Inicie o serviço systemd com um usuário “sistema” para executar um script bash

1

Para fins de teste, um arquivo de serviço do systemd serve para executar um script bash simples. Eu quero que o serviço seja iniciado por um usuário "sistema". O script bash é de propriedade desse usuário do sistema e concedeu permissão de execução.

O arquivo de serviço é simplesmente:

[Unit]
Description=Come one step closer
After=network-online.target
Requires=network-online.target

[Service]
User=test1
Group=test1
Type=simple
ExecStart=/usr/bin/bash /absolute/path/to/test.sh

[Install] 
WantedBy=multi-user.target

O script test.sh deve simplesmente passar uma mensagem para journalctl - é apenas para testes.

Eu recarreguei os arquivos da unidade do systemd com:

$ sudo systemctl daemon-reload

Eu iniciei o serviço com:

$ sudo systemctl start tester.service

A saída de systemctl status tester.service resulta que não há permissão para a execução do bash.

Eu adicionei o teste1 do usuário do "sistema" assim ao sistema:

$ sudo useradd -r -s /usr/bin/bash test1 -U

O que eu preciso fazer para o usuário test1 obter permissão para iniciar o serviço. Eu não posso testar o script bash com o usuário test1, porque como test1 sendo um usuário do sistema não consigo fazer logon como test1.

    
por bejo 14.11.2018 / 00:47

1 resposta

0

Como estabelecido nos comentários, o problema é com permissões dos diretórios acima de /absolute/path/to/test.sh , em que um usuário não-root precisa ter permissões "execute" (x) para poder acessar o script. / p>

Isso pode ser diagnosticado observando o modo de cada diretório pai, por exemplo, usando um comando como:

ls -ld / /absolute /absolute/path /absolute/path/to /absolute/path/to/test.sh

E verificar se o usuário "test1" teria permissões de execução para todos os diretórios, além de permissões de leitura para o próprio script test.sh .

    
por 14.11.2018 / 23:10