Então eu tenho este cenário: user-a
está executando um systemd user service user-a-service
. Sou root e quero reiniciar esse serviço de usuário. Não consigo encontrar uma maneira de fazer isso. Basicamente eu quero isso:
systemctl --user user-a restart user-a-service
Por favor, não que issonãoum serviço normal do sistema em execução com um usuário não root específico, mas um serviço de usuário real.
Responder1
A única maneira de fazer isso é executando systemctl
como esse usuário - e com as variáveis de ambiente apropriadas para permitir que ele encontre o barramento do usuário D-Bus ou o soquete privado do systemd:
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service
Com o systemd mais recente (v248), você pode usar --machine
conexões de loopback especificando o hostname especial .host
; ele cuidará da configuração do ambiente chamando PAM(login) automaticamente:
systemctl --machine [email protected] --user restart user-a-service