Erreurs

❌ Erreur Linux "Permission denied" — Causes et Solutions

🐧 Erreur Linux

Accès refusé — droits insuffisants sur un fichier ou dossier

🐧 Linux 📋 6 causes 🔧 6 solutions
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

terminal
# 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)

terminal
# 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)

terminal
# 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

terminal
# 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

terminal
# 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

terminal
# 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 -la pour 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/complet pour 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