Назад | Перейти на главную страницу

PHP добавляет виртуальный хост динамически

Я разрабатываю веб-приложение PHP, которое, помимо прочего, должно позволять пользователю добавлять, редактировать и удалять записи виртуального хоста Apache. (Я включаю файл конфигурации с возможностью записи через Интернет в свой Apache2.conf). Как лучше всего перезапустить Apache или распознать эти изменения в файле vhost? Единственный способ, который я вижу, - это как-то расширить PHP до привилегий root и вызвать apachectl graceful при обновлении файла. Есть ли лучший способ? Я бы предпочел, чтобы изменения вступили в силу немедленно, вместо того, чтобы ждать выполнения crontab ....

С точки зрения безопасности трудно представить себе худшие идеи. Люди стараются изо всех сил использовать chroot и другие механизмы, чтобы попытаться УДАЛИТЬ привилегии из процесса / эффективного пользователя веб-сервера. Независимо от того, предоставляете ли вы расширенные привилегии веб-пользователю или нет, вы предоставляете веб-процессу возможность определять, какой тип сценария исполняется в каких каталогах, позволяя ему переписать файл конфигурации. Ужасная, ужасная идея.

Я бы предложил создать набор очень ограниченных действий, которые мог бы выполнять веб-сервер, например, записать имя и домашние каталоги необходимых виртуальных хостов в текстовый файл в корне сети. Другой процесс с необходимыми разрешениями может затем проверить синтаксис и внести в него необходимые изменения. Или отправьте команды напрямую через TCP-соединение на порт на том же компьютере, как описано ниже.

Чтобы ограничить повышение привилегий выполнением только одного этого действия, вы можете написать TCP-сервер, прослушивающий специальный порт, на который веб-служба могла бы отправлять сообщение о перезапуске; Я написал такие специализированные TCP-серверы (всего пара сотен строк на C, большая часть из которых доступна в виде шаблона), чтобы разрешить изолированному процессу веб-сервера chroot доступ к какой-либо другой службе, которая обычно была бы недоступна без предоставления ей carte очистить доступ к файловой системе и двоичным файлам.

Если вы действительно хотите сделать это с помощью Apache, прочтите о mod_vhost_alias - без изменений в httpd.conf, без перезапусков