Я пытаюсь перезапустить сервис myservice
от сервиса, который выполняется как демон.
Я создал названный файл myapprestart
в /etc/sudoers.d/
это похоже на это
%myuser ALL=NOPASSWD: /bin/systemctl restart myservice
%myuser ALL=NOPASSWD: /bin/systemctl start myservice
%myuser ALL=NOPASSWD: /bin/systemctl stop myservice
myapprestart.service
демон работает успешно как синхронизированная единица, которая звонит /home/myuser/restart.sh
но всегда сбои со следующей строкой в journalctl
failed to stop myservice.service: Interactive authentication required.
файл сценария/home/myuser/restart.sh
содержит строки как ниже
systemctl stop myservice
systemctl start myservice
Мне нужны некоторые указатели на том, что я не делаю правильно. Я посмотрел по крайней мере на четыре подобных вопроса, но по некоторым причинам этот случай, кажется, не работает. Я использую человечность 19.02.
Ваш сценарий restart.sh
используйте systemctl
команда, которая является частью systemd; потому что для этой команды нужны корневые права из-за его роли, необходимо использовать sudo
команда, чтобы смочь использовать его (и Ваш пользователь должен быть отнесен в sudoers
как авторизованный sudo пользователь). Ваша команда была бы похожа ниже:
sudo /home/myuser/restart.sh
/home/myuser/restart.sh
просто полный путь для запуска сценария, который является тем же самым как выполнением sudo ./restart.sh
внутри /home/myuser/
папкаКроме того, поскольку OP упомянула это в комментарии, можно также звонить sudo
с полным путем с /usr/bin/sudo
(/usr/bin/sudo apt update
совпадает с sudo apt update
)