Neste post, vamos aprender como executar os comandos que necessitam de privilégios de super usuário via PHP.

Problema

Na última semana, estava trabalhando com execução de comandos do POSTFIX. Portanto estava tudo bem até eu começar a executar os comandos “postqueue -f” e “postsuper -d ID”.

Até eu entender que estes comandos só podem serem executados com privilégios de super usuário, no caso o root, levei algumas horas.

Tudo bem até aí, já sabemos que o problema é permissão. Mas como executar um comando via PHP logado como ROOT?

Solução

Logo pensei comigo que isso é super fácil, basta colocar um exec(‘sudo postqueue -f’) e depois um exec(SENHADOROOT) e estaria feito!

Tá bom! Isso foi um sonho, pois nada disso funcionou.

Navegando pelo seguinte blog, Vivek and the World, eu encontrei a solução.

Então aqui fica a dica:

1) Execute o comando “sudo visudo” ou abra o arquivo “/etc/sudoers”

2) Adicione no final do arquivo a seguinte linha: www-data ALL=NOPASSWD: ALL

Obs.: Considerando que www-data é o nome do usuário do Apache.

3) Feito isso basta você executar seus comandos via PHP usando sempre o SUDO na frente:

Ex.: exec(‘sudo postqueue -f’)


Por hoje é isso pessoal, até a próxima!