GNU/Linux >> Tutoriels Linux >  >> Linux

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

L'un des défis de l'administration de Linux dans l'environnement commercial moderne est l'attente selon laquelle nous pouvons et devons gérer qui a accès à quelles informations. Il était une fois, les seules personnes qui avaient besoin d'accéder aux systèmes de fichiers Linux pouvaient être classées de manière générale :via les autorisations du système de fichiers Linux.

Réviser les bases

Le système de fichiers Linux nous donne trois types d'autorisations. Voici une revue simplifiée :

  • U ser (ou utilisateur propriétaire)
  • G groupe (ou groupe propriétaire)
  • O là (tous les autres)

Avec ces autorisations, nous pouvons accorder trois types d'accès (en fait cinq, mais nous y reviendrons dans une minute) :

  • R lire
  • W rite
  • eX exécuter

Ces niveaux d'accès sont souvent adéquats dans de nombreux cas. Supposons que vous disposiez d'un répertoire contenant les fichiers du service de comptabilité. Vous pouvez définir ces autorisations sur :

drwxrwxr-x  2 accounting accounting  12 Jan  8 15:13

L'utilisateur du service comptable (le propriétaire de l'utilisateur) peut lire et écrire dans l'annuaire, et les membres du service 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 qui s'y trouve, ce que certains pourraient penser que c'est une mauvaise idée.

[ Également populaire : Linux sysadmin basics :User account management ]

Donc, nous pourrions changer les permissions en ceci :

drwxrwx---  2 accounting accounting  12 Jan  8 15:13 .

Remarque : Vous pouvez également utiliser des autorisations spéciales pour contrôler des paramètres tels que le propriétaire réel des nouveaux fichiers créés dans ce répertoire, ainsi que le bit collant qui contrôle si les membres du groupe peuvent supprimer les fichiers des autres. Cependant, cela sort du cadre de cette discussion.

Affichage de l'ACL actuelle

Et si vous avez un stagiaire en comptabilité (Kenny) qui doit être capable de lire certains fichiers (ou même uniquement les fichiers appartenant à Fred, son manager) ? Ou peut-être que les personnes du service commercial ont également besoin d'accéder à la accounting fichiers du propriétaire pour créer des factures pour l'équipe de Fred afin de facturer les clients, mais vous ne voulez pas que l'équipe de vente voie les autres rapports générés par l'équipe de Fred. Cette situation peut être délicate car, avec des autorisations régulières, chaque fichier et répertoire ne peut avoir qu'un seul propriétaire d'utilisateur et de groupe à la fois. Ce type de situation est ce que les listes de contrôle d'accès (ACL) Linux étaient censées résoudre.

Les ACL nous permettent d'appliquer un ensemble plus spécifique d'autorisations à un fichier ou à un répertoire sans (nécessairement) modifier la propriété et les autorisations de base. Ils nous permettent d'"ajouter" l'accès à d'autres utilisateurs ou groupes.

Nous pouvons voir l'ACL actuel en utilisant le getfacl commande :

[root]# getfacl /accounting
getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---

Nous pouvons voir qu'en ce moment, il n'y a pas d'ACL sur ce répertoire car les seules autorisations répertoriées sont pour l'utilisateur, le groupe et autre. Dans ce cas, c'est normal, car je viens de créer ce répertoire dans le laboratoire et je n'ai rien fait d'autre que d'attribuer la propriété. Commençons donc par ajouter une ACL par défaut :

Définir une ACL

La syntaxe pour définir une ACL ressemble à ceci :

setfacl [option] [action/specification] file

L''action' serait -m (modifier) ​​ou -x (supprimer), et la spécification serait l'utilisateur ou le groupe suivi des autorisations que nous voulons définir. Dans ce cas, nous utiliserions l'option -d (par défaut). Ainsi, pour définir l'ACL par défaut pour ce répertoire, nous exécuterions :

[root]# setfacl -d -m accounting:rwx /accounting

Après quoi, nous pouvons maintenant voir les informations ACL par défaut pour ce répertoire :

[root]# getfacl /accounting
[root]# getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---
default:user::rwx
default:user:accounting:rwx
default:group::rwx
default:mask::rwx
default:other::---

Et si Fred crée un fichier dans ce répertoire ?

[fred]$ touch test
[fred]$ ls -la
drwxrwx---+  2 accounting accounting  18 Jan  8 17:51 .
dr-xr-xr-x. 18 root  root  262 Jan  8 15:13 ..
-rw-rw----+  1 fred  accounting  0 Jan  8 17:51 test
[fred]$ getfacl test
# file: test
# owner: fred
# group: accounting
user::rw-
user:accounting:rwx  #effective:rw-
group::rwx  #effective:rw-

Que se passe-t-il si Kenny essaie de créer un fichier ? Vous pouvez le deviner car kenny n'est pas dans la accounting groupe, il n'aura pas la permission. Mais nous voulons que Kenny ait une bonne expérience de travail avec nous, nous devons donc lui donner la possibilité de voir quels fichiers se trouvent dans la accounting répertoire, et nous voulons qu'il puisse créer de nouveaux fichiers :

[root@lab1 accounting]setfacl -m kenny:rwx /accounting
[root]getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
user:kenny:rwx

Jusqu'ici tout va bien. Mais que se passe-t-il si nous ne voulons pas que cet utilisateur crée des fichiers dans la accounting annuaire? Au lieu de cela, nous voulons seulement le laisser lire les fichiers là-bas, et il peut créer de nouveaux fichiers dans son propre dossier.

[ Article connexe : Principes de base de l'administrateur système Linux :gestion des comptes utilisateur avec les UID et les GID ]

Nous pouvons définir l'accès de Kenny sur la accounting dossier comme celui-ci :

[root@lab1 accounting]# setfacl -m kenny:r-x /accounting
[root]# getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
User:kenny:r-x

Maintenant, nous faisons de Kenny son propre dossier, lui donnons la propriété, puis faisons la accounting regrouper le propriétaire du groupe afin que d'autres personnes de la accounting groupe peut voir ce qu'il y a dedans :

[root@lab1 accounting]# mkdir ./kenny
[root]# chown kenny:accounting ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:rwx
group::rwx

Vous avez créé un dossier dans la accounting groupe appartenant à l'utilisateur kenny . Il peut maintenant voir le dossier comptable, mais ne crée que des fichiers dans son propre dossier :

[root@lab1 accounting]# su kenny
[kenny]$ touch test
touch: cannot touch ‘test’: Permission denied
[kenny]$ cd ./kenny
[kenny]$ touch test
[kenny]$ ls
test

Notez que parce que le dossier appartient à la accounting groupe, n'importe qui dans ce groupe peut y placer des fichiers. Parce que nous avons affaire à un stagiaire, ce facteur est probablement correct. Cependant, que se passe-t-il si nous donnons à Kenny une promotion au poste d'auditeur en chef et que nous voulons garder son travail secret pour Fred ?

[root]# setfacl -m fred:- ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---

Et si nous ne voulions personne pour voir sur quoi travaille Kenny ?

[root]# setfacl -m g:accounting:- ./kenny

Remarque : Lorsque nous voulons définir un groupe ACL, nous devons le spécifier en mettant g: devant le nom du groupe. Pour les utilisateurs, changez simplement le g à un u , mais setfacl supposera que nous parlons d'un utilisateur si vous ne mettez rien à cet endroit.

Nous devons encore supprimer les autorisations de base du propriétaire du groupe afin que le reste de l'équipe comptable ne puisse pas fouiner dans les rapports de Kenny :

[root]# chmod g-rwx ./kenny
[root]# ls -al
total 0
drwxrwx-wx+  3 accounting accounting  44 Jan  9 16:38 .
dr-xr-xr-x. 18 root       root       262 Jan  8 15:13 ..
drwx------+  2 kenny      accounting  18 Jan  9 17:07 kenny
-rw-rw----+  1 root       root         0 Jan  9 16:33 test
-rw-rw----+  1 kenny      accounting   0 Jan  9 16:27 test2
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
group::rwx  #effective:---
[root]# su jan
[jan]$ touch ./kenny/test
touch: cannot touch ‘./kenny/test’: Permission denied

Maintenant, nous pouvons gérer qui d'autre peut voir ou écrire dans le dossier de Kenny sans changer la propriété. Donnons au PDG (Lisa, qui n'est pas membre de l'équipe comptable et n'aura pas accès au reste du dossier) accès aux affaires de Kenny :

[root@lab1 accounting]# useradd lisa
[root]# setfacl -m u:lisa:rwx ./kenny
[root]# su lisa
[lisa]$ touch ./kenny/lisa
[lisa]$ ls ./kenny
lisa  test
[lisa]$ touch test
touch: cannot touch ‘test’: Permission denied
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
user:lisa:rwx
group::rwx
group:accounting:---

Notez à nouveau que les autorisations du propriétaire du groupe restent largement ouvertes, mais le groupe de comptabilité (qui est toujours le propriétaire) n'a plus accès à ce dossier. Alors, à qui appartient-il ?

drwxrwx---+  2 kenny  accounting  30 Jan  9 17:16 kenny

Cette partie est délicate. Il est utile de savoir que nous pouvons supprimer les autorisations du propriétaire sans modifier le propriétaire, mais vous voudrez peut-être vous demander si c'est le résultat que vous souhaitez.

Conclusion

Ce sont donc les bases. Les ACL peuvent prêter à confusion, je vous encourage donc à donner les pages de manuel pour setfacl et getfacl une bonne lecture. Il y a beaucoup plus de choses intéressantes et utiles que vous pouvez faire avec ces outils, mais j'espère que vous en comprenez maintenant assez pour vous lancer.

[ Voulez-vous essayer Red Hat Enterprise Linux ? Télécharge le maintenant gratuitement. ]


Linux
  1. Listes de contrôle d'accès et lecteurs externes sous Linux :ce que vous devez savoir

  2. Introduction aux commandes Linux chgrp et newgrp

  3. Introduction à Nmap sur Kali Linux

  4. RHEL 7 - Notes RHCSA - Créer et gérer des listes de contrôle d'accès (ACL)

  5. Comment configurer ACL (listes de contrôle d'accès) dans le système de fichiers Linux

Contrôle audio avancé sous Linux

Une introduction au navigateur Vivaldi sous Linux

Introduction à la gestion des conteneurs Linux

Introduction au système de contrôle de version

Comment autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux

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