Я создал веб-приложение на python3, которое размещается на веб-сервере apache2 с использованием модуля wsgi. Теперь одно из требований к веб-приложению состоит в том, что ему необходимо перезапустить службу systemd на основе некоторых действий пользователя. Теперь я знаю, что в pyhton есть библиотека os, которая может мне помочь, но мое веб-приложение работает как пользовательские www-данные, поэтому команды выполняются www-данными, которым не разрешено запускать или останавливать службы systemd. После некоторого исследования я обнаружил, что мы можем добиться этого, отредактировав файл sudoers, но я все еще не уверен, следует ли давать www-data разрешение sudoers или нет.
Как лучше всего этого добиться? и какие меры безопасности мне нужно иметь в виду, поскольку это будет происходить в реальной производственной среде.
Услуга, которую необходимо контролировать, - это услуга, сделанная на заказ:
sudo systemctl restart kodi.service
Платформа - Ubuntu 18.04, а используемый веб-сервер - apache2.
Вы правы, добавляя пользователя в файл sudoers, но вы можете сделать это более детально, объяснив почему. Следуйте инструкциям по этому вопросу:
Затем пользователь получает все привилегии, необходимые для этой единственной команды; не systemd вообще. Это противостоит минимальной угрозе безопасности вашей системы в производственной среде и только на вашей собственной службе.