logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


Les Access Control List (ACL)

Introduction

La mise en place des ACL permet une gestion fine des accès des utilisateurs, des groupes, aux répertoires et aux fichiers d'une partition qui dispose d'un “file system” qui accepte les acl. (par ex: Ext3).

Il faut installer le paquetage acl à l'aide de votre gestionnaire de paquetages favori. Puis il faut déclarer la prise en charge des acl dans le fichier /etc/fstab en ajoutant “,acl” après “defaults” de la partition concernée:

 /dev/VOLUME/5 /donnees ext3 defaults,acl 1 2

Vous redémarrez ensuite votre serveur.

La mise en place des ACL implique trois notions principales:

- 1.ACL « minimale »

Composée exclusivement d’éléments de type propriétaire, groupe et « reste du monde », l ’ACL minimale est une traduction « en ACL » des droits d’accès traditionnels Unix.

- 2.ACL étendue

L’ACL étendue prolonge les droits de l’ACL minimale. Elle contient au moins un élément de type mask et peut contenir des éléments de type utilisateur et/ou groupe.

- 3.ACL par défaut

Les ACL par défaut ne peuvent être appliquées qu’aux répertoires et définissent de quels droits un objet du système de fichiers devra hériter (de son répertoire parent) lors de sa création.

Les commandes

Le paquetage acl permet de disposer de deux nouvelles commandes:

getfacl

Cette commande permet l'affichage des acl

  getfacl  nom_de_repertoire      # affiche les acl de nom_de_répertoire 
  

Le format de sortie de getfacl ressemble à ceci:

Pour un répertoire qui ne dispose que des acl “minimales”

                 # file: nom_de_repertoire
                 # owner: root
                 # group: root
                   user::rwx
                   group::rwx
                   other::---
 Ce qui correspond au ls -al nom_de_repertoire
                 drwxrwx---  1 root root  596354 sep  4 20:59 nom_de_repertoire

Pour un répetoire qui dispose d'acl étendues et d'acl par défaut

                # file: nom_de_repertoire
                # owner: root               
                # group: root
                  user::rwx                  # Les droits du propriétaire
                  user:joe:rwx               # Les droits de l'utilisateur supplémentaire joe
                  group::rwx                 # Les droits du groupe du propriétaire
                  group:cool:rwx             # Les droits du groupe supplémentaire cool
                  group:hot:r-x              # Les droits du groupe supplémentaire hot
                  group:cold:---             # Les droits du groupe cold
                  mask:rwx                   # Les droits les plus élevés
                  other:---                  # Les droits des "autres"
                  default:user::rwx          # Les droits par défaut sont attribués automatiquement pour 
                  default:user:joe:rwx       # les nouveaux fichiers et répertoires créés. 
                  default:group::rwx         # Les acl par défaut ne concernent donc que les répertoires
                  default:group:hot:r-x      
                  default:group:cold:---
                  default:mask:rwx
                  default:other:---

Il est utile d'enregistrer l'ensemble des acl quand on a un serveur de fichiers dans une communauté de travail hétérogène (des centaines d'utilisateurs et de groupes). Cette manipulation peut se faire grâce à la commande:

getfacl -R /donnees > nom_de_fichier       # L'option -R permet la récursivité sur tous les répertoires,
                                           # sous-répertoires et fichiers de la partition /donnees
                                           # L'enregistrement de l'ensemble de ces acl est effectué dans 
                                           # le fichier nom_de_fichier

setfacl

Cette commande permet l'attribution des acl. Voici quelques explications sur son utilisation.

Attribution des acl étendues

  setfacl -m g:cool:rwx nom_de_repertoire  # Pour ajouter le groupe cool et ses droits pour le
                                           # répertoire non_de_repertoire
  setfacl -m g:cool:rwx nom_de_fichier     # Pour ajouter le groupe cool et ses droits pour le
                                           # fichier non_de_fichier
  setfacl -m u:fany:rwx nom_de_repertoire  # Pour ajouter l'utilisateur fany et ses droits pour le
                                           # répertoire non_de_repertoire

En utilisant -R pour la récursivité,

  setfacl -R -m g:cool:rwx nom_de_repertoire  # Pour ajouter le groupe cool et ses droits pour le
                                              # répertoire, l'ensemble des sous-répertoires et 
                                              # fichiers du répertoire non_de_repertoire

Attribution des acl par défaut

  setfacl -m d:g:cool:rwx nom_de_repertoire   # Pour ajouter le groupe cool et ses droits par défaut 
                                              # pour le répertoire non_de_repertoire

En utilisant -R pour la récursivité,

  
  setfacl -R -m d:g:cool:rwx nom_de_repertoire # Pour ajouter le groupe cool et ses droits par défaut
                                               # pour le répertoire, l'ensemble des sous-répertoires
                                               # et fichiers du répertoire non_de_repertoire

Attribution des acl à l'aide d'un fichier

Il est possible de restituer l'ensemble des acl d'une partition grâce au fichier obtenu par la commande:

  getfacl -R /donnees > nom_de_fichier

Pour ce faire, il suffit de se placer à la racine et d'exécuter la commande:

  setfacl --restore=nom_de_fichier

S'il s'agit de restituer les acl sur une arborescence plus petite on peut utiliser:

  setfacl -R -M nom_de_fichier repertoire

Suppression des acl

Pour supprimer tous les acl:

  setfacl -b repertoire          # Suppression juste pour le répertoire
  setfacl -b fichier             # Suppression juste pour le fichier
  setfacl -R -b repertoire       # Suppression pour le répertoire, les sous-répertoires et fichiers

Pour supprimer les acl par défaut :

  setfacl -k repertoire          # Suppression juste pour le répertoire
  setfacl -R -k repertoire       # Suppression pour le répertoire, les sous-répertoires

Conclusion

Je vous laisse imaginer l'ensemble des possibilités (grâce aux man setfacl, man getfacl) et si l'on couple cela avec le SGID. Tout est faisable…. et peu de système d'exploitation offre un tel panel d'outils.

Comme lecture sur le sujet, une page du site Léa-Linux : Gestion des ACL.

doc/systeme/acl.1379885478.txt.gz · Dernière modification: 13/10/2013 15:13 (modification externe)

Pied de page des forums

Propulsé par FluxBB