2011-12-13 3 views
2

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

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

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

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

+2

Добавить пользователя apache в sudoers: http://stackoverflow.com/questions/3173201/sudo-in-php-exec – malletjo

+1

Возможно, можно предоставить apache доступ к '/ dev/initctl', и если да, то может затем разрешить ему выключать и перезапускать систему, не используя sudo или предоставляя ему root-доступ. Однако это чисто догадка. – qid

ответ

2

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

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

0

быть Суером вы знаете, что вы делаете:

Exec ("Суд ...

апач ALL = (ALL) NOPASSWD: ALL

+0

Использование sudo - хорошая идея, но в этом случае было бы возможно ограничить доступ Apache только к определенным командам, а не давать ему полные права доступа. – qid

+0

yup all кажется немного опасным для меня. –

1

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

Смежные вопросы