Ce tutoriel détaille les listes de contrôle d’accès sur Linux, à quoi elles servent et comment les gérer.

En tant qu’administrateur système, vous passez probablement pas mal de temps à configurer les permissions pour les utilisateurs et les groupes sur votre système.

Les permissions sur les fichiers sont déjà assez pratiques pour donner des permissions de lecture, d’écriture ou d’exécution aux répertoires ou aux fichiers.

Mais que faire si nous avons besoin d’un moyen plus précis pour donner des permissions aux dossiers ou aux fichiers ?

Que faire si je veux donner l’accès à un fichier à un utilisateur spécifique ou à un groupe spécifique, qui n’est pas le propriétaire actuel du fichier ?

C’est exactement ce que les listes de contrôle d’accès, également raccourcies ACL, résolvent sur un système Linux.

Dans le tutoriel d’aujourd’hui, nous examinons de très près les listes de contrôle d’accès, ce qu’elles sont et comment elles sont utilisées afin de configurer correctement un système Linux.

Prêts ?

Table des matières

Ce que vous allez apprendre

Si vous suivez ce tutoriel jusqu’à la fin, vous allez apprendre les sujets suivants :

  • Ce que sont les listes de contrôle d’accès et comment elles peuvent être lues à partir de la commande ls ;
  • Comment définir les permissions de base sur un fichier en utilisant la commande setfacl :
  • Comment lire les listes de contrôle d’accès à l’aide de la commande getfacl;
  • Qu’est-ce que le masque de la liste de contrôle d’accès et comment il doit être lu;
  • Quelles sont les valeurs par défaut des listes de contrôle d’accès et comment elles peuvent être utilisées efficacement

C’est un programme assez long, alors sans plus attendre, commençons par une définition rapide de ce que sont les listes de contrôle d’accès.

Les bases des listes de contrôle d’accès sur Linux

Sur Linux, il existe deux façons de définir les permissions pour les utilisateurs et les groupes : avec les permissions de fichiers ordinaires ou avec les listes de contrôle d’accès.

Définition des listes de contrôle d’accès

Les listes de contrôle d’accès sont utilisées sur les systèmes de fichiers Linux pour définir des permissions personnalisées et plus personnalisées sur les fichiers et les dossiers. Les ACL permettent aux propriétaires de fichiers ou aux utilisateurs privilégiés d’accorder des droits à des utilisateurs spécifiques ou à des groupes spécifiques.

Dans Linux, comme vous le savez probablement, les permissions sont divisées en trois catégories : une pour le propriétaire du fichier, une pour le groupe et une pour les autres.

Cependant, dans certains cas, vous pouvez vouloir accorder l’accès à un répertoire (la permission d’exécuter par exemple) à un utilisateur spécifique sans avoir à mettre cet utilisateur dans le groupe du fichier.

C’est exactement la raison pour laquelle les listes de contrôle d’accès ont été inventées en premier lieu.

Liste de contrôle d’accès

Sur Linux, les listes de contrôle d’accès ne sont pas activées lorsque vous créez un nouveau fichier ou répertoire sur votre hôte (sauf si un répertoire parent a certaines ACL prédéfinies).

Pour savoir si des listes de contrôle d’accès sont définies pour un fichier ou un répertoire, exécutez la commande ls et recherchez un caractère « + » à la fin de la ligne d’autorisation.

$ ls -l

Pour montrer la différence, voici la différence lors de l’énumération des fichiers sur une instance minimale.

Maintenant que vous avez quelques bases sur les listes de contrôle d’accès, voyons comment vous pouvez commencer à créer des ACL de base pour vos fichiers et répertoires.

Création de listes de contrôle d’accès sur Linux

Avant de commencer avec les commandes ACL, il est important d’avoir les paquets installés sur votre hôte.

Vérification de l’installation des paquets ACL

Cela peut ne pas être le cas si vous avez choisi de faire tourner un serveur minimal.

Commencez par vérifier l’aide relative au setfacl en exécutant la commande suivante

$ setfacl --help

Si votre hôte ne trouve pas la commande setfacl, assurez-vous d’avoir installé les paquets nécessaires à la gestion des ACL.

$ sudo apt-get install acl -y

Notez que vous aurez besoin des privilèges sudo sur Debian 10 pour exécuter cette commande.

Exécutez la commande setfacl et assurez-vous que vous êtes en mesure de voir les commandes d’aide cette fois-ci.

Maintenant que votre hôte est correctement configuré, voyons comment la commande setfacl fonctionne.

Configuration des listes de contrôle d’accès à l’aide de setfacl

Avec les listes de contrôle d’accès, il y a deux commandes principales que vous devez vous rappeler : setfacl et getfacl.

Dans ce chapitre, nous allons jeter un coup d’œil à la commande setfacl car celle de getfacl est assez explicite.

La commande setfacl est utilisée sur Linux pour créer, modifier et supprimer des listes de contrôle d’accès sur un fichier ou un répertoire.

La setfacl a la syntaxe suivante

$ setfacl {-m, -x} {u, g}:<name>: <file, directory>

Où les crochets curly signifient l’une des options suivantes et les crochets réguliers un ou plusieurs éléments.

  • -m : signifie que vous voulez modifier une ou plusieurs entrées ACL sur le fichier ou le répertoire.
  • -x : signifie que vous voulez supprimer une ou plusieurs entrées ACL sur un fichier ou un répertoire.
  • {u, g} : si vous voulez modifier l’ACL pour un utilisateur ou pour un groupe.
  • nom : c’est un paramètre facultatif, il peut être omis si vous voulez définir les entrées ACL pour chaque utilisateur ou pour chaque groupe sur votre hôte.
  • : afin de définir les autorisations de lecture, d’écriture ou d’exécution sur le fichier ou le répertoire.

Par exemple, afin de définir des autorisations d’écriture spécifiques pour un utilisateur sur un fichier, vous écrirez la commande suivante

$ setfacl -m u:user:w <file, directory>

Afin de définir des autorisations d’exécution pour tous les utilisateurs sur votre hôte, vous écririez la commande suivante

$ setfacl -m u::x <file, directory>

Pour définir des permissions complètes pour un groupe spécifique sur votre hôte, vous écririez le setfacl de cette façon

$ setfacl -m g:group:rwx <file, directory>

Maintenant, disons que vous voulez supprimer une entrée ACL d’un fichier.

Afin de supprimer une entrée spécifique à l’utilisateur d’un fichier, vous spécifieriez l’option x.

Note : vous ne pouvez pas spécifier les droits d’une seule entrée ACL, ce qui signifie que vous ne pouvez pas supprimer les autorisations d’écriture, en gardant les autorisations de lecture ACL actives.

$ setfacl -x u:<user> <file, directory>

De même, pour supprimer l’ACL liée aux groupes sur votre hôte, vous écrirez la commande suivante

$ setfacl -x g:<group> <file, directory>

Maintenant que vous avez vu comment vous pouvez créer des listes de contrôle d’accès facilement sur Linux, il est temps de voir comment vous pouvez vérifier les listes de contrôle d’accès existantes sur les fichiers et les répertoires.

Lister les listes de contrôle d’accès en utilisant getfacl

La commande getfacl est utilisée sur Linux pour imprimer une liste complète de toutes les permissions régulières et des permissions des listes de contrôle d’accès sur un fichier ou un répertoire.

La commande getfacl peut être utilisée avec la syntaxe suivante

$ getfacl <file, directory>

La commande getfacl est divisée en plusieurs catégories :

  • Nom de fichier, propriétaire et groupe : les informations sur la propriété de l’utilisateur et du groupe sont présentées en haut;
  • Permissions de l’utilisateur : d’abord, vous trouveriez les permissions de l’utilisateur ordinaire, également appelé l’utilisateur propriétaire, suivi de toute entrée ACL spécifique à l’utilisateur (appelée utilisateurs nommés)
  • Permissions du groupe : les groupes propriétaires sont présentés suivis par les entrées ACL spécifiques au groupe, également appelées groupes nommés
  • Masque : qui restreint les permissions données aux entrées ACL, le masque va être détaillé dans la section suivante;
  • Autres permissions : ces permissions sont toujours actives et c’est la dernière catégorie explorée lorsqu’aucune autre permission ne correspond à l’utilisateur ou au groupe actuel.

Travailler avec le masque des listes de contrôle d’accès

Comme vous l’avez probablement vu sur la dernière capture d’écran, il y a une entrée de masque entre les groupes nommés et les autres permissions.

Mais à quoi sert ce masque ?

Le masque ACL est différent du masque de création de fichier (umask) et il est utilisé afin de restreindre les entrées ACL existantes sur un fichier ou un répertoire.

Le masque ACL est utilisé comme ensemble maximal de permissions ACL indépendamment des permissions existantes qui dépassent le masque ACL.

Comme toujours, un diagramme parle cent mots.

Le masque ACL est mis à jour chaque fois que vous exécutez une commande setfacl, sauf si vous spécifiez que vous ne voulez pas mettre à jour le masque avec le drapeau -n.

Pour empêcher la mise à jour du masque, exécutez le setfacl avec la commande suivante

$ setfacl -n -m u:antoine:rwx <file, directory>

Comme vous pouvez le voir dans cet exemple, j’ai configuré l’utilisateur « antoine » pour qu’il ait toutes les permissions sur le fichier.

Le masque est défini pour restreindre les permissions aux permissions de lecture et d’écriture.

En conséquence, les « permissions effectives » définies sur ce fichier pour cet utilisateur sont celles de lecture et d’écriture, la permission d’exécution n’est pas accordée.

Note : si votre ensemble maximal de permissions diffère de l’entrée du masque, il vous sera présenté une ligne effective calculant l’ensemble « réel » des entrées ACL utilisées.

Création de listes de contrôle d’accès par défaut sur les répertoires

Comme déjà mentionné dans cet article, il est possible de créer des entrées ACL sur les répertoires et elles fonctionnent de la même manière que les listes de contrôle d’accès aux fichiers.

Cependant, il y a une petite différence quand il s’agit de répertoires : vous avez la possibilité de créer des listes de contrôle d’accès par défaut.

Les listes de contrôle d’accès par défaut sont utilisées pour créer des entrées ACL sur un répertoire qui seront héritées par les objets de ce répertoire comme les fichiers ou les sous-répertoires.

Lors de la création d’entrées ACL par défaut :

  • Les fichiers créés dans ce répertoire héritent des entrées ACL spécifiées dans le répertoire parent
  • Les sous-répertoires créés dans ce répertoire héritent des entrées ACL ainsi que des entrées ACL par défaut du répertoire parent.

Pour créer des entrées ACL par défaut, spécifiez l’option -d lors de la définition de l’ACL à l’aide de la commande setfacl.

$ setfacl -d -m {u, g}:<name>: <directory>

Par exemple, pour attribuer des autorisations de lecture à tous les fichiers créés dans un répertoire, vous devez exécuter la commande suivante

$ setfacl -d -m u::r directory

Maintenant, lorsqu’un fichier est créé dans ce répertoire acl, vous pouvez voir que les entrées ACL par défaut sont appliquées au fichier.

De même, lorsqu’un répertoire est créé dans le répertoire acl, il hérite des entrées ACL par défaut spécifiées dans le répertoire parent.

Notez qu’il est recommandé de spécifier des permissions par défaut pour les trois catégories (utilisateur, groupe et autre).

En fait, la spécification d’une des trois entrées créera les deux autres avec des permissions liées au masque de création de fichier.

Suppression des listes de contrôle d’accès par défaut sur les répertoires

Pour supprimer les listes de contrôle d’accès existantes par défaut sur les répertoires, utilisez le drapeau -k avec la commande setfacl.

$ setfacl -k <directory>

Selon l’exemple que nous avons spécifié précédemment, voici comment supprimer les entrées par défaut

$ setfacl -k acl-directory

Notez que la suppression des entrées ACL du répertoire parent ne supprime pas les entrées ACL des fichiers ou des répertoires contenus dans le répertoire parent.

Pour supprimer les entrées ACL par défaut dans un répertoire et tous les sous-répertoires, vous devriez utiliser une option récursive (-R)

$ setfacl -kR <directory>

Conclusion

Dans ce tutoriel, vous avez appris les listes de contrôle d’accès sous Linux, la commande getfacl et la commande setfacl.

Vous avez appris plus sur le masque des listes de contrôle d’accès et comment les ACL par défaut sont utilisées afin de créer des entrées ACL sur les fichiers et les sous-répertoires contenus dans le répertoire parent.

Si vous êtes curieux de l’administration du système Linux, nous avons beaucoup plus de tutoriels sur le sujet, assurez-vous de les lire !

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.