あるユーザー、またはrootは、別のユーザーのユーザーレベルのシステムサービスを制御できますか?
私はもう試した Sudo -u <some user> systemctl --user restart <some service>
、しかしそれはdbusについて不平を言う:Failed to get D-Bus connection: Connection refused
。
私のgentooボックスにssh経由でリモートでログインしたときにも同じ問題が発生しました。私の場合、これは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としてログインすると、次のようにsu
を使用して別のユーザーとしてsystemctl --user
を正常に実行できました。
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