É muito importante ter permissões próprias para os arquivos em um servidor web, para evitar escalada de permissões em arquivos e tomada de posse do sistema.
Portanto, seguem algumas recomendações que são boa prática utilizada pela comunidade web em servidores de produção:
## Usuário e grupo dos arquivos: www-data
sudo chown -R www-data:www-data /caminho/do/sistema
## Arquivos: permissões 644
Arquivos não podem executar diretamente no shell. Só através do PHP.
sudo find /caminho/do/sistema -type f -exec chmod 644 {} \;
## Pastas: permissão 755
As pastas devem ter permissão 755 para funcionar corretamente.
sudo find /caminho/do/sistema -type d -exec chmod 755 {} \;
## Pastas que precisam de permissões de gravação
No Laravel, é necessário gravar arquivos em storage e bootstrap, por exemplo. As pastas que recebem upload de arquivos e outras coisas do tipo necessitam de permissão de gravação. Nestas pastas faça:
# alterar o grupo
sudo chgrp -R www-data storage bootstrap/cache
# dar permissão de gravação para o usuário e o grupo
sudo chmod -R ug+rwx storage bootstrap/cache
Com estas permissões a execução arbitrária de código fica mais difícil :)