Интерфейс PHP для работы таблиц IP-маршрутизации ядра запрещен - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь выполнить команду добавления маршрута с PHP следующим образом: exec("/sbin/route -net 127.0.0.1", $output);, и я получаю SIOCADDRT operation not permitted.Я полагаю, это потому, что я не выполняю команду маршрута через sudo.Но я не могу сделать sudo из php, потому что команда запрашивает пароль su.Так как я могу запустить добавление маршрута без sudo?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Лучший способ сделать это, IMHO, это создать сценарий оболочки, который использует эту команду.После этого разрешите выполнение этого сценария оболочки от имени root в /etc/sudoers.

Синтаксис для добавления в файл sudoers можно найти в принятый ответ на этот вопрос .

Так что вам просто нужно:

exec("/usr/bin/sudo /path/to/script");

Таким образом, ваш пароль root не раскрывается, и вы можете добавить любую команду, которую хотите в своем скрипте.

0 голосов
/ 22 ноября 2011

Вы можете отправить set sudo для получения пароля из стандартного ввода, используя аргумент -S

exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...