%20NOPASSWD%3A%20%2Fpath%2Fto%2Fshell.sh%20no%20funciona.png)
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 sudo
debe coincidir con lo que hay en el sudoers
archivo, pero en su caso no coinciden.
Intentaste ejecutar bash /usr/bin/iptables.sh
, pero sudoers
solo te permite ejecutar /usr/bin/iptables.sh
.
Respuesta2
Pruebe con sudo, ya que /usr/bin/iptables.sh
hace 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;