Editar: opa, desculpe, não vi que esse tópico era muito antigo. Bem, isso pode ajudar outras pessoas ..
Eu completarei as respostas de rahmu e MV com uma solução técnica.
Encontrando o nome de usuário do servidor web
Em primeiro lugar, você precisará saber o nome de usuário sob o seu servidor web.
Se você estiver usando o Apache, ele pode ser apache
ou httpd
, www-data
, etc. Na maioria dos sistemas semelhantes ao Debian, o Apache é www-data
.
Para conferir, tente:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Verifique se o nome de usuário que este comando retorna é coerente (por exemplo, eu uso 99% do Apache, mas esse comando retorna tomcat7
).
Conceder permissões ao servidor Web ( chmod
, chown
)
Fazer chmod
de 666 ou 777 pode ser suficiente, mas não é seguro.
Dar permissões 666 ou 777 dará acesso a "outros". Então não apenas Apache, mas também sua avó e a NSA.
É melhor ser mais preciso e conceder permissões apenas a você e ao Apache, mas não à nossa avó. Altere o grupo de seus arquivos para fornecer o controle total sobre seus arquivos no servidor da web. Para fazer isso, altere o proprietário recursivamente:
chown -R www-data:www-data /folder/used/by/EE
Como alternativa, você pode manter acesso total aos seus arquivos alterando apenas o grupo:
chown -R yourusername:www-data /folder/used/by/EE
Em seguida, faça o chmod
apropriado para dar ao grupo www-data
as mesmas permissões que você. Por exemplo, se o modo real for 640, defina-o como 660. Veja a resposta de rahmu para mais explicações.
Conceder permissões ao servidor Web ( ACL
)
Às vezes, a primeira solução não é suficiente. Vou pegar o exemplo do Symfony Framework que registra e armazena em cache muitos dados. Por isso, precisa de acesso de gravação à pasta apropriada.
E o método chmod / chown pode não ser suficiente, quando você está usando em paralelo o Symfony Console na CLI (sob minha conta de usuário) e a Web (usuário do servidor web), isso causa muitos problemas porque o Symfony está constantemente modificando permissões.
Nesse caso, usaremos a ACL (Lista de controle de acesso), que é uma maneira mais avançada de gerenciar permissões.
Aqui os comandos dados pela documentação oficial do Symfony (por favor, adapte app/cache
e app/logs
às suas necessidades):
Em um sistema que suporta chmod +a
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "'whoami' allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
Em um sistema que não suporta chmod +a
Você precisará da ferramenta setfacl
, talvez ela esteja instalada no seu sistema por padrão. Caso contrário, siga a documentação do Ubuntu .
sudo setfacl -R -m u:"www-data":rwX -m u:'whoami':rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:'whoami':rwX app/cache app/logs