CodeGym /Cours /Docker SELF /Gestion des droits d'accès avec ACL (`setfacl`, `getfacl`...

Gestion des droits d'accès avec ACL (`setfacl`, `getfacl`)

Docker SELF
Niveau 5 , Leçon 3
Disponible

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 :

  1. Définir des permissions personnalisées pour des fichiers et des répertoires pour des utilisateurs et des groupes spécifiques.
  2. Hériter des permissions pour les nouveaux fichiers dans un répertoire.
  3. 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'utilisateur user2 (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 :

  1. Donner un accès complet à Alice :

    sudo setfacl -m u:alice:rwx /project
    
  2. Donner à Bob un accès en lecture seule :

    sudo setfacl -m u:bob:r-- /project
    
  3. 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

  1. 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. Utilisez mount pour vérifier et remontez-la si nécessaire.

  2. 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.

  3. 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.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION