CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh não está funcionando

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh não está funcionando

Tentando fazer um gerenciamento de IPtables de interface web.

Criou um arquivoteste.php

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

Dei /usr/bin/iptables.sh NOPASSWD para que eu possa executar o arquivo com sudo através do apache sem usar senha

sudo iptables -L

arquivo sudoers:

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

Mas ainda estou recebendo erro

Esperamos que você tenha recebido a palestra habitual do administrador do sistema local. Geralmente se resume a estas três coisas: #1) Respeitar a privacidade dos outros. #2) Pense antes de digitar. #3) Com grande poder vem uma grande responsabilidade. sudo: é necessário um terminal para ler a senha; use a opção -S para ler a entrada padrão ou configure um auxiliar askpass{"mode":"full","isActive":false}

No entanto, se eu usar

apache ALL=(root) NOPASSWD: ALL

Tudo funciona bem.

Verifiquei novamente meu diretório e usei o caminho exato

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

Super sem noção aqui, alguém pode me ajudar com uma direção? :'(

Responder1

O comando que você chama sudodeve corresponder ao que está no sudoersarquivo, mas no seu caso eles não correspondem.

Você tentou executar bash /usr/bin/iptables.sh, mas sudoerssó permite que você execute /usr/bin/iptables.sh.

Responder2

Tente com o sudo, já que /usr/bin/iptables.shhá referências à raiz da raiz.

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

informação relacionada