Le programme en ligne de commandes chmod, forme courte de « change mode », a été introduit au début des années 1970 avec la première version d’AT&T Unix. Dans les systèmes d’ex­ploi­ta­tion multi-uti­li­sa­teurs de type Unix, il sert à attribuer les droits d’accès dans les systèmes de fichiers qui prennent en charge les au­to­ri­sa­tions Linux clas­siques. En général, cela vaut pour les serveurs qui fonc­tion­nent sur tous les systèmes standards de fichiers dans les systèmes Linux dérivés d’Unix. Pour modifier les attributs d’un fichier via le chmod, vous devez soit être le pro­prié­taire du fichier, soit disposer des droits root.

La majorité des serveurs Web utilisent des dis­tri­bu­tions du système d’ex­ploi­ta­tion unixoïde Linus telles que Ubuntu. Tous les dérivés d’Unix ont en commun le fait que des droits d’accès spé­ci­fiques sont attribués à des fichiers ainsi qu’à des ré­per­toires. Il est possible de les changer grâce à chmod, un programme en ligne de commandes, qui peut être activé dans le terminal via la commande du même nom.

Comment utiliser chmod ?

Ce système de droits de fichiers sous Unix se base sur des ca­té­go­ries d’uti­li­sa­teurs ainsi que sur des droits de base affectés de manière in­di­vi­duelle. Chmod prend en charge deux modes dif­fé­rents : une notation sym­bo­lique, qui utilise des lettres, et une autre basée sur des nombres en octal. Comme déjà indiqué, seul le pro­prié­taire du fichier ou l’uti­li­sa­teur root (de l’anglais racine) peut changer ces droits d’accès via la commande chmod. La commande dans la ligne cor­res­pond à la syntaxe suivante :

$ chmod options mode file

La commande chmod est suivie de l’élément fa­cul­ta­tif « options ». C’est grâce à lui que d’autres options de la commande chmod sont définies. L’élément « mode » re­pré­sente un attribut qui est appliqué sur le « file » suivant, soit un fichier ou un dossier. Ce masque définit les per­mis­sions : il permet de savoir si une catégorie d’uti­li­sa­teurs peut recevoir de nouveaux droits d’accès ou si leurs droits qui leur ont déjà été attribués leur sont retirés.

Quels sont les modes chmod dis­po­nibles ?

D’après le système de fichiers sous Unix, tous les fichiers ont des droits d’accès in­di­vi­duels sur un serveur Linux. Cela vaut aussi pour les ré­per­toires. Cette règle du droit d’accès s’effectue toujours sur les trois ca­té­go­ries suivantes d’uti­li­sa­teurs :

Pro­prié­taire (user) Ha­bi­tuel­le­ment, un uti­li­sa­teur qui crée un fichier dans un système de fichiers Unix est au­to­ma­ti­que­ment défini en tant que « user » du fichier. La propriété peut être changée par la suite par la commande « chown ».
Groupe (group) La catégorie d'uti­li­sa­teurs « group » combine dif­fé­rents comptes d'uti­li­sa­teurs sur le serveur. Dans les systèmes de fichiers unixoïdes, chaque compte d'uti­li­sa­teur est au­to­ma­ti­que­ment affecté à un groupe principal, mais il est également possible d'ap­par­te­nir à d'autres groupes. L'af­fec­ta­tion de groupes de fichiers peut être con­fi­gu­rée à la fois par le pro­prié­taire et l'uti­li­sa­teur root via la commande « chgrp ».
Autres uti­li­sa­teurs (others) La classe d'uti­li­sa­teurs « others » comprend tous les uti­li­sa­teurs qui ne sont ni pro­prié­taires du fichier ni membres d'un groupe ayant des droits d'accès.

Comme nous l’avons déjà mentionné, il existe deux modes dif­fé­rents de réglage des droits : le mode sym­bo­lique et le mode octal, dont les prin­ci­pales ca­rac­té­ris­tiques seront briè­ve­ment résumées dans les sections suivantes.

Mode sym­bo­lique

En mode sym­bo­lique, des lettres sont at­tri­buées aux dif­fé­rentes ca­té­go­ries d’uti­li­sa­teurs et aux dif­fé­rents droits d’accès. En combinant ces lettres, il est ainsi facile de préciser quels droits doivent être ajoutés ou supprimés. Le tableau suivant résume les lettres de balisage pour les uti­li­sa­teurs et les droits dans le cadre de la notation sym­bo­lique :

Lettres pour les droits d‘accès Sig­ni­fi­ca­tion
r Droit de lecture ; aussi indiqué R-Bit
w Droit d‘écriture ; aussi indiqué W-Bit
x Droit d‘exécution ; aussi indiqué X-Bit
Lettres pour les ca­té­go­ries d‘uti­li­sa­teurs Sig­ni­fi­ca­tion
u Catégorie d‘uti­li­sa­teur « user », pro­prié­taire
g Catégorie d‘uti­li­sa­teur « group », groupe
o Catégorie d‘uti­li­sa­teur « others », autres uti­li­sa­teurs
a « all » : la commande concerne toutes les ca­té­go­ries d’uti­li­sa­teurs.

Si le masque de droits est créé selon la notation sym­bo­lique, les opé­ra­teurs suivants sont utilisés pour relier les ca­té­go­ries d'uti­li­sa­teurs res­pec­tives aux droits des fichiers :

+ L'opé­ra­teur « + » est utilisé pour attribuer de nouveaux droits de fichier à une catégorie d'uti­li­sa­teurs. Seuls les droits des fichiers concernés sont écrasés.
- L'opé­ra­teur « - »  supprime un droit de fichier d'une catégorie d'uti­li­sa­teurs.
= Si les droits sur les fichiers doivent être définis pour une catégorie d'uti­li­sa­teurs in­dé­pen­dam­ment de ses droits an­té­rieurs, l'opé­ra­teur « = » est utilisé. 

Si, par exemple, un fichier « exemple.txt » qui vient d'être introduit doit être modifié de manière à ce que non seulement le pro­prié­taire (user) mais aussi tous les autres uti­li­sa­teurs (group, others) aient la per­mis­sion de lire et d'écrire, la commande chmod res­sem­ble­rait à ceci :

$ chmod ugo+rw exemple.txt

Une autre pos­si­bi­lité serait de faire référence à toutes les ca­té­go­ries d'uti­li­sa­teurs :

$ chmod a+rw exemple.txt

Lorsqu'il est appelé dans le terminal, le fichier « exemple.txt » affiche désormais l’au­to­ri­sa­tion de droits suivante au lieu des droits d'accès originaux :

Droits d’accès avant la mo­di­fi­ca­tion Commande chmod exécutée Droits d’accès après la mo­di­fi­ca­tion
-rw------- a+rw -rw-rw-rw-
user: lire, écrire group: pas de droits other: pas de droits a = tous + = ajouter des droits d’accès r = lire w = écrire user: lire, écrire group: lire, écrire other: lire, écrire

Mode octal

La notation sym­bo­lique est des­crip­tive, mais elle est difficile à manier lors­qu'elle est utilisée fré­quem­ment. De nombreux ad­mi­nis­tra­teurs utilisent donc la notation octale lors de l'at­tri­bu­tion des droits d'accès. Il s'agit d'une séquence de trois chiffres, chaque chiffre re­pré­sen­tant une catégorie d'uti­li­sa­teur du serveur. La notation octale est basée sur la séquence standard :

Position des chiffres selon la catégorie d’uti­li­sa­teurs Sig­ni­fi­ca­tion
1 Cor­res­pond à la catégorie d’uti­li­sa­teurs « pro­prié­taire » (user)
2 Cor­res­pond à la catégorie d’uti­li­sa­teurs « groupe » (group)
3 Cor­res­pond à la catégorie d’uti­li­sa­teurs « autres » (others)

Les droits d'accès attribués aux dif­fé­rentes ca­té­go­ries d'uti­li­sa­teurs sont dé­ter­mi­nés par la valeur de chaque chiffre. Elle est calculée à partir de la somme des valeurs in­di­vi­duelles at­tri­buées aux droits res­pec­tifs :

Valeur droits d’accès Sig­ni­fi­ca­tion
4 Lire
2 Ecrire
1 Exécuter
0 Aucun droit

En fonction de cette af­fec­ta­tion, les com­bi­nai­sons de valeurs suivantes pour les droits d'accès sont obtenues :

Valeur Droit(s) d’accès
0 Aucun
1 Seulement exécuter
2 Seulement écrire
3 Ecrire/exécuter
4 Seulement lire
5 Lire/exécuter
6 Lire/écrire

La notation octale est également mieux illustrée par un exemple. En supposant que le pro­prié­taire du fichier d'exemple « exemple.txt » ait également l'in­ten­tion d'ac­cor­der des droits de lecture au groupe « grou­peexemple », le code octal suivant serait utilisé :

$ chmod 640 exemple.txt

Avec la valeur 6 à la première position du masque de droits, le pro­prié­taire conserve les droits d'accès maximum : 4 (lecture) + 2 (écriture). La deuxième valeur du masque de droits spécifie les droits d'accès du groupe : 4 (lire). Aucun droit n'est prévu pour les autres uti­li­sa­teurs, qui sont marqués en troisième position, qui est donc codée avec un 0.

Options de la commande chmod

Qu'il choisisse la notation sym­bo­lique ou numérique, l'uti­li­sa­teur dispose de plusieurs options pour l'at­tri­bu­tion des droits d'accès. Ils sont insérés dans la ligne de commande entre le masque de commande et le masque de droits.

Code Option Sig­ni­fi­ca­tion
-R recursive La mo­di­fi­ca­tion des droits d’accès s’applique à tous les fichiers et sous-ré­per­toires d’un dossier.
-v verbose Suite à la ligne de commande, un diag­nos­tic est émis pour tous les fichiers traités.
-c changes Suite à la ligne de commande, un diag­nos­tic est émis par tous les fichiers qui ont changé.
-f silent Les messages d’erreur sont supprimés.

L'exemple suivant montre une ligne de commande où la mo­di­fi­ca­tion des droits d'accès se réfère de manière ré­cur­rente aux sous-ré­per­toires et aux fichiers du dossier :

$ chmod -R 744 dossierexemple

La règle suivante s'ap­plique à tous les fichiers et sous-dossiers du ré­per­toire « dos­sie­rexemple » : le pro­prié­taire obtient des droits d'accès complets (7), les membres du groupe et les autres uti­li­sa­teurs ont un accès en lecture seule (4).

Ap­pli­ca­tion de chmod démontrée par un exemple

Enfin, l'uti­li­sa­tion du chmod sera à nouveau clarifiée à l'aide d'un exemple concret.

Toutefois, la dé­mons­tra­tion com­men­cera par une ins­pec­tion générale des droits ac­tuel­le­ment attribués. Cela fonc­tionne dans les systèmes Linux/Unix au moyen de la commande « ls », après quoi le contenu du ré­per­toire appelé est affiché. Si le paramètre « -l » est ajouté, les dif­fé­rents fichiers sont affichés sous forme de liste clai­re­ment organisée :

ls -l

Une sortie possible pour cette commande, qui est choisie comme exemple dans ce cas, pourrait res­sem­bler à ce qui suit :

insgesamt 3
-rwx------  1 det det    0 2020-02-02 10:41 Fichier1.txt
-rw-rw-r--  1 det det    0 2020-02-02 10:41 Fichier2.txt
drwxr-xr-x  2 det det 4096 2020-02-02 10:44 Répertoire

Ainsi, deux fichiers (« Fichier1.txt » et « Fichier2.txt ») et un ré­per­toire (« Ré­per­toire ») peuvent être trouvés sous le chemin recherché. Chaque entrée in­di­vi­duelle commence par un bloc de dix ca­rac­tères, ce qui est par­ti­cu­liè­re­ment in­té­res­sant dans ce cas car il fournit des in­for­ma­tions sur les droits d'accès aux fichiers ou au ré­per­toire :

Le caractère indique en premier lieu ce qu'il est exac­te­ment. Dans le cas d'un dossier simple, le signe moins y apparaît, comme dans les deux premiers postes. Un « d » (pour directory soit « ré­per­toire » en français) indique les annuaires, dans le cas des liens, il y aurait un « l » (pour lien).

Elle est suivie des trois blocs décisifs - chacun de trois ca­rac­tères - qui informent sur les droits d'accès actuels. Ici, l'ordre déjà connu de la notation octale s'ap­plique : le bloc 1 re­pré­sente le pro­prié­taire, le bloc 2 la catégorie d'uti­li­sa­teurs « groupe », le bloc 3 tous les autres uti­li­sa­teurs. Même à l'in­té­rieur des dif­fé­rents blocs, l'ordre est toujours le même :

  • le premier chiffre indique si l'accès en lecture (r) est dis­po­nible,
  • le chiffre 2 donne des in­for­ma­tions sur l'accès en écriture (w)
  • et le troisième caractère d'un bloc de trois indique si la catégorie d'uti­li­sa­teurs res­pec­tive a également les droits d'exé­cu­tion (x).

Si la lettre est fixée, les droits cor­res­pon­dants sont accordés. Sinon, il y a un signe moins à la position res­pec­tive. Pour les deux fichiers et le ré­per­toire, cela signifie ce qui suit :

Fichier1.txt

  Pro­prié­taire Groupe Autre uti­li­sa­teur
Lire x x
Ecrire x x
Exécuter x x

Fichier2.txt

  Pro­prié­taire Groupe Autre uti­li­sa­teur
Lire
Ecrire x
Exécuter x x x

Ré­per­toire

  Pro­prié­taire Groupe Autre uti­li­sa­teur
Lire
Ecrire x x
Exécuter

Exemple chmod : ajouter de nouveaux droits

Dans un premier exemple d'ap­pli­ca­tion pour le chmod, les droits de lecture et d'exé­cu­tion pour le fichier1.txt, qui étaient jusqu'à présent réservés au pro­prié­taire, doivent main­te­nant être activés pour toutes les ca­té­go­ries d'uti­li­sa­teurs. La commande chmod ap­pro­priée (notation sym­bo­lique) est la suivante :

chmod a+rx Fichier1.txt

Toutes les ca­té­go­ries d'uti­li­sa­teurs (a) se voient attribuer de nouveaux droits (+) pour le document Fichier1.txt, à savoir le droit de lire (r) et d'exé­cu­ter (x) ce fichier.

Si vous regardez la liste des droits cédés, l'entrée pour File1.txt ressemble à ceci

-rwxr-xr-x  1 det det    0 2020-02-02 10:41 Datei1.txt

Exemple chmod : la ré­vo­ca­tion des droits

Dans le deuxième exemple de dé­mons­tra­tion, l'accès en écriture au Fichier2.txt pour tous les uti­li­sa­teurs, c'est-à-dire également pour le pro­prié­taire et pour la catégorie d'uti­li­sa­teurs « groupe », doit être retiré via chmod. L'entrée cor­res­pon­dante (à nouveau en notation sym­bo­lique) ressemble à ce qui suit :

chmod a-w Fichier2.txt

Dans cet exemple de chmod, la commande fait également référence à toutes les ca­té­go­ries d'uti­li­sa­teurs (a). La per­mis­sion d'écri­ture (w) pour le Fichier2.txt est retirée (-) à tous les uti­li­sa­teurs. La nouvelle entrée pour le dossier res­sem­blera à ceci par la suite :

-r--r--r--  1 det det    0 2020-02-02 10:41 Fichier2.txt
Aller au menu principal