systemctl --userコマンドをrootとして実行する

systemctl --userコマンドをrootとして実行する

systemctl --user組織を管理するにはルートが必要です。

これでuser1systemdユーザーユニットを設定しました。ユーザーが端末やGUI、SSH経由で直接ログインすれば、すべてのsystemctl --user命令を実行することができる。

ユーザーがログインしている間は、rootとして次のコマンドを実行し、systemctl --user問題なくそのユーザーに対してすべてのコマンドを実行できます。

su - user1 -c "systemctl --user status myunit.service"

ただし、ユーザーがログアウトすると、systemctl --userrootを含む誰もそのユーザーとしてコマンドを実行できません。ずっと手に入れる

Failed to connect to bus: No such file or directory

ルートとして実行してもsudo - user1十分ではなく、同じエラーが発生します。ユーザーの組織を管理するには、ユーザーが実際にログインする必要があります。

明らかに、これは既知の「問題」です(システムが設計どおりに機能するときに参照されます)。

メモ:sで環境変数を設定しようとしましたが、XDG_RUNTIME_DIR役に立ちませんでした。user1bashrc

他のユーザーが解決策を見つけたようですが、うまくいきません。開発者は自分自身を承認していないようです。アイデア

私が見つけた唯一の回避策は、ユーザーアカウントにSSHでアクセスし、公開鍵で認証し、次のコマンドを実行することです。

ssh user1@localhost -f 'systemctl --user status myunit.service'

SSH接続を必要としない回避策を探しています。ユーザーがログインしていない場合、システムのユーザー単位を管理するにはrootが必要です。どうやってこれを達成できますか?

ベストアンサー1

システム248-M username@(2021年3月リリース)他のユーザーを指定するための構文サポートが導入されました。

$ sudo systemctl --user -M user1@ status myunit.service

参照: ドキュメントに記載されている新機能情報

(このソリューションは動作するために実行する必要はありませんloginctl enable-linger user1

おすすめ記事