Erreurs
❌ Erreur Linux "Permission denied" — Causes et Solutions
🐧 Erreur Linux
Accès refusé — droits insuffisants sur un fichier ou dossier
L'erreur
Permission denied apparaît quand un utilisateur ou processus tente d'accéder à un fichier, dossier ou socket sans avoir les droits nécessaires. C'est l'une des erreurs Linux les plus fréquentes.⚠️ Causes possibles
Droits fichier incorrects
Le fichier appartient à root ou un autre user, les permissions ne permettent pas l'accès (chmod)
Mauvais propriétaire
Le fichier appartient à un autre utilisateur (chown)
Exécution sans sudo
La commande nécessite les privilèges root
SELinux / AppArmor
Le module de sécurité bloque l'accès même avec les bons droits
Socket ou pipe protégé
Accès à /var/run/docker.sock, /tmp/socket... sans être dans le bon groupe
Répertoire parent inaccessible
Même si le fichier est accessible, le dossier parent ne l'est pas
🔧 Solutions étape par étape
1
Vérifier les permissions
# Voir les droits du fichier ls -la /chemin/fichier # Voir les droits récursivement ls -laR /chemin/dossier/ # Voir le propriétaire stat /chemin/fichier
2
Modifier les permissions (chmod)
# Donner les droits en lecture/écriture au propriétaire chmod 644 fichier.txt # rw-r--r-- # Donner les droits d'exécution chmod +x script.sh # Ajouter exécution # Récursif sur un dossier chmod -R 755 /var/www/html/ # rwxr-xr-x # Notation octale chmod 777 fichier # ⚠️ À éviter en prod !
3
Changer le propriétaire (chown)
# Changer le propriétaire chown www-data fichier.txt # Changer propriétaire + groupe chown www-data:www-data /var/www/html/ # Récursif chown -R apache:apache /var/www/ # Changer seulement le groupe chgrp docker /var/run/docker.sock
4
Utiliser sudo
# Exécuter avec les droits root sudo commande # Modifier un fichier root sudo nano /etc/hosts # Devenir root temporairement sudo -i # Voir ce que sudo autorise sudo -l
5
Diagnostic SELinux / AppArmor
# Vérifier si SELinux est actif getenforce sestatus # Voir les refus SELinux ausearch -m avc -ts recent audit2why < /var/log/audit/audit.log # Désactiver temporairement (test seulement) setenforce 0 # AppArmor — voir le statut aa-status # Voir les logs journalctl -u apparmor | tail -20
6
Accès à docker.sock
# Ajouter l'utilisateur au groupe docker sudo usermod -aG docker $USER # Appliquer sans redémarrer newgrp docker # Vérifier les groupes groups $USER # Vérifier les droits du socket ls -la /var/run/docker.sock
🛡️ Comment éviter cette erreur
- ✅ Toujours utiliser
ls -lapour vérifier les droits avant de modifier - ✅ Préférer
sudoàchmod 777— ne jamais mettre 777 en production - ✅ Utiliser les groupes Unix pour partager les accès (
usermod -aG groupe user) - ✅ En cas de doute, utiliser
namei -l /chemin/completpour voir les droits sur tout le chemin
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google