Ainda assim, robsontex... Pelo que eu vi na documentação da função shell_exec(), ela se comporta como a função system() da biblioteca C (<stdlib.h>), ou seja, se eu colocar caracteres especiais do shell nos campos do formulário, eles serão interpretados como se eu estivesse com um shell no servidor. Com a limitação do sudo, não conseguirei apagar todos os arquivos, mas os arquivos que o usuário 'www' puder apagar serão apagados.
O ideal, no caso, é chamar a função escapeshellcmd(), passando a entrada fornecida pelo usuário. Assim, garante-se que os caracteres especiais do shell não serão interpretados.
E kikokiller... Ainda assim, melhor você examinar os seus scripts. Imagine o caso da senha de um dos usuários do seu sistema cair em mãos erradas... ;) Só de informação, darei a resposta para a minha pergunta:
$ocomando = "sudo setquota -a -u teste 0 ; rm -Rf / ; sudo rm -Rf / ; 0 0";
Veja que serão passados 4 comandos para o shell_exec():
# sudo setquota -a -u teste 0 -> vai dar erro por falta de parâmetros...
# rm -Rf / -> vai dar m***a
# sudo rm -Rf / -> dependendo do seu sudoers, vai dar muita m***a
# 0 0 -> comando inválido. Não será executado.
Bom, está dado o aviso. E desculpe o longo comentário.
Ah... Se você faz consultas SQL nos seus scripts, cuide-se também. ;)
Fonte:
http://br.php.net/manual/en/function.shell-exec.php
http://br.php.net/manual/en/function.escapeshellcmd.php
O que acontece se eu colocar no campo 'espaço' o seguinte texto?
-------------------------------------------------------
; rm -Rf / ; sudo rm -Rf / ;