Рейтинг:1

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh не работает

флаг jp

Пытаюсь сделать через веб-интерфейс управление IPtables.

Создал файл test.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
эхо $ вывод;

Дал /usr/bin/iptables.sh NOPASSWD, чтобы я мог выполнить файл с помощью sudo через apache без использования пароля

судо iptables -L

sudoers-файл:

apache ВСЕ = (корень) NOPASSWD: /usr/bin/iptables.sh

Но я все еще получаю ошибку

Мы верим, что вы получили обычную лекцию от местной системы. Администратор. Обычно это сводится к этим трем вещам: # 1) Уважайте частную жизнь других. 2) Думайте, прежде чем печатать. №3) С большая сила приходит с большой ответственностью. sudo: требуется терминал прочитать пароль; либо используйте опцию -S для чтения из стандартного введите или настройте помощник askpass{"mode":"full","isActive":false}

Однако, если я использую

apache ВСЕ = (корень) NOPASSWD: ВСЕ

Все работает нормально.

Я дважды проверил свой каталог и использовал точный путь

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

Супер невежественный здесь, может ли кто-нибудь помочь мне с направлением? :'(

Рейтинг:1
флаг cz

Команда, с которой вы вызываете судо должно соответствовать тому, что в sudoers файл, но в вашем случае они не совпадают.

Вы пытались запустить Баш /usr/bin/iptables.sh, но sudoers позволяет только запустить /usr/bin/iptables.sh.

alvan avatar
флаг jp
Я в замешательстве, как я должен выполнить скрипт в этом случае? Нужно ли добавлять bash в sudoers?
Michael Hampton avatar
флаг cz
@alvan Почему у тебя вообще есть `bash`? Это избыточно. Вы можете делать что хотите, но важно то, что **они должны точно совпадать**.
alvan avatar
флаг jp
О, Боже мой. $output = shell_exec("sudo /usr/bin/iptables.sh 2>&1'"); Это действительно сработало
alvan avatar
флаг jp
Спасибо большое Михаил!!
Рейтинг:0
флаг us

Попробуйте с sudo, так как /usr/bin/iptables.sh ссылки на корень корня.

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
эхо $ вывод;
alvan avatar
флаг jp
Не повезло, в этом случае php ничего не выводит. Но когда я меняю файл sudoers на ВСЕ, это работает
Ajay Singh avatar
флаг us
@alvan вы пробовали приведенный выше код без пароля в sudoers, например -> apache ALL=(root) /usr/bin/iptables.sh ; Каков результат
alvan avatar
флаг jp
это апач 15 символов

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.