Droits sur un répertoire sous Linux

On peut trouver Linux, le système d’exploitation de type Unix, sur la majorité des serveurs. Tous les dérivés d’Unix ont en commun le fait que des droits d’accès spécifiques sont attribués à des fichiers ainsi qu’à des répertoires. Il est possible de les changer grâce à Linux via « chmod », un programme en ligne de commandes, qui peut être activé dans le terminal via la commande du même nom.

Chmod, c’est quoi ?

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’exploitation multi-utilisateurs de type Unix, il sert à attribuer les droits d’accès dans les systèmes de fichiers qui prennent en charge les autorisations Linux classiques. En général, cela vaut pour les serveurs qui fonctionnent sur tous les systèmes standards de fichiers dans les systèmes Linux dérivés d’Unix. Ce système de droits de fichiers sous Unix se base sur des catégories d’utilisateurs ainsi que sur des droits de base affectés de manière individuelle. Chmod prend en charge deux modes différents : une notation symbolique, qui utilise des lettres, et une autre basée sur des nombres en octal. Seul le propriétaire du fichier ou l’utilisateur root (de l’anglais racine) peut changer ces droits d’accès via la commande chmod. La commande dans la ligne correspond à la syntaxe suivante :

$ chmod options mode file

La commande chmod est suivie de l’élément facultatif options. C’est grâce à lui que d’autres options de la commande chmod sont définies. L’élément mode représente un attribut qui est appliqué sur le file suivant, soit un fichier ou un dossier. Ce masque définit les permissions : il permet de savoir si une catégorie d’utilisateurs peut recevoir de nouveaux droits d’accès ou si leurs droits qui leur ont déjà été attribués leur sont retirés.

Les catégories d’utilisateurs

D’après le système de fichiers sous Unix, tous les fichiers ont des droits d’accès individuels sur un serveur Linux. Cela vaut aussi pour les répertoires. Cette règle du droit d’accès s’effectue via trois catégories d’utilisateurs :

  • propriétaire (user) : en règle générale, un utilisateur qui crée un fichier dans un système de fichiers Unix est automatiquement défini en tant que « user ». Cette propriété peut être modifiée après coup via une commande « chown ». La catégorie d’utilisateur « user » est symbolisée par la lettre « u ».
  • Groupe propriétaire (group) : la catégorie d’utilisateurs « groupe » rassemble plusieurs comptes d’utilisateurs sur le même serveur. Dans les systèmes de fichiers de type Unix, chaque compte d’utilisateur est affilié automatiquement à un groupe principal. Une appartenance à d’autres groupes est également possible. L’affiliation à un ensemble de fichiers peut être configurée tant par le propriétaire que par l’utilisateur root via la commande « chgrgp ». La catégorie d’utilisateurs « group » est caractérisée par la lettre « g ».
  • Reste du monde (others) : la catégorie « others » regroupe tous les utilisateurs qui ne sont ni propriétaires de fichiers, ni membres d’un groupe d’autorisation d’accès. Pour la catégorie d’utilisateurs, on trouve ici la lettre « o ».

Si une commande fait référence à toutes les catégories (user, group et other), le symbole est alors la lettre « a », comme all en anglais pour « tous ».

Droits d‘accès

Le système de fichiers de type Unix connait trois droits d’accès de base. Chacune des catégories citées précédemment peut recevoir des droits de la part du propriétaire du fichier.

  • Lecture (read) : le droit d’accès « read » accorde à un utilisateur le droit de lire un fichier. S’il s’agit d’un répertoire, le contenu peut être lu. Le droit de lecture ne permet cependant pas d’afficher les droits de fichiers. Ce droit est symbolisé par la lettre « r ». On parle dans ce cas également de R Bit.
  • Écriture (write) : les utilisateurs qui bénéficient du droit « write » ont le droit de modifier les contenus de fichiers individuels. Si un droit d’écriture est attribué à un répertoire, l’utilisateur est alors autorisé à créer des sous-dossiers et des fichiers. Le droit d’écriture est symbolisé par la lettre « w » mais aussi parfois par W Bit.
  • Exécution (execute) : si le droit d’accès « execute » est assigné à un utilisateur, celui-ci est autorisé à exécuter des fichiers en tant que programme ou de passer dans un répertoire afin d’atteindre des sous-répertoires ou des fichiers. Le droit d’exécution est symbolisé par la lettre « x ». On parle ici de X Bit.

Lors de l’attribution des droits d’accès, il faut veiller à ce que les autorisations dans le système de fichiers de type Unix ne soit pas hérité. Si un fichier est créé dans un répertoire, celui-ci n’hérite pas automatiquement de ses droits d’accès qui ont été définis pour le dossier. Au lieu de cela, des droits de fichiers individuels sont dérivés par l’attribut du programme via tous les fichiers qui ont été créés.

Représentation des droits d’accès dans le terminal

Pour internaliser le système de droits de fichiers sous Unix, il convient de garder à l’esprit la manière dont les autorisations d’accès pour les fichiers ou pour les répertoires sont représentées. Les contenus des commandes s’affichent avec le symbole « ls » dans le terminal. Les propriétaires ou les utilisateurs root  reçoivent des informations sur les droits d’accès via l’attribut « -l ». L’extrait ci-dessous montre les droits d’accès pour le « dossier exemple » :

utilisateur@ordinateur:~$ ls -l
drwxrw-r-- 0 utilisateur_exemple groupe_exemple 0000 2016-01-01 dossier_exemple

C’est avant tout le bloc de caractères au début qui présente un intérêt tout en ce qui concerne les droits des fichiers :

drwxrw-r--

Cette série code le type de fichiers ainsi que les droits d’accès pour les trois catégories d’utilisateurs. Le premier symbole affiche le type de fichier dont il est question. La chaine de signes commence par exemple avec un d. Il s’agit ici d’un type de fichier « répertoire » (directory). Ensuite suivent trois blocs comportant chacun trois caractères. Chacun de ces blocs fait office de catégorie d’utilisateurs conformément à la séquence standard (user, group, others). Ces lettres sont des abréviations qui symbolisent les droits d’accès :

Code:

d

rwx

rw-

r--

Signification :

d = directory

user

r = read

w = write

x = execute

group

r = read

w = write

-

other

r = read

-

-

Les droits de fichiers dans le répertoire « dossier exemple » sont définis comme suit : le propriétaire du fichier (user) est autorisé à modifier dans le répertoire (r), il peut écrire (w) et exécuter (x), ce qui l’autorise à lister les fichiers qu’il a reçu dans le répertoire. Les membres du groupe « groupe exemple » disposent des droits de lecture et d’écriture, ils sont aussi autorisés à enregistrer des fichiers dans le répertoire. Tous les autres utilisateurs ne peuvent ouvrir dans le répertoire que les fichiers présents et les sous-répertoires sauf s’ils connaissent leurs noms (r). Néanmoins, il faut prendre en compte que les droits d’accès définis font référence uniquement au dossier et non au sous-dossier ou aux fichiers du répertoire correspondant. Pour un fichier texte présent dans ce dossier, les droits d’accès peuvent être complètement différents :

-rw------- 0 utilisateurexemple groupeexemple 0000 2016-01-01 exemple.txt

Dans cet exemple, le tiret initial (-) indique qu’il s’agit d’un fichier normal et non pas d’un répertoire ou d’un lien. Pour le propriétaire, les droits d’écriture et de lecture comportant les lettres rw- sont prévus. Etant donné qu’il s’agit ici d’un fichier texte et non d’un programme,  le droit d’exécution est supprimé et est par conséquent noté avec un tiret (-). On peut trouver ce tiret aussi dans le bloc de caractères auquel les catégories d’utilisateurs « groupe »  et « others » sont affectées. Ainsi, tout un pan de droits d’accès pour ces catégories est exclu sur le fichier exemple.

Changement des droits d’accès via le terminal

Si les droits d’accès à un répertoire ou à un fichier dans un système de type Unix sont adaptés à une ou à toutes les catégories, le programme « chmod » Linux peut être utilisé. De plus, un propriétaire ou un utilisateur root saisit la commande correspondante en y incluant l’attribut (mode) et le nom du fichier (file) :

$ chmod options mode file

Cet attribut peut être créé soit avec une lettre, soit avec un chiffre en octal.

Notation en lettres

Si l’attribut est créé avec une lettre, on utilise les opérateurs qui relient chacune des catégories d’utilisateurs avec les droits de fichiers :

+

Grâce à l’opération « + » (ajouter), de nouveaux droits sont assignés à une catégorie d’utilisateurs. Seuls les droits de fichiers concernés sont écrasés.

-

L’opération « - »  (supprimer) retire un droit de fichier à une catégorie.

=

Si des droits d’utilisateurs sont réinitialisés pour une catégorie sans que ses droits précédents ne soient pris en compte, l’opération « = » (affectation) est utilisée.

Voici comment apparaitrait une commande chmod si on modifiait le fichier nouvellement introduit « exemple.txt » de telle sorte que le propriétaire (user) mais aussi les autres utilisateurs (group, others) reçoivent les autorisations d’écriture et de lecture :

$ chmod ugo+rw exemple.txt

Une alternative serait un renvoi à toutes les catégories d’utilisateurs :

$ chmod a+rw exemple.txt

Dans le terminal, le fichier « exemple.txt » afficherait à la place des autorisations de fichiers d’origine l’attribution suivante :

-rw-------

a+rw

-rw-rw-rw-

Droits d’accès avant le changement :

user : read, write

group : aucun droit

other : aucun droit

 

Commandes chmod :

a = all

+ = ajouter un droit d‘accès

r = read

w = write

Droits d’accès après le changement :

user : read, write

group : read, write

other : read, write

 

Notation basée sur des nombres en octal

Il est évident qu’il est difficile d’assimiler la notation par symboles. C’est pour cela que beaucoup d’administrateurs ont recours à une notation basée sur des nombres en octal pour l’attribution de leurs droits d’accès. Il s’agit ici d’un nombre à trois chiffres où chaque point représente une catégorie d’utilisateurs. La notation octale se base sur un ordre par défaut.

Chiffre 1

Correspond à la catégorie d’utilisateurs propriétaire (user)

Chiffre 2

Correspond à la catégorie d’utilisateurs « groupe propriétaire» (group)

Chiffre 3

Correspond à la catégorie d’utilisateurs « reste du monde » (others)

La valeur de chaque chiffre définit l’attribution de tels droits d’accès à telles catégories d’utilisateurs. Cette valeur est calculée en prenant la somme des valeurs individuelles qui sont associées aux droits respectifs :

Droit d’accès

Valeur

Lecture

4

Ecriture

2

Exécution

1

Aucun droit

0

Les combinassions de valeurs qui suivent résultent de ces attributions :

Droits d’accès

Valeur

Aucun droit

0

Exécution seulement 

1

Ecriture seulement 

2

Ecriture / exécution

3

Lecture seulement

4

Lecture / exécution

5

Lecture / écriture

6

Tous les droits

7

La notation basée sur des nombres en octal est illustrée dans le fichier suivant « exemple.txt ». Avant le changement des droits d’accès avec la commande « chmod », le code ci-dessous nous présente :

-rw------- 0 exemple_utilisateur groupe_exemple 0000 2016-01-01 exemple.txt

Seul le propriétaire (user) dispose de droits d’accès d’écriture et de lecture. Aucun autre utilisateur n’est autorisé à accéder au fichier. Supposons que le propriétaire ait l’intention d’accorder au groupe « exemple » le droit de lecture. Le code en octal serait alors ainsi :

$ chmod 640 exemple.txt

Le propriétaire se réserve les mêmes droits d’accès qu’auparavant via la valeur 6 avant l’attribut : 4 (lecture) + 2 (écriture). La deuxième valeur de l’attribut indique les droits d’accès des catégories : 4 (lecture). Pour les utilisateurs spécifiques, aucun droit n’est prévu, le code correspondant est donc O.

Si des droits d’écriture sont donnés à une catégorie d’utilisateurs « others », voilà ce qu’il faudra utiliser en octal :

$ chmod 644 exemple.txt

Le troisième chiffre (4) du code en octal définit le droit de lecture pour les utilisateurs spécifiques sur le serveur.

Les options des commandes chmod

Peu importe si un utilisateur se décide pour une notation en chiffres ou en lettres, il dispose de plusieurs options quant à l’attribution de droits d’accès. Celle-ci est insérée dans la ligne entre la commande et l’attribut.

Code

Option

Description

-R

recursive

Le changement des droits d’accès fait référence à tous les fichiers et les sous-répertoires à l’intérieur d’un dossier

-v

verbose

Après la ligne de commande, un diagnostic est réalisé pour tous les fichiers traités

-c

changes

Après la ligne de commande, un diagnostic est réalisé pour tous les fichiers traités qui ont été modifiés

-f

silent

Les messages d’erreurs sont supprimés

L’exemple suivant montre une ligne de commande dans laquelle la modification des droits d’accès se réfère de manière récursive au sous-répertoire et aux fichiers dans le dossier :

$ chmod -R 744 dossier_exemple

En ce qui concerne tous les fichiers et les sous-dossiers du répertoire exemple, le propriétaire reçoit toutes les autorisations d’accès (7), les membres des groupes et les utilisateurs spécifiques ont quant à eux uniquement une autorisation de lecture (4).

L’avantage du système de fichiers sous Unix repose dans sa structure facile à manier. Il suffit de peu d’efforts pour résoudre des problèmes complexes qui surviennent avec les systèmes d’exploitation multi-utilisateurs. De plus, il reste intuitif pour les utilisateurs et facile à manier pour les systèmes informatiques. Si vous appréhendez de modifier des droits d’accès dans votre terminal, vous pouvez avoir recours à un gestionnaire de fichiers. Les programmes FTP classiques fournissent pour cela une interface utilisateur graphique.


Attendez ! Nous avons quelque chose pour vous !
Votre messagerie professionnelle

Créez une adresse personnalisée
Affichez votre sérieux sur Internet
Nom de domaine inclus
À partir d' 1 € TTC/mois
Conseiller personnel inclus !