У меня есть служба, которую я хочу начать с запуска системы. Я создал определение ap @.service для него как шаблона, потому что может быть много экземпляров.
Определяется в корневой системе d, это хорошо работает и запускает и останавливает службу в системе. Экземпляр службы устанавливается с systemctl enable [email protected]
, как и следовало ожидать. Root также может запускать и останавливать обслуживание без проблем. Служба работает в своей учетной записи (myuser), а не в корне, управляемой пользователем = myuser в шаблоне ap @.service.
Но я хочу, чтобы пользователь "myuser" мог запускать и останавливать свой собственный сервис без ущерба для безопасности системы.
Я переключился на использование пользовательской системы d и включил затяжку с помощью loginctl enable-linger myuser
. Затем я включаю службу, определенную в каталоге ~ myuser/.config/systemd/user. Служба теперь запускается и полностью останавливается с системой, как и было предусмотрено. Если я вхожу в терминал в качестве "myuser", systemctl --user start [email protected]
и systemctl --user stop [email protected]
работают отлично.
Однако, если я вхожу в систему как другой пользователь (user2) и выполняю sudo su - myuser
в терминале, тогда команды systemctl --user
теперь терпят неудачу с сообщением об ошибке "Не удалось получить соединение D-Bus: нет такого файла или каталога".
Как включить systemctl --user
для работы после команды sudo su - myuser
для переключения пользователя?