Linux : comment gérer les permissions avec la commande chmod ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à gérer les permissions sous Linux grâce à l'utilisation de la commande chmod. Il s'agit d'une commande indispensable que vous devez absolument connaître et maîtriser pour administrer un serveur ou un poste de travail sous Linux (Ubuntu, Debian, AlmaLinux, etc.).
Les permissions sont utilisées pour gérer les accès aux fichiers et aux répertoires. La commande chmod est utilisée pour modifier ces permissions. Nous parlerons du modèle de permissions de Linux, avant d'évoquer l'utilisation de la commande chmod au travers de différents exemples. La commande chmod permet de changer les permissions, soit en mode symbolique, soit en mode numérique, donc nous verrons les deux possibilités.
Ce tutoriel est rédigé à partir d'une machine sous Debian 13, mais vous pouvez utiliser une autre distribution Linux.
Version originale de l'article : 27 novembre 2011.
II. Comprendre les permissions sous Linux
Avant d'évoquer l'utilisation de la commande chmod en elle-même, il me semble important d'effectuer quelques rappels sur le fonctionnement des permissions sous Linux. Ici, nous évoquerons uniquement le principe de base via les permissions de lecture, d'écriture et d'exécution.
Chaque fichier ou répertoire est associé à trois types de permissions :
- Lecture (r) : voir le contenu d'un fichier ou lister un répertoire.
- Écriture (w) : modifier un fichier ou son contenu, ou ajouter/supprimer des fichiers dans un répertoire.
- Exécution (x) : exécuter un fichier ou entrer dans un répertoire (permission nécessaire pour exécuter un script Bash, par exemple).
Ces permissions s'appliquent à trois catégories d'utilisateurs :
- Propriétaire (user) : l'utilisateur qui possède le fichier, donc le propriétaire.
- Groupe (group) : les membres du groupe associé au fichier.
- Autres (others) : tous les autres utilisateurs.
À partir de là, il est envisageable de définir l'accès aux données, notamment qui peut lire et/ou modifier un fichier spécifique.
III. Afficher et interpréter les permissions
A. Lire les permissions sur Linux
Pour afficher les permissions d'un fichier ou d'un répertoire, nous devons utiliser la commande ls. Dans un Terminal, exécutez la commande ls -l pour afficher les permissions d'un fichier ou d'un répertoire. Par exemple, pour avoir cette information sur le fichier /etc/shadow présent sur toutes les machines Linux, nous exécuterons ceci :
ls -l /etc/shadow
Voici une sortie typique pour ce fichier :
-rw-r----- 1 root shadow 1191 3 janv. 11:14 /etc/shadow
Cette ligne permet de prendre connaissance des permissions actuelles définies sur ce fichier (rw-r-----), ainsi que le nom du propriétaire (root) et le nom du groupe (shadow). Voici comment interpréter le résultat de cette commande :

B. Les permissions : r,w, x
Ce que vous devez retenir, c'est que les permissions sont définies dans une chaine de 9 caractères divisée en 3 blocs afin de correspondre aux permissions du propriétaire, du groupe et des autres.
- r : permission de lecture
- w : permission d'écriture (modification)
- x : permission d'exécution
- - : pas de permissions
Les permissions sont toujours construites de cette façon : lecture, écriture, exécution, soit rwx. Si la permission est r-- sur un fichier, cela signifie qu'il est possible de lire le fichier, sans pouvoir le modifier (ni l'exécuter). Cette même permission sur un dossier signifie que le contenu du répertoire peut être affiché, mais l'utilisateur ne peut pas créer, modifier ou supprimer un fichier ou dossier dans ce répertoire.
Dans notre cas, nous pouvons donc affirmer que le compte root dispose des autorisations de lecture et écriture sur le fichier /etc/shadow, tandis que les membres du groupe shadow peuvent lire son contenu. Tous les autres utilisateurs n'ont aucun accès à ce fichier.
C. Permissions spéciales : setuid, setgid, et sticky bit
Pour terminer, et de façon succincte, car ce n'est pas le sujet principal de cet article, nous allons évoquer les permissions spéciales. Il est possible de rencontrer ces valeurs au niveau de la troisième valeur d'un groupe de permissions (à la place du "x").
Ces bits spéciaux ajoutent des fonctionnalités supplémentaires :
- Setuid : exécute un fichier avec les privilèges du propriétaire.
- Setgid : les fichiers créés dans un répertoire héritent du groupe du répertoire.
- Sticky bit : empêche les utilisateurs de supprimer des fichiers dans un répertoire sauf s’ils en sont propriétaires.
Voici un exemple où le "Setuid" est défini sur un binaire :
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 23 mars 2023 /usr/bin/passwd
Par conséquent, la valeur x est remplacée par s. Il est susceptible de rencontrer d'autres valeurs : s, S, t, T.
IV. Modifier les permissions avec chmod : mode symbolique
A. Chmod : la syntaxe du mode symbolique
En mode symbolique, nous utilisons la commande chmod en spécifiant les permissions avec du texte, c'est-à-dire que pour ajouter les permissions de lecture, nous pourrons spécifier +r. À l'inverse, pour supprimer les permissions d'écriture, nous pouvons écrire -w.
La syntaxe générale est :
chmod [OPTIONS] [PERMISSIONS] fichier
chmod [OPTIONS] [ugoa][-+=][rwx...] fichier
Le premier ensemble de flags ([ugoa]) correspond aux utilisateurs :
| Nom du flag | Correspondance |
|---|---|
| u | L'utilisateur propriétaire |
| g | Le groupe (et donc les utilisateurs membres du groupe) |
| o | Tous les autres utilisateurs |
| a | Tous les utilisateurs (équivalent de "ugo") |
Remarque : si cet indicateur n'est pas spécifié dans la commande chmod, l'indicateur utilisé par défaut est "a". Il n'y a que les permissions définies par umask qui ne sont pas affectées.
Le second ensemble de flags ([-+=]) correspond à l'opération à effectuer sur les permissions :
| Nom du flag | Correspondance |
|---|---|
| - | Retire la permission précisée |
| + | Ajoute la permission précisée |
| = | Modifie la permission actuelle avec la permission spécifiée (écraser) |
| a | Tous les utilisateurs (équivalent de "ugo") |
Le troisième ensemble de flags ([rwx]) correspond à la permission :
| Nom du flag | Correspondance |
|---|---|
| r | Permission de lecture |
| w | Permission d'écriture |
| x | Permission d'exécution |
| s, S, etc... | Permissions spéciales |
B. Exemples d'utilisation de chmod
Voici quelques exemples d'utilisation de la commande chmod.
Vous pouvez créer un fichier vierge sur votre machine pour vous exercer.
cd /tmp
touch fichier.txt
- Donner les permissions de lecture au groupe sur le fichier
fichier.txt:
chmod g+r fichier.txt

- Supprimer la permission d'exécution pour tous les utilisateurs sur le script
script.sh:
chmod a-x script.sh
- Ajouter les permissions de lecture, écriture et exécution au propriétaire :
chmod u+rwx script.sh

- Retirer toutes les permissions pour les autres utilisateurs :
chmod o= fichier.txt
- Ajouter le droit de lecture, d'écriture et d'exécution au propriétaire, de lecture seule au groupe et aucun droit aux autres :
chmod u=rwx,g=r,o= fichier.txt
V. Modifier les permissions avec chmod : mode numérique
A. Chmod : la syntaxe du mode numérique
Il y a une autre façon d'utiliser la commande chmod : le mode numérique. Ici, nous utilisons uniquement des valeurs numériques pour définir les permissions.
La syntaxe générale est :
chmod [OPTIONS] [NOMBRE] fichier
Le nombre est en fait une valeur constituée de 3 ou 4 chiffres. Chaque valeur sert à spécifier les permissions de l'utilisateur, puis du groupe et des autres (dans l'ordre habituel).
Voici un tableau récapitulatif avec les trois permissions de base :
| Nom de la permission | Correspondance |
|---|---|
| lecture | 4 |
| écriture | 2 |
| exécution | 1 |
| aucun | 0 |
Chaque permission est affectée à un chiffre spécifique. Selon les permissions à définir, il est nécessaire d'effectuer un "calcul" pour additionner la valeur correspondante à chaque permission.
Voici un exemple pour vous aider à comprendre cette logique :

Ici, il s'agit d'un exemple avec un nombre constitué de 3 chiffres. Si vous passez sur 4 chiffres, le premier peut être utilisé pour déterminer une permission spéciale.
| Nom de la permission spéciale | Correspondance |
|---|---|
| SetUid | 4 |
| SetGid | 2 |
| StickyBit | 1 |
| Aucun changement | 0 |
Cela signifie que les valeurs 0750 et 750 sont identiques lorsque la commande chmod est utilisée en mode numérique. À l'inverse, la valeur 1777 sert à déterminer le sticky bit sur un répertoire.
Remarque : le sticky bit est un attribut appliqué à un répertoire qui permet de restreindre la suppression ou le renommage de fichiers à leur propriétaire, au propriétaire du répertoire, ou à un administrateur. Ceci est vrai même si d'autres utilisateurs ont des permissions d'écriture sur ce répertoire.
Enfin, de façon générale, vous devez éviter l'utilisation de la valeur 777 car elle donne les permissions en lecture, écriture et exécution à tous les utilisateurs : c'est une permission très dangereuse.
B. Exemples d'utilisation de chmod
Désormais, nous allons voir quelques exemples d'utilisation de la commande chmod avec le mode numérique.
- Attribuer les permissions
rwxau propriétaire,rxau groupe etraux autres :
chmod 754 fichier.txt
- Définir les permissions
rwxau propriétaire pour un répertoire, de façon récursive (modifier en masse les permissions d'une arborescence) :
chmod -R 700 dossier/
- Attribuer les droits de lecture et d'écriture au propriétaire d'un dossier, et un accès en lecture uniquement pour les membres du groupe et tous les autres utilisateurs :
chmod 644 dossier/
VI. Modifier des permissions en masse sous Linux
En guise de bonus, terminons avec un exemple pour modifier des permissions en masse sur une machine Linux. Au-delà de l'utilisation de la commande chmod, nous allons aussi utiliser la commande find pour identifier les fichiers sur lesquels nous souhaitons agir. Ceci peut s'appliquer sur des fichiers ou des dossiers.
Ici, nous définissons les permissions de lecture/écriture pour le propriétaire et une permission de lecture pour le groupe et les autres, sur tous les fichiers présents dans le répertoire /var/www/application.
# Méthode symbolique
find /var/www/application -type f -exec chmod 644 {} \;
# Méthode numérique
find /var/www/application -type f -exec chmod u=rw,go=r {} \;
Pour cibler plutôt les répertoires à la place des fichiers, remplacez -type f par -type d dans la commande find.
VII. Conclusion
Grâce à ce tutoriel, vous devriez être en mesure de mieux comprendre le fonctionnement des permissions sous Linux, mais aussi de définir les permissions sur un répertoire, un fichier ou un ensemble d'éléments selon vos besoins. Pour plus d'informations sur la commande chmod, consultez la page de manuel avec man chmod.
FAQ
Qu’est-ce que la commande chmod et à quoi sert-elle ?
La commande chmod (change mode) permet de modifier les droits d’accès aux fichiers et répertoires sur un système Linux/Unix-like. Elle détermine qui peut lire (r), écrire (w) ou exécuter (x) un fichier ou un dossier (utilisateur, groupe, autres).
Quelle est la différence entre mode symbolique et mode numérique avec chmod ?
- Mode symbolique : on utilise des lettres pour le propriétaire (u), le groupe (g), les autres (o) ou tous (a), puis les opérateurs +, –, = suivi des droits (r, w, x).
- Mode numérique (octal) : on transmet un nombre en octal (par exemple : 755). Le premier chiffre ou chiffre supplémentaire peut indiquer les bits spéciaux.
Que signifie la commande chmod 777 ?
La commande chmod 777 fichier accorde tous les droits (lecture, écriture et exécution) à tous les utilisateurs : le propriétaire, le groupe et les autres. En notation symbolique, cela revient à chmod a+rwx fichier. Si cette configuration simplifie temporairement l’accès, elle représente un risque majeur de sécurité, surtout sur des serveurs Linux. Tout utilisateur local (ou via un service exposé) peut alors modifier, exécuter ou supprimer le fichier. Il est donc recommandé d’utiliser des droits plus restreints et de réserver le 777 uniquement à des tests isolés ou à des environnements temporaires.
Comment vérifier les permissions actuelles d’un fichier ou d’un dossier ?
Utilisez la commande ls -l nom_du_fichier pour afficher une ligne détaillée contenant les droits (trois blocs rwx). Par exemple : -rw-r--r--.
Comment l'umask influence-t-il l'usage de chmod ?
L'umask détermine les permissions par défaut attribuées aux nouveaux fichiers et répertoires créés par un utilisateur. En revanche, chmod n’est pas influencé directement par l’umask : il sert à modifier les permissions après la création. L’umask agit en amont, au moment de la création du fichier, tandis que chmod agit en aval, pour ajuster ou corriger les droits existants. IT-Connect dispose d'un tutoriel pour configurer umask sur Linux.
Quelle est la différence entre chmod et les ACL ?
La commande chmod gère les permissions classiques de type Unix, c’est-à-dire trois niveaux de droits : le propriétaire (user), le groupe (group) et les autres (others), avec les attributs lecture (r), écriture (w) et exécution (x). C'est assez basique.
Les ACL (Access Control Lists), en revanche, permettent un contrôle beaucoup plus fin : elles autorisent à définir des permissions pour plusieurs utilisateurs ou groupes spécifiques, au-delà du triptyque traditionnel. Par exemple, avec les ACL, vous pouvez donner à un utilisateur précis un accès en lecture seule à un dossier sans modifier le groupe principal.
En pratique, chmod reste la base du modèle de permissions, mais lorsqu’on active les ACL sur un système de fichiers (via setfacl et getfacl), celles-ci complètent ou affinent les droits définis par chmod. Les ACL sont particulièrement utiles sur des serveurs de fichiers où plusieurs utilisateurs doivent avoir des niveaux d’accès différents.


chmod +X *
droit que pour les répertoires (pour pouvoir les ouvrir !)
J’ai essayé même des choses bizares mais Makefile reste toujours en lecture seule: je ne sais plus que faire
[pierre@Linux-fedora envoyer]$ sudo chmod 777 Makefile
[pierre@Linux-fedora envoyer]$ sudo chmod -777 Makefile
[pierre@Linux-fedora envoyer]$ sudo chmod -r -777 Makefile
[pierre@Linux-fedora envoyer]$ sudo chmod -777 -r Makefile
[pierre@Linux-fedora envoyer]$ sudo chmod -R -777 Makefile
[pierre@Linux-fedora envoyer]$ sudo chmod -777 -R Makefile
Merci si vous avez la réponse
Bonjour
J’ai un souci sur mon VPS (dont je suis root) sous debian linux
je me co avec le compte utilisateur créé
je veux transférer de mon local sur le compte utilisateur du VPS et ça me donne une erreur :
« open for write: permission denied
Erreur : Échec du transfert du fichier »
Les fichier ds le dossier concerné ont les « -rwxrwxr-x »
J »avoue que je ne pige pas.
Si quelqu’un peut m’aider, merci beaucoup