Tentando executar um serviço systemd com systemctl --user start foo.service
which contém ExecStart=touch /bar/baz
where /bar
has permissions drwxrwxr-x 1 root storage
. O usuário que está executando o comando pertence ao grupo storage
e pode executar o touch
comando do shell sem problemas, criando o arquivo. O serviço, no entanto, falha com um erro de permissão.
Pensei que as permissões do serviço corresponderiam ao usuário que o executa - e, de fato, fazer com que o serviço use a ${USER}
variável de ambiente em seu comando produz meu usuário, e o serviço aparece em minhas listas ps
ou .pstree ${USER}
foo.service
não contém ProtectSystem
ou qualquer entrada diferente de: Description
, EnvironmentFile
, Environment
, ExecStart
, KillSignal
, Restart
, RestartSec
. As entradas de ambiente são para carregar configuração não relacionada a permissão.
O serviço não usa realmente o usuário chamador para permissões? E se não, qual seria a melhor abordagem para resolver o problema? /bar
está em uma unidade montada, então posso apenas dmask 0000
no meu fstab, mas prefiro evitar essa abordagem.