Table des matières de l'article :
Les listes de contrôle d'accès Linux, appelées listes de contrôle d'accès (ACL), sont un outil essentiel pour obtenir un contrôle plus détaillé et granulaire des autorisations au sein du système de fichiers Linux. Même si elles peuvent sembler complexes au premier abord, les ACL sont essentielles pour gérer efficacement les autorisations, en particulier dans un environnement d'entreprise moderne où il est crucial de déterminer qui peut accéder à des informations spécifiques.
Dans le passé, l'accès aux systèmes de fichiers Linux était géré via un système d'autorisations plus général et moins spécifique. Toutefois, avec l’évolution des besoins des entreprises, il est devenu de plus en plus important de disposer d’un contrôle d’accès plus fin et personnalisé. Les ACL, une extension de la gestion traditionnelle des autorisations sous Unix, répondent à ce besoin.
Il est important de noter que le terme « ACL » peut avoir différentes significations selon le contexte. Pendant sous Linux, cela fait spécifiquement référence à la gestion des autorisations du système de fichiers, dans d'autres domaines, comme dans la gestion de l'accès aux services HTTP, indique le contrôle de l'accès à des services ou des ressources spécifiques. Bien que l'acronyme reste le même, sa signification varie selon le contexte d'utilisation.
D'un point de vue historique, POSIX a proposé quelques versions (POSIX 1003.1e et POSIX 1003.2c) pour étendre la gestion des autorisations dans les systèmes Unix, mais celles-ci n'ont pas été finalisées. Cependant, bon nombre de ces extensions ont été publiées et adoptées par divers systèmes Unix, y compris les systèmes GNU/Linux. Les extensions appelées « ACL », ou « ACL POSIX » dans certains contextes, ne représentent qu'une partie de ces propositions et sont particulièrement pertinentes pour la gestion des autorisations dans les systèmes GNU/Linux. Ce chapitre se concentre sur la description et la mise en œuvre des ACL dans de tels systèmes.
Revoir les bases des autorisations sous Linux
Le système de fichiers Linux nous offre trois types de permissions. Voici une revue simplifiée :
- U ser (ou utilisateur propriétaire)
- G groupe (ou groupe propriétaire)
- Autre (tous les autres)
Avec ces autorisations, nous pouvons accorder trois (en fait cinq, mais nous y reviendrons dans une minute) types d'accès :
- Lire _
- Écrire _
- e X exécuter
Ces niveaux d'accès sont souvent adéquats dans de nombreux cas. Supposons que vous disposiez d'un répertoire dans lequel résident les fichiers de votre service comptable. Vous pouvez définir ces autorisations sur :
drwxrwxr-x 2 accounting accounting 12 Jan 8 15:13
L'utilisateur du service de comptabilité (le propriétaire de l'utilisateur) peut lire et écrire dans l'annuaire et les membres du accounting
groupe (ou groupe propriétaire) peut lire et écrire. D'autres (utilisateurs n'appartenant pas au service de comptabilité) peuvent cependant voir et exécuter ce qu'il y a à l'intérieur, ce que certains pourraient penser que c'est une mauvaise idée.
Donc, nous pourrions changer les autorisations en ceci :
drwxrwx--- 2 accounting accounting 12 Jan 8 15:13 .
De cette façon, les autres utilisateurs qui ne sont ni propriétaires du dossier ni membres du groupe pourront faire n'importe quoi, car aucune autorisation de lecture, d'écriture ou d'exécution n'est spécifiée.
Activer la prise en charge ACL sous Linux
Pour activer la prise en charge des listes de contrôle d'accès (ACL) sous Linux, un travail spécifique est requis sur la configuration du système de fichiers via le /etc/fstab
. Ce fichier, situé dans le chemin /etc/fstab
, joue un rôle crucial dans la gestion des systèmes Linux, car il définit comment les disques durs ou les partitions doivent être automatiquement montés par le système d'exploitation au démarrage et quelles options de montage doivent être appliquées.
Le fichier /etc/fstab
contient une série d'entrées, chacune représentant un périphérique de stockage ou une partition, et spécifie comment celles-ci doivent être intégrées dans le système de fichiers global. Ces entrées incluent des détails tels que l'identifiant unique du périphérique, le point de montage dans le système de fichiers (c'est-à-dire l'emplacement où le contenu du périphérique sera accessible), le type de système de fichiers (tel que ext4, xfs, btrfs, etc.), et un certain nombre d'options de montage.
Pour activer les ACL, il est indispensable d'ajouter l'option acl
aux entrées pertinentes du fichier /etc/fstab
. Cet ajout indique au système que la prise en charge des ACL doit être activée lors du montage du système de fichiers ou de la partition spécifié. Sans cette spécification, les ACL ne pourraient pas être correctement appliquées ou gérées sur ce système de fichiers ou cette partition particulière, limitant ainsi la capacité d'affiner l'administration des autorisations de fichiers.
Exemple de configuration fstab avec les ACL activées
Voici un exemple de ce à quoi pourrait ressembler une entrée dans le fichier fstab
avec les ACL activées :
UUID=1234abcd-12ab-34cd-56ef-1234567890ab /exemple ext4 valeurs par défaut, acl 0 2
Dans cet exemple, nous montons une partition avec UUID 1234abcd-12ab-34cd-56ef-1234567890ab
au point de montage /example
avec le système de fichiers ext4
. L'option defaults
applique un ensemble d'options de montage prédéfinies, tandis que acl
Activez explicitement la prise en charge des ACL.
Considérations sur les différents systèmes de fichiers
Il est important de noter que même si les systèmes de fichiers comme ext3
ed ext4
exiger l'activation explicite des ACL via fstab
, d'autres systèmes de fichiers modernes comme XFS
o Btrfs
avoir la prise en charge ACL activée par défaut. Cela signifie que pour ces derniers systèmes de fichiers, il n'est pas nécessaire de modifier le fichier fstab
pour activer les ACL, sauf si vous souhaitez modifier les paramètres par défaut.
Si vous vous demandez quel système de fichiers est le plus adapté à vos besoins, lisez notre article sur le sujet : Guide des systèmes de fichiers pour Linux
Affichage de l'ACL actuelle
Imaginons un scénario dans lequel nous avons un stagiaire en comptabilité nommé Kenny, qui a besoin d'accéder à certains fichiers, peut-être ceux de Fred, son manager. Ou encore, imaginez une situation dans laquelle le service commercial a besoin d'accéder aux fichiers comptables appartenant à Fred pour créer des factures permettant à l'équipe de Fred de facturer les clients. Cependant, nous ne souhaitons pas que l'équipe commerciale ait accès à d'autres rapports générés par l'équipe de Fred. Ces situations posent un défi en termes de gestion des autorisations : dans un système d'autorisations standard, chaque fichier et répertoire ne peut avoir qu'un seul propriétaire et un groupe d'utilisateurs associés. C'est dans ces circonstances que les listes de contrôle d'accès (ACL) Linux deviennent particulièrement utiles.
Les ACL nous permettent d'attribuer un ensemble d'autorisations plus détaillé et spécifique à un fichier ou un répertoire, sans nécessairement avoir à modifier les autorisations et la propriété sous-jacentes. En pratique, ils nous offrent la possibilité d'« ajouter » des accès pour d'autres utilisateurs ou groupes, en plus de ceux déjà existants.
Pour afficher l'ACL actuelle d'un fichier ou d'un répertoire, nous utilisons la commande getfacl
. Par example:
[racine]# getfacl / comptabilité getfacl : Suppression du « / » initial des noms de chemin absolus #fichier : comptabilité # propriétaire : comptabilité # groupe : comptabilité utilisateur ::rwx groupe ::rwx autre::---
Dans cet exemple, nous pouvons voir qu'il n'y a actuellement aucune ACL supplémentaire dans ce répertoire, car les seules autorisations répertoriées sont les autorisations standard pour l'utilisateur, le groupe et autres. Dans ce cas précis, il est normal de s'attendre à cette situation, surtout si le répertoire vient d'être créé dans un environnement de test et qu'aucune autre opération n'a été effectuée autre que l'attribution de propriété.
Commençons donc par ajouter une ACL par défaut.
Définition d'une ACL sous Linux
La configuration des listes de contrôle d'accès (ACL) sous Linux offre une flexibilité significative dans la gestion des autorisations de fichiers. La syntaxe de définition d'une ACL est structurée comme suit :
fichier setfacl [option] [action/spécification]
L'option « action » peut être -m
(éditeur -x
(supprimer), et la spécification indique l'utilisateur ou le groupe suivi des autorisations que vous souhaitez définir. Par exemple, pour définir une ACL par défaut sur un répertoire, nous utilisons l'option -d
(défaut). La commande suivante définit l'ACL par défaut sur le répertoire /accounting
:
[racine]# setfacl -d -m comptabilité:rwx / comptabilité
Après avoir exécuté cette commande, nous pouvons afficher les ACL par défaut pour ce répertoire avec :
[racine]# getfacl / comptabilité # sortir: #fichier : comptabilité # propriétaire : comptabilité # groupe : comptabilité utilisateur :: rwx groupe ::rwx autre::--- par défaut: utilisateur :: rwx par défaut : utilisateur : comptabilité : rwx par défaut: groupe :: rwx par défaut: masque :: rwx par défaut:autre::---
Scénarios d'utilisation des ACL
La syntaxe de définition d'une ACL sous Linux est généralement structurée comme suit :
fichier setfacl [option] [action/spécification]
L’« action » peut être -m
(éditeur -x
(suppression). La « spécification » fait référence à l'utilisateur ou au groupe suivi des autorisations que vous souhaitez définir. Dans cet exemple, nous utiliserons l'option -d
(défaut). Pour définir l'ACL par défaut d'un répertoire, vous exécuterez la commande :
[racine]# setfacl -d -m utilisateur: comptabilité: rwx / comptabilité
Après avoir exécuté cette commande, nous pouvons vérifier les ACL par défaut pour ce répertoire :
[racine]# getfacl / comptabilité [root]# getfacl : Suppression du « / » initial des noms de chemin absolus #fichier : comptabilité # propriétaire : comptabilité # groupe : comptabilité utilisateur :: rwx groupe ::rwx autre::--- par défaut: utilisateur :: rwx par défaut : utilisateur : comptabilité : rwx par défaut: groupe :: rwx par défaut: masque :: rwx par défaut:autre::---
Supposons maintenant que Fred crée un fichier dans ce répertoire :
[fred]$ test tactile [fred]$ls -la total 0 drwxrwx---+ 2 comptabilité comptabilité 18 janvier 8 17:51 . dr-xr-xr-x. 18 racine racine 262 8 janvier 15:13 .. -rw-rw----+ 1 fred comptabilité 0 8 janvier 17:51 test [fred]$ test getfacl # fichier : tester # propriétaire : Fred # groupe : comptabilité utilisateur ::rw- utilisateur: comptabilité: rwx #effectif: rw- group::rwx #effectif:rw-
Si au contraire Kenny essaie de créer un fichier, puisqu'il ne fait pas partie du groupe accounting
, il n'aura pas la permission. Cependant, nous souhaitons que Kenny ait une expérience professionnelle positive, nous lui accordons donc l'accès à l'annuaire. accounting
et on lui permet de créer de nouveaux fichiers :
[root@lab1 comptabilité]# setfacl -m utilisateur:kenny:rwx /accounting [racine]# getfacl . # des dossiers: . # propriétaire : comptabilité # groupe : comptabilité utilisateur ::rwx utilisateur:kenny:rwx
Mais si nous ne voulons pas que Kenny crée des fichiers dans le répertoire accounting
, mais seulement qu'il lit les fichiers existants et crée de nouveaux fichiers dans son dossier personnel, nous pouvons définir ses autorisations comme ceci :
[root@lab1 comptabilité]# setfacl -m utilisateur:kenny:r-x /accounting [racine]# getfacl . # des dossiers: . # propriétaire : comptabilité # groupe : comptabilité utilisateur ::rwx utilisateur:kenny:rx
Nous créons ensuite un dossier personnel pour Kenny, lui en donnons la propriété et faisons en sorte que le groupe accounting
propriétaire du groupe, afin que les autres membres du groupe puissent voir ce qu'il contient :
[root@lab1 comptabilité]# mkdir ./kenny [racine]# chown kenny:comptabilité ./kenny [racine]# getfacl ./kenny # fichier : Kenny # propriétaire : Kenny # groupe : comptabilité utilisateur ::rwx groupe ::rwx
Kenny peut maintenant voir le répertoire accounting
, mais ne peut créer des fichiers que dans son propre dossier :
[root@lab1 comptabilité]# sur Kenny [kenny]$ test tactile touch : impossible de toucher à « test » : autorisation refusée [kenny]$cd ./kenny [kenny]$ test tactile [kenny]$ls test
Si nous accordons à Kenny une promotion au poste de réviseur principal et souhaitons que son travail reste confidentiel, nous pouvons limiter l'accès à Fred :
[racine]# setfacl -m utilisateur:fred:- ./kenny [racine]# getfacl ./kenny # fichier : Kenny # propriétaire : Kenny # groupe : comptabilité utilisateur ::rwx utilisateur:comptabilité:--- utilisateur:fred:---
Et si nous voulons que personne d'autre que Kenny ne voie son travail ?
[racine]# setfacl -m groupe: comptabilité:- ./kenny [racine]# getfacl ./kenny # fichier : Kenny # propriétaire : Kenny # groupe : comptabilité utilisateur :: rwx groupe:comptabilité:---
Conclusion : comprendre et appliquer les ACL sous Linux
Compte tenu de leur complexité et de leur polyvalence, il est fortement recommandé de consacrer du temps à la lecture et à la compréhension des pages du manuel (man pages
) Pour setfacl
e getfacl
. Ces pages offrent un guide complet et détaillé sur la façon d'utiliser ces outils, y compris les différentes options et indicateurs disponibles, fournissant des exemples pratiques et des explications approfondies.
En plus des fonctionnalités de base, setfacl
e getfacl
ils offrent un certain nombre d'options avancées qui peuvent être extrêmement utiles dans des scénarios spécifiques. Par exemple, vous pouvez configurer des ACL par défaut pour les nouveaux répertoires et fichiers d'un répertoire, ou gérer les masques ACL qui affectent les autorisations réelles.
Expérimentez dans un environnement contrôlé
Pour bien comprendre le fonctionnement des ACL, il est préférable d’expérimenter dans un environnement de test sécurisé. La création de différents scénarios, tels que la gestion des autorisations pour différents utilisateurs et groupes, peut aider à visualiser comment les ACL affectent l'accès aux fichiers et aux répertoires. Ce type de pratique est essentiel pour développer une solide intuition sur comment et quand utiliser les ACL dans des contextes réels.
Applications pratiques
Les ACL peuvent être particulièrement utiles dans les environnements multi-utilisateurs, tels que les serveurs d'entreprise, où différents départements ou équipes ont besoin d'un accès spécifique à certains fichiers. Ils sont également essentiels pour la sécurité des données, vous permettant de restreindre l'accès aux informations sensibles et garantissant que seuls les utilisateurs autorisés peuvent modifier ou visualiser certains fichiers.
Prendre en compte les meilleures pratiques
Lorsque vous travaillez avec des ACL, il est important de suivre les meilleures pratiques, par exemple en veillant à ne pas accorder d'autorisations excessives qui pourraient compromettre la sécurité du système. Il est également crucial de suivre les modifications que vous apportez, en particulier dans les environnements de production, afin d'éviter tout problème d'accès ou de sécurité.
conclusion
En conclusion, même si les ACL peuvent sembler intimidantes au premier abord en raison de leur complexité, une fois comprises, elles s'avèrent être un outil indispensable pour une gestion sophistiquée et détaillée des autorisations sous Linux. Passez du temps à les comprendre et à les mettre en pratique pour exploiter pleinement leur potentiel, rendant votre système plus sûr, plus efficace et adapté aux besoins spécifiques de votre environnement de travail.