他のユーザーのシステム単位の管理

他のユーザーのシステム単位の管理

あるユーザー(またはルート)が別のユーザーのユーザーレベルのシステムサービスを制御できますか?

私はこれを試しましたが、sudo -u <some user> systemctl --user restart <some service>dbus:について文句を言いますFailed to get D-Bus connection: Connection refused

ベストアンサー1

SSH経由でリモートでGentooボックスにログインしたときも同じ問題に直面しました。私の場合は、不足しているXDG_RUNTIME_DIR環境変数が原因でした。DBUS_SESSION_BUS_ADDRESS次のコマンドを実行して再試行してください。

export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

役に立つ場合は、これらのコマンドを.bashrcに入れることができます。 .bashrcよりもエレガントなソリューションが必要だと思いますが、これはディストリビューションによって異なります。

これが私が解決策を見つけた場所です。

編集する:

rootとしてログインした後、次のようにsystemctl --user他のユーザーとして正常に実行しましたsu

su -c 'XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status' username

または、以下を使用しますsudo(注意して、そのユーザーUID(1000)を「/run/user/」パスに明示的に追加する必要がありましたが、bashスクリプトで実行している場合は$ SUDO_UIDを代わりに使用できます)。

sudo -u username XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status

おすすめ記事