Table des matières

, ,

Droits d'accès sous Linux : gérer les accès aux fichiers

Voir aussi permissions, ACL.

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 les permissions d'accès aux divers fichiers et répertoires de votre ordinateur.

Ces 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, 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 ou répertoire.

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 sans paramètre appartiendra par défaut à 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 correspondent à toutes les autres personnes n'étant ni détenteur de l'immatriculation ni inscrites en tant que conducteurs de la voiture chez l'assureur.

Certains logiciels ont besoin de pouvoir écrire dans des fichiers particuliers pour bien fonctionner, et cet accès est autorisé en fonction de l'inclusion ou non d'un utilisateur dans un groupe de membres précis. C'est le cas entre autre (mais pas exclusivement) de Virtualbox. Pour savoir comment gérer l'inclusion ou l'exclusion d'un utilisateur à un groupe d'utilisateurs, référez-vous au document traitant de la gestion des comptes utilisateurs sous Ubuntu.

Les permissions

Les permissions désignent ce que les diverses catégories d'utilisateurs (utilisateur 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.

Pour chaque fichier ou répertoire, chacune de ces trois catégories d'utilisateurs (utilisateur propriétaire, membres du groupe propriétaire et reste du monde) sont définies les trois permissions lecture, écritures et exécutions :

  1. L'utilisateur propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution.
  2. Les membres du groupe propriétaire disposent ou non de la permission de lecture, d'écriture et d'exécution.
  3. Tous les autres utilisateurs disposent ou non de la permission de lecture, d'écriture et d'exécution.

Pour chacun :

  1. la lecture - cette permission est notée r (pour read, lire) :
    • sur un fichier : cette permission est nécessaire pour pouvoir accéder au contenu du fichier (écouter une piste audio, visionner un film, lire un texte, etc.).
    • sur un répertoire : permet de lister le contenu du répertoire (ls), mais pas d'y accéder (voir exécution ci-dessous).
  2. l'écriture - cette permission est notée w (pour write, écrire) :
    • sur un fichier : cette permission est nécessaire pour pouvoir apporter des modifications au 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.).
    • sur un répertoire : permet de modifier le contenu d'un répertoire (à condition d'avoir aussi le droit en exécution, voir ci-dessous), d'y créer, modifier ou supprimer des fichiers ou sous-répertoires.
  3. l'exécution - cette permission est notée x (pour execute, exécuter) :
    • sur un fichier : cette permission est nécessaire particulièrement pour les scripts et les applications, afin qu'elles puissent être lancées.
    • sur un répertoire : la permission x permet de l'utiliser en tant que tel - y accéder (commande cd), utiliser les fichiers et sous-répertoires qu'il contient (au delà de la simple liste accessible par le droit en lecture sur le répertoire).

Ces droits sont affichés par une série de 9 caractères, associés 3 par 3 (rwx rwx rwx, ou rwxrwxrwx) qui définissent les droits des 3 identités (u, g et o). Le caractère - signifie que le droit est absent.
Plus proche du langage machine et plus rapide à écrire, on les trouve aussi la plupart du temps rédigés en octal, par un nombre allant de 000 à 777. C'est une représentation plus directe des bits qui stockent cette information. Voir le chapitre dédié sur la page Permissions.

Par exemple, si on dispose des droits de lecture et d'exécution sur un répertoire, mais pas d'écriture (r-x / 5), on peut y exécuter les scripts qu'il contient et ouvrir ses fichiers, mais on ne peut pas les modifier, les renommer, ni en créer de nouveaux.

Les répertoires : 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 aux fichiers et répertoires

Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certaines permissions. On peut si besoin ajuster ce comportement du système.

Propriétaires par défaut

Par défaut, l'utilisateur propriétaire d'un nouveau fichier ou répertoire 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.

Setgid

On peut changer ce comportement pour un répertoire en particulier, en positionnant son bit Setgid.

Plus généralement, les bits Setuid et Setgid positionnés sur un fichier exécutable permettent de l'exécuter par défaut avec les permissions de ses propriétaires (respectivement utilisateur et groupe).

Dans le cas d'un répertoire (dont le droit en "exécution" consiste en fait à le parcourir), le bit Setgid permet justement d'utiliser le groupe propriétaire du répertoire comme groupe propriétaire par défaut des données qui y sont créées, plutôt que le groupe principal de l'utilisateur courant (qui exécute la commande).

On positionne un Setgid sur un répertoire grâce à la commande chmod g+s :

chmod g+s /chemin/du/répertoire

On peut le supprimer grâce à la commande chmod g-s.

À ce sujet, voir par exemple cette documentation.

Lorsqu'un sous-répertoire est créé, il hérite lui aussi de la propriété Setgid.

Permissions par défaut

Les permissions accordées par défaut sont celles déterminées par un paramètre particulier appelé le masque utilisateur (ou umask). Dans Ubuntu, le umask par défaut est 022, ce qui accorde les permissions 644 (rw-r--r--) pour les fichiers, et 755 (rwxr-xr-x) pour les répertoires :1)

Le masque utilisateur peut être modifié à différents niveaux :

Dans ces exemples, 007 donne tous les droits aux utilisateurs et groupes propriétaires et aucun aux autres (fichiers 660 et répertoires 770). Il peut être utile dans certains cas de mettre 077 pour restreindre les droits au seul utilisateur propriétaire (600 et 700).

Manipuler les droits d'accès

Les droits d'​accès précisés sur un fichier ou un dossier peuvent ​être remplacés par d'​autres droits d'​accès. L'​ensemble des opérations est abordé sur la page Permissions.

Volumes de stockage et systèmes de fichier

Comment sont déterminées les droits d'accès sur un volume ?

Systèmes de fichiers compatibles avec la norme POSIX

Par défaut, un nouveau système de fichiers est automatiquement attribué à l'utilisateur root et au groupe d'utilisateurs root et les droits qui y sont appliqués sont ceux du masque utilisateur par défaut (voir ci-dessous).

Pour modifier les droits d'accès liés à un système de fichiers, vous devez modifier les droits d'accès de son point de montage. Par exemple, pour modifier les droits d'accès d'un volume /dev/sdb1 monté dans le dossier /media/NouvellePartition/, vous devez effectuer les modifications de droits sur le dossier /media/NouvellePartition/ comme s'il s'agissait d'un dossier quelconque. Les modifications de droits d'accès sont conservés même après le démontage du système de fichiers.

Ceci s'applique uniquement aux systèmes de fichiers ext2, ext3, ext4, ReiserFS, Reiser4, HFS, HFS+ et autres compatibles avec la norme POSIX.

Systèmes de fichiers incompatibles avec la norme POSIX

Ceci concerne essentiellement les systèmes de fichiers FAT (FAT32, exFAT), vFAT et NTFS. Ces systèmes de fichiers ne gèrent pas les droits d'accès selon la norme POSIX.

Ces droits sont émulés par leur pilote spécifique au montage du système de fichiers et ils ne sont pas modifiables tout le temps que celui-ci est monté. Les propriétés et permissions sont déterminées par les options de montage passées à la commande mount.

Pour modifier les droits d'accès d'un tel système de fichiers, il faut procéder au démontage du système de fichiers, puis à son remontage avec des options différentes.

Voir aussi


Contributeurs : AlexandreP, Ner0lph, Sbrunner,Newbies, bcag2, krodelabestiole

1)
Voir par exemple un calculateur umask.