Problema: Erro de Permissão Negada no Nginx
O erro "Stat() Failed (13: Permission Denied)" no Nginx ocorre quando o servidor web não tem as permissões corretas para acessar arquivos ou diretórios. Esse problema pode impedir o Nginx de servir conteúdo ou executar scripts, causando indisponibilidade do site ou problemas em seu funcionamento.
Resolvendo o Erro de Permissão Negada
Ajustando a propriedade de arquivos e diretórios
Para corrigir o erro de Permissão Negada, ajuste a propriedade dos arquivos e diretórios. Use o comando chown para alterar o proprietário dos arquivos e diretórios para o usuário do Nginx, geralmente www-data. Por exemplo:
sudo chown www-data:www-data /username/test/static
Para aplicar as mudanças de propriedade a todos os arquivos e subdiretórios, adicione a opção -R:
sudo chown -R www-data:www-data /username/test/static
Dica: Verificar mudanças de propriedade
Após alterar a propriedade, use o comando 'ls -l' para verificar se as mudanças foram aplicadas corretamente:
ls -l /username/test/static
Isso exibirá as permissões, o proprietário e as informações de grupo dos arquivos e diretórios.
Modificando as permissões dos diretórios
Modifique as permissões dos diretórios usando o comando chmod. Defina os valores corretos para permitir que o Nginx acesse os arquivos. Uma configuração comum de permissão é 755, que dá permissões de leitura, escrita e execução ao proprietário, e permissões de leitura e execução aos outros:
sudo chmod 755 /username/test/static
Defina o acesso adequado ao longo de todo o caminho do diretório. Cada diretório pai deve ter pelo menos permissão de execução para o usuário do Nginx:
sudo chmod 755 /username
sudo chmod 755 /username/test
Adicionando o usuário do Nginx ao grupo necessário
Se mudar a propriedade e as permissões não funcionar, adicione o usuário do Nginx ao grupo necessário. Use o comando gpasswd para adicionar o usuário www-data ao grupo que é dono do diretório:
sudo gpasswd -a www-data username
Depois de adicionar o usuário do Nginx ao grupo, atualize as permissões de grupo para acesso ao diretório:
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Isso dá ao grupo permissão de execução em cada diretório no caminho, permitindo que o Nginx acesse os arquivos.
Testando e Verificando a Solução
Executando o Nginx como o usuário apropriado
Para testar se o Nginx pode acessar os arquivos com as novas permissões, execute um comando como o usuário do Nginx. Use sudo para mudar para o usuário www-data e tente acessar os arquivos:
sudo -u www-data stat /username/test/static/index.html
Se este comando for executado sem erros, o Nginx agora pode acessar os arquivos. Se você ver um erro de "Permission denied", revise os passos anteriores e certifique-se de que todas as permissões estão definidas corretamente.
Dica: Verificar Propriedade do Arquivo
Para verificar rapidamente se a propriedade do arquivo está configurada corretamente, use o comando ls -l
:
ls -l /username/test/static/index.html
Isso exibirá o proprietário e o grupo do arquivo. Certifique-se de que eles correspondam ao usuário do Nginx (geralmente www-data).
Recarregando a configuração do Nginx
Após alterar as permissões ou a propriedade, recarregue a configuração do Nginx para aplicar as mudanças:
sudo systemctl reload nginx
Este comando reinicia o serviço Nginx sem interromper as conexões ativas.
Para verificar se o erro foi resolvido, olhe os logs de erro do Nginx:
sudo tail -f /var/log/nginx/error.log
Se você não vir os erros de "Permission denied" no log, o problema está resolvido. Seu servidor Nginx agora deve servir os arquivos estáticos do diretório especificado.