Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
technique:adminsys:ldap:acl [2020/09/08 16:58] – créée 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> | + | {{indexmenu_n> |
- | # Configurer | + | # Comprendre |
- | Cette page vise à donner un aperçu de qui a le droit de faire quoi sur le serveur LDAP. Les ACL sont configurables en [[technique: | + | 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: |
- | ## root | + | Pour comprendre ce qui suit, on pourra lire [la documentation sur les ACL](https:// |
- | Depuis le conteneur LDAP, l'utilisateur `root` a tous les droits sur le serveur LDAP (lecture, modification...). Ceci fonctionnera avec les commandes | + | Lorsque |
- | ## N'importe | + | * `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 `/ | ||
- | Tout le monde (y compris les utilisateurs anonymes) a le droit de lire l' | + | Les entrées correspondante se voient dans la configuration : |
- | Ici, on interroge le serveur LDAP sans authentification | + | {{ technique:adminsys: |
- | {{ : | + | ### frontend |
- | En revanche, aucune entrée du LDAP n'est lisible sans autorisation spécifique. | + | Les ACL définies ici sont appliquées par défaut à toutes les autres bases de données, et susceptibles d'être écrasées. |
- | ## cn=admin, | + | On trouve les ACL suivantes : |
- | Le DN `cn=admin,cn=config` a le droit de modifier la configuration de LDAP. Son mot de passe est défini dans le [pass](https:// | + | ``` |
+ | to * | ||
+ | by dn.exact=gidNumber=0+uidNumber=0, | ||
+ | by * break | ||
+ | |||
+ | to dn.exact="" | ||
+ | by * read | ||
+ | |||
+ | to dn.base=" | ||
+ | by * read | ||
+ | ``` | ||
- | La configuration est faite dans `olcDatabase={0}config, | + | Qui indiquent respectivement |
- | Ici, `olcAccess` indique | + | |
- | ## cn=admin,dc=picasoft, | + | * L' |
+ | * N' | ||
+ | * N' | ||
- | Le DN `cn=admin,dc=picasoft, | + | À titre d' |
+ | {{ technique: | ||
- | ## cn=nss, | + | ### config |
- | Le DN `cn=nss, | + | 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="cn=nss, | ||
+ | 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' |