как запустить системные сервисы, отправив запрос через браузер

374
Ahmad Karim

Я хочу создать интерфейс, аналогичный интерфейсу DSL-маршрутизатора, где вы можете редактировать сетевые настройки в браузере и перезапускать маршрутизатор с новыми настройками. Я хочу отредактировать некоторые настройки в браузере и запустить сервис systemd с помощью кнопки или чего-то подобного. Например, я хочу отправить html-форму в скрипт Python CGI, который затем изменил бы файл eth1.network и перезапустил сетевой сервис. У меня есть встроенное устройство Linux с запущенным веб-сервером Apache.

Проблема в том, что веб-пользователю Apache не разрешено запускать / останавливать системные службы, и, конечно, я не хочу, чтобы www-data запускал / останавливал системные службы.

  • Как я могу запускать / останавливать системные сервисы из браузера, не предоставляя привилегии root пользователю www-data. Я знаю, что по соображениям безопасности веб-серверу никогда не следует разрешать доступ к службам или к чему-либо вне корневой папки «var / www /».

  • Как маршрутизатор DSL выполняет это? Одно решение, которое я нашел, здесь: Безопасно ли разрешать www-данным выполнять привилегированные команды, но я не знаю, как мне это реализовать. Я был бы признателен за любое руководство или примеры.

0

1 ответ на вопрос

0
Alex

НЕ позволяйте запускать привилегированные команды, если вы открыты для доступа к Интернету www-data. Это способ искать проблемы.

Вы можете использовать URL-стук для таких вещей. Вы можете создать секретный URL и на сервере постоянно следить за изменениями в файле журнала apache tail -f, который не загружает сервер, поскольку он использовал функцию inotify ядра . Таким образом, когда вы вызываете ваш секретный URL, скрипт (независимо от того, является ли он оболочкой, python и т. Д.), Который запускается под привилегированной учетной записью, будет запускать одну конкретную задачу. Таким образом, в основном это своего рода IPC между непривилегированным пользователем и операциями, которые должны выполняться с наивысшими (корневыми?) Привилегиями. Вы должны внедрить некоторый механизм аутентификации для защиты этого секретного URL, чтобы избежать DDoS. Кроме того, если бы вы использовали HTTPS для таких вещей, тогда ваш секретный URL не был бы открыт для посредников .

Похожие вопросы