%20NOPASSWD%3A%20%2Fpath%2Fto%2Fshell.sh%20n%C3%A3o%20est%C3%A1%20funcionando.png)
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 sudo
deve corresponder ao que está no sudoers
arquivo, mas no seu caso eles não correspondem.
Você tentou executar bash /usr/bin/iptables.sh
, mas sudoers
só permite que você execute /usr/bin/iptables.sh
.
Responder2
Tente com o sudo, já que /usr/bin/iptables.sh
há referências à raiz da raiz.
$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;