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
acl [Le 03/11/2014, 14:38]
Bybeu [Les Access Control List : Gestion avancée des droits sous linux]
acl [Le 31/07/2023, 18:45] (Version actuelle)
tosage [Exemples] Correction du commentaire pour que ça soit identique
Ligne 6: Ligne 6:
  
 Par défaut, la gestion des [[:droits]] sous Linux est relativement basique (bien que souvent suffisante). Par défaut, la gestion des [[:droits]] sous Linux est relativement basique (bien que souvent suffisante).
-En effet, il n'est possible de permettre ou d'​interdire la lecture, l'​écriture et l'​exécution de fichiers que pour trois catégories d'​utilisateurs : le propriétaire du fichier, le groupe ​auquel appartient le propriétaire ​et le reste du monde. Cette gestion des droits permet de configurer les accès aux fichiers dans la plupart des situations simples mais peut s'​avérer limitée, par exemple, dans un contexte où plusieurs utilisateurs doivent accéder à une ressource partagée alors qu'ils n'ont pas de groupe ​commun.+En effet, il n'est possible de permettre ou d'​interdire la lecture, l'​écriture et l'​exécution de fichiers que pour trois catégories d'​utilisateurs : le propriétaire du fichier, ​l'​ensemble des utilisateurs inscrits dans le groupe 
 +éponyme relatif à l'​utilisateur ​et le reste du monde. Cette gestion des droits permet de configurer les accès aux fichiers dans la plupart des situations simples mais peut s'​avérer limitée, par exemple, dans un contexte où plusieurs utilisateurs doivent accéder à une ressource partagée alors que ni l'un ni l'autre ne sont réciproquement inscrits dans le groupe ​de l'​autre utilisateur.
  
-Les ACL voudraient permettre ​de pallier ​ce manque grâce à une gestion avancée des droits. +Les ACL permettent ​de pallier ​cette déficience de sorte qu'il devient ​possible d'​autoriser un utilisateur tiers à effectuer des opérations sur un fichier (dossier) sans autoriser tout un groupe ou tout le reste du monde. Voir les exemples pour plus d'​informations.
-Ainsi, ​il deviendrait ​possible d'​autoriser un utilisateur tiers à effectuer des opérations sur un fichier (dossier) sans autoriser tout un groupe ou tout le reste du monde. Voir les exemples pour plus d'​informations+
-\\ **Mise en garde :** +
-Cependant, fin 2014, ce scénario passe sous silence une limitation majeure: il ne fonctionne que pour la création ex-nihilo de fichiers ou de dossiers. En effet, les commandes //cp// (copie) et //mv// (déplacement),​ sans parler de //rsync//, //rcp//, //scp//..., ainsi que leurs mises en œuvre dans les outils graphiques de gestion des fichiers (p.e. nautilus) ne se plient pas à la présence d'une //acl par défaut// (c-à d définie sur le dossier cible de la copie ou du déplacement). Ainsi, pour permettre aux acl de "​marcher"​ de façon (presque) transparente,​ il fau(drai)t que tous les utilisateurs des partages (en particulier ceux dont on voudrait qu'ils n'​aient que le droit de lecture) disposassent des droits complets sur les dits partages, possédassent la compréhension du mécanisme des acl, de la maîtrise de la ligne de commande (ou de l'​interface graphique eiciel)... et de la confiance de tous les autres pairs partageurs en ce qui concerne le droit d'​écriture (modification/​création/​suppression):​ ceci afin qu'ils aient le droit de réappliquer l'//​acl par défaut// du dossier cible sur les objets copiés/​déplacés dans celui-ci... sans être obligés de faire appel à un utilisateur disposant lui-même du droit d'​écriture après chaque déplacement/​copie. +
-Cette limitation restreint de façon drastique la portée des acl à un très petit nombre d'​usages,​ excluant par là même de la notion de partage le cas d'un usage familial/​pme/​tpe dans lequel certains pourraient écrire, d'​autres seulement lire, et d'​autre encore n'​ayant aucun accès. +
-Il existerait un mécanisme à base de l'API système "//​inotify//"​ qui ~permettrait~ de généraliser le fonctionnement des acl quand elles resteraient la seule solution, mais aucun développeur de distribution système GNU ne s'est jamais aventuré à intégrer ceci officiellement dans sa propre distribution grand public. Pour le scripteur du dimanche, voir l'aide des commandes shell //​inotifywait//​ et //​inotifywatch // : apt://​inotify-tools +
-\\ Une autre solution, plus brutale et hideuse, à la portée de l'​administrateur moyen, consisterait à établir un script déclenché par une tâche planifiée chaque minute (hideuse), script qui réappliquerait de façon récursive sur toute une arborescence (brutale car on pourrait souhaiter des spécificités/​casse l'​héritage pour tel ou tel sous-répertoire ou fichier) l'//​acl par défaut// et l'//​acl d'​accès//​ définies au niveau du dossier parent de la dite arborescence <​code>​sudo chown U:G arbre +
-sudo chmod +R g=rwXs arbre +
-sudo setfacl -R --set d:​u::​...,​d:​u:​u2:​...,​d:​u:​un:​...,​d:​g::​...,​d:​g:​g2:​...,​d:​g:​gn:​...,​d:​o::​...,​d:​m::​...,​u::​...,​u:​u2:​...,​u:​un:​...,​g::​...,​g:​g2:​...,​g:​gn:​...,​o::​...,​m::​... arbre''</​code>​ +
-\\ Une autre piste, formellement déconseillée sur le site officiel d'​Ubuntu (indépendamment des acl), serait une modification du //umask//, mais sa valeur par défaut (0002 dans Ubuntu) n'​explique pas l'​amputation de l'​héritage de l'//​acl [par défaut]// lors des copies/​déplacements. (observer, par exemple et hors de toute modification du //umask//, qu'un dossier, copié vers un dossier disposant lui-même d'une //acl par défaut// et donc d'un //masque par défaut//, perd le //masque par défaut// du parent alors qu'il devrait en hériter) +
-\\ Le seul OS grand public sachant gérer nativement les acl aujourd'​hui et depuis 1990 s'​appelle W...(NT et ses descendants).+
 ===== Activation ===== ===== Activation =====
  
Ligne 31: Ligne 22:
  
 soit en inscrivant l'​option dans le fichier [[mount_fstab|fstab]] soit en inscrivant l'​option dans le fichier [[mount_fstab|fstab]]
-<​code>​UUID=xxxxxxxxx /               ext4    ​[autres options],​acl 0       ​1</​code>​+<​code>​UUID=xxxxxxxxx /               ext3    ​[autres options],​acl 0       ​1</​code>​
 puis en remontant la partition (si l'on ne veut pas redémarrer) puis en remontant la partition (si l'on ne veut pas redémarrer)
 <​code>​mount -a -o remount /​dev/​sdax</​code>​ <​code>​mount -a -o remount /​dev/​sdax</​code>​
-\\ +
 (note) : si la partition concernée par le partage est de type ext4 le support des acl est actif par défaut: l'​option de montage "​acl"​ a été remplacée par "​noacl",​ qui devient donc celle à utiliser si on veut... désactiver le support des acl. (note) : si la partition concernée par le partage est de type ext4 le support des acl est actif par défaut: l'​option de montage "​acl"​ a été remplacée par "​noacl",​ qui devient donc celle à utiliser si on veut... désactiver le support des acl.
 ===== Utilisation ===== ===== Utilisation =====
Ligne 62: Ligne 53:
 ici on peut voir que le propriétaire du fichier (utilisateur) a les droits rwx, utilisateur1 rw- et utilisateur2 r--, les autres utilisateurs n'ont aucun droit ici on peut voir que le propriétaire du fichier (utilisateur) a les droits rwx, utilisateur1 rw- et utilisateur2 r--, les autres utilisateurs n'ont aucun droit
  
-**getfacl --omit-header ...** supprime de l'​affichage les 3 premières lignes ​du nom de fichier, ​owner et group.+**getfacl --omit-header ...** supprime de l'​affichage les 3 premières lignes, le nom du fichier, ​le propriétaire ​et le groupe.
 <​code>​$ mkdir dir <​code>​$ mkdir dir
 $ ls -ld dir $ ls -ld dir
Ligne 70: Ligne 61:
 group::r-x group::r-x
 other::​r-x</​code>​ other::​r-x</​code>​
-Sans acl, la command ​getfacl donne les mêmes informations que ls -ld+Sans acl, la commande ​getfacl donne les mêmes informations que ls -ld
  
-**getfacl ​-d ...** spécifie des acl par défaut, qui ne peuvent s'​appliquer qu'aux dossiers.+**setfacl ​-d ...** spécifie des acl par défaut, qui ne peuvent s'​appliquer qu'aux dossiers.
 <​code>​$ setfacl -m user:​fdsadmin:​rwx dir <​code>​$ setfacl -m user:​fdsadmin:​rwx dir
 $ setfacl -d -m group:​nasgrp:​r-x dir $ setfacl -d -m group:​nasgrp:​r-x dir
Ligne 102: Ligne 93:
 other::​r-x</​code>​ other::​r-x</​code>​
  
-Les ** permissions effectives ** sont affichées individuellement pour les users ou groups ​qui subissent un droit de hiérarchie supérieure différent :+Les ** permissions effectives ** sont affichées individuellement pour les utilisateurs ​ou les groupes ​qui subissent un droit de hiérarchie supérieure différent :
 <​code>​$ chmod g-w dir <​code>​$ chmod g-w dir
 $ ls -ld dir $ ls -ld dir
Ligne 117: Ligne 108:
 default:​mask::​r-x default:​mask::​r-x
 default:​other::​r-x</​code>​ Ici l'​utilisateur fdsadmin qui avait pourtant les droits rwx s'est vu amputer du droit w supprimé au groupe. default:​other::​r-x</​code>​ Ici l'​utilisateur fdsadmin qui avait pourtant les droits rwx s'est vu amputer du droit w supprimé au groupe.
- 
-==== En graphique ==== 
-Une fois compris les concepts des ACL, il est possible de gérer les changements de droits en graphique grâce au paquet [[apt://​eiciel]]. 
- 
  
 ==== Exemples ==== ==== Exemples ====
Ligne 126: Ligne 113:
 <​code>​setfacl -m user:​utilisateur:​rw fichier</​code>​ <​code>​setfacl -m user:​utilisateur:​rw fichier</​code>​
 <​code>​setfacl -m u:​utilisateur:​rw fichier</​code>​ <​code>​setfacl -m u:​utilisateur:​rw fichier</​code>​
-La même commande est disponible pour les groupes. Il suffit de remplacer **u**/​**user** par **g** ou **group**+La même commande est disponible pour les groupes. Il suffit de remplacer **u**/​**user** par **g**/**group**
 === modifier les permissions de plusieurs utilisateurs/​groupes sur "​fichier"​ en même temps === === modifier les permissions de plusieurs utilisateurs/​groupes sur "​fichier"​ en même temps ===
 <​code>​setfacl -m user:​utilisateur:​rwx,​user:​utilisateur2:​r,​group:​groupe:​rw fichier</​code>​ <​code>​setfacl -m user:​utilisateur:​rwx,​user:​utilisateur2:​r,​group:​groupe:​rw fichier</​code>​
 === définir l'​accès en lecture par défaut pour "​utilisateur"​ pour les nouveaux fichiers créés dans "​dossier"​ === === définir l'​accès en lecture par défaut pour "​utilisateur"​ pour les nouveaux fichiers créés dans "​dossier"​ ===
 <​code>​setfacl -m d:​u:​utilisateur:​r dossier</​code>​ <​code>​setfacl -m d:​u:​utilisateur:​r dossier</​code>​
 +=== supprimer les ACL pour un utilisateur sur une arborescence ===
 +<​code>​setfacl -R -x user::​nom_user repertoire_base_arborescence</​code>​
 === supprimer les ACL sur un fichier/​dossier === === supprimer les ACL sur un fichier/​dossier ===
 <​code>​setfacl -b fichier</​code>​ <​code>​setfacl -b fichier</​code>​
 +
 +==== En graphique ====
 +Une fois compris les concepts des ACL, il est possible de gérer les changements de droits en graphique grâce au paquet [[apt://​eiciel]].
  
 ---- ----
  
-//​Contributeur : nesthib ​bybeu//+//​Contributeur : nesthib//
  • acl.1415021904.txt.gz
  • Dernière modification: Le 03/11/2014, 14:38
  • par Bybeu