Eu tenho uma pergunta sobre permissões.
Distro: Debian GNU / Linux 6.0.4 (squeeze)
Então eu tenho uma pasta com um script php nela. A pasta e o arquivo são de propriedade do User1
Se eu fizer isso:
php script.php
Recebo um erro de permissão negada. Justo; Eu sou User2, não User1. Se eu fizer
sudo php script.php
isso funciona porque minha conta de usuário está configurada para isso.
Então eu escrevi este script para aceitar um argumento opcional para mostrar algumas coisas, como um modo "debug", então se eu fizer isso:
sudo php script.php debug
Produz algumas coisas para o CLI. Até aí tudo bem.
Mas, às vezes, a saída do script é muito longa e não consigo rolar para cima para ver a saída desde o início, portanto, desejo redirecionar a saída para um arquivo.
Então tentei o seguinte:
Isso me dá uma permissão negada erro.
sudo php script.php debug >> results.txt
Isso funciona
sudo touch results.txt
sudo chown User1 results.txt
sudo chmod 777 results.txt
sudo php script.php debug >> results.txt
Como alternativa, isso funciona
sudo su -
php script.php debug >> results.txt
Então, o que eu quero saber é ... por que o primeiro me deu uma permissão de erro negado? Eu pensei que o ponto do prefixo sudo é que eu execute o comando como root, que funciona para executar o script php ... mas parece-me que isso não se estende a executar o redirecionamento? Alguém pode explicar por quê?
EDITAR:
Então, encontrei algo de outro post aqui que funciona:
sudo php script.php debug | sudo tee results.txt
A resposta confirma minha suspeita sobre o redirecionamento que está sendo executado sob meu usuário e não sobre o sudo, mas não explica por que ... alguém pode explicar por quê?