GNU/Linux >> Tutoriels Linux >  >> Linux

Listes de contrôle d'accès sur Linux expliquées

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

En tant qu'administrateur système, vous passez probablement un certain temps à configurer les autorisations des utilisateurs et des groupes sur votre système.

Les autorisations de fichiers sont déjà très pratiques pour donner des autorisations de lecture, d'écriture ou d'exécution sur des répertoires ou des fichiers.

Mais que se passe-t-il si nous avons besoin d'un moyen plus précis d'accorder des autorisations aux dossiers ou aux fichiers ?

Que se passe-t-il si je veux donner 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 didacticiel 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 pour configurer correctement un système Linux.

Prêt ?

Ce que vous allez apprendre

Si vous suivez ce tutoriel jusqu'au bout, vous allez apprendre les sujets suivants :

  • Quelles sont les listes de contrôle d'accès ? sont et comment ils peuvent être lus à partir de la commande ls ;
  • Comment définir les autorisations de base sur un fichier à l'aide de setfacl commande :
  • Comment lire les listes de contrôle d'accès à l'aide de getfacl commande ;
  • Qu'est-ce que le masque de liste de contrôle d'accès ? et comment il doit être lu ;
  • Quelles sont leslistes de contrôle d'accès par défaut sont et comment les utiliser efficacement

C'est un programme assez long, alors sans plus tarder, 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 sous Linux

Sous Linux, il existe deux manières de définir des autorisations pour les utilisateurs et les groupes :avec des autorisations de fichiers normales ou avec des listes de contrôle d'accès.

Définition de la liste de contrôle d'accès

Listes de contrôle d'accès sont utilisés sur les systèmes de fichiers Linux pour définir des autorisations 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.

Sous 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 voudrez peut-être accorder l'accès à un répertoire (la permission d'exécution par exemple) à un utilisateur spécifique sans avoir à mettre cet utilisateur dans le groupe du fichier.

C'est exactement pourquoi les listes de contrôle d'accès ont été inventées en premier lieu.

Répertorier la liste de contrôle d'accès

Sous 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 des ACL prédéfinies).

Pour voir 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 la liste des fichiers sur une instance minimale.

Maintenant que vous avez quelques notions de base 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éer des listes de contrôle d'accès sous Linux

Avant de commencer avec les commandes ACL, il est important que les packages soient installés sur votre hôte.

Vérification de l'installation des packages ACL

Ce ne sera peut-être pas le cas si vous choisissez d'avoir un serveur minimal en cours d'exécution.

Commencez par consulter l'aide relative au setfacl en exécutant la commande suivante

$ setfacl --help

Si votre hébergeur ne trouve pas la commande setfacl, assurez-vous d'avoir installé les packages nécessaires pour 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 pouvez voir les commandes d'aide cette fois.

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

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 dont vous devez vous souvenir :setfacl et getfacl.

Dans ce chapitre, nous allons examiner le setfacl commande comme getfacl est assez explicite.

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

Le setfacl a la syntaxe suivante

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

Où les accolades désignent l'une des options suivantes et les accolades régulières désignent 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 souhaitez 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  :il s'agit d'un paramètre facultatif, il peut être omis si vous souhaitez définir les entrées ACL pour chaque utilisateur ou pour chaque groupe sur votre hôte.
  • [r, w, x]  :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 devez écrire la commande suivante

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

Afin de définir les autorisations d'exécution pour tous les utilisateurs de votre hôte, vous devez écrire la commande suivante

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

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

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

Supposons maintenant que vous souhaitiez supprimer une entrée ACL d'un fichier.

Pour supprimer une entrée spécifique à l'utilisateur d'un fichier, vous devez spécifier l'option x.

Remarque :vous ne pouvez pas spécifier de droits à partir 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 les ACL liées aux groupes sur votre hébergeur, vous devez écrire la commande suivante

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

Maintenant que vous avez vu comment créer facilement des listes de contrôle d'accès sous 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.

Répertorier les listes de contrôle d'accès à l'aide de getfacl

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

Le getfacl peut être utilisé 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 affichées en haut ;
  • Autorisations utilisateur :vous trouverez d'abord les autorisations utilisateur normales, également appelées utilisateur propriétaire, suivies de toutes les entrées ACL spécifiques à l'utilisateur (appelées utilisateurs nommés)
  • Autorisations de groupe  :les groupes propriétaires sont présentés suivis d'entrées ACL spécifiques au groupe, également appelées groupes nommés
  • Masque :qui restreint les permissions accordées aux entrées ACL, le masque va être détaillé dans la section suivante ;
  • Autres autorisations  :ces autorisations sont toujours actives et il s'agit de la dernière catégorie explorée lorsqu'aucune autre autorisation 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 dans la dernière capture d'écran, il existe une entrée de masque entre les groupes nommés et les autres autorisations.

Mais à quoi sert ce masque ?

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

Le masque ACL est utilisé comme ensemble maximal d'autorisations ACL, quelles que soient les autorisations existantes qui dépassent le masque ACL.

Comme toujours, un diagramme vaut 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 souhaitez pas mettre à jour le masque avec l'indicateur -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 défini l'utilisateur "antoine" pour avoir toutes les autorisations sur le fichier.

Le masque est défini pour restreindre les autorisations de lecture et d'écriture.

Par conséquent, les "autorisations effectives" définies sur ce fichier pour cet utilisateur sont en lecture et en écriture, l'autorisation d'exécution n'est pas accordée.

Remarque :si votre ensemble maximal d'autorisations diffère de l'entrée de masque, une ligne effective calculant l'ensemble "réel" d'entrées ACL utilisées vous sera présentée.

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 en ce qui concerne les répertoires :vous devez choisir de créer des listes de contrôle d'accès par défaut.

Paramètres par défaut des listes de contrôle d'accès sont utilisés pour créer des entrées ACL sur un répertoire qui seront héritées par des objets dans ce répertoire comme des fichiers ou des 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 les 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 d'ACL à l'aide de la commande setfacl.

$ setfacl -d -m {u, g}:<name>:[r, w, x] <directory>

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

$ setfacl -d -m u::r directory

Désormais, 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éritera entrées ACL par défaut spécifiées dans le répertoire parent.

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

En fait, spécifier l'une des trois entrées créera les deux autres avec des autorisations 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>

Compte tenu de 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 dans les fichiers ou 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 devrez utiliser un récursif choix (-R)

$ setfacl -kR <directory>

Conclusion

Dans ce didacticiel, vous avez découvert les listes de contrôle d'accès sous Linux, les commandes getfacl et setfacl.

Vous en avez appris davantage sur le masque des listes de contrôle d'accès et sur la façon dont les ACL par défaut sont utilisées pour créer des entrées ACL sur les fichiers et les sous-répertoires contenus dans le répertoire parent.

Si vous êtes curieux d'en savoir plus sur l'administration système Linux, nous avons de nombreux autres tutoriels sur le sujet, assurez-vous de les lire !


Linux
  1. Une introduction aux listes de contrôle d'accès Linux (ACL)

  2. Surveillance de l'accès aux fichiers Linux ?

  3. Linux - Bloquer l'accès réseau d'un processus ?

  4. Commande ls sous Linux :17 exemples utiles expliqués

  5. UNIX/Linux :notions de base sur les listes de contrôle d'accès (ACL)

Contrôle d'accès basé sur les rôles Snowflake (RBAC) expliqué

Commande Tr sous Linux expliquée avec des exemples

Commande source sur Linux expliquée

Explication de la redirection d'entrée-sortie sur Linux

Commande d'écran sur Linux expliquée

Explication de la commande Arping sur Linux