05 Nov 2019, 00:00

Notes sur les ACL Linux

Share

Général

Les ACL (Access Control List) sont des autorisations qui permettent de gérer les droits de manière plus fine que les permissions UNIX traditionnelles.

Elles doivent être activées dans le noyau Linux (grep -i acl /boot/config*).

Elles doivent aussi être activées lors du montage de la partition, soit explicitement, soit via les options de montage par défaut (sudo tune2fs -l /dev/sdX1 | grep Default\ mount pour voir les options de montage par défaut d’une partition).

On vérifie que les outils sont installés : sudo apt install nfs4-acl-tools acl

On repère un dossier sur lequel des ACL sont positionnées via la présence d’un “+” à la fin des permissions. Par exemple :

ls -al ./DATA

donne

drwxr-x---+ 14 user     group      4096 oct.  31 12:44 .

Visualisation des ACL

On peut voir le détail avec la commande getfacl ./DATA

# file: DATA/
# owner: user
# group: group
user::rwx
user:www-data:r-x
group::---
mask::r-x
other::---

On y voit les permissions classiques via user::, group:: et other::. On peut voir que l’utilisateur “www-data” possède des droits de lecture positionnés via ACL.

Lister les ACL récursivement dans un dossier

getfacl -R -s -p /directory | sed -n 's/^# file: //p'

Source

Définition des ACL

On peut modifier les ACL via la commande setfacl. Par exemple, pour ajouter des droits RW à l’utilisateur “user2”, on lance :

setfacl -m u:user2:rwx ./DATA

Récursivement :

setfacl -R -m u:user2:rwx ./DATA

qui positionnera les droits RW pour user2 sur tous les fichiers/dossiers inclus dans ./DATA.

Suppression des ACL

On peut supprimer les autorisations via setfacl -b ./DATA.
On peut les supprimer récursivement via setfacl -R -b ./DATA. Cela supprimera toutes les ACL positionnées sur des fichiers/dossiers qui sont inclus dans ./DATA.