Управление другими системными модулями пользователя

Может ли один пользователь или, может быть, root, управлять услугами другого пользователя на уровне пользователя?

Я пробовал sudo -u <some user> systemctl --user restart <some service> , но он жалуется на dbus: не Failed to get D-Bus connection: Connection refused .

У меня была такая же проблема, когда я удаленно вошел в мою папку gentoo через ssh. В моем случае это произошло потому, что DBUS_SESSION_BUS_ADDRESS переменные среды 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 / '):

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