Problème : Erreur de permission refusée dans Nginx
L'erreur "Stat() Failed (13: Permission Denied)" dans Nginx se produit lorsque le serveur web n'a pas les bonnes permissions pour accéder aux fichiers ou répertoires. Ce problème peut empêcher Nginx de servir du contenu ou d'exécuter des scripts, ce qui peut entraîner une indisponibilité du site web ou des problèmes de fonctionnement.
Résolution de l'erreur de permission refusée
Ajustement de la propriété des fichiers et répertoires
Pour corriger l'erreur de permission refusée, ajustez la propriété des fichiers et répertoires. Utilisez la commande chown pour changer le propriétaire des fichiers et répertoires à l'utilisateur Nginx, généralement www-data. Par exemple :
sudo chown www-data:www-data /username/test/static
Pour appliquer les changements de propriété à tous les fichiers et sous-répertoires, ajoutez l'option -R :
sudo chown -R www-data:www-data /username/test/static
Conseil: Vérifier les changements de propriété
Après avoir modifié la propriété, utilisez la commande 'ls -l' pour vérifier si les changements ont été appliqués correctement :
ls -l /username/test/static
Cela affichera les permissions des fichiers et répertoires, ainsi que les informations sur le propriétaire et le groupe.
Modification des permissions des répertoires
Modifiez les permissions des répertoires en utilisant la commande chmod. Définissez les bonnes valeurs pour permettre à Nginx d'accéder aux fichiers. Un paramètre de permission courant est 755, qui donne les permissions de lecture, écriture et exécution au propriétaire, et les permissions de lecture et d'exécution aux autres :
sudo chmod 755 /username/test/static
Définissez les bonnes permissions tout au long du chemin du répertoire. Chaque répertoire parent doit avoir au moins la permission d'exécution pour l'utilisateur Nginx :
sudo chmod 755 /username
sudo chmod 755 /username/test
Ajout de l'utilisateur Nginx au groupe requis
Si la modification de la propriété et des permissions ne fonctionne pas, ajoutez l'utilisateur Nginx au groupe nécessaire. Utilisez la commande gpasswd pour ajouter l'utilisateur www-data au groupe propriétaire du répertoire :
sudo gpasswd -a www-data username
Après avoir ajouté l'utilisateur Nginx au groupe, mettez à jour les permissions de groupe pour l'accès au répertoire :
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Cela donne au groupe la permission d'exécution sur chaque répertoire du chemin, permettant à Nginx d'accéder aux fichiers.
Test et vérification de la solution
Exécution de Nginx en tant qu'utilisateur approprié
Pour tester si Nginx peut accéder aux fichiers avec les nouvelles permissions, exécutez une commande en tant qu'utilisateur Nginx. Utilisez sudo pour passer à l'utilisateur www-data et essayez d'accéder aux fichiers :
sudo -u www-data stat /username/test/static/index.html
Si cette commande s'exécute sans erreur, Nginx peut maintenant accéder aux fichiers. Si vous voyez une erreur "Permission denied", revoyez les étapes précédentes et assurez-vous que toutes les permissions sont correctement définies.
Conseil: Vérifier la propriété des fichiers
Pour vérifier rapidement si la propriété des fichiers est correctement définie, utilisez la commande ls -l
:
ls -l /username/test/static/index.html
Cela affichera le propriétaire et le groupe du fichier. Assurez-vous qu'ils correspondent à l'utilisateur Nginx (généralement www-data).
Rechargement de la configuration Nginx
Après avoir modifié les permissions ou la propriété, rechargez la configuration Nginx pour appliquer les changements :
sudo systemctl reload nginx
Cette commande redémarre le service Nginx sans interrompre les connexions actives.
Pour vérifier si l'erreur est résolue, consultez les logs d'erreur Nginx :
sudo tail -f /var/log/nginx/error.log
Si vous ne voyez plus les erreurs "Permission denied" dans le log, le problème est résolu. Votre serveur Nginx devrait maintenant servir les fichiers statiques depuis le répertoire spécifié.