Permission denied ne signifie pas automatiquement qu'il faut autoriser tout le monde. Vérifiez d'abord l'utilisateur, le fichier et le chemin. Ce guide concerne les droits Unix classiques sous GNU/Linux ; des contrôles supplémentaires peuvent s'appliquer indépendamment.
Étapes
- Notez le chemin complet et l'action voulue : lecture, écriture, exécution ou création d'un fichier dans un répertoire. Remplacez /path/file par le chemin réel dans les exemples.
- Consultez id pour identifier l'utilisateur et les groupes de la session. Pour un service, c'est son compte d'exécution qui compte, pas votre session interactive. Identifiez-le dans sa configuration.
- Examinez
ls -ld /path/fileet ls -ld /path. La sortie indique type, mode, propriétaire et groupe. Vérifiez aussi les autres répertoires parents. Un lien symbolique n'est pas le fichier cible ; examinez la cible séparément. - Déterminez la classe applicable : propriétaire, sinon groupe correspondant, sinon autres. Pour un répertoire, x permet la traversée et r l'énumération ; créer ou retirer des entrées nécessite normalement w et x sur le répertoire. Le sticky bit et d'autres règles peuvent ajouter des restrictions.
- Si les droits classiques conviennent, examinez les ACL, SELinux/AppArmor, un montage en lecture seule ou l'espace de noms d'un conteneur. Un signe plus dans le mode peut signaler des méthodes d'accès supplémentaires. Ne désactivez pas globalement les protections.
- Seulement après avoir établi le droit manquant : consignez le mode précédent et modifiez un seul fichier.
chmod u+r /path/fileajoute uniquement la lecture pour le propriétaire. Cela n'aide que si cet accès manque ; évitez les changements récursifs et le 777 généralisé.
Vérifier le résultat
Recommencez l'action avec le même compte concerné et vérifiez à nouveau le mode. Un succès sous root ne prouve pas l'accès du compte du service. Si l'erreur persiste, examinez le prochain indice établi plutôt que d'élargir les droits.
Annulation et limites
Les commandes de diagnostic sont en lecture seule. Rétablissez l'état consigné après un changement ; prenez séparément en compte ACL et bits spéciaux. chmod 644 n'est pas un retour arrière universel, notamment pour les répertoires ou exécutables.
