Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
technique:adminsys:ldap:acl [2021/11/22 22:29] – ↷ Page déplacée de technique:internal_serv:ldap:acl à technique:adminsys:ldap:acl qduchemi | technique:adminsys:ldap:acl [2021/11/22 22:29] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. qduchemi | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n> | ||
+ | # Comprendre les permissions | ||
+ | |||
+ | Cette page vise à donner un aperçu de qui a le droit de faire quoi sur le serveur LDAP lors de son premier lancement. Les ACL sont configurables en [[technique: | ||
+ | |||
+ | Pour comprendre ce qui suit, on pourra lire [la documentation sur les ACL](https:// | ||
+ | |||
+ | Lorsque l'on lance le serveur LDAP pour la première fois, on trouve trois bases de données : | ||
+ | |||
+ | * `frontend`, une base de données spéciale qui contient les caractéristiques qui seront appliquées à toutes les autres base de données | ||
+ | * `config`, une base de données spéciale qui contient entre autres les permissions liées à la configuration | ||
+ | * `mdb`, qui contient la configuration des entrées que l'on utilise. En effet, son attribut `olcDbDirectory` vaut `/ | ||
+ | |||
+ | Les entrées correspondante se voient dans la configuration : | ||
+ | |||
+ | {{ technique: | ||
+ | |||
+ | ### frontend | ||
+ | |||
+ | Les ACL définies ici sont appliquées par défaut à toutes les autres bases de données, et susceptibles d' | ||
+ | |||
+ | On trouve les ACL suivantes : | ||
+ | |||
+ | ``` | ||
+ | to * | ||
+ | by dn.exact=gidNumber=0+uidNumber=0, | ||
+ | by * break | ||
+ | | ||
+ | to dn.exact="" | ||
+ | by * read | ||
+ | | ||
+ | to dn.base=" | ||
+ | by * read | ||
+ | ``` | ||
+ | |||
+ | Qui indiquent respectivement que : | ||
+ | |||
+ | * L' | ||
+ | * N' | ||
+ | * N' | ||
+ | |||
+ | À titre d' | ||
+ | {{ technique: | ||
+ | |||
+ | ### config | ||
+ | |||
+ | Même chose que pour `frontend`, et on retrouve en plus les attributs suivants : | ||
+ | |||
+ | * `olcRootDN` : `cn=admin, | ||
+ | * `olcRootPW` : `XXX` | ||
+ | |||
+ | Ces attributs spécifient que le DN `cn=admin, | ||
+ | |||
+ | Cette configuration est réalisée par l' | ||
+ | |||
+ | ### mdb | ||
+ | |||
+ | La configuration initiale est réalisée par l' | ||
+ | |||
+ | On retrouve deux ACL intéressantes : | ||
+ | |||
+ | ``` | ||
+ | to attrs=userPassword, | ||
+ | by self write | ||
+ | by dn=" | ||
+ | by anonymous auth | ||
+ | by * none | ||
+ | ``` | ||
+ | |||
+ | Ici, on indique que les attributs `userPassword` et `shadowLastChange` (utilisés notamment pour s' | ||
+ | |||
+ | * Peuvent être lus modifiés par soi-même (je peux changer mon mot de passe) et par l' | ||
+ | * Peuvent être utilisés pour les mécanismes d' | ||
+ | * Ne peuvent être lus par personne d' | ||
+ | |||
+ | En gros, je ne peux pas lire le mot de passe d'un autre utilisateur : je peux seulement essayer de m' | ||
+ | |||
+ | Les ACL sont traitées dans l' | ||
+ | |||
+ | ``` | ||
+ | to * | ||
+ | by self read | ||
+ | by dn=" | ||
+ | by dn=" | ||
+ | by * none | ||
+ | ``` | ||
+ | |||
+ | Ici, on indique que : | ||
+ | |||
+ | * Je peux lire tous les attributs de mon entrée (par exemple, si je me connecte en tant que `qduchemi`, mon entrée est un `posixAccount`, | ||
+ | * L' | ||
+ | * L' | ||
+ | * Les autres ne peuvent rien faire | ||
+ | |||
+ | On peut vérifier empiriquement ces ACL en faisant des requêtes sur le LDAP, avec la syntaxe suivante : | ||
+ | |||
+ | ```bash | ||
+ | ldapsearch -x -b "< | ||
+ | ``` | ||
+ | |||
+ | Par exemple, j' | ||
+ | |||
+ | ```bash | ||
+ | ldapsearch -x -b " | ||
+ | |||
+ | dn: cn=qduchemi, | ||
+ | objectClass: | ||
+ | [...] | ||
+ | objectClass: | ||
+ | cn: qduchemi | ||
+ | gidNumber: 501 | ||
+ | homeDirectory: | ||
+ | [...] | ||
+ | userPassword:: | ||
+ | ``` | ||
+ | |||
+ | On constate que j'ai bien accès à toutes les données de mon utilisateur, | ||
+ | |||
+ | J' | ||
+ | |||
+ | ```bash | ||
+ | ldapsearch -x -b " | ||
+ | |||
+ | # search result | ||
+ | search: 2 | ||
+ | result: 32 No such object | ||
+ | ``` | ||
+ | |||
+ | Je n'ai pas le droit : ok. | ||
+ | |||
+ | J' | ||
+ | |||
+ | ``` | ||
+ | ldapsearch -x -b " | ||
+ | |||
+ | dn: cn=qduchemi, | ||
+ | objectClass: | ||
+ | [...] | ||
+ | cn: qduchemi | ||
+ | gidNumber: 501 | ||
+ | homeDirectory: | ||
+ | [...] | ||
+ | ``` | ||
+ | |||
+ | On constate que l' |