Commande chmod Linux — terminal montrant chmod 755, 644, 600 avec explication des permissions

Commande chmod Linux : permissions, syntaxe, setuid, sticky bit et dépannage

User avatar placeholder
Écrit par Vincent

10 juin 2026

La commande chmod Linux permet de modifier les permissions d’accès d’un fichier ou d’un répertoire. La commande chmod est une base essentielle pour administrer un système Linux, sécuriser un serveur ou corriger une erreur de droits. Ce mémo couvre la syntaxe octale, le mode symbolique, le X majuscule, les permissions spéciales, le dépannage et la FAQ.

L’essentiel
Commande clé : chmod 755 fichier (rwx propriétaire, r-x groupe et autres).
Prérequis : accès terminal, sudo pour les fichiers système.
Portée : universelle, toutes distributions (GNU coreutils).
Sources : documentation officielle des projets cités, consultée le 20 juillet 2026.

Comprendre les permissions Linux

Chaque fichier et répertoire possède trois niveaux de permissions appliqués à trois catégories d’utilisateurs. Utilisez la commande suivante pour afficher les permissions du fichier :

ls -l script.sh

Exemple de sortie annoté :

-rwxr-xr-- 1 utilisateur groupe 4096 … script.sh

Décomposition des 10 premiers caractères :
-rwxr-xr--
│└┬┘└┬┘└┬┘
│ │  │  └─ autres (o) : r--
│ │  └──── groupe (g) : r-x
│ └─────── propriétaire (u) : rwx
└───────── type : fichier ordinaire (-)

Le premier caractère désigne le type : - fichier ordinaire, d répertoire, l lien symbolique. Les 9 suivants se lisent en trois groupes de trois : u (user/propriétaire), g (group/groupe), o (others/autres). Chaque permission a une valeur numérique : r = 4, w = 2, x = 1. On additionne pour obtenir la valeur octale du groupe.

GroupeSymbolesValeur octaleSignification
Propriétaire (u)rwx7 (4+2+1)Lecture + écriture + exécution
Groupe (g)r-x5 (4+0+1)Lecture + exécution
Autres (o)r–4 (4+0+0)Lecture seule

Permission spéciale pour les répertoires : le bit x sur un répertoire ne l’« exécute » pas. Il permet d’y entrer et de traverser ses sous-répertoires. Sans x, même la permission r seule ne permet pas de lister le contenu.

Commande chmod Linux : syntaxe et modes

chmod [options] mode fichier_ou_répertoire

Mode numérique (octale) — le plus rapide

# Script exécutable par tous, modifiable uniquement par le propriétaire
chmod 755 script.sh

# Fichier de configuration : lecture/écriture propriétaire, lecture seule pour les autres
chmod 644 fichier.conf

# Fichier privé (clé SSH, token, mot de passe)
chmod 600 ~/.ssh/id_ed25519

# Répertoire strictement privé
chmod 700 ~/privé
ValeurNotation symboliqueUsage typique
755rwxr-xr-xScripts, répertoires web publics
644rw-r–r–Fichiers HTML, configs, logs
600rw——-Clés SSH, fichiers privés
700rwx——Répertoires privés
400r——–Lecture seule stricte
750rwxr-x—Script propriétaire + groupe, invisible pour les autres
777rwxrwxrwx⚠️ À éviter absolument en production

Mode symbolique — le plus lisible

Avec la commande chmod Linux, le mode symbolique modifie les permissions existantes sans tout réécrire. On utilise u (user), g (group), o (others), a (all) avec les opérateurs + (ajouter), - (retirer), = (définir exactement).

# Rendre exécutable uniquement pour le propriétaire
chmod u+x script.sh

# Retirer l'écriture pour le groupe et les autres
chmod go-w fichier.txt

# Définir exactement : propriétaire rw, tous les autres r
chmod u=rw,go=r fichier.conf

# Ajouter l'exécution pour tout le monde
chmod a+x script.sh

# X majuscule : ajoute x uniquement aux répertoires (pas aux fichiers)
chmod -R a+X /var/www/html

Astuce : le X majuscule est particulièrement utile en récursif. Il ajoute le droit d’exécution uniquement aux répertoires (pour pouvoir les traverser), sans rendre tous vos fichiers exécutables par erreur.

Commande chmod Linux récursive : -R et combinaison avec find

# Appliquer 755 récursivement (attention : rend TOUS les fichiers exécutables)
chmod -R 755 /var/www/html

# Méthode recommandée : cibler fichiers et répertoires séparément
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

# Copier les permissions d'un fichier de référence
chmod --reference=fichier_modele.conf nouveau_fichier.conf

Règle d’or avec la commande chmod Linux : ne jamais utiliser chmod -R 777 sur un serveur web. C’est la première erreur de sécurité des débutants et elle expose à des injections de code malveillant. Préférez toujours la combinaison find + chmod pour distinguer fichiers (644) et répertoires (755).

Cas pratiques avec la commande chmod Linux

Rendre un script exécutable

chmod +x mon-script.sh
./mon-script.sh

Sécuriser une clé SSH privée

SSH refuse de démarrer si la clé privée est trop permissive (« bad permissions »). La solution :

chmod 600 ~/.ssh/id_ed25519
chmod 700 ~/.ssh

Ces deux commandes ne suffisent que si SSH est déjà installé et configuré. Pour partir de zéro — installation d’OpenSSH, fichier sshd_config, authentification par clés et hardening — consulte le guide complet pour configurer SSH sur Linux.

Permissions correctes pour un serveur web (Apache/Nginx)

# Standard : 755 répertoires, 644 fichiers
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

# WordPress : le propriétaire doit être www-data (ou le user PHP)
chown -R www-data:www-data /var/www/html

Vérifier les permissions d’un fichier

# Format symbolique (-rwxr-xr-x)
ls -l fichier.txt

# Format octal (affiche directement 755, 644...)
stat -c "%a %n" fichier.txt

# Tous les fichiers d'un répertoire en format octal
find /var/www/html -exec stat -c "%a %n" {} \;

Permissions spéciales : setuid, setgid et sticky bit

Au-delà des permissions classiques rwx, Linux dispose de trois bits spéciaux. Ils s’ajoutent en préfixe de la valeur octale : setuid = 4, setgid = 2, sticky bit = 1.

Setuid (4) — exécution avec les droits du propriétaire

Quand le setuid est positionné sur un exécutable, le programme tourne avec les droits de son propriétaire (souvent root), quel que soit l’utilisateur qui le lance. C’est ainsi que /usr/bin/passwd peut modifier /etc/shadow même pour un utilisateur normal.

# Activer le setuid (en mode symbolique)
chmod u+s /usr/bin/monprogramme
# ou en mode octal (le 4 préfixe les permissions normales)
chmod 4755 /usr/bin/monprogramme

# Vérification : 's' remplace 'x' du propriétaire
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root 59976 ... /usr/bin/passwd

Setgid (2) — héritage de groupe sur les répertoires partagés

Sur un répertoire, le setgid force tous les nouveaux fichiers créés à hériter du groupe du répertoire, pas du groupe primaire de l’utilisateur créateur. Ideal pour les dossiers partagés entre collègues — bien plus propre qu’un chmod 777.

# Partage d'équipe : tous les fichiers créés héritent du groupe 'devteam'
chmod g+s /var/projet/shared
# ou en octal
chmod 2755 /var/projet/shared

# Vérification : 's' remplace 'x' du groupe
ls -ld /var/projet/shared
# drwxr-sr-x 2 root devteam 4096 ... /var/projet/shared

Sticky bit (1) — protection des fichiers en répertoire partagé

Sur un répertoire accessible en écriture à tous (type /tmp), le sticky bit empêche un utilisateur de supprimer les fichiers des autres. Seul le propriétaire du fichier (ou root) peut le supprimer.

# /tmp a toujours le sticky bit activé nativement
ls -ld /tmp
# drwxrwxrwt 20 root root 4096 ... /tmp
# (le 't' indique le sticky bit actif)

# Activer le sticky bit sur un répertoire partagé
chmod +t /var/partage
# ou en octal
chmod 1777 /var/partage

Dépannage des erreurs courantes

bash: permission denied — script non exécutable

$ ./mon-script.sh
bash: ./mon-script.sh: Permission denied

# Solution : ajouter le bit exécution
chmod +x mon-script.sh

SSH : « bad permissions » sur la clé privée

$ ssh user@serveur
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# Solution : clé privée en 600, répertoire .ssh en 700
chmod 600 ~/.ssh/id_ed25519
chmod 700 ~/.ssh

Répertoire inaccessible après chmod -R

# Problème : chmod -R 644 a retiré le x des répertoires
# Les répertoires nécessitent le bit x pour être traversés
ls -la /mon/repertoire
# drw-r--r-- (pas de x = inaccessible !)

# Solution : rétablir x sur les répertoires
find /mon/repertoire -type d -exec chmod 755 {} \;

Erreur « Operation not permitted »

$ chmod 755 /etc/fichier_systeme
chmod: changing permissions of '/etc/fichier_systeme': Operation not permitted

# Solution : utiliser sudo pour les fichiers système
sudo chmod 755 /etc/fichier_systeme

Options de la commande chmod Linux

OptionDescription
-RRécursif : applique aux sous-dossiers et fichiers
-vVerbeux : affiche chaque fichier modifié
-cComme -v mais n’affiche que les fichiers vraiment modifiés
--reference=fichierCopie les permissions d’un fichier de référence

chmod, chown, umask et ACL : l’écosystème complet

La commande chmod Linux définit ce que l’on peut faire avec un fichier. Pour maîtriser complètement la gestion des droits Linux, quatre outils se complètent. Les permissions se gèrent aussi au quotidien dans des scripts planifiés : voyez notre guide pour automatiser des sauvegardes avec rsync et crontab, où le script doit être en mode 700.

  • chown — change le propriétaire et le groupe d’un fichier
  • umask — définit les permissions par défaut appliquées à la création de tout nouveau fichier
  • setfacl / getfacl — les ACL (Access Control Lists) permettent des permissions précises par utilisateur ou groupe, au-delà du modèle u/g/o classique
  • grep — pour rechercher un motif dans un fichier avant d’en modifier les droits
  • chattr / lsattr — attributs de fichier étendus (ex : rendre un fichier immuable même pour root)

Pour aller plus loin, consultez la documentation officielle GNU coreutils et le man chmod (linux.man7.org).

Conclusion

Maîtriser chmod revient à comprendre le triptyque propriétaire, groupe et autres, puis à choisir les droits les plus restrictifs compatibles avec l’usage prévu. Utilisez couramment 755 pour les répertoires accessibles, 644 pour les fichiers ordinaires et 600 pour les données sensibles, puis vérifiez le résultat avec ls -l ou stat. Évitez chmod -R 777 : dans une arborescence, ciblez séparément les fichiers et les répertoires avec find afin de conserver un système fonctionnel et sûr.

FAQ — Questions fréquentes sur la commande chmod Linux

Quelle est la différence entre chmod 755 et chmod 644 ?

chmod 755 donne au propriétaire les droits lecture + écriture + exécution (rwx), et au groupe et aux autres lecture + exécution (r-x). C’est le standard pour les scripts exécutables et les répertoires web. chmod 644 donne au propriétaire lecture + écriture (rw-) et aux autres lecture seule (r–). C’est le standard pour les fichiers de configuration et les pages HTML.

chmod 777 est-il dangereux ?

Oui, chmod 777 est à proscrire en production. Il accorde lecture, écriture et exécution à tous les utilisateurs du système, y compris les processus web et les utilisateurs inconnus. Sur un serveur web, cela permet à n’importe quel script PHP maléfique d’écrire ou d’exécuter des fichiers. Utilisez 755 pour les répertoires et 644 pour les fichiers.

Comment réappliquer les permissions d’origine sur /var/www ?

find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www/html

chmod modifie-t-il les permissions des liens symboliques ?

Non. chmod suit les liens symboliques et modifie les permissions du fichier cible, pas celles du lien lui-même. Les permissions affichées sur un lien symbolique (lrwxrwxrwx) sont toujours 777 mais n’ont aucun effet — ce sont les permissions du fichier pointé qui comptent.

Comment trouver tous les fichiers avec chmod 777 sur le système ?

# Lister tous les fichiers avec permissions 777
find / -perm 777 -type f 2>/dev/null

# Lister les fichiers avec le bit setuid actif (potentielle faille sécurité)
find / -perm -4000 -type f 2>/dev/null

Dernière vérification des commandes et des procédures : 20 juillet 2026, d’après la documentation officielle des projets et distributions cités.

Vincent

Vincent est le créateur de MémoLinux. Venu de Windows par curiosité, il est resté sur Linux pour sa logique et le plaisir de comprendre ce qui se passe sous le capot. Il documente ici les commandes et les procédures qu’il utilise lui-même, avec leurs sources officielles et leur date de vérification.