Aperçu
Les ACL offrent une gestion flexible des autorisations qui va au-delà du modèle d'autorisations Unix traditionnel (propriétaire, groupe, autres). Vous pouvez spécifier explicitement les autorisations d'accès à un fichier ou à un répertoire pour un utilisateur ou un groupe spécifique. Ceci est utile pour répondre à des exigences d'autorisations complexes dans des environnements partagés par plusieurs utilisateurs.
Caractéristiques principales
- Contrôle d'accès granulaire
- Octroi d'autorisations à des utilisateurs/groupes spécifiques
- Fonctionne avec les autorisations par défaut (umask)
- Possibilité de définir des ACL par défaut pour les répertoires
Installation
La fonctionnalité `acl` elle-même est intégrée au noyau Linux, mais le paquet `acl` doit être installé pour utiliser les commandes `getfacl` et `setfacl`. Il se peut qu'il ne soit pas installé par défaut sur la plupart des distributions Linux.
Debian/Ubuntu
sudo apt update && sudo apt install acl
Commande pour installer le paquet `acl` sur les systèmes basés sur Debian ou Ubuntu.
CentOS/RHEL/Fedora
sudo yum install acl
Commande pour installer le paquet `acl` sur les systèmes basés sur CentOS, RHEL ou Fedora.
Exemples d'utilisation
Les ACL sont principalement gérées via les commandes `getfacl` (pour consulter les ACL) et `setfacl` (pour définir les ACL). Voici quelques exemples d'utilisation courants.
Consulter les ACL d'un fichier
getfacl my_file.txt
Utilisez la commande `getfacl` pour vérifier les ACL actuelles d'un fichier ou d'un répertoire spécifique.
Accorder les autorisations de lecture/écriture à un utilisateur spécifique
setfacl -m u:user1:rw my_file.txt
Utilisez l'option `setfacl -m` pour accorder les autorisations de lecture (r) et d'écriture (w) à l'utilisateur 'user1' sur 'my_file.txt'.
Accorder l'autorisation d'exécution à un groupe spécifique
setfacl -m g:dev_group:x my_script.sh
Utilisez l'option `setfacl -m` pour accorder l'autorisation d'exécution (x) au groupe 'dev_group' sur 'my_script.sh'.
Supprimer une entrée ACL
setfacl -x u:user1 my_file.txt
Utilisez l'option `setfacl -x` pour supprimer l'entrée ACL pour 'user1'.
Définir des ACL par défaut pour un répertoire
setfacl -m d:u:user2:rwx my_directory/
Définissez des ACL par défaut pour un répertoire afin que les nouveaux fichiers ou répertoires créés héritent de ces ACL. Utilisez le préfixe `d:`.
Supprimer toutes les ACL
setfacl -b my_file.txt
Utilisez l'option `setfacl -b` pour supprimer toutes les entrées ACL étendues d'un fichier ou d'un répertoire et revenir aux autorisations traditionnelles.
Conseils et précautions
Il est important de comprendre l'interaction avec le système d'autorisations existant lors de l'utilisation des ACL.
ACL et autorisations traditionnelles
- La sortie de `ls -l` pour un fichier/répertoire avec des ACL configurées affichera un signe `+` à la fin de la chaîne d'autorisations.
- Les ACL ajoutent des autorisations supplémentaires par-dessus les autorisations traditionnelles (propriétaire, groupe, autres). L'entrée `mask` limite les autorisations effectives maximales des ACL.
- La configuration d'ACL trop complexes peut rendre la gestion des autorisations difficile, utilisez-les donc avec prudence et uniquement lorsque cela est nécessaire.
Comprendre l'entrée mask
Lors de la configuration des ACL, une entrée `mask` est automatiquement créée ou mise à jour. Ce `mask` définit les autorisations effectives maximales accordées aux entrées utilisateur (u:), groupe (g:), utilisateur nommé (u:name:) et groupe nommé (g:name:). Même si vous essayez d'accorder plus d'autorisations que celles définies dans le `mask`, elles seront limitées par celui-ci. Vous pouvez définir manuellement le `mask` avec `setfacl -m m::rw`.
Support du système de fichiers
Pour utiliser les ACL, le système de fichiers doit les prendre en charge. La plupart des systèmes de fichiers Linux modernes tels que ext2, ext3, ext4, XFS prennent en charge les ACL. Vous devrez peut-être vérifier que l'option `acl` est activée lors du montage du système de fichiers (par exemple, dans `/etc/fstab`).