CENTOS apache ALL=(raíz) NOPASSWD: /path/to/shell.sh no funciona

CENTOS apache ALL=(raíz) NOPASSWD: /path/to/shell.sh no funciona

Intentando hacer una interfaz web de gestión de IPtables.

Creó un archivoprueba.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;

Proporcioné /usr/bin/iptables.sh NOPASSWD para poder ejecutar el archivo con sudo a través de Apache sin usar una contraseña.

sudo iptables -L

archivo sudoers:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

Pero sigo recibiendo error

Confiamos en que haya recibido el sermón habitual del administrador del sistema local. Generalmente se reduce a estas tres cosas: #1) Respetar la privacidad de los demás. #2) Piensa antes de escribir. #3) Un gran poder conlleva una gran responsabilidad. sudo: se requiere una terminal para leer la contraseña; use la opción -S para leer desde la entrada estándar o configure un asistente de Askpass{"mode":"full","isActive":false}

Sin embargo, si uso

apache ALL=(root) NOPASSWD: ALL

Todo funciona bien.

Revisé dos veces mi directorio y usé la ruta exacta.

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

Muy despistado aquí, ¿alguien puede ayudarme con una dirección? :'(

Respuesta1

El comando con el que llama sudodebe coincidir con lo que hay en el sudoersarchivo, pero en su caso no coinciden.

Intentaste ejecutar bash /usr/bin/iptables.sh, pero sudoerssolo te permite ejecutar /usr/bin/iptables.sh.

Respuesta2

Pruebe con sudo, ya que /usr/bin/iptables.shhace referencia a la raíz de la raíz.

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;

información relacionada