chmod en langage simple — Pourquoi tout le monde écrit 755 sans savoir ce que cela signifie
755, 644, 777 — vous avez tapé ces chiffres des dizaines de fois. Voici ce qu'ils signifient vraiment, pourquoi chmod 777 est paresseux et non mauvais, et dans quelles situations chaque valeur est effectivement la bonne solution.
À un moment tôt dans votre carrière, quelqu'un vous a dit de faire fonctionner chmod 755 sur un répertoire ou chmod 644 sur un fichier de configuration. Cela a fonctionné. Vous avez poursuivi. Maintenant, des années plus tard, vous tapez encore ces chiffres par mémoire musculaire — et si quelqu'un vous demande d'expliquer ce que signifie 755, vous faites un geste vague vers l'écran et dites « c'est la chose standard de permissions ».
Cela va bien, jusqu'à ce qu'il ne le soit plus. Le moment où vous devez déboguer une erreur de permission refusée, décider ce que vous mettez dans un nouveau script, ou expliquer à un développeur débutant pourquoi chmod 777 n'est pas la solution pour tout — le mémoire musculaire n'est plus suffisant.
Voici ce que les chiffres signifient réellement.
La structure des bits
Les permissions de fichiers Unix sont trois ensembles de trois bits. C'est tout. Chaque ensemble contrôle ce que l'un des catégories d'utilisateurs peut faire — propriétaire, groupe, autres — et chaque bit dans un ensemble correspond à lecture, écriture ou exécution.
Les valeurs sont : lecture = 4, écriture = 2, exécution = 1. Vous les additionnez pour chaque ensemble. Ainsi 7 signifie lecture + écriture + exécution (4+2+1). 5 signifie lecture + exécution (4+1). 4 signifie lecture seule.
Décomposez 755: le propriétaire obtient 7 (rwx), le groupe obtient 5 (r-x), les autres obtiennent 5 (r-x). En binaire : 111 101 101. En notation symbolique : rwxr-xr-x. La valeur par défaut que vous avez tapée pendant des années est simplement « le propriétaire peut faire tout, tout le monde d'autre peut lire et exécuter mais pas écrire ».
Lecture de la sortie de ls -la
Exécutez ls -la dans tout répertoire et vous obtenez quelque chose de ce genre :
drwxr-xr-x 2 deploy www-data 4096 May 29 10:00 public_html
-rw-r--r-- 1 deploy www-data 2341 May 29 09:45 config.php
-rwx------ 1 deploy deploy 891 May 28 14:20 deploy.sh
-rw------- 1 deploy deploy 411 May 10 08:30 .env
Le premier caractère correspond au type de fichier : d pour un répertoire, - pour un fichier normal, l pour un lien symbolique. Puis viennent trois groupes de trois caractères — propriétaire, groupe, autres. Un trait signifie que la permission est absente.
Le nombre après les permissions est le compteur de liens dur. Puis le nom du propriétaire, le nom du groupe, la taille du fichier en octets, l'heure de modification, et enfin le nom du fichier.
Ainsi drwxr-xr-x 2 deploy www-data signifie : répertoire, le propriétaire (deploy) peut lire/écrire/exécuter, le groupe (www-data) peut lire et parcourir mais pas écrire, tout le monde d'autre peut lire et parcourir mais pas écrire. Deux liens dur. C'est votre répertoire web standard.
Les valeurs courantes de permissions et pourquoi elles existent
Voici la décomposition des valeurs que vous utiliserez effectivement, ce qu'elles signifient, et quand les utiliser :
| Valeur | Symbolique | Binaire | Ce que cela signifie | Quand les utiliser |
|---|---|---|---|---|
755 | rwxr-xr-x | 111 101 101 | Propriétaire : complet. Groupe / Autres : lecture + exécution | Répertoires, exécutables publics, scripts servis par le web |
644 | rw-r–r– | 110 100 100 | Propriétaire : lecture + écriture. Groupe / Autres : lecture seule | Fichiers de configuration, actifs statiques, HTML, fichiers sources PHP |
600 | rw——- | 110 000 000 | Propriétaire : lecture + écriture. Tout le monde d'autre : rien | Clés SSH (~/.ssh/id_rsa), fichiers .env |
700 | rwx—— | 111 000 000 | Propriétaire : complet. Tout le monde d'autre : rien | Scripts contenant des secrets, exécutables privés |
777 | rwxrwxrwx | 111 111 111 | Tout le monde : accès complet | /tmp, répertoires de conteneurs — presque nulle part ailleurs |
La raison pour laquelle les répertoires ont besoin d'autorisation d'exécution est que « exécution » sur un répertoire signifie « parcourir » — la capacité d'entrer dans le répertoire et d'accéder à ses contenus. Si un répertoire est r--r--r--, vous pouvez lister les noms des fichiers à l'intérieur, mais vous ne pouvez pas les accéder. Vous avez besoin du bit x pour pouvoir cd dans le répertoire ou ouvrir les fichiers. C'est pourquoi 755 et non 744 pour les répertoires.
Si vous souhaitez travailler avec ces valeurs de manière interactive, le Calculateur de chmod sur IO Tools vous permet de basculer individuellement les bits et de voir les valeurs octales et symboliques se mettre à jour en temps réel — utile lorsque vous devez construire une valeur de permission inconnue.
Notation symbolique : quand utiliser au lieu de cela
La notation octale définit toutes les permissions d'un coup. La notation symbolique permet des modifications progressives. Les deux sont valides — le choix dépend de ce que vous faites.
chmod u+x script.sh ajoute une autorisation d'exécution pour le propriétaire sans toucher les autres. Si le fichier est actuellement 644, cela le rend 744. Si vous utilisez la notation octale et écrivez chmod 744 script.sh, vous obtenez le même résultat — mais vous devez connaître l'état actuel d'abord.
Les opérateurs symboliques sont simples : + ajoute une autorisation, - la retire, = la fixe exactement. Les cibles sont u (utilisateur/propriétaire), g (groupe), o (autres), a (les trois).
chmod u+x deploy.sh # add execute for owner
chmod g-w config.php # remove write from group
chmod o=r public/index.html # set others to read-only exactly
chmod a+r shared.txt # add read for everyone
Utilisez la notation symbolique lorsque vous souhaitez modifier une autorisation sans réinitialiser tout le reste. Utilisez la notation octale lorsque vous définissez les permissions à partir de zéro ou lorsque vous souhaitez avoir un contrôle absolu sur l'état final.
Pourquoi les nouveaux fichiers ne sont pas 666 par défaut
Créez un nouveau fichier avec un éditeur de texte ou touch et vous obtenez 644. Créez un répertoire et vous obtenez 755. D'où viennent ces valeurs par défaut ?
Les fichiers commencent à un maximum théorique de 666 (aucune exécution par défaut — cela doit être explicitement défini). Les répertoires commencent à 777. La umask soustrait de ces maximums.
La valeur par défaut du umask sur la plupart des systèmes Linux est 022. Appliquée à un fichier : 666 – 022 = 644. Appliquée à un répertoire : 777 – 022 = 755. C'est pourquoi 644 et 755 semblent être les valeurs par défaut — elles le sont mécaniquement.
Exécutez umask avec aucun argument pour voir votre valeur actuelle. Modifiez-la dans votre profil de shell si vous avez besoin de valeurs plus strictes — umask 027 vous donne 640 pour les fichiers et 750 pour les répertoires, ce qui retire toutes les autorisations pour « autres » et permet uniquement la lecture au groupe.
chmod 777 : pas mauvais, juste lâche
Voici l'approche honnête sur chmod 777: ce n'est pas une catastrophe de sécurité dans chaque contexte. C'est presque jamais la bonne réponse en production, et les gens l'utilisent parce qu'elle fait disparaître l'erreur de permission sans nécessiter de réflexion.
Sur un serveur partagé, chmod 777 sur un répertoire écritible signifie que tout processus exécuté sous n'importe quel utilisateur — y compris une application web compromise — peut écrire dans ce répertoire. C'est une surface réelle d'attaque. C'est aussi exactement le type de chose qui reste en production éternellement parce que « on va le corriger plus tard ».
Utilisations appropriées de 777 :
- /tmp dans un conteneur à usage ponctuel — rien ne persiste, rien n'a d'importance, passez à l'action
- Débogage d'un problème de permission en développement — utilisez-le pour confirmer que le problème est lié aux permissions et non à autre chose, puis définissez la valeur correcte
- Répertoires de travail partagés sur une machine à usage unique — si vous êtes le seul utilisateur, l'autorisation « autres » est académique
Le workflow de diagnostic est : rencontrez une erreur de refus de permission, appliquez temporairement 777 pour confirmer que le problème est lié aux permissions et non à autre chose, puis déterminez quelle est la valeur de permission correcte et définissez-la à la place. chmod 777 en tant outil de diagnostic est acceptable. chmod 777 dans un script de déploiement que personne ne révisera est la cause des fuites.
Les valeurs à connaître
Vous n'avez pas besoin de mémoriser toutes les combinaisons possibles. Ces quatre couvrent environ 95% de cas réels :
- 755 — répertoires et exécutables qui doivent être accessibles publiquement
- 644 — fichiers qui doivent être lisibles par tout le monde mais éditable uniquement par le propriétaire
- 600 — fichiers sensibles : clés SSH, identifiants, fichiers .env. SSH refusera d'utiliser une clé privée qui n'est pas 600 ou plus strict.
- 700 — scripts qui exécutent avec des secrets à l'intérieur et qui ne doivent pas être exécutés par quiconque d'autre
Quand vous rencontrez quelque chose en dehors de cette gamme, travaillez à partir de la structure des bits : décidez ce que le propriétaire, le groupe et les autres ont besoin de faire, additionnez les bits, écrivez le nombre. Le Calculateur Chmod est utile ici si vous préférez éviter de faire les calculs mentaux sous pression.
Le modèle de permissions est l'un de ces éléments dans Unix qui semble arbitraire jusqu'à ce que vous compreniez qu'il s'agit simplement d'une addition binaire. Une fois que cela claque, vous arrêtez de copier-coller les commandes chmod d'autrui et commencez à définir les permissions intentionnellement — ce qui est le but.
Installez nos extensions
Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide
恵 Le Tableau de Bord Est Arrivé !
Tableau de Bord est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt !
Outils essentiels
Tout voir Nouveautés
Tout voirMise à jour: Notre dernier outil a été ajouté le 15 juin 2026
