Développeurs

Comprendre les Permissions Chmod (Octal et Symbolique Expliqués)

9 min de lecture

Chmod 755 veut dire que le propriétaire du fichier peut lire, écrire et exécuter, tandis que le groupe et tous les autres utilisateurs peuvent seulement lire et exécuter, sans pouvoir modifier. Chaque chiffre d’un nombre chmod couvre une classe d’utilisateur (propriétaire, groupe, autres), et chaque chiffre se construit à partir de trois bits : lecture, écriture, exécution.

Comment se construit un chiffre octal

Trois bits de permission existent pour chaque classe d’utilisateur : lecture (valeur 4), écriture (valeur 2), exécution (valeur 1). On additionne les bits activés pour obtenir le chiffre de cette classe, un nombre entre 0 et 7.

  • 4 = lecture seule
  • 6 = lecture + écriture (4 + 2)
  • 5 = lecture + exécution (4 + 1)
  • 7 = lecture + écriture + exécution (4 + 2 + 1)
  • 0 = aucun droit

Une commande chmod aligne trois de ces chiffres à la suite, toujours dans le même ordre : propriétaire, groupe, autres. chmod 750 fichier se décompose ainsi : 7 pour le propriétaire (lecture, écriture, exécution), 5 pour le groupe (lecture, exécution), 0 pour les autres (rien du tout). Pas besoin de mémoriser, il suffit d’additionner les bits qui s’appliquent à chaque classe.

Exemples concrets à connaître

CommandOctalSymbolicUsage typique
chmod 600 file600rw-------Clé privée SSH (id_rsa), fichier .env / secrets
chmod 644 file644rw-r—r—Fichier ordinaire (HTML, config, log), le propriétaire modifie, tout le monde lit
chmod 700 dir700rwx------Dossier privé accessible au seul propriétaire
chmod 755 script.sh755rwxr-xr-xScript ou dossier public, le propriétaire modifie, tout le monde exécute/entre
chmod 775 dir775rwxrwxr-xDossier partagé en équipe, propriétaire et groupe peuvent écrire
chmod 777 file777rwxrwxrwxTout le monde peut lire, écrire, exécuter, à éviter, risque de sécurité

Vérifiez le calcul vous-même sur n’importe quelle ligne : 755 donne propriétaire = 4+2+1 = 7 (rwx), groupe = 4+0+1 = 5 (r-x), autres = 4+0+1 = 5 (r-x), soit exactement rwxr-xr-x. Le même raisonnement s’applique à chaque ligne du tableau.

Un point qui piège souvent sur les dossiers : un dossier a besoin de son bit d’exécution pour y entrer avec cd, et de son bit de lecture pour lister son contenu avec ls. Un dossier lisible mais non exécutable (comme 644 appliqué à un dossier) permet à certains outils d’afficher les noms de fichiers qu’il contient, mais impossible d’y entrer avec cd ou d’obtenir leurs informations avec stat, puisque c’est le bit d’exécution qui gouverne la traversée d’un dossier. Lecture et exécution ne jouent pas le même rôle sur un dossier que sur un fichier classique.

Deux choses différentes appelées “symbolique”

C’est là que beaucoup d’explications deviennent floues, car chmod a deux notions distinctes, toutes deux appelées “symbolique” :

La chaîne d’affichage ls -l, comme rwxr-xr-x. C’est ce que l’on voit en listant des fichiers, un instantané absolu des permissions actuelles : un indicateur de type de fichier suivi de trois groupes rwx pour propriétaire, groupe, autres. C’est une description, pas une commande.

La syntaxe symbolique propre à chmod, utilisée pour modifier des permissions par rapport à ce qu’elles sont déjà. Plutôt que d’indiquer le nombre complet à trois chiffres, on cible une classe et un bit :

  • chmod u+x file.sh ajoute l’exécution pour le propriétaire (user) uniquement, sans toucher au groupe ni aux autres
  • chmod go-w file retire l’écriture au groupe et aux autres, en laissant le propriétaire inchangé
  • chmod a+r file rend le fichier lisible par tout le monde (all, toutes les classes)

La différence compte en pratique : le mode octal (chmod 755) fixe toujours un état de permission absolu et complet, en écrasant ce qui existait avant. Le mode symbolique (chmod u+x) apporte un ajustement relatif aux permissions déjà en place, sans toucher au reste. Utilisez le mode symbolique quand vous voulez basculer un seul bit sans recalculer tout le nombre à trois chiffres à la main.

Essayez avec vos propres permissions

LectureÉcritureExécution
Propriétaire
Groupe
Autres
Calculateur Chmod
Gratuit, sans inscription, sur tous les appareils.
Ouvrir l'outil complet

Pourquoi les nouveaux fichiers valent 644 et les dossiers 755 par défaut

Personne ne lance chmod sur chaque fichier créé, et pourtant les nouveaux fichiers se retrouvent presque toujours en 644 et les nouveaux dossiers en 755. C’est le umask qui agit, pas le hasard.

Les nouveaux fichiers partent d’une base de 666 (rw-rw-rw-, sans bit d’exécution par défaut, pour la sécurité, personne ne veut qu’un fichier fraîchement créé soit exécutable d’office). Les nouveaux dossiers partent de 777 (rwxrwxrwx). La valeur umask du shell est ensuite soustraite de cette base. Le umask par défaut sur la plupart des systèmes Linux est 022, donc :

  • 666 − 022 = 644 pour un fichier tout juste créé
  • 777 − 022 = 755 pour un dossier tout juste créé

C’est tout le mécanisme derrière les deux valeurs de permission les plus courantes du tableau ci-dessus. Si votre système produit autre chose que 644 et 755 sur des fichiers fraîchement créés, vérifiez umask dans votre shell, il est presque certainement réglé sur une valeur non standard.

Erreurs courantes et angle sécurité

chmod 777 est un signal d’alarme, pas une solution. Passer un fichier ou un dossier en 777 donne à tout utilisateur du système, y compris un attaquant qui a obtenu le moindre point d’entrée, le droit de lire, écrire et remplacer son contenu. Un formulaire d’upload mal sécurisé combiné à un dossier d’upload en 777 est un scénario classique de transformation d’une application web en webshell. Les scanners de sécurité utilisés dans les audits WordPress ou d’hébergement signalent systématiquement 777 comme une faille critique dès qu’ils la voient. La correction est presque toujours 755 pour les exécutables et les dossiers, 644 pour les fichiers ordinaires, resserré à 750 ou 640 quand un groupe de confiance a besoin d’écrire sans que le reste du monde y touche.

SSH refuse une clé privée trop permissive. ssh-keygen crée les clés privées en 600 par défaut, et OpenSSH applique ce contrôle activement : si votre id_rsa devient lisible par le groupe ou par tout le monde, SSH refuse de l’utiliser et affiche un message du type “UNPROTECTED PRIVATE KEY FILE!” accompagné de “Permissions 0644 for ‘id_rsa’ are too open.” Ce n’est pas un avertissement cosmétique, c’est un blocage strict, et c’est l’une des raisons les plus fréquentes pour lesquelles une clé SSH “ne fonctionne plus” après avoir été copiée d’une machine à l’autre ou extraite d’une sauvegarde, la copie réinitialisant souvent les permissions à une valeur plus ouverte que 600.

Note de périmètre : setuid, setgid et le sticky bit

Le calculateur chmod ci-dessus couvre l’ensemble standard à trois chiffres, propriétaire/groupe/autres, qui couvre la grande majorité des cas réels. Ce qu’il ne modélise pas, c’est un quatrième chiffre optionnel, placé en tête, pour les bits de permission spéciaux : setuid (4000), setgid (2000), et le sticky bit (1000), combinés dans des modes comme chmod 4755 ou chmod 1777.

En une phrase chacun : setuid fait tourner un binaire avec les privilèges de son propriétaire plutôt que ceux de l’appelant (l’exemple classique est /usr/bin/passwd, qui a besoin de droits élevés pour mettre à jour le fichier système des mots de passe), et le sticky bit sur un dossier accessible en écriture à tous, comme /tmp, empêche un utilisateur de supprimer ou renommer les fichiers appartenant à un autre utilisateur à cet endroit, même si tout le monde peut y écrire.

Questions fréquentes

Que signifie chmod 755 ? Le propriétaire obtient lecture, écriture et exécution (7 = 4+2+1). Le groupe et tous les autres obtiennent seulement lecture et exécution, pas d’écriture (5 = 4+0+1 chacun). En symbolique, cela donne rwxr-xr-x, la permission standard pour un script ou un dossier public : le propriétaire peut le modifier, tout le monde peut l’exécuter ou y entrer.

Quelle est la différence entre chmod 644 et 755 ? 644 retire complètement le bit d’exécution (rw-r—r—), ce qui convient aux fichiers ordinaires comme du HTML, des configs ou des logs qui ne doivent jamais tourner comme un programme. 755 conserve l’exécution pour chaque classe (rwxr-xr-x), ce dont a besoin un script ou un dossier, puisqu’un dossier exige l’exécution pour pouvoir y entrer. Utilisez 644 pour les données, 755 pour tout ce qui doit s’exécuter ou être traversé.

Pourquoi chmod 600 compte-t-il pour les clés SSH ? Parce qu’OpenSSH vérifie les bits de permission d’une clé privée avant de l’utiliser et refuse de continuer si la clé est lisible par le groupe ou par les autres. 600 (rw-------) signifie que seul le propriétaire du fichier peut le lire ou l’écrire, exactement ce qu’il faut à une clé privée : personne d’autre sur le système ne devrait même pouvoir en consulter le contenu.

Est-ce que chmod 777 est un jour la bonne réponse ? Presque jamais en production. Il accorde lecture, écriture et exécution complètes à tout utilisateur du système, une cause fréquente derrière des fichiers uploadés qui se retrouvent remplacés par du code malveillant. Si quelque chose semble exiger 777 pour fonctionner, le vrai problème est généralement un propriétaire ou un groupe de fichier mal aligné, réglable avec chown, et non une raison d’ouvrir les permissions à tout le monde.

Quelle est la différence entre rwxr-xr-x et chmod u+x ? rwxr-xr-x est la chaîne d’affichage de ls -l, un instantané de l’état complet et actuel des permissions. chmod u+x est une commande utilisant la syntaxe symbolique de chmod pour apporter un changement relatif, en ajoutant l’exécution pour le propriétaire sans toucher au reste. L’une décrit où en sont les permissions à cet instant, l’autre est un moyen de les modifier.

ChmodPermissions UnixLinuxSécurité
Calculateur Chmod
Essayez-le maintenant avec l'outil complet.
Essayer maintenant