別のユーザーのユーザー サービスを root として再起動するにはどうすればよいでしょうか?

別のユーザーのユーザー サービスを root として再起動するにはどうすればよいでしょうか?

次のようなシナリオがあります: user-asystemd ユーザー サービスを実行していますuser-a-service。私は root なので、そのユーザー サービスを再起動したいのですが、方法が見つかりません。基本的に、次の操作を実行したいのです:

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

これはない特定の非ルートユーザーで実行される通常のシステム サービスですが、実際のユーザー サービスです。

答え1

これを行う唯一の方法は、systemctlそのユーザーとして実行し、D-Bus ユーザー バスまたはプライベート systemd ソケットのいずれかを見つけられるように適切な環境変数を使用することです。

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

--machine新しい systemd (v248) では、特別なホスト名を指定してループバック接続を使用できます.host。これにより、PAM(ログイン) を自動的に呼び出すことで環境設定が処理されます。

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

関連情報