如何以 root 身份重新启动其他用户的用户服务?

如何以 root 身份重新启动其他用户的用户服务?

所以我有这样的场景:user-a正在运行一个 systemd 用户服务user-a-service。我是 root,我想重新启动该用户服务。我找不到办法。基本上我想要这个:

systemctl --user user-a restart user-a-service

请注意不是由特定的非root用户运行的正常系统服务,但却是实际的用户服务。

答案1

唯一的方法是以systemctl该用户身份运行 - 并使用适当的环境变量以允许它找到 D-Bus 用户总线或私有 systemd 套接字:

sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service

使用较新的 systemd (v248),您可以--machine通过指定特殊主机名来使用环回连接.host;它将通过自动调用 PAM(login) 来处理环境设置:

systemctl --machine [email protected] --user restart user-a-service

相关内容