Access control lists (ACLs) Linux
Les droits standards et les droits étendus sont des fonctionnalités intéressantes mais qui ne s’applique que pour un seul utilisateur ou un seul groupe. Comment définir des permissions spécifiques, voire différents, pour d’autres utilisateurs ou groupes que les propriétaires ? Les ACLs offrent une réponse à cette question.
Note : “Les ACL ne sont nativement pas activées sur Ubuntu mais le noyau les prend en charge. Le paquet apt://acl doit normalement être déjà installé.” https://doc.ubuntu-fr.org/acl.
Les ACLs Linux sont supportées nativement sur les distributions basées Red Hat.
1. Complément aux droits standards et étendus
Les Access control lists (ACLs) permettent de définir des permissions différentes pour un ou plusieurs utilisateurs / groupes sur un fichier / répertoire.
A une époque, il fallait adapter le noyau et le FS au support des ACLs. Techniquement, ces informations étendues sur les fichiers sont enregistrées en tant que méta-donnés su FS.
2. Support du système de fichiers
Avant de démarrer avec les ACLs, il faut que le système de fichiers soit monté pour les supporter car ses métadonnées devront être étendues.
3. Visualiser les permissions ACLs
Créer un dossier /opt/partage
et visualiser les permissions :
mkdir /opt/partage
ls -ld /opt/partage
drwxr-xr-x. 2 root root 6 23 fév 20:16 /opt/partage
Visualiser les permissions ACLs du dossier :
getfacl /opt/partage
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/partage
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
4. Ajouter un ACLs à un répertoire
setfacl -m g:omega:rx /opt/partage
setfacl -m u:alfa:rwx /opt/partage
getfacl /opt/partage
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/partage
# owner: root
# group: root
user::rwx
user:alfa:rwx
group::r-x
group:omega:r-x
mask::rwx
other::r-x
5. ACLs par défaut
Les ACLs par défaut permettent de donner des permissions ACL en héritage pour tout sous-répertoire ou fichier créé dans un répertoire. Toutefois, ces ACLs par défaut ne s’appliquent pas aux objets déjà présents dans le répertoire.
Dans la configuration d’un partage avec des accès multiples, il sera donc nécessaire de procéder en deux étapes :
- Modifier l’ACL des fichiers existants
- Appliquer un ACL par défaut
setfacl -R -m u:alfa:rx /opt/partage
setfacl -m d:u:alfa:rx /opt/partage
getfacl /opt/partage
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/partage
# owner: root
# group: root
user::rwx
user:alfa:r-x
group::r-x
group:omega:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:alfa:r-x
default:group::r-x
default:mask::r-x
default:other::r-x
Enfin, il peut être intéressant d’utiliser les ACLs par défaut pour définir les droits des autres (other) sur les fichiers nouvellement créés.
Par exemple pour empêcher tous les autres en termes de permissions pour tout nouveau fichier ou sous-répertoire créé :
setfacl -m d:o::- /opt/partage
getfacl /opt/partage
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/partage
# owner: root
# group: root
user::rwx
user:alpha:r-x
group::r-x
group:omega:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:alpha:r-x
default:group::r-x
default:mask::r-x
default:other::---
6. Compatibilité
Tous les utilitaires (sauvegarde, copie, déplacement de fichiers) ne sont pas nécessairement compatibles avec les ACLs. Il sera donc indiqué de sauvegarder les ACLs définies pour un dossier afin de les repousser sur une copie des fichiers.
Par exemple, on copie le répertoire /opt/partage
dans opt/p2
avec récursion (option -R
) :
cp -R /opt/partage /opt/p2
getfacl /opt/p2
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/p2
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
Sauvegarde de l’ACL originale :
getfacl -R /opt/partage > acls
getfacl : suppression du premier « / » des noms de chemins absolus
Adaptation des nouveaux droits :
sed -i -e "s/opt\/partage/\/opt\/p2/g" acls
getfacl /opt/p2
getfacl : suppression du premier « / » des noms de chemins absolus
# file: opt/p2
# owner: root
# group: root
user::rwx
user:alpha:r-x
group::r-x
group:omega:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:alpha:r-x
default:group::r-x
default:mask::r-x
default:other::---
Restauration de l’ACL :
setfacl --restore=acls
7. star
Notons que l’outil star
se comporte et se manipule comme tar
mais avec le support des ACLs (option -acl
).