Calculateur chmod – Permissions de fichiers sous Linux
Convertissez les permissions de fichiers Linux entre une grille de cases à cocher, un code octal (par ex. 755) et la notation symbolique (par ex. rwxr-xr-x). Obtenez des commandes chmod prêtes à l'emploi, un aperçu ls -l et des remarques de sécurité pour les fichiers ordinaires et les répertoires.
Conversion des permissions Linux entre cases à cocher, code octal et notation symbolique
Formule du chmod
Où :
- \(r\), \(w\), \(x\) — les bits de lecture, d'écriture et d'exécution, chacun valant 1 si le droit est accordé et 0 sinon ;
- \(d\) — le chiffre octal d'une classe (propriétaire, groupe ou autres), construit à partir des poids 4–2–1 ;
- \(s_{\text{uid}}\), \(s_{\text{gid}}\), \(s_{\text{sticky}}\) — les bits spéciaux setuid, setgid et sticky (égaux eux aussi à 0 ou 1).
Chaque classe de droits correspond à un chiffre octal, car la lecture vaut 4, l'écriture 2 et l'exécution 1 : en additionnant les valeurs accordées, on obtient un nombre de 0 à 7. Le chiffre de tête facultatif encode les bits spéciaux avec les mêmes poids 4–2–1 ; ainsi, 4755 signifie setuid en plus du classique 755.
Chmod – Exemple de calcul
Exemple : un script que le propriétaire peut modifier et exécuter librement, mais que le groupe et tous les autres ne peuvent que lire et exécuter — la configuration classique 755 (c'est aussi la grille par défaut du calculateur : propriétaire r+w+x, groupe r+x, autres r+x).
\[ d_{\text{propriétaire}} = 4 + 2 + 1 = 7 \]
\[ d_{\text{groupe}} = 4 + 0 + 1 = 5 \]
\[ d_{\text{autres}} = 4 + 0 + 1 = 5 \]
\[ \text{mode} = 755 \]
Résultat : mode octal 755, mode symbolique rwxr-xr-x, commande chmod 755 fichier. Dans un listing ls -l, le fichier apparaît sous la forme -rwxr-xr-x.
Comment utiliser le calculateur
- Ouvrez le menu déroulant Méthode de saisie et choisissez la manière dont vous voulez décrire les droits : Cases à cocher (grille de droits), Code octal, Notation symbolique ou Préréglages courants. Seuls les champs propres à la méthode choisie restent visibles.
- Avec Cases à cocher, cochez Lecture, Écriture et Exécution pour chaque classe — Propriétaire (u), Groupe (g) et Autres (o) — ainsi que, si besoin, les bits spéciaux Setuid, Setgid et Sticky.
- Avec Code octal, saisissez trois chiffres (par ex. 755), ou quatre si vous ajoutez le chiffre spécial de tête (par ex. 4755). Avec Notation symbolique, saisissez neuf caractères comme rwxr-xr-x, ou collez une chaîne
ls -l complète telle que -rwxr-xr-x — le caractère de type en tête est retiré automatiquement. Avec Préréglages courants, choisissez simplement un jeu de droits prêt à l'emploi.
- Réglez Type de fichier sur Fichier ordinaire (-) ou Répertoire (d) afin que l'explication et l'aperçu
ls -l emploient le bon vocabulaire.
- Consultez les résultats : le mode numérique (octal), le mode symbolique, des commandes chmod prêtes à copier, un aperçu au format ls -l, une explication en langage clair et des remarques de sécurité.
Ce que sont les permissions de fichiers Linux et comment les lire
Sur un système Linux, chaque fichier et chaque répertoire porte neuf bits de droits, répartis en trois classes : le propriétaire (u), qui a créé le fichier, le groupe (g) auquel le fichier appartient, et les autres (o) — tous les autres comptes de la machine. Dans chaque classe, trois bits indiquent si cette classe peut lire (r), écrire (w) et exécuter (x) le fichier. La commande chmod modifie ces bits, et le calculateur convertit n'importe laquelle de leurs représentations en toutes les autres.
La notation octale condense chaque classe en un seul chiffre grâce aux poids 4–2–1, d'où les modes comme 644 ou 755. La notation symbolique énumère les mêmes bits sous forme de neuf caractères lus de gauche à droite : triplet du propriétaire, triplet du groupe, triplet des autres. Un tiret signale l'absence du droit ; ainsi, rw-r--r-- correspond au 644, lisible mais non exécutable. Les deux formes décrivent exactement les mêmes bits : choisissez celle qu'accepte l'outil devant lequel vous travaillez.
Le sens des bits dépend du type de fichier. Pour un fichier ordinaire, r signifie consulter son contenu, w le modifier et x l'exécuter comme un programme. Pour un répertoire, r signifie lister les noms qu'il contient, w créer, renommer ou supprimer des entrées à l'intérieur, et x y entrer avec cd et ouvrir les fichiers qu'il abrite. C'est pourquoi un répertoire doit posséder le bit x pour que son contenu soit utilisable, et pourquoi 700 est le mode standard des dossiers privés comme ~/.ssh.
Trois bits spéciaux complètent le tableau. Setuid (4) fait en sorte qu'un exécutable tourne avec les privilèges de son propriétaire — le mécanisme derrière /usr/bin/passwd. Setgid (2) fait de même pour le groupe et, sur un répertoire, les nouveaux fichiers héritent du groupe du répertoire. Sticky (1) restreint la suppression dans un répertoire partagé en écriture : chaque utilisateur ne peut supprimer que ses propres fichiers — la règle qui maintient /tmp (1777) hors de danger. Dans la sortie symbolique, ces bits apparaissent sous la forme s/S à la place d'un bit d'exécution, ou t/T sur le dernier emplacement ; la forme en majuscule indique que le bit d'exécution sous-jacent est désactivé.
Modes de permissions courants
Mode
Symbolique
Usage typique
600
rw-------
Fichiers privés comme les clés SSH
644
rw-r--r--
Fichiers ordinaires, contenu web
700
rwx------
Répertoires privés comme ~/.ssh
755
rwxr-xr-x
Programmes, scripts, fichiers servis par le web
775
rwxrwxr-x
Répertoires partagés pour un groupe de confiance
1777
rwxrwxrwt
Espace de travail partagé comme /tmp
4755
rwsr-xr-x
Exécutables setuid root (à utiliser avec parcimonie)
Hypothèses, limites et conseils pratiques
- 777 n'est presque jamais la bonne réponse. Rendre un fichier accessible en écriture à tous l'expose à tous les comptes du système. Préférez 775 avec un groupe bien choisi, ou des ACL (
setfacl), avant d'opter pour 777.
- N'associez jamais l'écriture pour tous avec setuid ou setgid. Des modes comme 4777 ou 7777 permettent à n'importe qui de remplacer le fichier alors qu'il continue de s'exécuter avec des privilèges élevés — une faille d'élévation de privilèges classique.
- Les autres ne doivent pas avoir plus de droits que le propriétaire. Si le troisième chiffre dépasse le premier, vous avez presque certainement mal saisi le mode ; les remarques de sécurité vous le signaleront.
- 000 bloque tout le monde, y compris le propriétaire. Seul root peut rétablir l'accès ; utilisez donc plutôt 600 ou 700 lorsque vous cherchez de la confidentialité.
- Attention à
chmod -R. Un mode numérique récursif écrase tous les bits de chaque fichier et sous-répertoire d'un seul coup ; les répertoires ont généralement besoin du bit x, alors que les fichiers de données ne doivent pas en posséder. Appliquez les modes par type de fichier plutôt que sur toute une arborescence.
- Root ignore les bits de droits. Les permissions contraignent les utilisateurs ordinaires ; elles ne protègent pas contre un accès de niveau root.
- Le calculateur met en correspondance les représentations connues des permissions, bits spéciaux compris, mais il ne tient pas compte des ACL, de SELinux ni des autres contrôles d'accès obligatoires qui peuvent aussi influer sur l'accès réel.
Si vous travaillez avec d'autres encodages du monde Linux, le convertisseur d'horodatage Unix, le convertisseur hexadécimal et le calculateur binaire pourront aussi vous être utiles pour comprendre les systèmes de nombres sous-jacents.
Questions fréquentes
Comment définir des permissions différentes pour les fichiers et les répertoires en mode récursif ?
Utilisez find pour appliquer un mode distinct à chaque type de fichier : find /chemin -type d -exec chmod 755 {} + pour les répertoires et find /chemin -type f -exec chmod 644 {} + pour les fichiers. Un simple chmod -R 755 donne aux fichiers de données un bit d'exécution dont ils n'ont pas besoin, tandis que -R 644 retire le bit x des répertoires, rendant impossible d'y entrer. En traitant séparément chaque type, on évite ces deux erreurs.
Comment afficher les permissions actuelles d'un fichier sous forme de nombre octal ?
Exécutez stat -c '%a' fichier (ou stat -f '%Lp' fichier sous macOS) et vous obtenez directement le mode sous forme de chiffres comme 644. Le listing long de ls -l n'affiche que la forme symbolique, que vous devez ensuite décoder vous-même. Cette sortie octale correspond exactement à ce qu'attend le champ Code octal du calculateur : collez-la telle quelle pour passer en revue le rôle de chaque bit.
Pourquoi ai-je toujours un « Permission denied » après un chmod ?
Vérifiez trois choses : le répertoire sur le chemin doit vous accorder le droit x (exécution) pour que vous puissiez atteindre le fichier — un répertoire en 644 bloque tout ce qu'il contient, même si le fichier est en 777. Vous ne pouvez pas non plus faire un chmod sur un fichier dont vous n'êtes pas le propriétaire ; enfin, des règles au niveau du système de fichiers peuvent passer outre les bits : des options de montage comme noexec, des ACL, SELinux ou AppArmor peuvent refuser l'accès quel que soit le mode.
Que signifie chmod a+r, et en quoi est-ce différent de o+r ?
a signifie « all » (tous) — la modification s'applique à la fois au propriétaire (u), au groupe (g) et aux autres (o) : a+r accorde donc la lecture à tout le monde. o+r ne touche que la classe des autres. En octal, ce raccourci n'existe pas : un mode numérique écrase toujours les neuf bits, raison pour laquelle les classes qui doivent conserver leurs bits existants se règlent mieux avec les + et − symboliques qu'avec un remplacement numérique complet.
Pourquoi mes nouveaux fichiers sont-ils en 664 au lieu de 755 ? Qu'est-ce que l'umask ?
umask est un réglage propre à chaque shell qui retranche des bits du mode demandé par un programme au moment de la création d'un fichier. Avec l'umask courant 002, un programme demandant 666 (rw-rw-rw-) obtient 664, et une demande de répertoire en 777 donne 775. Consultez votre umask avec umask et modifiez-le par exemple avec umask 022. chmod n'intervient pas à la création : il ne fait que réécrire les bits après coup.
Pourquoi setuid ne fonctionne-t-il pas sur mon script shell ?
La plupart des systèmes Linux ignorent volontairement le bit setuid sur les scripts interprétés (shell, Python et autres) : c'est l'interpréteur — et non le script — qui s'exécute réellement, or l'interpréteur tourne sous l'identité de l'appelant. Le setuid n'a d'effet que sur les binaires compilés, comme /usr/bin/passwd. Si vous avez besoin d'actions privilégiées depuis un script, utilisez des règles sudo plutôt que d'espérer qu'un chmod 4755 sur un script suffise.
ls -l complète telle que -rwxr-xr-x — le caractère de type en tête est retiré automatiquement. Avec Préréglages courants, choisissez simplement un jeu de droits prêt à l'emploi.
- Réglez Type de fichier sur Fichier ordinaire (-) ou Répertoire (d) afin que l'explication et l'aperçu
ls -l emploient le bon vocabulaire.
- Consultez les résultats : le mode numérique (octal), le mode symbolique, des commandes chmod prêtes à copier, un aperçu au format ls -l, une explication en langage clair et des remarques de sécurité.
Ce que sont les permissions de fichiers Linux et comment les lire
Sur un système Linux, chaque fichier et chaque répertoire porte neuf bits de droits, répartis en trois classes : le propriétaire (u), qui a créé le fichier, le groupe (g) auquel le fichier appartient, et les autres (o) — tous les autres comptes de la machine. Dans chaque classe, trois bits indiquent si cette classe peut lire (r), écrire (w) et exécuter (x) le fichier. La commande chmod modifie ces bits, et le calculateur convertit n'importe laquelle de leurs représentations en toutes les autres.
La notation octale condense chaque classe en un seul chiffre grâce aux poids 4–2–1, d'où les modes comme 644 ou 755. La notation symbolique énumère les mêmes bits sous forme de neuf caractères lus de gauche à droite : triplet du propriétaire, triplet du groupe, triplet des autres. Un tiret signale l'absence du droit ; ainsi, rw-r--r-- correspond au 644, lisible mais non exécutable. Les deux formes décrivent exactement les mêmes bits : choisissez celle qu'accepte l'outil devant lequel vous travaillez.
Le sens des bits dépend du type de fichier. Pour un fichier ordinaire, r signifie consulter son contenu, w le modifier et x l'exécuter comme un programme. Pour un répertoire, r signifie lister les noms qu'il contient, w créer, renommer ou supprimer des entrées à l'intérieur, et x y entrer avec cd et ouvrir les fichiers qu'il abrite. C'est pourquoi un répertoire doit posséder le bit x pour que son contenu soit utilisable, et pourquoi 700 est le mode standard des dossiers privés comme ~/.ssh.
Trois bits spéciaux complètent le tableau. Setuid (4) fait en sorte qu'un exécutable tourne avec les privilèges de son propriétaire — le mécanisme derrière /usr/bin/passwd. Setgid (2) fait de même pour le groupe et, sur un répertoire, les nouveaux fichiers héritent du groupe du répertoire. Sticky (1) restreint la suppression dans un répertoire partagé en écriture : chaque utilisateur ne peut supprimer que ses propres fichiers — la règle qui maintient /tmp (1777) hors de danger. Dans la sortie symbolique, ces bits apparaissent sous la forme s/S à la place d'un bit d'exécution, ou t/T sur le dernier emplacement ; la forme en majuscule indique que le bit d'exécution sous-jacent est désactivé.
Modes de permissions courants
Mode
Symbolique
Usage typique
600
rw-------
Fichiers privés comme les clés SSH
644
rw-r--r--
Fichiers ordinaires, contenu web
700
rwx------
Répertoires privés comme ~/.ssh
755
rwxr-xr-x
Programmes, scripts, fichiers servis par le web
775
rwxrwxr-x
Répertoires partagés pour un groupe de confiance
1777
rwxrwxrwt
Espace de travail partagé comme /tmp
4755
rwsr-xr-x
Exécutables setuid root (à utiliser avec parcimonie)
Hypothèses, limites et conseils pratiques
- 777 n'est presque jamais la bonne réponse. Rendre un fichier accessible en écriture à tous l'expose à tous les comptes du système. Préférez 775 avec un groupe bien choisi, ou des ACL (
setfacl), avant d'opter pour 777.
- N'associez jamais l'écriture pour tous avec setuid ou setgid. Des modes comme 4777 ou 7777 permettent à n'importe qui de remplacer le fichier alors qu'il continue de s'exécuter avec des privilèges élevés — une faille d'élévation de privilèges classique.
- Les autres ne doivent pas avoir plus de droits que le propriétaire. Si le troisième chiffre dépasse le premier, vous avez presque certainement mal saisi le mode ; les remarques de sécurité vous le signaleront.
- 000 bloque tout le monde, y compris le propriétaire. Seul root peut rétablir l'accès ; utilisez donc plutôt 600 ou 700 lorsque vous cherchez de la confidentialité.
- Attention à
chmod -R. Un mode numérique récursif écrase tous les bits de chaque fichier et sous-répertoire d'un seul coup ; les répertoires ont généralement besoin du bit x, alors que les fichiers de données ne doivent pas en posséder. Appliquez les modes par type de fichier plutôt que sur toute une arborescence.
- Root ignore les bits de droits. Les permissions contraignent les utilisateurs ordinaires ; elles ne protègent pas contre un accès de niveau root.
- Le calculateur met en correspondance les représentations connues des permissions, bits spéciaux compris, mais il ne tient pas compte des ACL, de SELinux ni des autres contrôles d'accès obligatoires qui peuvent aussi influer sur l'accès réel.
Si vous travaillez avec d'autres encodages du monde Linux, le convertisseur d'horodatage Unix, le convertisseur hexadécimal et le calculateur binaire pourront aussi vous être utiles pour comprendre les systèmes de nombres sous-jacents.
Questions fréquentes
Comment définir des permissions différentes pour les fichiers et les répertoires en mode récursif ?
Utilisez find pour appliquer un mode distinct à chaque type de fichier : find /chemin -type d -exec chmod 755 {} + pour les répertoires et find /chemin -type f -exec chmod 644 {} + pour les fichiers. Un simple chmod -R 755 donne aux fichiers de données un bit d'exécution dont ils n'ont pas besoin, tandis que -R 644 retire le bit x des répertoires, rendant impossible d'y entrer. En traitant séparément chaque type, on évite ces deux erreurs.
Comment afficher les permissions actuelles d'un fichier sous forme de nombre octal ?
Exécutez stat -c '%a' fichier (ou stat -f '%Lp' fichier sous macOS) et vous obtenez directement le mode sous forme de chiffres comme 644. Le listing long de ls -l n'affiche que la forme symbolique, que vous devez ensuite décoder vous-même. Cette sortie octale correspond exactement à ce qu'attend le champ Code octal du calculateur : collez-la telle quelle pour passer en revue le rôle de chaque bit.
Pourquoi ai-je toujours un « Permission denied » après un chmod ?
Vérifiez trois choses : le répertoire sur le chemin doit vous accorder le droit x (exécution) pour que vous puissiez atteindre le fichier — un répertoire en 644 bloque tout ce qu'il contient, même si le fichier est en 777. Vous ne pouvez pas non plus faire un chmod sur un fichier dont vous n'êtes pas le propriétaire ; enfin, des règles au niveau du système de fichiers peuvent passer outre les bits : des options de montage comme noexec, des ACL, SELinux ou AppArmor peuvent refuser l'accès quel que soit le mode.
Que signifie chmod a+r, et en quoi est-ce différent de o+r ?
a signifie « all » (tous) — la modification s'applique à la fois au propriétaire (u), au groupe (g) et aux autres (o) : a+r accorde donc la lecture à tout le monde. o+r ne touche que la classe des autres. En octal, ce raccourci n'existe pas : un mode numérique écrase toujours les neuf bits, raison pour laquelle les classes qui doivent conserver leurs bits existants se règlent mieux avec les + et − symboliques qu'avec un remplacement numérique complet.
Pourquoi mes nouveaux fichiers sont-ils en 664 au lieu de 755 ? Qu'est-ce que l'umask ?
umask est un réglage propre à chaque shell qui retranche des bits du mode demandé par un programme au moment de la création d'un fichier. Avec l'umask courant 002, un programme demandant 666 (rw-rw-rw-) obtient 664, et une demande de répertoire en 777 donne 775. Consultez votre umask avec umask et modifiez-le par exemple avec umask 022. chmod n'intervient pas à la création : il ne fait que réécrire les bits après coup.
Pourquoi setuid ne fonctionne-t-il pas sur mon script shell ?
La plupart des systèmes Linux ignorent volontairement le bit setuid sur les scripts interprétés (shell, Python et autres) : c'est l'interpréteur — et non le script — qui s'exécute réellement, or l'interpréteur tourne sous l'identité de l'appelant. Le setuid n'a d'effet que sur les binaires compilés, comme /usr/bin/passwd. Si vous avez besoin d'actions privilégiées depuis un script, utilisez des règles sudo plutôt que d'espérer qu'un chmod 4755 sur un script suffise.