segunda-feira

Rodando comando sudo com apache no Linux

Faz um tempo, eu precisei desenvolver um pequeno painel de controle em php para um cliente rodar comandos de baixo nível no Ubuntu 11.04, o processo foi muito simples mas quando precisei implantar o mesmo painel no CentOS5 não funcionou de primeira.

Inicialmente percebi que os usuários do apache são diferentes nas duas distribuições, no Ubuntu é www-data e no CentOS5 é apache. Para descobrí-los executei os comandos:

No Centos
ps axu | grep httpd 

No Ubuntu
ps axu | grep apache2

Até um determinado momento o php não gerava mensagem nenhuma, mas analisando os logs de acesso disponíveis em /var/log/httpd e tentando executar o comando com o usuário apache pelo console, gerou o seguinte erro:

sorry, you must have a tty to run sudo. 

Para solucionar o problema, editei o sudoers e comentei a linha Defaults requiretty
nano /etc/sudoers

Alterei
Defaults    requiretty

Para 
# Defaults    requiretty

e na ultima linha adicionei
apache ALL=(ALL) NOPASSWD:ALL