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 19/04/2012, 04:58] 24.202.144.127 |
droits [Le 24/06/2025, 22:50] (Version actuelle) krodelabestiole [Voir aussi] +permissions |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag>portail administration sécurité}} | {{tag>portail administration sécurité}} | ||
- | |||
- | ---- | ||
====== Droits d'accès sous Linux : gérer les accès aux fichiers ====== | ====== Droits d'accès sous Linux : gérer les accès aux fichiers ====== | ||
- | Voir aussi [[permissions]]. | ||
- | 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. | + | <note>Voir aussi //[[:permissions]]//, //[[:ACL]]//.</note> |
- | 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. | + | 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 sections [[#les_propriétaires|"Les propriétaires"]] et [[#les_permissions|"Les permissions"]] expliquent de façon générale ce que sont ces attributs auxquels vous devrez faire face dans votre vie linuxienne. Certaines de ces opérations peuvent être accomplies de manière graphique à l'aide de votre gestionnaire de fichiers préféré ([[Nautilus]], [[Konqueror]], [[Thunar]], etc.). | + | 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. | |
- | <note tip>Les manipulations sur les droits des fichiers sont abordés dans la page « [[:Permissions]] ».</note> | + | * 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. | ||
- | La possession d'un fichier se définit sur trois catégories : | + | <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> |
- | * -1- **l'__u__tilisateur** propriétaire du fichier **(__u__)**.La plupart du temps, il s'agit 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 **__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. | + | |
- | * -3-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. | + | |
- | 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. | + | 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.((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.)) | ||
+ | À 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. | ||
- | <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 [[:gestion_compte|gestion des comptes utilisateurs sous Ubuntu]].</note> | + | 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> | ||
===== Les permissions ===== | ===== 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 : | + | 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. |
- | - 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, naviguer à l'intérieur d'un répertoire...). Cette permission est notée ''r'' (pour //**r**ead//, 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 ; ajouter, modifier ou supprimer un fichier dans un dossier ; etc.). Cette permission est notée ''w'' (pour //**w**rite//, é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 //e**x**ecute//, exécuter). | + | |
- | 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 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 chacune des trois catégories d'utilisateurs (propriétaire, membres du groupe propriétaire et reste du monde) sont définies ces trois permissions : | + | - L'**utilisateur** propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution. |
- | * le propriétaire dispose ou non de la permission de lecture, d'écriture et d'exécution sur un fichier ; | + | - Les membres du **groupe** propriétaire disposent ou non de la permission de lecture, d'écriture et d'exécution. |
- | * 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. |
- | * 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é pars 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). | + | 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 **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) :\\ | ||
+ | * 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. | ||
+ | - 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 **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.\\ | ||
+ | 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'' / ''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> | ||
- | **Les répertoires : un cas particulier** \\ | + | **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. | + | |
+ | * 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 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 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. | ||
Ligne 55: | Ligne 77: | ||
</note> | </note> | ||
- | <note tip>**Comment sont déterminées les droits d'accès sur une partition ?** | + | ===== Droits attribués automatiquement aux fichiers et répertoires ===== |
- | //**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 système de fichiers d'une partition ''/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. | + | Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certaines permissions. On peut si besoin ajuster ce comportement du système. |
- | //**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. | + | ==== Propriétaires par défaut ==== |
- | </note> | + | |
+ | 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 [[wpfr>Setuid|Setgid]]. | ||
+ | |||
+ | Plus généralement, les bits [[wpfr>Setuid]] et [[wpfr>Setuid|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 [[wpfr>Setuid|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 [[https://tech.feub.net/2008/03/setuid-setgid-et-sticky-bit/|cette documentation]]. | ||
+ | |||
+ | <note>Lorsqu'un sous-répertoire est créé, il hérite lui aussi de la propriété Setgid.</note> | ||
+ | |||
+ | ==== 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]].)) | ||
+ | * 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%%''). | ||
- | ===== Droits attribués automatiquement à un fichier ===== | + | Le masque utilisateur peut être modifié à différents niveaux : |
- | Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certains paramètres : | + | <note>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'').</note> |
- | - **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'' ; | + | * pour la durée de la **session courante**, en [[:commande shell|ligne de commande]]. Ceci se fait à l'aide de la commande ''[[man>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. |
- | - **Permissions :** Les permissions accordées par défaut sont celles déterminées par un paramètre particulier appelé le //masque utilisateur// (ou //[[wpfr>umask|user mask]]//). Dans Ubuntu, le masque utilisateur par défaut accorde les permissions ''rwx-rx-rx'' : | + | * 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) :<file - .profile>umask 007</file> |
- | * le propriétaire du fichier dispose des permissions de lecture, d'écriture et d'exécution ; | + | * **globalement** (déconseillé), définitivement et pour tous utilisateurs par défaut : |
- | * le groupe propriétaire dispose des droits de lecture et d'exécution, mais pas d'écriture ; | + | * en ajoutant la ligne suivante dans le fichier ''/etc/pam.d/common-session'' :<file - common-session>session optional pam_umask.so umask=007</file> |
- | * le reste du monde dispose des droits de lecture et d'exécution, mais pas d'écriture. | + | * 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. |
- | Le masque utilisateur par défaut peut être modifié pour un autre choix : | + | ===== Manipuler les droits d'accès ===== |
- | * en console, pour la durée de la session courante. Ceci se fait à l'aide de la commande ''[[wpfr>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 ; | + | |
- | * de manière permanente pour un ou plusieurs utilisateurs. Le nouveau masque utilisateur se définit en modifiant le fichier de configuration caché //**.bash_profile**// dans chacun des dossiers personnels des comptes d'utilisateurs pour lesquels le masque utilisateur doit être changé. Ce nouveau masque utilisateur est utilisé même après une nouvelle ouverture de session ; | + | |
- | * de manière permanente pour l'ensemble des comptes d'utilisateurs du système d'exploitation. Le nouveau masque utilisateur se définit en modifiant le fichier de configuration ///etc/**profile**//. Ce nouveau masque utilisateur est utilisé 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]]//. | ||
+ | ===== Volumes de stockage et systèmes de fichier ===== | ||
- | ===== chown ou chmod : lequel dois-je utiliser ? ===== | + | Comment sont déterminées les droits d'accès sur un volume ? |
- | On observe souvent dans le forum des demandes d'aide concernant l'accès restreint à des fichiers : comment en ouvrir l'accès à son utilisateur ? Trop fréquemment, la réponse se résume à un automatique ''chmod 777'' sur le fichier, ou encore un ''chown identifiant:identifiant''. Pourtant, comme nous l'avons vu, ''chown'' et ''chmod'' ont des buts différents : le premier modifie les propriétaires d'un fichier, alors que le second modifie les permissions sur ce fichier. Lequel préférer ? La réponse est aussi simple qu'elle ne l'est pas : ça dépend de ce que vous prévoyez faire avec votre fichier ! | + | ==== Systèmes de fichiers compatibles avec la norme POSIX ==== |
- | Pour illustrer nos propos, imaginons un fichier ''foo.txt'' appartenant à l'utilisateur 'root' et au groupe 'root'. Ce fichier a le mode 420 (soit lecture seule pour le propriétaire, écriture seule pour le groupe propriétaire et aucun accès pour le reste du monde). | + | 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). |
- | * Avec uniquement ''chown'', le propriétaire d'un fichier est changé, mais les permissions sur ce fichier sont maintenues. Exécutons la commande suivante : | + | 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. |
- | <code>sudo chown toto foo.txt</code> | + | 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]]. |
- | L'utilisateur 'toto' devient désormais le propriétaire du fichier. 'toto' a maintenant accès en lecture seule à ce fichier (puisque les permissions pour le propriétaire du fichier sont limitées à la lecture seule pour le propriétaire du fichier). Les permissions ne sont pas modifiées. | + | ==== Systèmes de fichiers incompatibles avec la norme POSIX ==== |
- | * Avec uniquement ''chmod'', les permissions d'un fichier sont modifiées, mais les propriétaire et groupe propriétaire sont maintenus. Exécutons la commande suivante : | + | 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]]. |
- | <code>sudo chmod ug+rw foo.txt | + | |
- | sudo chmod o+r foo.txt</code> | + | |
- | Le propriétaire du fichier et le groupe propriétaire du fichier disposent désormais de l'accès en lecture et écriture sur le fichier ''foo.txt'', et le reste du monde y a accès en lecture seule. L'utilisateur 'toto' n'a donc accès qu'en lecture au fichier, puisqu'il n'est ni le propriétaire ('root') ni membre du groupe propriétaire (groupe 'root') ; il n'a donc que les accès du reste du monde. | + | 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''. |
- | //Plus d'explications???// Allons-y plus simplement avec un comportement typique ;-) : | + | 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. |
- | - Si un fichier ou dossier contient des informations relativement sensibles ou privées, utilisez conjointement ''chown'' et ''chmod'' pour régler des propriétaires adéquats et des permissions qui ne permettent pas l'accès total au fichier. | + | ===== Voir aussi ===== |
- | - Si un fichier ou dossier ne contient que de l'information généraliste ou publique, autorisez simplement l'accès en lecture, écriture et exécution au fichier avec ''chmod'' et ne vous préoccupez pas des propriétaires. | + | |
- | ===== Références ===== | + | * //[[:permissions|Gérer les droits d'accès (propriétés et permissions) des fichiers et répertoires]]// |
* [[wpfr>Permissions Unix]] (fr) | * [[wpfr>Permissions Unix]] (fr) | ||
* [[http://www.debian.org/doc/manuals/debian-reference/ch01.fr.html#_filesystem_permissions|Didacticiels GNU/Linux -- 1.2.3. Permissions du système de fichiers]] (fr) | * [[http://www.debian.org/doc/manuals/debian-reference/ch01.fr.html#_filesystem_permissions|Didacticiels GNU/Linux -- 1.2.3. Permissions du système de fichiers]] (fr) | ||
+ | * [[http://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html|Aide Debian - chapitre 4.11.12 Setting users umasks (en)]] | ||
+ | * [[ACL|ACL]] : Access Control List : Gestion avancée des droits sous linux | ||
---- | ---- | ||
- | //Contributeurs : [[utilisateurs:AlexandreP]], [[utilisateurs:Ner0lph]], [[utilisateurs:Sbrunner]],[[utilisateurs:Newbies]]// | + | //Contributeurs : [[:utilisateurs:AlexandreP]], [[:utilisateurs:Ner0lph]], [[:utilisateurs:Sbrunner]],[[:utilisateurs:Newbies]], [[:utilisateurs:bcag2]], [[:utilisateurs:krodelabestiole]]// |