Bash / upstart - comando de inicialização sob outro usuário, substituindo o processo atual

0

Estou iniciando um processo foobar como um serviço iniciante que deve ser executado sob o usuário joe . Para isso estou usando su -c :

script
    su -c "foobar" joe
end script

No entanto, o processo su ainda está por aí quando foobar é executado. Como posso substituir o processo? Existe uma opção para su ou outro utilitário (padrão)?

    
por Laurent Grégoire 23.10.2017 / 16:32

1 resposta

1

Não abuse do su para eliminar privilégios de usuário.

Não funcionou da maneira correta por quase duas décadas, e é de fato uma ferramenta para adicionar privilégios. Como o artigo com hiperlink explica em detalhes, não é adequado como uma ferramenta auxiliar do daemon. Você está testemunhando uma das razões pelas quais.

O Upstart tem a sub-rotina setuid para definir a conta de usuário que o (s) processo (s) de trabalho executa (s) ) como, como diz o Cookbook .

Se você realmente quiser uma ferramenta de carregamento em cadeia para fazer isso, a família dos daemontools de conjuntos de ferramentas tem essas ferramentas em abundância.

Use setuidgid , setuidgid , s6-setuidgid , chpst , runuid ou setuidgid no exec estrofe:

exec setuidgid joe foobar
    
por 23.10.2017 / 17:30