Я хочу создать интерфейс, аналогичный интерфейсу DSL-маршрутизатора, где вы можете редактировать сетевые настройки в браузере и перезапускать маршрутизатор с новыми настройками. Я хочу отредактировать некоторые настройки в браузере и запустить сервис systemd с помощью кнопки или чего-то подобного. Например, я хочу отправить html-форму в скрипт Python CGI, который затем изменил бы файл eth1.network и перезапустил сетевой сервис. У меня есть встроенное устройство Linux с запущенным веб-сервером Apache.
Проблема в том, что веб-пользователю Apache не разрешено запускать / останавливать системные службы, и, конечно, я не хочу, чтобы www-data запускал / останавливал системные службы.
Как я могу запускать / останавливать системные сервисы из браузера, не предоставляя привилегии root пользователю www-data. Я знаю, что по соображениям безопасности веб-серверу никогда не следует разрешать доступ к службам или к чему-либо вне корневой папки «var / www /».
Как маршрутизатор DSL выполняет это? Одно решение, которое я нашел, здесь:Безопасно ли разрешать www-данным выполнять привилегированные команды, но я не знаю, как мне это реализовать. Я был бы признателен за любое руководство или примеры.