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.

  • Le présent article est un document d'explication à propos des droits d'accès. Les sections Les propriétaires et Les permissions présentent de façon générale ce que sont ces attributs auxquels vous devrez faire face dans votre vie linuxienne.
  • La manipulation des droits d'accès des fichiers et dossiers est abordée dans l'article Permissions.
Ce chapitre concerne aussi bien les fichiers que les répertoires, mais nous employons ici exclusivement le terme fichier par souci de simplicité.

Par la propriété d'un fichier, on désigne à la fois :

  • à quel utilisateur appartient le fichier, qui le possède,
  • et à quel groupe il appartient.1)

À partir de ces deux identités, on peut définir des permissions d'accès sur le fichier. Elles détermineront si l'utilisateur qui essaie d'y accéder en aura la possibilité, selon qu'il est l'utilisateur propriétaire, membre du groupe concerné, ou aucun des deux.

Il est donc nécessaire, pour comprendre et ajuster les permissions d'un fichier, de déterminer l'identité de l'utilisateur propriétaire et celle du groupe propriétaire. Voir les chapitres Voir les permissions ou Modifier les permissions (qui concernent aussi les propriétaires) pour respectivement récupérer ou modifier ces informations.

On peut alors ajuster finement les droits d'accès d'un fichier selon trois groupes :

  1. l'utilisateur propriétaire du fichier (u pour user, utilisateur). 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é·e à devoir en changer le propriétaire pour pouvoir vous en servir avec votre propre compte utilisateur.)
  2. le groupe propriétaire du fichier (g pour group, groupe). Si un utilisateur est membre d'un certain groupe propriétaire d'un fichier, l'utilisateur aura aussi certaines permissions particulières sur ce fichier.
  3. les autres, le reste du monde (o pour others, autres). Bref, tout un chacun n'étant ni propriétaire du fichier, ni membre du groupe propriétaire du fichier.

Faisons une analogie avec une assurance de voiture :

  1. Le propriétaire serait la personne au nom de laquelle la voiture est immatriculée.
  2. Le groupe propriétaire est l'ensemble des personnes qui sont inscrites en tant que conducteurs secondaires de la voiture chez l'assureur.
  3. Enfin, les autres correspondent à toutes les autres personnes n'étant ni détentrices de l'immatriculation ni inscrites en tant que conducteur 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 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.

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 :2)

  • pour les fichiers
    • l'utilisateur propriétaire du fichier dispose des permissions de lecture et d'écriture, mais pas d'exécution (rw-)
    • le groupe propriétaire du fichier dispose du droit de lecture seule (r--)
    • le reste du monde dispose du droit de lecture seule (r--)
  • pour les répertoires
    • l'utilisateur propriétaire du répertoire dispose de tous les droits, lecture (voir l'existence du répertoire), écriture (modification du nom ou du contenu), l'exécution consiste à ouvrir le répertoire pour en parcourir le contenu (rwx)
    • le groupe propriétaire dispose des droits de lecture et d'ouverture, mais pas de modification (r-x)
    • le reste du monde dispose des droits de lecture et d'ouverture, mais pas de modification (r-x).

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).
  • pour la durée de la session courante, en ligne de commande. 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.
  • pour un utilisateur particulier en ajoutant la commande ci-dessous dans son fichier ~/.bashrc (propre à la console et la ligne de commande) ou ~/.profile (plus généralement) :
    .profile
    umask 007
  • globalement (déconseillé), définitivement et pour tous utilisateurs par défaut :
    • en ajoutant la ligne suivante dans le fichier /etc/pam.d/common-session :
      common-session
      session    optional     pam_umask.so umask=007
    • ou en ajoutant avec les droits d'administration la ligne suivante dans le fichier /etc/profile :
      profile
      umask 007

      Ces nouveaux masque utilisateurs sont utilisés même après une nouvelle ouverture de session.

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.

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-dessus).

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 répertoire /media/NouvellePartition, vous devez effectuer les modifications de droits sur le répertoire /media/NouvellePartition comme s'il s'agissait d'un répertoire 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.


1)
Un utilisateur peut évidemment avoir des téraoctets de fichiers et appartenir à plusieurs groupes, mais un fichier n'appartient qu'à un utilisateur et un seul groupe.
2)
Voir par exemple un calculateur umask.
  • droits.txt
  • Dernière modification: Le 06/04/2025, 19:30
  • par krodelabestiole