Como eu determino o usuário / grupo do Linux que executa tarefas do gerenciador systemd?

3

Estou tentando determinar qual usuário / grupo Linux executa as tarefas do systemd para que eu possa definir as permissões do D-Bus de acordo.

Quando faço isso:

sudo systemctl start myservice

Que finalmente chama um executável que tenta se registrar no D-Bus, no entanto, para que isso funcione, eu preciso fornecer as permissões do usuário na configuração do D-Bus. Como posso saber qual usuário / grupo de Linux está associado ao acima?

    
por Zugdud 21.08.2015 / 15:56

1 resposta

3

Você pode usar as diretivas User = e Group = no seu arquivo de unidade.

link

Os arquivos da unidade Systemd são bem documentados (em comparação com muitos outros softwares de código aberto). As diretivas que você pode usar em arquivos unitários estão espalhadas em muitas páginas do manual, portanto, as informações podem não ser tão fáceis de localizar e entender, especialmente se os conceitos do systemd não forem tão claros para o leitor.

Mas há uma página de índice para todas as diretivas:

link

Há mais documentação disponível:

link

Já faz um tempo que estou lendo, mas se me lembro corretamente A série de blog do Systemd for Administrators fornece um histórico razoável sobre os conceitos.

Para todas as questões do tipo

How can I tell...

Apenas adicione uma ExecStartPre = diretivas com os comandos adequados para testar / consultar os itens desejados.

Por exemplo,

ExecStartPre=/usr/bin/whoami

Note que o systemd não usa um shell por padrão, mas você sempre pode fazê-lo manualmente

ExecStartPre=/bin/sh -c "if true;then echo true;fi"

Você pode ver a saída de tais comandos usando systemctl status <myunit> ou examinando o diário usando o comando journalctl (como root!).

    
por 21.08.2015 / 17:26