🔒
Outils pour développeurs
March 21, 20268 min readBy BrowseryTools Team

Permissions de fichiers Linux expliquées : guide complet chmod

Guide complet des permissions de fichiers Unix — le modèle propriétaire/groupe/autres, la notation octale (755, 644, 777), la notation symbolique, setuid/setgid/sticky bit et exemples concrets pour les serveurs web et les clés SSH.

chmodLinuxpermissions de fichiersUnixsécuritéadministration système

Chaque fichier et répertoire d'un système Linux ou macOS possède un ensemble de permissions qui contrôle qui peut le lire, le modifier ou l'exécuter. Bien configurer ces permissions fait la différence entre un serveur sécurisé et un serveur qui fuit des données ou se fait compromettre. Pourtant, la notation — chmod 755, la sortie de ls -la affichant -rwxr-xr-- — peut sembler opaque jusqu'à ce que vous compreniez le modèle sous-jacent. Ce guide explique les permissions de fichiers Unix depuis les fondements.

Vous pouvez calculer des valeurs de permissions et convertir entre notation octale et symbolique instantanément avec le Calculateur chmod BrowseryTools — gratuit, sans inscription, tout s'exécute dans votre navigateur.

Le modèle de permissions Unix : propriétaire, groupe, autres

Unix attribue à chaque fichier et répertoire trois ensembles de permissions, couvrant chacun un public différent :

  • Propriétaire (utilisateur) — le compte utilisateur qui possède le fichier. En général, l'utilisateur qui l'a créé.
  • Groupe — un groupe nommé d'utilisateurs. Le fichier appartient à un groupe ; tous les membres de ce groupe partagent les permissions du groupe.
  • Autres (monde) — tout le monde sur le système qui n'est ni le propriétaire ni dans le groupe.

Au sein de chacun de ces trois ensembles, il y a trois bits de permission : lecture (r), écriture (w) et exécution (x). Cela donne neuf bits de permission au total, qui correspondent directement aux neuf caractères que vous voyez après l'indicateur de type de fichier dans la sortie de ls -la.

Lire la sortie de ls -la

Lorsque vous exécutez ls -la, chaque ligne commence par une chaîne de 10 caractères comme -rwxr-xr--. Voici comment la lire :

-  rwx  r-x  r--
^  ^^^  ^^^  ^^^
|  |    |    └── other:  read only
|  |    └─────── group:  read + execute
|  └──────────── owner:  read + write + execute
└─────────────── file type: - = file, d = directory, l = symlink

Un tiret - dans une position de permission signifie que cette permission n'est pas accordée. Ainsi, r-x signifie que la lecture et l'exécution sont autorisées, mais pas l'écriture.

Ce que signifient lecture, écriture, exécution pour les fichiers vs les répertoires

Les trois bits de permission ont des significations différentes selon qu'ils s'appliquent à un fichier ou à un répertoire :

  • Lecture de fichier (r) — peut lire le contenu du fichier (cat, less, ouvrir dans un éditeur).
  • Écriture de fichier (w) — peut modifier ou tronquer le fichier. Remarque : la suppression d'un fichier est contrôlée par la permission d'écriture du répertoire parent, pas par le bit d'écriture propre au fichier.
  • Exécution de fichier (x) — peut exécuter le fichier comme programme ou script. Sans ce bit, ./script.sh retourne « Permission denied » même si vous pouvez le lire.
  • Lecture de répertoire (r) — peut lister le contenu du répertoire (ls). Sans ce bit, vous savez que le répertoire existe mais ne pouvez pas voir ce qu'il contient.
  • Écriture de répertoire (w) — peut créer, renommer ou supprimer des fichiers dans le répertoire. C'est pourquoi vous pouvez supprimer un fichier que vous ne possédez pas si vous avez accès en écriture à son répertoire parent.
  • Exécution de répertoire (x) — peut entrer dans le répertoire (cd) et accéder aux fichiers qu'il contient si vous connaissez leurs noms. On appelle parfois cela le « bit de recherche ». Un répertoire avec r-- permet de lister les noms de fichiers mais pas d'y accéder ; un répertoire avec --x permet d'accéder aux fichiers par nom mais pas de les lister.

Notation octale : 755, 644, 777

Chaque ensemble de permissions (propriétaire, groupe, autres) est composé de trois bits. Trois bits peuvent représenter des valeurs de 0 à 7 — exactement un chiffre octal. C'est pourquoi les permissions s'écrivent sous la forme de trois chiffres octaux, un par public :

Bit values:  r = 4,  w = 2,  x = 1

rwx = 4+2+1 = 7
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
--- = 0+0+0 = 0

chmod 755 → owner: 7 (rwx), group: 5 (r-x), other: 5 (r-x)
chmod 644 → owner: 6 (rw-), group: 4 (r--), other: 4 (r--)
chmod 600 → owner: 6 (rw-), group: 0 (---), other: 0 (---)

Inutile de mémoriser chaque combinaison — utilisez le Calculateur chmod BrowseryTools pour vérifier ce que signifie une valeur octale ou pour construire la bonne valeur pour votre situation.

Notation symbolique : u+x, g-w, o=r

Le mode symbolique permet de modifier les permissions par rapport à leur état actuel, sans spécifier les trois ensembles à la fois. Le format est [qui][opérateur][permissions] :

  • Qui : u (propriétaire/utilisateur), g (groupe), o (autres), a (les trois)
  • Opérateur : + (ajouter), - (supprimer), = (définir exactement)
  • Permissions : r, w, x
chmod u+x script.sh       # add execute for owner only
chmod g-w config.txt      # remove write from group
chmod o=r public.html     # set other to read-only exactly
chmod a+r file.txt        # add read for everyone
chmod u=rwx,g=rx,o=       # equivalent to chmod 750

Patterns de permissions courants expliqués

  • 755 (rwxr-xr-x) — Standard pour les exécutables et les répertoires. Le propriétaire peut tout faire ; tout le monde peut lire et exécuter (ou entrer dans un répertoire) mais pas écrire. C'est la valeur par défaut pour les répertoires racine des serveurs web et les scripts publics.
  • 644 (rw-r--r--) — Standard pour les fichiers ordinaires. Le propriétaire peut lire/écrire ; tout le monde peut seulement lire. Convient aux ressources web, aux fichiers de configuration ne contenant pas de secrets et à la plupart des contenus statiques.
  • 600 (rw-------) — Le propriétaire peut lire/écrire ; personne d'autre ne peut rien faire. Requis pour les clés privées SSH (~/.ssh/id_rsa). SSH refusera d'utiliser un fichier de clé avec des permissions plus laxistes.
  • 700 (rwx------) — Le propriétaire peut tout faire ; personne d'autre n'a accès. Convient aux scripts privés et aux répertoires contenant des données sensibles.
  • 400 (r--------) — Lecture seule pour le propriétaire ; complètement verrouillé pour tout le monde. Utilisé pour les fichiers de configuration et les certificats immuables où les écritures accidentelles seraient préjudiciables.

Pourquoi 777 est dangereux

chmod 777 donne les permissions de lecture, d'écriture et d'exécution à chaque utilisateur du système. Cela signifie que tout processus s'exécutant en tant que n'importe quel utilisateur — y compris une application web compromise, un script malveillant dans un environnement d'hébergement partagé, ou n'importe quel autre utilisateur sur la machine — peut modifier ou exécuter le fichier. Dans un contexte de serveur web, un fichier PHP avec des permissions 777 permet à tout autre processus de l'écraser avec du code malveillant. N'utilisez jamais 777 en production. Si vous l'utilisez pour « corriger une erreur de permissions », la vraie correction consiste à donner la propriété du fichier au bon utilisateur ou groupe.

Setuid, setgid et sticky bit

Au-delà des neuf bits standard, il existe trois bits spéciaux qui apparaissent comme un quatrième chiffre de tête dans la notation octale à quatre chiffres :

  • Setuid (4xxx) — lorsqu'il est défini sur un exécutable, le programme s'exécute avec les privilèges du propriétaire du fichier, pas ceux de l'appelant. /usr/bin/passwd utilise cela pour permettre aux utilisateurs ordinaires d'écrire dans /etc/shadow, qui appartient à root.
  • Setgid (2xxx) — sur un exécutable, s'exécute avec les privilèges du groupe du fichier. Sur un répertoire, les nouveaux fichiers créés à l'intérieur héritent du groupe du répertoire plutôt que du groupe principal du créateur — utile pour les répertoires de projet partagés.
  • Sticky bit (1xxx) — sur un répertoire, empêche les utilisateurs de supprimer des fichiers dont ils ne sont pas propriétaires, même s'ils ont accès en écriture au répertoire. /tmp a le sticky bit défini (chmod 1777) pour que les utilisateurs puissent créer leurs propres fichiers temporaires mais ne puissent pas supprimer ceux des autres.

chmod récursif (-R) et exemples concrets

Le drapeau -R applique un changement de permission récursivement à un répertoire et tout son contenu. À utiliser avec précaution — appliquer les mêmes permissions aux fichiers et aux répertoires est souvent incorrect car les répertoires ont besoin du bit d'exécution pour être accessibles, tandis que les fichiers ordinaires ne devraient généralement pas être exécutables :

# Web server: directories need 755, files need 644
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;

# Fix SSH key permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 644 ~/.ssh/authorized_keys

# Make a deploy script executable
chmod +x deploy.sh

Lorsque vous n'êtes pas sûr de la valeur octale à utiliser, le Calculateur chmod BrowseryTools vous permet de cocher des cases pour les permissions propriétaire, groupe et autres et de voir immédiatement la valeur octale et la notation symbolique résultantes.

Calculateur chmod gratuit — Octal ↔ Symbolique ↔ Lisible

Ouvrir le calculateur chmod →

🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →