Как в PHP выполнять команды шела под рутом?

программирование Linux php проблема unix

Есть скрипт на PHP который редактирует конфиги нагиоса. После редактирования надо выполнить проверку конфигов на ошибки системной командой "/etc/nagios3 -v /etc/nagios3/nagios.cfg" и обязательно под рутом, иначе выдается ошибка. И все это должно быть из PHP.

PHP функции system, exec и shell_exec работают некорректно, потому что не могу через них работать с правами рута.

Хотя есть php скрипт который идет с нагиосом, который спокойно запускает эту команду. таким образом
exec(NAGIOS_BIN." -v ".NCONFDIR."/temp/test/".$server.".cfg",$srv_summary[$server]);
Ответы:
Никак. Sudo разрешён только определённым юзерам.
Работают они корректно, свою задачу выполняют, но пароль, который просит sudo они не показывают. Если можешь править конфиг sudo, то можешь дать права веб-серверу не спрашивать пароль при выполнении конкретных команд. Но это не безопасно и лично я бы так делать не стал.
1) пишем программу на чистом си, делающую необходимые действия, и компилируем
2) бинарнику этой программы выставляем суидный бит (chmod +s), а владельцем делаем root
3) из php вызываем когда надо этот бинарник обычным вызовом exec.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.