accueil > Gestion des paquets et du système > setfacl

setfacl : Définir les listes de contrôle d'accès (ACL) pour les fichiers

La commande `setfacl` est utilisée pour définir les listes de contrôle d'accès (ACL) pour les fichiers et les répertoires. Au-delà du modèle de permissions Unix traditionnel (propriétaire, groupe, autres), elle permet d'accorder ou de refuser des permissions de lecture, d'écriture et d'exécution granulaires à des utilisateurs ou groupes spécifiques. Cela permet une gestion flexible des exigences d'autorisation complexes.

Aperçu

`setfacl` permet une gestion plus flexible des permissions pour les objets du système de fichiers. Il est possible d'accorder ou de refuser individuellement des permissions de lecture, d'écriture et d'exécution à des utilisateurs ou groupes spécifiques, et de définir des ACL par défaut pour que les nouveaux fichiers ou répertoires héritent automatiquement des ACL. Ceci est particulièrement utile lorsque vous avez besoin d'une gestion fine des permissions dans un environnement partagé par plusieurs utilisateurs.

Fonctionnalités principales

  • Définition des permissions individuelles pour des utilisateurs/groupes spécifiques
  • Définition et héritage des ACL par défaut
  • Modification et suppression des ACL existantes
  • Application récursive des permissions

Options principales

`setfacl` permet un contrôle précis des ACL grâce à diverses options. Voici les options principales fréquemment utilisées.

Définition et modification des ACL

Suppression des ACL

Autres

Commande générée :

Essayez de combiner les commandes.

Description:

`setfacl` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Montre divers scénarios pour gérer les ACL des fichiers et répertoires à l'aide de la commande `setfacl`.

Accorder les permissions de lecture/écriture à un utilisateur spécifique

setfacl -m u:user1:rw testfile.txt

Accorde les permissions de lecture (r) et d'écriture (w) à l'utilisateur `user1` sur le fichier `testfile.txt`.

Accorder les permissions de lecture seule à un groupe spécifique

setfacl -m g:groupA:r shared_dir

Accorde les permissions de lecture (r) au groupe `groupA` sur le répertoire `shared_dir`.

Définir les ACL par défaut pour un répertoire

setfacl -m d:u:user2:rwx project_data

Définit les ACL par défaut pour le répertoire `project_data` afin que l'utilisateur `user2` ait les permissions de lecture/écriture sur les nouveaux fichiers créés, et les permissions de lecture/écriture/exécution sur les nouveaux répertoires créés.

Appliquer les ACL récursivement

setfacl -R -m u:user3:r data_archive

Accorde les permissions de lecture à l'utilisateur `user3` de manière récursive sur le répertoire `data_archive` et tous ses fichiers et sous-répertoires.

Supprimer une entrée ACL d'un utilisateur spécifique

setfacl -x u:user1 testfile.txt

Supprime l'entrée ACL pour l'utilisateur `user1` du fichier `testfile.txt`.

Supprimer toutes les entrées ACL étendues

setfacl -b config_dir

Supprime toutes les entrées ACL étendues du répertoire `config_dir` (les permissions par défaut sont conservées).

Supprimer les entrées ACL par défaut

setfacl -k project_data

Supprime toutes les entrées ACL par défaut définies pour le répertoire `project_data`.

Installation

La commande `setfacl` fait généralement partie du paquet `acl`. Elle est préinstallée sur la plupart des distributions Linux, mais si vous ne trouvez pas la commande, vous pouvez l'installer en utilisant les commandes suivantes.

Systèmes basés sur Debian/Ubuntu

sudo apt update && sudo apt install acl

Installe le paquet `acl` en utilisant le gestionnaire de paquets APT.

Systèmes basés sur RHEL/CentOS/Fedora

sudo yum install acl
# ou
sudo dnf install acl

Installe le paquet `acl` en utilisant le gestionnaire de paquets YUM ou DNF.

Conseils et précautions

Conseils et précautions pour utiliser `setfacl` efficacement et éviter les problèmes potentiels.

Utilisation avec getfacl

Après avoir défini les ACL avec `setfacl`, il est important de vérifier les ACL actuellement définies en utilisant la commande `getfacl <fichier/répertoire>`. Cela permet de vérifier si les permissions ont été appliquées comme prévu.

  • Commande de vérification: getfacl <fichier/répertoire>

Comprendre les permissions du masque

Une entrée 'masque' peut exister dans les entrées ACL. Le masque définit les permissions effectives maximales qui s'appliquent à toutes les entrées ACL d'utilisateur et de groupe. Autrement dit, si les permissions accordées à un utilisateur ou un groupe sont supérieures aux permissions du masque, les permissions réelles seront limitées par le masque. Le masque peut être ajusté automatiquement lors de la définition des ACL avec `setfacl`, il est donc conseillé de vérifier avec `getfacl`.

  • Rôle: Limitation des permissions effectives maximales pour toutes les entrées ACL d'utilisateur/groupe
  • Vérification: Vérifier la section 'mask::' dans la sortie de getfacl

Interaction avec les permissions par défaut

Les fichiers ou répertoires auxquels des ACL sont appliquées afficheront un signe `+` à la fin de leur chaîne de permissions lorsqu'ils sont affichés avec la commande `ls -l`. Cela indique que des ACL supplémentaires sont appliquées en plus des permissions Unix standard. Les ACL complètent le modèle de permissions Unix par défaut, mais peuvent parfois augmenter la complexité, il faut donc les utiliser avec prudence.

  • Indication d'application des ACL: Affichage du signe '+' à la fin de la chaîne de permissions dans la sortie de ls -l

Attention lors de l'application récursive (-R)

Soyez prudent lorsque vous utilisez l'option `-R` pour appliquer les ACL de manière récursive. En particulier, lorsqu'elle est utilisée avec `-b` (supprimer toutes les ACL), toutes les ACL des fichiers et répertoires inférieurs peuvent être supprimées involontairement. Il est toujours recommandé de vérifier d'abord les résultats avec l'option `--test` ou de sauvegarder les données importantes avant de les appliquer.

  • Recommandation: Vérification préalable avec l'option --test, sauvegarder les données importantes avant application

Commandes de la même catégorie