Completarei as respostas de rahmu e MV com uma solução técnica. Tudo o que se segue é válido apenas para sistemas do tipo UNIX.
Role a seção chmod / chown para obter um exemplo usando ACLs - uma ferramenta mais poderosa que os modos de arquivo UNIX.
Localizando o Nome de Usuário do Servidor da Web
Primeiro, você precisará saber o nome de usuário sob o qual o servidor da web é executado. Se você estiver usando Apache, pode ser apacheou httpd, www-dataetc. Na maioria Debian-like sistemas, Apache é www-data. Para nginx, geralmente, é também 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
Certifique-se de que o nome de usuário que esse comando retorne seja coerente (por exemplo, eu uso o nginx 99% do tempo, mas esse comando retorna tomcat7, um servidor da Web Java que instalei uma vez) .
Conceder permissões ao servidor da Web: usando chmodechown
Fazer chmod666 ou 777 (a solução ideal para esse tipo de problemas em documentações / tutoriais ruins) pode fazer magicamente as coisas funcionarem, mas é inseguro. A concessão de permissões 666 ou 777 dará acesso a "outros". Portanto, não apenas o Apache, mas também grandmothere nsa(desde que essas contas de usuário existam na sua máquina - mas na verdade não, evite fazer isso, a menos que seja apenas para teste / solução de problemas).
É melhor ser mais específico e conceder permissões apenas para você e o Apache. Altere o grupo dos seus arquivos para fornecer o controle total dos arquivos no servidor da web. Para fazer isso, altere o proprietário recursivamente:
chown -R www-data:www-data your/folder/
Mas o mais provável é que você queira manter acesso total aos seus arquivos alterando apenas o grupo:
chown -R yourusername:www-data your/folder/
Em seguida, faça o apropriado chmodpara conceder ao grupo www-dataas mesmas permissões que você. Por exemplo, se o modo atual for 640 (6 para você, 4 para www-data, 0 para outros, traduzindo para -rw-r -----) , configure-o para 660 (6 para você, 6 para www- dados, 0 para outros, traduzindo para -rw-rw ----) . Veja a resposta de rahmu para saber mais sobre os modos de arquivo, é um mecanismo antigo, porém elegante.
Para evitar manipular números misteriosos chmod, você também pode usar esta sintaxe:
chmod -R g+rw your/folder/
Significa "para o grupo ( g), adicione ( +) permissões de leitura e gravação ( rw) na pasta your/folder/, recursivamente ( -R)".
Em 90% dos casos, isso deve ser suficiente.
Meu método preferido: usando ACLs (lista de controle de acesso)
Às vezes, a primeira solução não é suficiente. Vou usar o exemplo do Symfony Framework que registra e armazena em cache muitos dados. Portanto, ele precisa de acesso de gravação à pasta apropriada.
E o método chmod/ chownpode não ser suficiente, quando você estiver usando em paralelo o Symfony Console na CLI (na minha conta de usuário) e a Web (usuário do servidor da web). Isso causa muitos problemas porque o Symfony está constantemente modificando as permissões.
Nesse caso, usaremos a ACL (Lista de controle de acesso), que é uma maneira mais avançada de gerenciar permissões em muitos sistemas UNIX.
Aqui estão os comandos fornecidos pela documentação oficial do Symfony ( altere app/cachee de acordo app/logscom as suas necessidades ):
Em um sistema que suporta chmod +a(ie. Não Debian / Ubuntu)
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(o mais comum)
Você precisará da setfaclferramenta; talvez ele esteja instalado no seu sistema por padrão, então tente setfacl -vver se o comando está disponível.
Se o comando não estiver disponível e você estiver usando o Ubuntu 14.04+, basta instalar a ferramenta:
sudo apt install acl
Caso contrário, siga a documentação do sistema operacional, pois pode ser necessário alterar a forma como sua partição é montada ( documentação do Ubuntu aqui ).
E aí estamos nós:
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
Eu nunca tive problemas com esse método, satisfeito ou com seu dinheiro de volta.