Как перезапустить службу другого пользователя с правами root?

Как перезапустить службу другого пользователя с правами root?

Итак, у меня такой сценарий: 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

Связанный контент