Итак, у меня такой сценарий: user-a
запущена служба пользователя systemd user-a-service
. Я root и хочу перезапустить эту службу пользователя. Я не могу найти способ это сделать. По сути, мне нужно следующее:
systemctl --user user-a restart user-a-service
Пожалуйста, не забывайте, что этонетобычная системная служба, работающая под определенным пользователем, не являющимся root, но являющаяся реальной пользовательской службой.
решение1
Единственный способ сделать это — запустить его systemctl
от имени этого пользователя и с соответствующими переменными среды, чтобы позволить ему найти либо пользовательскую шину D-Bus, либо частный сокет systemd:
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service
В более новой версии systemd (v248) можно использовать --machine
петлевые соединения, указав специальное имя хоста .host
; он выполнит настройку среды, автоматически вызвав PAM(login):
systemctl --machine [email protected] --user restart user-a-service