logo

Gérer les droits et permissions d'accès aux fichiers

Les propriétaires

Par la propriété d'un fichier, on désigne à quel utilisateur appartient le fichier, qui le possède. À partir de cette possession (ou non), il sera ensuite possible de définir des permissions d'accès sur le fichier.

La possession d'un fichier se définit sur trois catégories :

  1. l'utilisateur propriétaire du fichier (u). Il s'agit généralement du créateur du fichier. (Prenez note qu'un fichier créé par une commande exécutée à l'aide de sudo appartiendra à l'utilisateur root ; vous serez potentiellement amené à devoir changer le propriétaire de ce fichier pour pouvoir vous en servir avec votre propre compte utilisateur.)
  2. le groupe propriétaire du fichier (g). Si un utilisateur est membre d'un certain groupe qui possède la propriété d'un fichier, l'utilisateur aura aussi certaines permissions particulières sur ce fichier.
  3. les autres, other, le reste du monde (o). Bref, tout un chacun n'étant ni propriétaire du fichier, ni membre du groupe propriétaire du fichier.

Faisons une analogie avec les voitures. Le propriétaire serait la personne au nom de laquelle la voiture est immatriculée. Le groupe propriétaire est l'ensemble des personnes qui sont inscrites en tant que conducteurs secondaires de la voiture chez l'assureur. Enfin, les autres correspond à toutes les autres personnes n'étant ni détenteur de l'immatriculation ni inscrites en tant que conducteurs de la voiture chez l'assureur.

Les permissions

Les permissions désignent ce que les diverses catégories d'utilisateurs (propriétaire d'un fichier, membres du groupe propriétaire d'un fichier et le reste du monde) ont l'autorisation d'effectuer sur un fichier donné. Par exemple, une catégorie d'utilisateurs peut avoir accès en lecture et écriture à un fichier, alors qu'une autre catégorie a accès en lecture seulement à ce même fichier.

Les permissions se définissent sur trois niveaux :

  1. la lecture d'un fichier : cette permission est nécessaire pour pouvoir accéder au contenu d'un fichier (écouter une piste audio, visionner un film, lire un texte, lister le contenu (ls) naviguer à l'intérieur d'un répertoire…). Cette permission est notée r (pour read, lire).
  2. l'écriture dans un fichier : cette permission est nécessaire pour pouvoir apporter des modifications à un fichier (corriger un texte et enregistrer les changements ; effacer les "yeux rouges" dans une photo et enregistrer la correction ; ajouter, modifier, renommer ou supprimer un fichier dans un dossier ; etc.). Cette permission est notée w (pour write, écrire).
  3. l'exécution d'un fichier : cette permission est nécessaire particulièrement pour les logiciels, afin qu'ils puissent être exécutés. Cette permission est notée x (pour execute, exécuter). Pour un répertoire, la permission "x" permet d'en faire le répertoire courant (cd).

Par exemple, l'utilisateur toto dispose des droits de lecture et d'exécution sur le répertoire foo, mais pas la permission d'écriture sur ce répertoire ; toto peut donc exécuter les programmes présents dans ce répertoire et ouvrir les fichiers qu'il contient, mais ne peut pas les modifier ni en créer de nouveaux.

Pour chacune des trois catégories d'utilisateurs (propriétaire, membres du groupe propriétaire et reste du monde) sont définies ces trois permissions :

Les droits sont affiché par une série de 9 caractères, associé 3 par 3 (rwx rwx rwx) définissent les droits des 3 identités (u, g et o).

Les répertoires : un cas particulier
Les répertoires sont un cas particulier. Pour accéder au contenu d'un répertoire (pour ouvrir un fichier ou se déplacer dans un sous-répertoire), un utilisateur doit disposer de la permission d'exécution (x) sur ce répertoire. De plus, pour être en mesure de lister le contenu d'un répertoire, l'utilisateur doit avoir la permission de lecture (r) sur ce répertoire. Pour écrire dans le répertoire, la permission d'écriture (w) doit être accordée. L'utilisateur peut disposer de ces permissions selon qu'il est propriétaire du répertoire, membre du groupe propriétaire du répertoire ou faire partie du reste du monde.
  • Un utilisateur ne disposant ni des permissions de lecture ni d'exécution ne pourra aucunement accéder au contenu du répertoire.
  • Un utilisateur ne disposant que de la permission de lecture pourra lister le contenu du dossier. (Par exemple, avec la commande ls dans une fenêtre de terminal.) Il ne pourra pas accéder au dossier avec son navigateur de fichiers.
  • Un utilisateur ne disposant que de la permission d'exécution peut ouvrir un répertoire, mais ne peut pas en voir le contenu. C'est utile, par exemple, pour traverser un répertoire dont on ne doit pas pouvoir lister le contenu.
  • Un utilisateur disposant des droits de lecture et d'exécution pourra lister le contenu d'un dossier et y entrer avec son navigateur de fichiers.

Droits attribués automatiquement à un fichier

Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certains paramètres :

  1. Propriétaires : Par défaut, le propriétaire d'un nouveau fichier est son créateur et le groupe propriétaire, le groupe principal de son créateur. Par exemple, si l'utilisateur toto, dont le groupe principal est utilisateurs, crée un nouveau fichier ou dossier, celui-ci appartient à toto:utilisateurs ;
  2. Permissions : Les permissions accordées par défaut sont celles déterminées par un paramètre particulier appelé le masque utilisateur (ou user mask). Dans Ubuntu, le masque utilisateur par défaut accorde les permissions rwxr-xr-x :
    • le propriétaire du fichier dispose des permissions de lecture, d'écriture et d'exécution ;
    • le groupe propriétaire dispose des droits de lecture et d'exécution, mais pas d'écriture ;
    • le reste du monde dispose des droits de lecture et d'exécution, mais pas d'écriture.

Le masque utilisateur par défaut peut être modifié pour un autre choix :

  • en console, pour la durée de la session courante. Ceci se fait à l'aide de la commande umask. Tout nouveau fichier ou dossier créé durant la session courante recevra les droits tels que définis par le masque utilisateur, mais le masque utilisateur par défaut sera de nouveau utilisé à l'ouverture d'une nouvelle session utilisateur ;
  • En console avec la commande chmod

Gérer les droits d'accès (propriétés et permissions) des fichiers et répertoires

Les systèmes d'exploitation inspirés d'Unix (dont Linux fait partie) possèdent la capacité de définir de façon poussée la gestion de droits d'accès aux divers fichiers de votre OS.

Les droits d'accès paramétrés sur les fichiers et répertoires ne sont pas immuables : ils peuvent être changés, afin d'accommoder des nouveaux besoins apparaissant au fil du temps d'utilisation de votre système Ubuntu. Le présent article explique les différentes manipulations pouvant être appliquées sur des fichiers et répertoires afin d'en changer les propriétaires et les permissions.

Les droits d'accès : qu'est-ce que c'est ?

Les droits d'accès définissent la possession d'un fichier ou d'un répertoire à un utilisateur et à un groupe d'utilisateurs. Ils gèrent aussi quelles actions les utilisateurs ont le droit d'effectuer sur les fichiers (lecture, écriture et exécution), selon qu'ils sont propriétaire du fichier, membre du groupe propriétaire du fichier ou ni l'un ni l'autre. La possession et la gestion des permissions associées s'effectue individuellement avec chaque fichier.

Le présent document expose les diverses manipulations pouvant être effectuées sur des fichiers et répertoires afin d'en modifier les divers droits d'accès. Il tient compte de votre connaissance des catégories de propriétaires d'un fichier (utilisateur propriétaire, groupe propriétaire et "les autres") et des trois types de permissions (lecture, écriture et exécution).

En ligne de commande

Les droits des fichiers d'un répertoire peuvent être affichés par la commande

pi@raspberry:~ $ ls -l

Les droits d'accès apparaissent alors comme une liste de 10 symboles. :

drwxr-xr-x

Le premier symbole peut être « - », « d », soit « l », entres autres (toutes les options sur la page permissions Unix sur wikipédia)). Il indique la nature du fichier :

  • - : fichier classique
  • d : répertoire
  • l : lien symbolique

Suivent ensuite 3 groupes de 3 symboles chacun, indiquant si le fichier (ou répertoire) est autorisé en lecture, écriture ou exécution. Les 3 groupes correspondent, dans cet ordre, aux droits du propriétaire, du groupe puis du reste des utilisateurs. Dans le paragraphe introductif, vous aurez remarqué des lettres en gras dans les termes anglais. Ce sont ces lettres qui sont utilisées pour symboliser lesdites permissions. Si la permission n'est pas accordée, la lettre en question est remplacé par « - ». Si l'on reprend les lettres données pour lecture/écriture/exécution (read/write/execute), nous obtenons : rwx.

Explication par l'exemple

Reprenons l'exemple théorique précédent :

drwxr-xr-x

Il se traduit de la manière suivante :

  • d : c'est un répertoire.
  • rwx pour le 1er groupe de 3 symboles : son propriétaire peut lire, écrire et exécuter.
  • r-x pour le 2nd groupe de 3 symboles : le groupe peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.
  • r-x pour le 3ème groupe de 3 symboles : le reste du monde peut uniquement lire et exécuter le fichier, sans pouvoir le modifier.

En pratique, en exécutant la commande suivante,

pi@raspberry:~ $   ls -l

on obtient la liste du contenu du répertoire courant, par exemple :

drwxr-xr-x   6 cyrille cyrille     4096 2008-10-29 23:09 Bureau
drwxr-x---   2 cyrille cyrille     4096 2008-10-22 22:46 Documents
lrwxrwxrwx   1 cyrille cyrille       26 2008-09-22 22:30 Examples -> /usr/share/example-content
-rw-r--r--   1 cyrille cyrille  1544881 2008-10-18 15:37 forum.xcf
drwxr-xr-x   7 cyrille cyrille     4096 2008-09-23 18:16 Images
drwxr-xr-x   2 cyrille cyrille     4096 2008-09-22 22:45 Modèles
drwxr-xr-x 267 cyrille cyrille    20480 2008-10-27 22:17 Musique
drwxr-xr-x   2 cyrille cyrille     4096 2008-09-22 22:45 Public
drwxr-xr-x   2 cyrille cyrille     4096 2008-10-26 13:14 Vidéos

On retrouve dans la première colonne le groupe de 10 caractères permettant de connaître les droits pour chaque fichier.

Ainsi, pour le fichier forum.xcf, on a :

-rw-r--r--
  • Le 1er caractère est - ⇒ c'est un fichier.
  • Le premier groupe de 3 caractères est rw- ⇒ le propriétaire a le droit de lecture et écriture (mais pas d'exécution) sur le fichier.
  • Les 2 groupes suivants sont r-- ⇒ Les utilisateurs du groupe et les autres n'ont que le droit de lecture (pas d'écriture, ni d'exécution)

Modifier les permissions

Les informations ci-dessous sont très importantes pour la compréhension et la maîtrise des permissions.
En ligne de commande

Un fichier a un propriétaire et un groupe. Nous pouvons les changer.

chown

La commande chown (change owner, changer le propriétaire) permet de changer le propriétaire du fichier. Seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chown. La commande s'utilise de la façon suivante :

pi@raspberry:~ $ sudo chown toto fichier1

Le fichier fichier1 appartient maintenant à l'utilisateur toto.

chown permet aussi de changer en une seule commande le propriétaire et le groupe du fichier :

pi@raspberry:~ $ sudo chown toto:lesPotes fichier1

Le fichier fichier1 appartient alors à l'utilisateur toto et au groupe lesPotes.

chgrp

La commande chgrp (pour change group) permet de changer le groupe auquel appartient le fichier. Tous les membres de ce groupe seront concernés par les permissions du groupe de la 2ème série de rwx. Encore une fois, seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chgrp (un membre du groupe ne peut pas changer le groupe propriétaire). La commande s'utilise de la façon suivante :

pi@raspberry:~ $ sudo chgrp mesPotes fichier2

Le fichier fichier2 appartient maintenant au groupe mesPotes. Tous les membres du groupe mesPotes auront accès à ce fichier selon les permissions du groupe. Quand l'utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par sudo, puisqu'elle devra être effectuée avec les droits d'administration.

chown, pour changer simultanément le propriétaire et le groupe propriétaire

Pour changer à la fois le propriétaire et le groupe propriétaire, une syntaxe particulière de la commande chown peut être utilisée. Encore une fois, seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chown (un membre du groupe ne peut pas effectuer de changement de propriété). La commande s'utilise de la façon suivante :

pi@raspberry:~ $ chown nouveau_propriétaire:nouveau_groupe_propriétaire nom_du.fichier

Quand l'utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par sudo, puisqu'elle devra être effectuée avec les droits d'administration.

Imaginons le même fichier foo.txt possédé par utilisateur1 et appartenant au groupe propriétaire groupe1. Le propriétaire doit devenir utilisateur2 et la propriété de groupe de ce fichier doit passer au groupe groupe2. En étant connecté au compte utilisateur1, l'exécution de cette commande effectuera l'opération demandée :

chown utilisateur2:groupe2 foo.txt

chmod

L'outil chmod (change mode, changer les permissions) permet de modifier les permissions sur un fichier. Il peut s'employer de deux façons : soit en précisant les permissions de manière octale, à l'aide de chiffres1) ; soit en ajoutant ou en retirant des permissions à une ou plusieurs catégories d'utilisateurs à l'aide des symboles r w et x, que nous avons présenté plus haut. Nous préférerons présenter cette seconde façon ("ajout ou retrait de permissions à l'aide des symboles"), car elle est probablement plus intuitive pour les néophytes. Sachez seulement que les deux méthodes sont équivalentes, c'est-à-dire qu'elles affectent toutes deux les permissions de la même manière.

En gérant chaque droit séparément

De cette façon, on va choisir :

  1. À qui s'applique le changement
    • u (user, utilisateur) représente la catégorie "propriétaire" ;
    • g (group, groupe) représente la catégorie "groupe propriétaire" ;
    • o (others, autres) représente la catégorie "reste du monde" ;
    • a (all, tous) représente l'ensemble des trois catégories.
  2. La modification que l'on veut faire
    • + : ajouter
    • - : supprimer
    • = : affectation
  3. Le droit que l'on veut modifier
    • r : read ⇒ lecture
    • w : write ⇒ écriture
    • x : execute ⇒ exécution
    • X : eXecute ⇒ exécution, concerne uniquement les répertoires (qu'ils aient déjà une autorisation d'exécution ou pas) et les fichiers qui ont déjà une autorisation d'exécution pour l'une des catégories d'utilisateurs. Nous allons voir plus bas dans la partie des traitements récursifs l'intérêt du X.

Par exemple :

pi@raspberry:~ $ chmod o-w fichier3

enlèvera le droit d'écriture pour les autres.

pi@raspberry:~ $ chmod a+x

ajoutera le droit d'exécution à tout le monde.

On peut aussi combiner plusieurs actions en même temps :

  • On ajoute la permission de lecture, d'écriture et d'exécution sur le fichier fichier3 pour le propriétaire ;
  • On ajoute la permission de lecture et d'exécution au groupe propriétaire, on retire la permission d'écriture ;
  • On ajoute la permission de lecture aux autres, on retire la permission d'écriture et d'exécution.
pi@raspberry:~ $ chmod u+rwx,g+rx-w,o+r-wx fichier3

etc.

En octal

En octal, chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur :

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1
  • - = 0

Par exemple,

  • Pour rwx, on aura : 4+2+1 = 7
  • Pour rw-, on aura : 4+2+0 = 6
  • Pour r--, on aura : 4+0+0 = 4

Ce qui permet de faire toutes les combinaisons :

  • 0 : - - - (aucun droit)
  • 1 : - - x (exécution)
  • 2 : - w - (écriture)
  • 3 : - w x (écriture et exécution)
  • 4 : r - - (lecture seule)
  • 5 : r - x (lecture et exécution)
  • 6 : r w - (lecture et écriture)
  • 7 : r w x (lecture, écriture et exécution)

Reprenons le répertoire Documents. Ses permissions sont :

drwxr-x---

En octal, on aura 750 :

   rwx        r-x        ---
 7(4+2+1)   5(4+0+1)   0(0+0+0)

Pour mettre ces permissions sur le répertoire on taperait donc la commande :

pi@raspberry:~ $ chmod 750 Documents

Tableau interactif qui calcule le chmod

CHMOD Calculateur
Permission User Group Other
Lire (4)
Ecrire (2)
Executer (1)
Valeur

Récursivement

Pour chacune de ces commandes, on peut les lancer récursivement sur un répertoire. C'est à dire que l'action sera effectuée sur le répertoire désigné et sur tous les fichiers ou répertoires qu'il contient. Ceci se fait en ajoutant l'option -R

Attention! Un chmod -R mal employé peut rendre votre système définitivement inutilisable. Voir chmod -R /

Par exemple :

pi@raspberry:~ $ chmod -R 750 monRépertoire 

donnera tous les droits au propriétaire, les droits de lecture et exécution au groupe et aucuns droits aux autres…

On peut changer les droits et permissions des répertoires et fichiers dans l'interface graphique du SE, avec un clic droit puis aller dans les propriétés