Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
droits [Le 04/04/2025, 17:47] krodelabestiole réécriture permissions / mide en forme |
droits [Le 06/04/2025, 19:30] (Version actuelle) krodelabestiole [Les propriétaires] typo |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
<note>Voir aussi //[[:permissions]]//, //[[:ACL]]//.</note> | <note>Voir aussi //[[:permissions]]//, //[[:ACL]]//.</note> | ||
- | 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 systèmes d'exploitation inspirés d'[[wpfr>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. |
- | Les **droits d'accès** définissent la possession d'un fichier ou d'un répertoire((Dans la suite de ce document, nous n'emploierons plus que le terme « fichier ». De toute façon, c'est bien connu : sous *nix, tout est fichiers... Un répertoire est traité de la même façon qu'un fichier.)) à 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. | + | 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|Les propriétaires]]// et //[[#les_permissions|Les permissions]]// présentent de façon générale ce que sont ces attributs auxquels vous devrez faire face dans votre vie linuxienne. | + | * 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]]//. | * La manipulation des droits d'accès des fichiers et dossiers est abordée dans l'article //[[:Permissions]]//. | ||
===== Les propriétaires ===== | ===== 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. | + | <note>Ce chapitre concerne aussi bien les fichiers que les répertoires, mais nous employons ici exclusivement le terme //fichier// par souci de simplicité.</note> |
- | La possession d'un fichier se définit sur trois catégories : | + | Par la propriété d'un fichier, on désigne à la fois : |
- | - l'**//U//tilisateur 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.) | + | * à quel **utilisateur** appartient le fichier, qui le possède, |
- | - le **//G//roupe 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. | + | * et à quel **groupe** il appartient.((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.)) |
- | - les autres, **//O//ther**, le reste du monde (''o''). Bref, tout un chacun n'étant ni propriétaire du fichier, ni membre du groupe propriétaire du fichier. | + | À partir de ces deux identités, on peut définir des [[#les_permissions|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. |
- | 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. | + | 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 //[[:permissions#Voir les permissions]]// ou //[[:permissions#Modifier les permissions]]// (qui concernent aussi les propriétaires) pour respectivement récupérer ou modifier ces informations. |
+ | |||
+ | On peut alors ajuster finement les [[#les_permissions|droits d'accès]] d'un fichier selon trois groupes : | ||
+ | - l'**utilisateur propriétaire** du fichier (''u'' pour //**u**ser//, 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.) | ||
+ | - le **groupe propriétaire** du fichier (''g'' pour //**g**roup//, 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. | ||
+ | - les autres, le reste du monde (''o'' pour //**o**thers//, 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 : | ||
+ | - 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étentrices de l'immatriculation ni inscrites en tant que conducteur de la voiture chez l'assureur. | ||
<note>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 [[:users-admin|gestion des comptes utilisateurs sous Ubuntu]].</note> | <note>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 [[:users-admin|gestion des comptes utilisateurs sous Ubuntu]].</note> | ||
Ligne 30: | Ligne 40: | ||
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 : | 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 : | ||
- | * l'utilisateur propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution | ||
- | * les membres du groupe propriétaire disposent ou non de la permission de lecture, d'écriture et d'exécution | ||
- | * tous les autres utilisateurs disposent ou non de la permission de lecture, d'écriture et d'exécution. | ||
- | - la **lecture** . Cette permission est notée ''r'' (pour //**r**ead//, lire) : | + | - L'**utilisateur** propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution. |
+ | - Les membres du **groupe** propriétaire disposent ou non de la permission de lecture, d'écriture et d'exécution. | ||
+ | - Tous les **autres** utilisateurs disposent ou non de la permission de lecture, d'écriture et d'exécution. | ||
+ | |||
+ | Pour chacun : | ||
+ | |||
+ | - la **lecture** - cette permission est notée ''r'' (pour //**r**ead//, 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 **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 (''[[man>ls]]''), mais pas d'y accéder (voir //exécution// ci-dessous). | * sur un **répertoire** : permet de lister le contenu du répertoire (''[[man>ls]]''), mais pas d'y accéder (voir //exécution// ci-dessous). | ||
- | - l'**écriture** Cette permission est notée ''w'' (pour //**w**rite//, écrire) : | + | - l'**écriture** - cette permission est notée ''w'' (pour //**w**rite//, é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 **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. | * 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. | ||
- | - l'**exécution** : cette permission est notée ''x'' (pour //e**x**ecute//, exécuter) : | + | - l'**exécution** - cette permission est notée ''x'' (pour //e**x**ecute//, exécuter) :\\ |
* sur un **fichier** : cette permission est nécessaire particulièrement pour les [[:tutoriel:script_shell|scripts]] et les applications, afin qu'elles puissent être lancées. | * sur un **fichier** : cette permission est nécessaire particulièrement pour les [[:tutoriel:script_shell|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 ''[[man>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). | * sur un **répertoire** : la permission ''x'' permet de l'utiliser en tant que tel - y accéder (commande ''[[man>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. | + | 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 [[:permissions#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#en_octal|Permissions]]//. | ||
- | Par exemple, si on dispose des droits de lecture et d'exécution sur un répertoire, mais pas d'écriture (''r-x''), 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. | + | 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. |
<note> | <note> | ||
Ligne 61: | Ligne 75: | ||
* 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 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. | * 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. | ||
- | </note> | ||
- | |||
- | <note tip>**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, 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. | ||
</note> | </note> | ||
Ligne 74: | Ligne 81: | ||
Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certaines permissions. On peut si besoin ajuster ce comportement du système. | Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certaines permissions. On peut si besoin ajuster ce comportement du système. | ||
- | ==== Propriétaires ==== | + | ==== 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''. | 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''. | ||
Ligne 87: | Ligne 94: | ||
On positionne un Setgid sur un répertoire grâce à la commande ''chmod g+s'' : | On positionne un Setgid sur un répertoire grâce à la commande ''chmod g+s'' : | ||
- | chmod u+s /chemin/du/répertoire | + | chmod g+s /chemin/du/répertoire |
On peut le supprimer grâce à la commande ''chmod g-s''. | On peut le supprimer grâce à la commande ''chmod g-s''. | ||
Ligne 95: | Ligne 102: | ||
<note>Lorsqu'un sous-répertoire est créé, il hérite lui aussi de la propriété Setgid.</note> | <note>Lorsqu'un sous-répertoire est créé, il hérite lui aussi de la propriété Setgid.</note> | ||
- | ==== Permissions ==== | + | ==== 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 //[[wpfr>umask]]//). Dans Ubuntu, le [[wpfr>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 :((Voir par exemple un [[https://www.heuristic42.com/tools/unixperms/|calculateur umask]].)) | Les permissions accordées par défaut sont celles déterminées par un paramètre particulier appelé le //masque utilisateur// (ou //[[wpfr>umask]]//). Dans Ubuntu, le [[wpfr>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 :((Voir par exemple un [[https://www.heuristic42.com/tools/unixperms/|calculateur umask]].)) | ||
Ligne 113: | Ligne 120: | ||
* **globalement** (déconseillé), définitivement et pour tous utilisateurs par défaut : | * **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'' :<file - common-session>session optional pam_umask.so umask=007</file> | * en ajoutant la ligne suivante dans le fichier ''/etc/pam.d/common-session'' :<file - common-session>session optional pam_umask.so umask=007</file> | ||
- | * ou pour tout le système dans le fichier en ajoutant avec les [[:sudo|droits d'administration]] la ligne suivante dans le fichier ''/etc/profile'' : <file - profile>umask 007</file>Ces nouveaux masque utilisateurs sont utilisés même après une nouvelle ouverture de session. | + | * ou en ajoutant avec les [[:sudo|droits d'administration]] la ligne suivante dans le fichier ''/etc/profile'' : <file - profile>umask 007</file>Ces nouveaux masque utilisateurs sont utilisés même après une nouvelle ouverture de session. |
===== Manipuler les droits d'accès ===== | ===== 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]] ». | + | 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-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 [[wpfr>ext2]], [[wpfr>ext3]], [[:ext4]], [[wpfr>ReiserFS]], Reiser4, [[wpfr>HFS]], HFS+ et autres compatibles avec la norme [[wpfr>POSIX]]. | ||
+ | |||
+ | ==== Systèmes de fichiers incompatibles avec la norme POSIX ==== | ||
+ | |||
+ | Ceci concerne essentiellement les systèmes de fichiers FAT ([[wpfr>FAT32]], [[:exFAT]]), vFAT et [[wpfr>NTFS]]. Ces systèmes de fichiers ne gèrent pas les droits d'accès selon la norme [[wpfr>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 ===== | ===== Voir aussi ===== |