Comment les autorisations ACL sont-elles traitées et dans quel ordre s'appliquent-elles à une action utilisateur donnée?

21

CentOS 6.4

J'essaie de mieux comprendre comment les règles ACL du système de fichiers sont traitées et dans quel ordre les règles ACL s'appliquent.

Par exemple, supposons que les utilisateurs bob et joe appartiennent à un groupe appelé sales. Disons également que j'ai un document de vente avec les détails suivants:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

Ma question est la suivante: comment les autorisations sont-elles traitées dans un exemple comme celui-ci et quels privilèges d'accès ont la priorité?

Existe-t-il une recherche descendante et quelle que soit la règle qui correspond en premier est celle qui s'applique?

Ou Linux applique-t-il l'accès en fonction de la règle la plus spécifique pour l'utilisateur en question? Ou peut-être que la règle la plus restrictive et applicable a priorité?

Mike B
la source

Réponses:

15

C'est en quelque sorte un sujet large et un peu trop à couvrir ici. Je vous renvoie aux livres blancs POSIX Access Control Lists on Linux mis en place par Andreas Grünbacher des SuSE Labs. Il fait un très bon travail pour couvrir le sujet et le décomposer afin que vous compreniez comment fonctionnent les ACL.

Votre exemple

Examinons maintenant votre exemple et décomposons-le.

  • groupe (ventes)
  • membres du groupe de vente (bob, joe)

Maintenant, décomposons les autorisations sur le fichier /home/foo/docs/foo.txt. Les ACL encapsulent également les mêmes autorisations que la plupart des gens devraient connaître sur Unix, principalement les bits Utilisateur, Groupe et Autres. Alors retirons-les d'abord.

user:: r--
group::r--
other::---

Celles-ci ressemblent généralement à ceci dans un ls -l:

$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt

Vous pouvez voir à qui appartient le fichier et quel est le groupe avec ces lignes ACL:

# owner: jane
# group: executives

Alors maintenant, nous entrons dans le vif du sujet des ACL:

user:bob:rw-
user:joe:rwx
group:sales:rwx

Cela montre que l'utilisateur boba rw, tandis que l'utilisateur joea rwx. Il y a aussi un groupe qui a aussi rwxsimilaire à Joe. Ces autorisations sont comme si la colonne utilisateur de notre ls -lsortie avait 3 propriétaires (jane, bob et joe) ainsi que 2 groupes (cadres et ventes). Il n'y a pas de distinction autre que ce sont des ACL.

Enfin la maskligne:

mask::rwx

Dans ce cas, nous ne masquons rien, c'est grand ouvert. Donc, si les utilisateurs bob et joe ont ces lignes:

user:bob:rw-
user:joe:rwx

Ce sont alors leurs autorisations effectives. Si le masque était comme ça:

mask::r-x

Ensuite, leurs autorisations effectives seraient comme ceci:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Il s'agit d'un mécanisme puissant pour réduire les autorisations accordées de manière globale.

REMARQUE: le propriétaire du fichier et les autres autorisations ne sont pas affectés par le masque des droits effectifs; toutes les autres entrées sont! Donc, en ce qui concerne le masque, les autorisations ACL sont des citoyens de seconde classe par rapport aux autorisations Unix traditionnelles.

Les références

slm
la source