Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Les ACL (Access Control Lists) dans Linux

ACL (Access Control Lists) est un mécanisme permissions de fichiers disponible dans Linux.
Vous pouvez gérer des autorisations de fichiers étendues grâce aux commandes getfacl et setfacl.

Dans ce tutoriel, je vous explique tout ce qu’il faut savoir et comment utiliser les ACL dans Linux.

Les ACL (Access Control Lists) dans Linux

Que sont les ACL (Access Control Lists)

Pour comprendre les ACL, vous devez maitriser les permissions de bases sur Linux.
Pour cela, suivez ce tutoriel : Comprendre les permissions de fichiers dans Linux

La liste de contrôle d’accès (ACL) fournit un mécanisme de permission supplémentaire et plus flexible pour les systèmes de fichiers.
Les ACL sont un deuxième niveau de permissions discrétionnaires, qui peuvent remplacer les permissions standards ugo/rwx.
Lorsqu’elles sont utilisées correctement, elles peuvent vous accorder une meilleure granularité dans la définition de l’accès à un fichier ou à un répertoire, par exemple en donnant ou en refusant l’accès à un utilisateur spécifique qui n’est ni le propriétaire du fichier, ni le propriétaire du groupe.

Il existe trois types d’entrées ACL :

  • Les entrées ACL de base sont permissions de bases UNIX. Vous pouvez modifier les permissions en utilisant chmod ou setfacl. Elles ne font pas physiquement partie de l’ACL bien que vous puissiez utiliser setfacl pour les modifier et getfacl pour les afficher
  • Les entrées ACL étendues sont des entrées ACL pour des utilisateurs ou des groupes individuels ; comme les bits de permission, elles sont stockées avec le fichier
  • Les ACL par défaut qui ne s’appliquent qu’au répertoire. Ce sont les ACL qui seront appliquées lors de la création d’un répertoire avec mkdir. Ils sont hérités du parent

Chaque type d’ACL (accès, défaut de fichier, défaut de répertoire) peut contenir jusqu’à 1024 entrées ACL étendues. Chaque entrée ACL étendue spécifie un qualificateur pour indiquer si l’entrée se rapporte à un utilisateur ou à un groupe, l’UID ou le GID lui-même, et les permissions accordées ou refusées par cette entrée. Les permissions autorisées sont la lecture, l’écriture et l’exécution.
Comme pour les autres commandes UNIX, setfacl permet l’utilisation de noms ou de nombres pour désigner les utilisateurs et les groupes.

Comment afficher les ACL dans Linux avec getfacl

La commande getfacl permet de visualiser les informations ACL.

getfacl demo.txt
Comment afficher les ACL dans Linux avec getfacl

Les ACL donne la possibilité d’ajouter des permissions étendues pour plusieurs utilisateurs à des fichiers ou répertoires.
Par exemple, ci-dessous en plus du propriétaire mak, les utilisateurs demo et demo2 ont des autorisations qui leurs sont propres.

Comment afficher les ACL dans Linux avec getfacl

Sous la liste des utilisateurs, vous avez probablement remarqué une ligne mask.
Le masque associé à une ACL limite l’ensemble des autorisations qui peuvent être attribuées sur le fichier pour les groupes et utilisateurs nommés et pour le propriétaire du groupe.
Mais le mask n’a aucun effet sur les autorisations pour le propriétaire du fichier et l’autre groupe d’autorisation.

Utilisez l’option -R pour un affichage en récursif.
Cela va afficher les ACL de tous les fichiers des répertoires et sous-répertoires.
Par exemple pour afficher les ACL du home :

getfacl -R ~
Comment visualiser les ACL dans Linux avec getfacl

Pour afficher les ACL étendues d’un répertoire, utilisez l’option -d :

getfacl -d /repertoire

Comment modifier les ACL dans Linux avec setfacl

Modifier les ACL

Pour modifier les ACL, on utilise l’option -m option (ou --modify) en spécifiant la section u pour utilisateur, g pour groupe et o pour autres (other), suivent ensuite les permissions rxw et enfin le nom du fichier ou répertoire.
La syntaxe est la suivante :

 setfacl -m u:<utilisateur>:<permissions> <fichier ou répertoire>

Par exemple pour modifier les ACL du fichier demo.txt pour l’utilisateur demo et donner les autorisations rw :

setfacl -m u:demo:rw demo.txt
Comment modifier les ACL dans Linux avec setfacl

Pour changer les ACL d’un groupe, utilisez la section g.
Par exemple pour gérer les ACL du groupe demo :

setfacl -m g:demo:rwx demo.txt

Pour modifier les ACL d’un répertoire c’est le même principe.
Si vous désirez modifier les ACL de manière récursive à tout l’arborescence, utilisez l’option -R :

setfacl -R -m g:demo:rwx nom_de_repertoire

Pour permettre à tous les fichiers ou répertoires d’hériter des entrées ACL du répertoire dans lequel ils se trouvent

setfacl -dm "entry" /repertoire

Modifier le mask des ACL

Pour modifier le mask d’un fichier ou répertoire, on utilise la section mask.
Par exemple pour changer le masque en lecture (r) sur le fichier demo.txt :

setfacl -m mask:r demo.txt
Comment modifier les ACL dans Linux avec setfacl

Restaurer les ACL

Vous pouvez exporter les ACL d’un fichier ou répertoire.
Ensuite, vous pouvez restaurer ces ACL.

Par exemple, on exporte les ACL du fichier demo.txt dans /tmp/acl.txt :

getfacl demo.txt > /tmp/acl.txt

Puis on restaure les ACL exportés dans /tmp/acl.txt sur demo.txt (ou un autre fichier).
Pour cela, on utilise l’option -M en spécifiant le fichier d’export ACL :

setfacl -R -M /tmp/acl.txt demo.txt
Comment modifier les ACL dans Linux avec setfacl

Supprimer les ACL

Pour supprimer tous les ACL d’un fichier, il faut utiliser l’option -b :

setfacl -b fichier
Supprimer les ACL sur Linux

Pour supprimer tous les ACL d’un répertoire :

setfacl -b /repertoire

Pour supprimer tous les ACL d’un répertoire, des sous-répertoires et fichiers, utilisez l’option -R (récursif) :

setfacl -R -b /repertoire

Pour supprimer les ACL par défaut grâce à l’option -k :

setfacl -k /repertoire

Et pour le faire en récursif, ajoutez l’option -R :

setfacl -R -k /repertoire

L’article Les ACL (Access Control Lists) dans Linux est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires