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é ventes. Disons également que j'ai un document de vente avec les détails suivants :
[[email protected] ~]# 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 sont prioritaires ?
Y a-t-il juste 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 la plus applicable prime ?
Réponse acceptée :
C'est une sorte de vaste sujet et un peu trop à couvrir ici. Je vous renverrai au livre blanc sur les listes de contrôle d'accès POSIX sur Linux rédigé par Andreas Grünbacher des SuSE Labs. Il couvre assez bien le sujet et le décompose 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 sous Unix, principalement les bits Utilisateur, Groupe et Autre. Alors sortons-les d'abord.
user:: r--
group::r--
other::---
Ceux-ci ressembleraient 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 bob
a rw
, tandis que l'utilisateur joe
a rwx
. Il y a aussi un groupe qui a aussi rwx
semblable à Joe. Ces autorisations sont comme si la colonne utilisateur dans notre ls -l
output 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 le mask
ligne :
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
Ensuite, ce sont leurs autorisations effectives. Si le masque était comme ça :
mask::r-x
Leurs autorisations effectives ressembleraient alors à 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.
Connexes :Debian - Comment boucler le contenu d'une page Web complète ?REMARQUE : Le propriétaire du fichier et les autres autorisations ne sont pas affectés par le masque de droits effectifs ; toutes les autres entrées le sont ! Donc, en ce qui concerne le masque, les autorisations ACL sont des citoyens de seconde classe par rapport aux autorisations Unix traditionnelles.
Références
- getfacl(1) – Page de manuel Linux
- Listes de contrôle d'accès POSIX sur le livre blanc Linux