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 la gestion de droits d'accès aux divers fichiers de votre OS.
Les droits d'accès définissent la possession d'un fichier ou d'un répertoire1) à 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.
- Le présent article est un document d'explication à propos des droits d'accès. Les sections "Les propriétaires" et "Les permissions" exposent 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 ».
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 :
- 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.) - 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.
- 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 :
- 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). - 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). - 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 :
- le propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution sur un fichier ;
- le membre du groupe propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution sur un fichier ;
- tous les autres utilisateurs disposent ou non de la permission de lecture, d'écriture et d'exécution sur un fichier.
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 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.
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, 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.
Droits attribués automatiquement à un fichier
Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certains paramètres :
- 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 estutilisateurs
, crée un nouveau fichier ou dossier, celui-ci appartient àtoto:utilisateurs
; - 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
correspondant à un umask = 022 :- 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 ajoutant dans le fichier :
- /etc/pam.d/common-session
session optional pam_umask.so umask=007
. Dans cet exemple, 007 donne tous les droits au propriétaire et au groupe et aucun aux autres. Il peut être utile dans certains cas de mettre 077 pour restreindre les droits au seul propriétaire. Ce nouveau masque utilisateur est utilisé même après une nouvelle ouverture de session.
- Une autre solution consiste à ajouter dans le fichier
- /root/.bashrc
umask 007
ou après la création des utilisateurs dans le fichier ~/.bashrc. Cette dernière modification directement dans le fichier .bashrc de l'utilisateur est disponible dès le lancement d'un nouveau terminal pour ce qui est de la ligne de commande.
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é dans le document annexe « Permissions ».
Références
- Permissions Unix (fr)
- ACL : Access Control List : Gestion avancée des droits sous linux
—-
Contributeurs : AlexandreP, Ner0lph, Sbrunner,Newbies, bcag2