Impossível executar o arquivo test.sh através de project.php dentro de / var / www /

0
O caminho de

test.sh é /var/www/proj/test.sh, e project.php está dentro de / var / www / e meu teste. sh usa e cria alguns arquivos .txt.

quando eu executo test.sh através do terminal funciona bem, mas quando eu corro project.php por

http://localhost/project.php

ele falha, as permissões nos arquivos txt também mudaram, então eu tenho que alterar manualmente as permissões do arquivo txt, mesmo para executar o terminal novamente.

Erros:

rm: remove write-protected regular empty file '/var/www/project/result/List.txt'?  
project/test.sh: line 8: /var/www/project/result/List.txt: Permission denied

Então, como posso dar permanentemente acesso de gravação a / var / www / *

    
por pali 21.04.2013 / 22:42

1 resposta

1

Para conceder acesso de gravação a /var/www , é necessário conceder acesso de gravação ao usuário que executa o servidor da web. No Ubuntu, por exemplo, isso geralmente pode ser feito com:

chown www-data /var/www
chmod u+w /var/www

(para definir www-data , sendo o usuário que está executando o servidor da web, como proprietário de /var/www e dando acesso de gravação ao diretório para seu proprietário - caso ele ainda não tenha). Dependendo da configuração do servidor, em alguns casos, isso pode não funcionar (por exemplo, bloqueado por uma política do SELinux ou do AppArmor).

No entanto, por razões de segurança, não é aconselhável fazer isso. No pior caso (dado um bug em um dos scripts em execução no servidor da web), um invasor externo pode gravar dados arbitrários para /var/www , colocando qualquer conteúdo em seu servidor web, ou scripts que ele possa executar ...

Dependendo do seu aplicativo, você pode conceder acesso ao servidor da web para outro diretório (dedicado) e recuperar os arquivos desse diretório quando precisar deles em um script PHP.

    
por 21.04.2013 / 22:57