Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
droits [Le 04/08/2009, 22:57]
menoft
droits [Le 17/02/2023, 12:17] (Version actuelle)
G-Tux [Manipuler les droits d'accès] Retrait texte inaproprié "chmod777"
Ligne 4: Ligne 4:
  
 ====== 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]],​ [[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 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.
Ligne 9: Ligne 10:
 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 **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 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.)+  * 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. 
- +  * La manipulation des droits ​d'​accès ​des fichiers ​et dossiers est abordée ​dans l'​article ​« [[:​Permissions]] ».
- +
-<note tip>Les manipulations sur les droits des fichiers ​sont abordés ​dans la page « [[:​Permissions]] ».</​note>​+
  
 ===== 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. 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 niveaux ​+La possession d'un fichier se définit sur trois catégories ​
-  ​* Le premier est le **propriétaire** du fichier. ​C'est l'​utilisateur à qui appartient le fichier. En général, 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.) +  ​- 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]]''​ 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 second niveau est le **groupe** propriétaire ​du fichier. 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. +  ​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. 
-  ​* Le troisième niveau est **les autres**, le reste du monde. Bref, tout un chacun n'​étant ni propriétaire du fichier, ni membre du groupe propriétaire du fichier.+  ​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 ​à qui est immatriculée ​la voiture. 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.+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.
  
-<​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>​+<​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 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 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, naviguer à l'​intérieur d'un répertoire...). Cette permission est notée ''​r''​ (pour //​**r**ead//,​ lire). +  - 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 //​**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'​**é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 //​**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).+  - 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). 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. 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.
Ligne 44: Ligne 42:
   * tous les autres utilisateurs disposent 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.
  
-<​note ​tip>+Les droits sont affichés par une série de 9 caractères,​ associés 3 par 3 (rwx rwx rwx) qui définissent les droits des 3 identités (u, g et o). 
 + 
 +<​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. 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.
Ligne 52: Ligne 52:
   * 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>​
-<note tip>Les droits par défaut, c'est à dire ceux appliqués à un fichier ou à un répertoire lors de sa création, sont gérés par un masque spécial : [[http://​fr.wikipedia.org/​wiki/​Umask|umask]]</​note>​ 
  
-==== Représentation octale des droits ​====+<note tip>​**Comment sont déterminées les droits ​d'​accès sur un volume ?**
  
-Un [[http://fr.wikipedia.org/wiki/Permissions_Unix#​Repr.C3.A9sentation_des_droits|chapitre]] très bien fait sur Wikipédia explique ce point.+//​**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 montagePar 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 quelconqueLes modifications de droits d'​accès sont conservés même après le démontage du système de fichiersCeci s'​applique uniquement aux systèmes de fichiers ext2, ext3, ext4, ReiserFS, Reiser4, HFS, HFS+ et autres compatibles avec la norme POSIX.
  
-===== chown ou chmod lequel dois-je utiliser ? =====+//​**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>​
  
-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''​. Pourtantcomme 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 fichierLequel préférer ? La réponse est aussi simple qu'​elle ne l'est pas : ça dépend de ce que vous entendez faire avec votre fichier ! +===== Droits attribués automatiquement ​à un fichier ===== 
- +Lorsqu'​un ​nouveau ​fichier ​est créécelui-ci obtient automatiquement certains paramètres ​: 
-Pour illustrer notre proposimaginons 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). +  - **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éateurPar exemplesi l'​utilisateur ''​toto'', ​dont le groupe ​principal est ''​utilisateurs'', ​crée un nouveau ​fichier ​ou dossiercelui-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 //​[[wpfr>​umask|user mask]]//). Dans Ubuntu, le masque utilisateur par défaut accorde les permissions ''​rwxr-xr-x'' ​correspondant à un umask = 022 
-  * Avec uniquement ​''​chown'', ​le propriétaire d'un fichier ​est changémais les permissions sur ce fichier sont maintenues. Exécutons la commande suivante : +    ​* ​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 ​; 
-<​code>​sudo chown toto foo.txt</​code>​ +    * le reste du monde dispose des droits de lecture et d'exécutionmais pas d'​écriture.
- +
-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. +
- +
-  * 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 ​+
-<​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+
- +
-//​Plus ​d'explications???//​ Allons-y plus simplement avec un comportement typique ;-) : +
- +
-  - Si un fichier ou dossier contient des informations relativement sensibles ou privéesutilisez 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. +
-  - 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. +
- +
-<note tip>Un petit lien utile sur les droits et leur fonctionnement de "​base"​ :​http://​www.ac-creteil.fr/​reseaux/​systemes/​linux/​debian/​deb-tp-droits.html +
-</​note>​+
  
 +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 ''​[[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 ;
 +  * En ajoutant dans le fichier :
 +<file - /​etc/​pam.d/​common-session>​ session ​   optional ​    ​pam_umask.so umask=007</​file>​
 +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 la commande ci-dessous après la création des utilisateurs dans le fichier ~/.bashrc.
 +<file - /​root/​.bashrc>​ umask 007</​file>​
 +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 =====
 +  * [[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/​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]]//​ +//​Contributeurs : [[utilisateurs:​AlexandreP]],​ [[utilisateurs:​Ner0lph]],​ [[utilisateurs:​Sbrunner]],​[[utilisateurs:​Newbies]],​ [[utilisateurs:​bcag2]]//
  • droits.1249419431.txt.gz
  • Dernière modification: Le 04/08/2009, 22:57
  • par menoft