Завершение работы с php – предоставление разрешения apache

Я работаю над встроенной системой Linux с веб-интерфейсом (apache). В основном мне нужно добавить функции останова и перезагрузки в веб-интерфейс. Однако при запуске я сталкиваюсь с проблемами разрешения:

exec («shutdown now») и т. д. при вызове через веб-страницу (например, apache).

Как я могу позволить этим командам вызываться из apache?

Предпочитаете, что вам не нужно предоставлять полный доступ к корневой папке apache, но безопасность системы не является большой проблемой в моем случае, поэтому, если это единственный способ, как я могу это сделать?

Создание Apache sudoer – опасный шаг, и я бы избегал этого. Я думаю, что QID близок к этому … самым простым решением является создание задания cron под root, которое выполняется каждые X секунд и проверяет файл в каталоге, в который может писать apache. Попросите apache добавить этот файл, если вы хотите завершить работу, а cron-скрипт должен иметь триггер, который (a) удаляет файл и (b) перезапускает машину.

Просто будьте осторожны, чтобы он правильно удалил файл и дал вам довольно длинную задержку cron, когда вы тестируете, или сервер будет просто перезагружаться непрерывно, и это будет беспорядок.

Не зная, как это сделать, я могу предложить уродливое решение для взлома: напишите крошечный демон, который запускается под учетной записью root, и принимает команды для закрытия системы, а ваш PHP-скрипт взаимодействует с демоном через разумно защищенный канал ( для вашего определения разумного, возможно, послать сигнал, возможно, напишите в файл, который видит демон, может быть, только сетевой сокет, что угодно).

вы должны знать, что вы делаете:

exec ("sudo …

apache ALL = (ВСЕ) NOPASSWD: ALL