URL: https://linuxfr.org/forums/linux-general/posts/besoin-d-aide-pour-comprendre-les-permissions-avec-ldap Title: Besoin d'aide pour comprendre les permissions avec LDAP Authors: nlgranger Date: 2019年08月24日T20:17:25+02:00 License: CC By-SA Tags: ldap, openldap et administration_système Score: 1 Bonjour, J'essaie de déployer mon petit serveur perso avec quelques services (ssh, git, mails, etc...) et j'ai essayé de passer la base d'utilisateurs sur ldap (l'utilisation du pluriel est largement exagérée mais je fais ça à titre éducatif). J'ai une organisation qui recense les utilisateurs (ou=People, cn=example, cn=org) et une autre (ou=Services, cn=example, cn=org) pour les services comme postfix ou nslcd pour l'authentification pam. Plusieurs [documentations](https://wiki.archlinux.org/index.php/LDAP_authentication#Set_up_access_controls) suggèrent d'ajouter la règle suivante: ``` olcAccess: {0}to dn.subtree="ou=People,dc=example,dc=org" attrs=userPassword,shadowLastChange by self write by anonymous auth olcAccess: {1}to * by * read ``` Mais je trouve ça extrêmement permissif, un autre utilisateur peut même lire les mots de passes (hachés) de n'importe qui. J'ai essayé de réduire les droits, les utilisateurs ne lisent que leurs infos perso et les services accèdent à tout le monde mais seulement pour les attributs nécessaires: ``` olcAccess: {0}to dn.subtree="ou=People,dc=example,dc=org" attrs=userPassword,shadowLastChange by self write by anonymous auth olcAccess: {1}to * by self read by * search olcAccess: {2}to dn.subtree="ou=Person,dc=example,dc=org" attrs=uidNumber,cn,gecos,uid,objectClass,homeDirectory,gidNumber,loginShell by dn.exact="cn=nslcd,ou=Services,dc=example,dc=org" read olcAccess: {3}to dn.subtree="ou=Person,dc=example,dc=org" attrs=uid by dn.exact="cn=postfix,ou=Services,dc=example,dc=org" read ``` Mais là, bien que l'authentification auprès du LDAP et les commandes telles que ldapsearch fonctionnent pour les utilisateurs, les services ne marchent pas et nslcd n'arrive même pas à lister les utilisateurs. Donc pour récapituler mes questions: - Pourquoi "cn=nslcd,ou=Services,dc=example,dc=org" ne peut-il pas lister les uid dans "ou=Person,dc=example,dc=org"? - Est-ce que cette configuration vous semble cohérente? - Comment openldap interprète-t-il les listes de permissions (et, ou, règle la plus stricte ou la plus permissive?) - Je n'ai pas ajouté les règles "access to dn.base="" by * read" ou "access to dn.base="cn=Subschema" by * read" car j'ignore à quoi ça sert, mais je les ai vues à plusieurs reprises dans des docs.