Como reiniciar o serviço de usuário de outro usuário como root?

Como reiniciar o serviço de usuário de outro usuário como root?

Então eu tenho este cenário: user-aestá 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 systemctlcomo 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 --machineconexõ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

informação relacionada