Gestion des droits d'accès avec ACL setfacl
, getfacl
1. Introduction à ACL
Imagine que tu es l'organisateur d'une fête (ou un administrateur système). Tu veux que les invités puissent accéder à certaines pièces, mais à d'autres uniquement avec ton accord. Les permissions de base sous Linux rwx
te permettent de gérer l'accès uniquement pour trois catégories : le propriétaire (user), le groupe (group) et tous les autres (others). Mais que faire si tu veux donner l'accès à une pièce à un ami spécial ? L'approche classique te répondra : "Hé, ça ne marche pas comme ça". Et c'est là qu'ACL vient à ton secours.
ACL (Access Control Lists
) résout le problème des limitations de la structure classique à trois niveaux, permettant de définir les droits d'accès pour des utilisateurs et des groupes spécifiques.
Les principales fonctionnalités d'ACL :
- Définir des permissions personnalisées pour des fichiers et des répertoires pour des utilisateurs et des groupes spécifiques.
- Hériter des permissions pour les nouveaux fichiers dans un répertoire.
- Une configuration plus flexible que l'approche classique
chmod
.
2. Comment savoir si ACL est activé ?
Avant de commencer à gérer les ACL, voyons si votre système les prend en charge. Vous pouvez vérifier cela avec la commande :
mount | grep acl
Si le système de fichiers a été monté avec l'option acl
, vous êtes prêt ! Sinon, vous devrez remonter la partition en ajoutant acl
:
sudo mount -o remount,acl /your/mount/point
Ça y est, vous êtes prêt. Il est temps de passer à la pratique.
3. Commandes de base pour travailler avec ACL
Commande | Description |
---|---|
getfacl |
Obtenir la liste des ACL actuelles pour un fichier ou un répertoire. |
setfacl |
Configurer ou modifier les ACL pour un fichier ou un répertoire. |
setfacl -m |
Modifier les droits d'accès existants. |
setfacl -x |
Supprimer certains droits d'accès. |
setfacl -b |
Supprimer toutes les entrées ACL pour un fichier ou un répertoire. |
setfacl -d |
Configurer les droits par défaut pour un répertoire, qui seront hérités par les fichiers. |
Passons maintenant en revue chaque commande avec des exemples pratiques !
Obtenir les ACL actuelles getfacl
Imaginons qu'on a un fichier example.txt
. On veut voir les droits d'accès actuels en utilisant ACL. Pour cela, une seule commande suffit :
getfacl example.txt
La sortie ressemblera probablement à ceci :
# file: example.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::---
Cette liste montre les droits standards : le propriétaire user1
peut lire et écrire, le groupe group1
peut seulement lire, et les autres utilisateurs n'ont aucun accès.
Configurer des droits d'accès individuels (setfacl
)
Imaginons maintenant que l'utilisateur user2
doit pouvoir écrire dans le fichier example.txt
. On peut faire cela comme suit :
sudo setfacl -m u:user2:rw example.txt
Cette commande signifie :
-m
: modification des droits.u:user2:rw
: ajouter ou modifier les droits pour l'utilisateuruser2
(lecture-écriture).
Vérifions le résultat :
getfacl example.txt
Voici à quoi ressemble maintenant la sortie :
# file: example.txt
# owner: user1
# group: group1
user::rw-
user:user2:rw # Règle supplémentaire !
group::r--
other::---
Suppression des droits d'accès individuels setfacl -x
Si vous décidez que l'utilisateur user2
ne doit plus avoir le droit d'écriture, vous pouvez supprimer ces droits :
sudo setfacl -x u:user2 example.txt
Vérifions :
getfacl example.txt
Plus aucune règle supplémentaire pour user2
!
Configurer les droits pour les groupes
Les droits via ACL peuvent être configurés non seulement pour des utilisateurs individuels, mais aussi pour des groupes entiers. Par exemple, pour donner au groupe devteam
un accès en lecture et écriture, exécutez :
sudo setfacl -m g:devteam:rw example.txt
Configurer des droits par défaut setfacl -d
Il est souvent nécessaire de configurer automatiquement des droits pour tous les nouveaux fichiers et répertoires dans un certain répertoire. Par exemple, vous voulez que tous les fichiers dans le répertoire project_dir
soient accessibles en écriture pour l'utilisateur developer
. Dans ce cas :
sudo setfacl -d -m u:developer:rw project_dir
Pour vérifier les droits, vous pouvez faire ceci :
getfacl project_dir
Désormais, pour tous les nouveaux fichiers et sous-répertoires dans project_dir
, cette règle sera appliquée par défaut.
Suppression de tous les ACL setfacl -b
Si vous voulez supprimer complètement tous les ACL d'un fichier :
sudo setfacl -b example.txt
Désormais, le fichier reviendra au modèle standard de droits d'accès user:group:others
.
4. Utilisation pratique d'ACL
Scénario : Travail collaboratif dans un projet
Imaginons que tu as un projet stocké dans le répertoire /project
. Trois personnes y travaillent :
Alice
doit avoir un accès complet (lecture, écriture, exécution).Bob
doit seulement pouvoir lire les fichiers.Eve
ne doit pas voir le répertoire du tout.
On configure ça avec ACL :
Donner un accès complet à
Alice
:sudo setfacl -m u:alice:rwx /project
Donner à
Bob
un accès en lecture seule :sudo setfacl -m u:bob:r-- /project
Pour
Eve
, on ne fait rien — elle n'aura pas d'accès par défaut.
Regardons la liste actuelle des ACL :
getfacl /project
Sortie :
# file: /project
# owner: root
# group: root
user::rwx
user:alice:rwx
user:bob:r--
group::---
other::---
Maintenant, Alice
peut travailler sans restrictions, Bob
peut seulement consulter les fichiers, et Eve
reste à l'écart.
5. Erreurs potentielles et leurs solutions
Les ACL ne fonctionnent pas, même si vous les avez configurées. Il est possible que la partition ne soit pas montée avec l'option
acl
. Utilisezmount
pour vérifier et remontez-la si nécessaire.Conflit entre les permissions standard et les ACL. Les ACL ont toujours priorité sur les permissions standard. Par exemple, même si "others" n'a pas le droit de lecture, une ACL peut autoriser l'accès à un utilisateur spécifique.
Vous oubliez les ACL hérités. Si vous avez configuré des permissions
-d
(default), vérifiez si ces règles sont bien appliquées aux nouveaux fichiers.
Pourquoi c'est important ?
Gérer les droits via ACL vous permet de configurer l'accès de manière flexible pour différents utilisateurs et groupes. C'est particulièrement utile sur les serveurs de production où il est nécessaire de répartir les permissions en fonction des rôles. Par exemple, dans les entreprises, les ACL sont utilisées pour limiter l'accès uniquement à ceux qui "sont dans le coup" — l'une des clés de la sécurité.
Vous pouvez aussi consulter la documentation officielle sur ACL pour mieux comprendre leurs possibilités.
GO TO FULL VERSION