Post par PEB (page perso) le 21/06/13 03:52. Licence CC by-sa
Tags : ldap, dbuter, slapd, journal_du_mois_2013, installer Sommaire Une histoire de schma. Des attributs et des objets Conguration de slapd. criture d'un chier slapd.conf Peupler une base LDAP Premiers objets. Ajout d'objets plus concrets, modications. De la doc, encore de la doc. Dans mon journal d'hier, je parlais de LDAP d'un point de vue utilits. Je propose ici de se plonger un peu plus dans le ct technique. Comme rfrence, j'utilise l'installation et la conguration du paquet slapd sous debian, nul doute que cela marchera d'autres endroits sur d'autres OS. Installez donc slapd, et ldap-tools. Une histoire de schma. Avant de se plonger dans une partie conguration du serveur LDAP proprement dit, nous allons revenir sur ces histoires de schma LDAP. Chez moi, les schmas par dfaut se trouvent dans /etc/ldap/schema. Ils ne sont pas prchargs automatiquement, la conguration prise en compte se trouve dans /etc/ldap/slapd.d, mais ils permettent de comprendre un peu ce qu'il se passe. Des attributs Bon, ce titre fait un peu clihanger de derrire les fagots Passons. Une base LDAP sert stocker des objets, inscrits dans des nuds, ayant parent et enfants. Les proprits d'un objet dpendent de celui-ci. Ici, avant de nous intresser l'objet proprement dit, on va se pencher sur les attributs. (on peut ce rfrer cette page web pour plus d'informations) Dans l'ancien format des bases LDAP, pour les schmas, les attributs se reprsentaient de la faon suivante : attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; the common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) Vous croiserez cet attribut dans /etc/ldap/schema/nis.schema. attributetype signie qu'on dclare un attribut, tout ce qui suit se trouve entre parenthses. LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 1 sur 18 23/09/2014 21:18 La suite de numros bizarres est un OID, un identiant unique, qui permet de reprsenter votre attribut. Une des spcicits de LDAP est de proposer de le voir comme un arbre mondial, la racine de votre base serait donc virtuellement un des enfants d'un arbre LDAP imaginaire qui serait la proprit des gourous de LDAP. L'identiant en question permettrait de dire "cet attribut est l'attribut numro 2 du schma nis". NAME 'nom' dnit le nom de l'attribut, on s'y rfre ainsi par la suite. Il est prfrable pour la lisibilit de se limiter aux caractres ASCII. DESC 'description' est une description de l'attribut. Dans la mesure du possible, on se limite aux caractres ASCII. EQUALITY compMethod dnit une mthode de comparaison pour l'galit, c'est une contrainte implicite pour dire que notre attribut est un entier, ou une chane de caractre ou autre chose SUBSTR compMethod propose la mme chose que EQUALITY, mais pour un sous-ensemble de l'attribut (chercher "coucou" dans la phrase "coucou, comment vas-tu ?" par exemple). SYNTAX PLEIN.DE.CHIFFRES dnit une contrainte sur la variable. La suite de chire est un OID qui pointe vers un type d'attribut prcis. Par exemple, si vous utilisez SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{123}, vous dnissez une chane de caractre quasi-ASCII de longueur maximale 123 caractres. Si vous essayez de dnir un attribut avec cette syntaxe et de balancer un "" dedans, LDAP vous inondera de son amour et de sa croyance en vos capacits de leader religieux. SINGLE-VALUE signie que l'attribut est monovalu. Autrement dit, un objet ne peut avoir deux gecos. Il n'en a au plus qu'un. Rfrez-vous au lien que je vous ai fourni pour plus d'informations. Pourquoi vous parler de l'ancienne syntaxe si elle n'est justement plus d'actualit ? Parce que la nouvelle syntaxe correspond aux schmas dnis directement dans la base LDAP de conguration, qu'elle dire peu de l'ancienne, et que lorsqu'on cre sa base LDAP, et qu'on la congure pour la premire fois, crer un schma dans un chier puis le faire incorporer dans la base via la commande slaptest est bien plus agrable et facile. La nouvelle syntaxe est une syntaxe compatible avec ldif, voici le mme attribut dans cette syntaxe. olcAttributeTypes: ( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; the common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) C'est trs proche de l'ancienne syntaxe, mais compatible avec ldif. Regardez nis.ldif en comparaison avec nis.schema. et des objets Une fois qu'on a nos attributs, on souhaite crer des objets. Toujours dans nis, regardez en bas du chier. objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction of an account with POSIX attributes' SUP top AUXILIARY LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 2 sur 18 23/09/2014 21:18 MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) ) Et en nouvelle syntaxe : olcObjectClasses: ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction of an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) ) objectclass signie qu'on dclare un objet. L'OID est galement unique, comme pour les attributs NAME dnit toujours un nom, si possible avec des caractres ASCII exclusivement DESC dcrit l'objet SUP dnit un objet parent (celui qu'on dnit hrite de ses proprits) La dclaration AUXILIARY est plus complique. Ici, on peut crire STRUCTURAL, AUXILIARY ou ABSTRACT. Lorsqu'on cre un nud et lui donne des informations, parmi les attributs objectClass, qui vont dnir quels autres attributs un objet peut avoir, il doit y avoir un (et un seul) objectClass pointant vers un lment STRUCTURAL, et autant que l'on souhaite vers des lments AUXILIARY, ou ABSTRACT. Un lment ne peut hriter que d'un lment du mme type, ou d'un ABSTRACT. Donc un lment AUXILIARY ne peut pas hriter d'un STRUCTURAL, et rciproquement. Les lments STRUCTURAL reprsentent des objets concrets. Ici, posixAccount est AUXILIARY : un objet ne pourra pas tre juste un posixAccount. MUST ( attributs spars par des $ ) indique la liste des attributs qu'un objet doit possder en au moins un exemplaire. MAY ( attributs spars par des $ ) indique les attributs supplmentaires qu'un objet peut possder. Voil pour les schmas, une fois ceci compris, imaginons qu'en plus des lments dans nis, on ait dni un schma personnel avec cet objectClass : olcObjectClasses: ( 1.2.3.1.2.3.1.2.3.10 NAME 'userAccount' DESC 'Implementation of a user account' SUP top STRUCTURAL MUST ( fname $ name ) MAY ( mail $ town ) ) Avec mail, town, name et fname des attributs dnissant email, ville, nom et prnom. Un compte d'utilisateur pourrait alors tre l'objet avec les attributs : dn: uid=peb,ou=users,dc=localdomain objectClass: userAccount objectClass: posixAccount cn: PEB fname: PE gidNumber: 100 homeDirectory: /home/peb LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 3 sur 18 23/09/2014 21:18 loginShell: /bin/zsh mail: peb@yopmail.com name: B uid: peb uidNumber: 2573 userPassword: {SSHA}Sdduv35Y4x/49FeFmrroxXXlrpgff La syntaxe ici est celle de LDIF. On y reviendra, mais vous savez dsormais quoi ressemblent les objets dans une base LDAP. Conguration de slapd. a va vous sembler extrme, mais la premire chose faire aprs avoir install slapd est cette srie de commandes. # /etc/init.d/slapd stop # rm -rf /etc/ldap/slapd.d/* # rm -rf /var/lib/ldap/[^D]* On va dmarrer avec un environnement propre, et faire une conguration nous-mme. Il est possible que la conguration initiale vous ait convenu, mais l'objectif est de comprendre ce qu'il se passe. criture d'un chier slapd.conf Je vous propose ici de construire notre chier /etc/ldap/slapd.conf, je vais partir sur un exemple simple, mais n'hsitez pas l'aide de la documentation rendre le votre plus complet, et adapt vos envies. ####################################################################### # Directives globales: # Dfinition des schmas et objectClasses include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/perso.schema Ici, on commence par inclure les schmas prexistants qui peuvent servir, et notre schma personnel. # Emplacement du pidfile pidfile /var/run/slapd/slapd.pid # Arguments passs au serveur LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 4 sur 18 23/09/2014 21:18 argsfile /var/run/slapd/slapd.args # Niveau de journalisation loglevel 0 Ensuite, quelques congurations basiques, pour les besoins du logiciel. loglevel 0 signie qu'on le loggue rien dans syslog. Regardez loglevel dans la manpage de slapd.conf pour plus d'infos. Un bon niveau de logging quand on fait du dbug est 255, mais attention, c'est extrmement verbeux, et un serveur limit en ressources se fait souvent overloader par ce niveau de logging. (test et dsapprouv sur un domu) # Stockage des modules modulepath /usr/lib/ldap moduleload back_bdb On dnit ici le rpertoire des modules, et on charge back_bdb, qui fournit le type de base LDAP "Berkley DB", que j'aime bien. # Limitation du nombre de rponses sizelimit 1000000000 Limite du nombre d'objets que la base peut simultanment retourner. # Mthode pour crypter les mots de passe password-hash {SSHA} ############################################################### # Directives de configuration pour le backend bdb backend bdb Ici, on prcise type de backend pour lequel les options venir s'appliquent. Comme il n'y a pas d'autre option, je ne suis pas convaincu que a soit utile. ####################################################################### # Configuration de la base de donnes principale database bdb Ici, on dclare une nouvelle base de donnes, de type Berkley DB, tout ce qui suivra jusqu' une autre dclaration gnrale concerne cette base. Certaines directives sont spciques au backend, comme on peut le voir ici. # Racine suffix "dc=localdomain" LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 5 sur 18 23/09/2014 21:18 Nom du nud racine. # Rpertoire de stockage de la base de donnes directory "/var/lib/ldap" (Backend-dependant) Il peut tre plus adapt lorsqu'on souhaite crer plusieurs bases de donnes de les mettre dans des rpertoires distincts, il faut pour cela que le backend le permette. # Options d'indexation pour la base de donnes index entryUUID,entryCSN eq index objectClass,uid,uidNumber eq index cn,sn eq,approx,sub index mail,town eq index name,fname eq,approx,sub (Backend-dependant) Les index ont peu prs les mmes utilits que pour une base SQL par exemple : diminuer le temps de processing pendant les recherches. Les index sont crs l'ajout d'un objet dans la base ldap, ou la modication des attributs sur lesquels ils sont placs. # Sauvegarde des timestamps de modifications des objets lastmod on # LDAP a besoin de la dclaration du rootdn rootdn "cn=admin,dc=localdomain" rootpw "{SSHA}HASH" Ici, on dnit l'administrateur de la base, avec pour mot de passe un hash. Pour gnrer un ssha partir d'un mot de passe, utilisez la commande slappasswd, et collez sa sortie la place de "{SSHA}HASH". # L'attribut userPassword doit pouvoir tre crit uniquement par # soi-mme, l'admin, les replicas. Dovecot peut le lire, et on peut # s'authentifier avec anonymement access to attrs=userPassword by dn.regex="cn=dovecot,dc=localdomain" read by anonymous auth by self write by * none # Permettre l'accs la base pour des trucs comme # "supportedSASLMechanisms", pour viter des problmes # possibles si les mthodes SASL ne sont pas connues. access to dn.base="" by * read # Pour postfix access to dn.regex="^uid=[0-9]+,ou=users,dc=localdomain$$" LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 6 sur 18 23/09/2014 21:18 attrs=mail,alias,uid,mail,entry,objectClass by dn.regex="cn=postfix,dc=localdomain" read by * break # Pour dovecot access to dn.regex="^uid=[0-9]+,ou=users,dc=localdomain$$" attrs=uid,homeDirectory,uidNumber,gidNumber,userPassword,objectClass,entry by dn.regex="cn=dovecot,dc=localdomain" read by * break # Informations accessibles tous access to dn.regex="^uid=[0-9]+,ou=users,dc=localdomain$$" attrs=uid,homeDirectory,uidNumber,gidNumber,gecos,objectClass,entry by anonymous read by * break access to dn="ou=users,dc=localdomain" by anonymous search by * break access to dn.subtree="ou=Group,dc=linkki,dc=crans,dc=org" by anonymous read by * break # L'admin et readonly peuvent tout lire # can read everything. access to * by dn.regex="cn=admin,dc=localdomain" write by sockname.regex="ldapi" read by dn.regex="cn=readonly,dc=localdomain" read by self read by * none Ici, on congure les acl. Ils ne sont pas dpendants du backend, comme c'est un des points les plus techniques de LDAP, j'en reparlerai dans un journal spar, aprs avoir pu faire mon lot de tests. Vous noterez que a parle de dovecot et postx, l'ide est de montrer un cas o on va crer des utilisateurs administratifs de LDAP pour dovecot et postx des ns d'interfaage. Voil, la conguration est nie, votre chier slapd.conf est prt. Il ne reste qu' excuter la commande # sudo -u openldap slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d Il est possible que slaptest vous sorte une erreur, due au fait que id2entry.bdb n'existe pas, c'est normal, puisqu'on avait fait le mnage, mais la conguration est bien faite. Faites LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 7 sur 18 23/09/2014 21:18 # /etc/init.d/slapd start Votre base LDAP tourne (et id2entry a t cr), mais est vide. Peupler une base LDAP On y est, on va ici apprendre ajouter des donnes, donc crer des petits chiers au format LDIF, puis utiliser ldapadd, voire ldapmodify. Une fois cela fait, on arrtera ici pour cette initiation. Un journal parlera des ACL, et un autre de la modication chaud du schma, des congs, et la rplication. Premiers objets. Il faut crer le nud racine, et nous allons en plus crer deux nuds, ou=groups, et ou=users. Lorsqu'on souhaite ajouter des objets, la syntaxe ldif est trs simple, il sut de donner l'ensemble des informations concernant les divers objets, spars par des lignes vides. Avant chaque :, on a le nom d'attribut, et aprs, une espace puis la valeur de l'attribut. dn: dc=localdomain objectClass: top objectClass: dcObject objectClass: organization dc: localdomain o: localdomain dn: ou=users,dc=localdomain objectClass: top objectClass: organizationalUnit ou: users dn: ou=groups,dc=localdomain objectClass: top objectClass: organizationalUnit ou: groups On enregistre ces lignes dans un chier /tmp/begin.ldif, puis on eectue la commande $ ldapadd -H ldap://127.0.0.1 -D "cn=admin,dc=localdomain" -W -f /tmp/begin.ldif -H permet d'indiquer l'hte contacter. -D permet de prciser l'utilisateur avec lequel on eectue l'opration -W signie qu'on entre le mot de passe de l'utilisateur en command line -f permet de prciser un chier (sinon, on utilise l'entre standard) Tapez le mot de passe de votre admin ("Plop", chez moi), et le tour est jou. Ajout d'objets plus concrets, modications. LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 8 sur 18 23/09/2014 21:18 Vous devriez, via ldapadd, et un chier, pouvoir crer un utilisateur voisin de celui que j'avais propos ci-dessus. dn: uid=peb,ou=users,dc=localdomain objectClass: userAccount objectClass: posixAccount cn: PEB fname: PEB gidNumber: 100 homeDirectory: /ghome/peb loginShell: /sbin/zsh mail: peb@yopmail.com name: B uid: peb uidNumber: 2573 userPassword: {SSHA}Sdduv35Y4x/49FeFmrroxXXlrpgff Malheureusement, comme vous l'avez srement constat, je suis trs mauvais pour copier/coller, et des erreurs de scnario se sont glisses dans l'utilisateur. Apprenons maintenant les corriger. La syntaxe change quelque peu, puisqu'on va devoir utiliser ldapmodify : il faut prciser le dn de l'objet modier, puis le type de changement lui apporter. Pour une zoologie des types de changements, se rendre ici. Ensuite, il faut prciser les attributs que l'on modie. On spare les modications par des lignes contenant juste un tiret d'union. dn: uid=peb,ou=users,dc=localdomain changetype: modify replace: prenom prenom: PE - delete: homeDirectory homeDirectory: /ghome/peb - add: homeDirectory homeDirectory: /home/peb - delete: loginShell - add: loginShell loginShell: /bin/zsh add ajoute un ou plusieurs attributs de mme type. delete en eace un ou plusieurs s'ils sont spcis (cf homeDirectory), tous si on se contente d'annoncer un delete: loginShell, par exemple. Pour remplacer un attribut par un autre, on peut l'eacer, et en ajouter un nouveau, ou alors utiliser replace, qui remplace tous les attributs par la mme valeur. Les trois mthodes possibles pour faire des corrections ont t utilises ci-dessus. On sauvegarde LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 9 sur 18 23/09/2014 21:18 Trs bonne doc Post par hitmanu le 21/06/13 04:59. valu 2 . Merci pour la grande explication et le partage. ;) -- je suis pas blond, je suis chtain clair alors je corrige les fautes d'orthographe au blanco. conguration par cn=cong Post par Dreammm le 21/06/13 08:34. valu 8 . Dernire modication : le 21/06/13 08:35 Il est plus que conseill maintenant de faire la conguration directement par le protocole ldap lui-mme. L'arbre cn=config contient justement toute la conguration. L'avantage majeur est que c'est dynamique : pas besoin de redmarrer le serveur aprs une modication. L'inconvnient est que pour le dbutant, il faut savoir utiliser les outils client ldapadd/ldapmodify. Go go Zytrax pour plus de prcision. Mais si on en est se poser la question de refaire la conguration par dfaut, je pense que cela vaut le coup. Bonne doc pour commencer sinon ! Re: conguration par cn=cong Post par Sytoka Modon (page perso) le 21/06/13 09:06. valu 2 . La cong chez moi est pouss par un serveur central via cfengine. Le tout est versionn. Parfois, il est prfrable de rester en mode chier car cela permet de garder des traces et un historique clair de toute modication. Ensuite, il y a l'aspect scurit ou le mode chier me semble plus sur. Re: conguration par cn=cong ce LDIF dans /tmp/modif.ldif, et on appelle alors la commande $ ldapmodify -H ldap://127.0.0.1 -D "cn=admin,dc=localdomain" -W -f /tmp/modif.ldif On donne le mot de passe, et le tour est jou. Pour eacer des entres, on peut utiliser ldapdelete, ou ldapmodify avec le changetype delete. De la doc, encore de la doc. Zytrax, toujours aussi complet OpenLdap, toujours grants du projet openldap Google, et vos amis. Bonne lecture. :o) LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 10 sur 18 23/09/2014 21:18 Post par Dreammm le 21/06/13 09:33. valu 4 . Je tourne avec Puppet, et j'ai fait la conf openldap par le backend cn=config . Et la recette puppet dcrivant mon infrastructure ldap est versionne, on a ainsi le meilleur des 2 mondes. Re: conguration par cn=cong Post par lolop (page perso) le 21/06/13 09:52. valu 3 . Il me semble que la cong reste sous la forme de chiers textes (probablement format ldif), stocks dans un sous-rpertoire de /etc. En cas de rat lors de la cong - du genre qui fait qu'on ne peut plus se connecter au LDAP a permet de rattraper le coup. Re: conguration par cn=cong Post par Etienne Bagnoud (page perso) le 21/06/13 12:06. valu 2 . Oui ils utilisent le backend ldif (tu peux l'utiliser pour ta base complte, c'est un backend comme un autre). -- "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell Re: conguration par cn=cong Post par Xavier Claude (page perso) le 21/06/13 10:04. valu 3 . Ensuite, il y a l'aspect scurit ou le mode chier me semble plus sur. Je ne vois pas pourquoi. Une explication ? -- Moi, lorsque je nai rien dire, je veux quon le sache. Raymond Devos Re: conguration par cn=cong Post par PEB (page perso) le 21/06/13 12:14. valu 1 . Il y a un niveau d'indirection de moins : tu peux directement modier la conguration, sans avoir besoin que la base fonctionne pour le faire proprement. Si ta base est pte, changer la cong via cn=cong devient plus dicile, et somme toute, tu cones toujours les modications une commande, au lieu de les faire toi-mme. Bien entendu, c'est plus psychologique que rel, mais je comprends assez bien ce qu'il veut dire. Re: conguration par cn=cong Post par Xavier Claude (page perso) le 21/06/13 12:20. valu 5 . Je ne comprends pas, on peut aussi modier les chiers ldi la main si jamais a ne dmarre plus. -- Moi, lorsque je nai rien dire, je veux quon le sache. Raymond Devos LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 11 sur 18 23/09/2014 21:18 Re: conguration par cn=cong Post par Misc (page perso) le 21/06/13 12:34. valu 2 . La syntaxe est quand mme un chouia plus compliqu et un chouia moins lisible :) Re: conguration par cn=cong Post par Xavier Claude (page perso) le 21/06/13 12:43. valu 5 . a je suis bien d'accord, c'est le fait de dire que les chiers sont plus scuriss qui me semble bizarre. -- Moi, lorsque je nai rien dire, je veux quon le sache. Raymond Devos Re: conguration par cn=cong Post par Sytoka Modon (page perso) le 21/06/13 14:27. valu 2 . La cong par chier n'est pas modiable par socket rseau. Le serveur LDAP a les droits de lecture mais pas de modication. Voila pourquoi je pense que c'est plus sur. Re: conguration par cn=cong Post par PEB (page perso) le 21/06/13 12:15. valu 1 . Oui, je l'ai prcis dans le journal, mais je pense qu'il faut commencer en douceur, quand on dbute. Pour avoir d apprendre sur le tas modier la conguration, j'ai conscience des problmes psychologiques que a peut poser quelqu'un de non initi. :) Re: conguration par cn=cong Post par Misc (page perso) le 21/06/13 12:32. valu 2 . Un autre avantage, c'est que tu peux utiliser les acls et la rplication sur cn=cong. Donc d'une part,les serveurs se mettent jour en mme temps ( ou plus ou moins ), et ensuite, tu peux ler une interface d'admin d'autres quipes/presta et leur permettre de faire leur truc sans te dranger ( genre du tuning de leur arbre ). Perso, je prfre aussi puppet, mais bon. Re: conguration par cn=cong Post par Sytoka Modon (page perso) le 21/06/13 14:28. valu 2 . Perso, je prfre aussi puppet, mais bon. Je dis cfengine car c'est pour moi le nom gnrique pour ce genre d'outil. Aprs l'un ou l'autre, chacun comme il veut. Re: conguration par cn=cong Post par Misc (page perso) le 21/06/13 15:51. valu 2 . C'tait plus puppet/cfengine/etc que la cong via la base de donnes elle mme, pas puppet vs cfengine. LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 12 sur 18 23/09/2014 21:18 Tout comme j'en chie pour avoir un module propre qui congure mysql, j'aurais du mal faire un module openldap pour faire la mme chose avec cn=cong Re: conguration par cn=cong Post par Dreammm le 24/06/13 08:48. valu 2 . Je suis en train d'crire un module puppet pour congurer openldap par cn=config . C'est long, mais pour le coup c'est assez intressant pour dcouvrir les entrailles d'openldap. suivre :-) OID Post par Etienne Bagnoud (page perso) le 21/06/13 12:22. valu 3 . Les OID sont les mmes que ceux utilis dans SNMP. On peut les obtenir gratuitement auprs de l'IANA, le registre est l http://www.iana.org/assignments/enterprise-numbers et si vous commencez utiliser du LDAP, je conseille vivement de commander le votre http://pen.iana.org/pen/PenApplication.page on veut trs rapidement faire un schma auxiliaire pour rajouter deux, trois infos un objet. Et rien de plus frustrant que d'attendre une semaine quant on arrive au jour J de l'criture de son premier schma. -- "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell Re: OID Post par feth (page perso) le 21/06/13 12:26. valu 3 . Dernire modication : le 21/06/13 12:27 LDAP est sympa, et sa conception rsiste au temps qui passe. Je trouve trs frustrant ce systme d'OID. C'est illisible et on ne peut rsoudre les problmes qu'en utilisant grep, a gche tout. PS: 404 sur ton premier lien. Re: OID Post par Etienne Bagnoud (page perso) le 21/06/13 12:35. valu 3 . J'ai jamais eu de problmes avec les OID personnellement et je trouve mais trs sympa comme systme. Aprs c'est des gots et des couleurs, mais je crois que dans LDAP, les OID avec leur structure hirarchique ont vraiment un sens. PS: 404 sur ton premier lien. Chez moi a marche j'ai cliqu et je suis arriv sur le site. -- "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell Re: OID Post par Xavier Claude (page perso) le 21/06/13 12:48. valu 4 . LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 13 sur 18 23/09/2014 21:18 Chez moi a marche j'ai cliqu et je suis arriv sur le site. a fait aussi un 404 chez moi. -- Moi, lorsque je nai rien dire, je veux quon le sache. Raymond Devos Re: OID Post par feth (page perso) le 21/06/13 12:54. valu 3 . a a un ct antique. Je pense que a mriterait une glue entre leur aspect numrique et un espace de nom. Rien n'est aussi comprhensible pour un humain que du texte :) Re: OID Post par Xavier Claude (page perso) le 21/06/13 12:59. valu 10 . Rien n'est aussi comprhensible pour un humain que du texte :) Toi, tu ne lis pas les postes de kadalka. -- Moi, lorsque je nai rien dire, je veux quon le sache. Raymond Devos Re: OID Post par d-jo (page perso) le 21/06/13 13:02. valu 3 . a a un ct antique. Je pense que a mriterait une glue entre leur aspect numrique et un espace de nom. Les noms de domaine invers c'est tellement mieux (OK : je sors) Re: OID Post par Etienne Bagnoud (page perso) le 21/06/13 14:24. valu 2 . C'est le cas : iso.org.dod.internet.private.enterprise (1.3.6.1.4.1) . Et quand tu cris un schma : objectidentifier XXX 1.3.6.1.4.1.31204.100.4.1 attributeType ( XXX:1.1 NAME 'YYY' DESC 'Bip bop heu ... loula' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 14 sur 18 23/09/2014 21:18 -- "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell Re: OID Post par feth (page perso) le 21/06/13 15:30. valu 3 . Est-ce qu'il y a un systme de gestion de dpendances permettant de savoir quels schmas parmi ceux connus permettront de fournir tel OID ou telle classe ? Re: OID Post par Etienne Bagnoud (page perso) le 21/06/13 15:51. valu 4 . Il y a plthore de schmas qui sont des standards IETF. Aprs je n'ai pas connaissance d'un outils qui fait de la gestion de dpendance, mais ton serveur LDAP, si tu lui demandes, va te retourner la liste de tout ce qu'il connat, les mcanismes qu'il utilise, les versions de protocole, Tout est disponible via le protocole LDAP auprs de ton serveur. Donc si vraiment il y avait un besoin, un outil aurait t crit pour faire a. Peut-tre il existe. Mais dans tous les cas, c'est pas un problme. J'ai un bout de code qui fait un peu a en PHP http://www.lamaisondebarbie.ch/cgi-bin/repo/tchetch/artifact /bfc333896dc354559df0619704f05e9daa1c6e (plus ou moins). -- "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell Re: OID Post par PEB (page perso) le 21/06/13 19:06. valu 1 . Le mieux est de lire les schmas qui prexistent, a prend certes un peu de temps, mais une fois que c'est fait, a aide grandement ne pas crer des donnes redondantes. J'espre avoir rpondu ta question. :) Droits Post par erdnaxeli (page perso) le 22/06/13 17:29. valu 2 . Trs sympa ce journal, mais c'est loin d'tre termin. Parce qu'aprs avoir un schma et l'avoir peupl, il faut rgler les droits d'accs. Je me suis arrach les cheveux quelques heures dessus avant de bien comprendre le mcanisme (et encore je devais juste modier des droits existants). -- Il existe deux catgories de gens : ceux qui divisent les gens en deux catgories et les autres. Re: Droits Post par PEB (page perso) le 23/06/13 01:46. valu 3 . Je me cite : Ici, on congure les acl. Ils ne sont pas dpendants du backend, comme c'est un des points les plus techniques de LDAP, j'en reparlerai dans un journal spar, aprs avoir pu faire mon lot de tests. LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 15 sur 18 23/09/2014 21:18 Il m'a fallu une bonne heure et demie pour matriser la plupart des ACL, et une heure rien que pour la partie sets. Je prfre faire un journal entier, avec des exemples la pelle. J'en prote pour prciser que je ferai sans doute un journal sur la rplication et la modication chaud des congurations, un sur la partie SSL, et un dernier sur la notion de binding, et les utilisations pratiques des bases LDAP. En esprant que j'aie rien oubli. Pinaillage Post par Guillaume Rousse (page perso) le 01/07/13 22:30. valu 1 . Pour le niveau de journalisation, mieux vaut utiliser des valeurs textuelles que numriques, c'est plus lisible. Et contrairement ce que le commentaire laisse supposer, le choix n'est pas entre 0 (rien) et 255 (trop), il y a tout un ventail de possibilit. Loglevel stats , par exemple, est largement supportable par n'importe quel annuaire, et permet d'identier les problmes aprs qu'ils soient signals. Pour les ACLs, mieux vaut viter d'entrelacer les dclaration par objet (sur quoi porte une rgle) et par sujet (sur qui elle porte), pour viter les erreurs. Par exemple, il est plus lisible de commencer par: # l'admin peut tout crire access to dn.subtree="dc=localdomain" by dn.exact="cn=admin,dc=localdomain" write by * break # readonly peut tout lire access to dn.subtree="dc=localdomain" by dn.exact="cn=admin,dc=localdomain" read by * break Plutt que de grer ces cas par des clauses supplmentaires dans la rgle par dfaut qui vient tout la n. Par ailleurs, l'utilisateur dclar par les directives rootdn et rootpw dans les chiers de conguration ignore totalement les ACLs, il n'y a aucune ncessit d'en prvoir pour lui. Ou alors, de ne pas utiliser ces directives (rootdn n'est ncessaire que sur un esclave) pour plus de contrle. Enn, je suis trs sceptique sur la ncessit pour une application d'avoir accs en lecture l'attribut userPassword. Les seuls cas que je connaisse concernent radius ou kerberos, dans des conguration particulires, dans lesquelles l'annuaire est utilis comme solution de stockage de mots de passe, avec des syntaxes spciques, et jamais en rutilisant l'attribut mot de passe de l'annuaire lui-mme. Toutes les autres applications se contentent d'une opration bind sur l'annuaire, avec l'identicant de l'utilisateur, pour laquelle seul la permission by anonymous auth est ncessaire. Re: Pinaillage Post par PEB (page perso) le 07/07/13 17:19. valu 1 . Pour le niveau de journalisation, mieux vaut utiliser des valeurs textuelles que numriques, c'est plus lisible. Et contrairement ce que le commentaire laisse supposer, le choix n'est pas entre 0 (rien) et 255 (trop), il y a tout un ventail de possibilit. Loglevel stats, par exemple, est largement supportable par n'importe quel annuaire, et LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 16 sur 18 23/09/2014 21:18 permet d'identier les problmes aprs qu'ils soient signals. Je ne vois pas ce qui te permet d'armer que je situe le logging de 0 255, c'est faux, et je prcise que les informations sont dans la manpage de slapd.conf. Pour les ACLs, mieux vaut viter d'entrelacer les dclaration par objet (sur quoi porte une rgle) et par sujet (sur qui elle porte), pour viter les erreurs. Par exemple, il est plus lisible de commencer par: # l'admin peut tout crire access to dn.subtree="dc=localdomain" by dn.exact="cn=admin,dc=localdomain" write by * break # readonly peut tout lire access to dn.subtree="dc=localdomain" by dn.exact="cn=admin,dc=localdomain" read by * break Plutt que de grer ces cas par des clauses supplmentaires dans la rgle par dfaut qui vient tout la n. Bof, l'usage, quelle que soit la forme des ACL, elle ne m'a jamais pos de problme, et sont dicilement sujetes erreurs. Cela tant, c'est toujours un bon conseil pour qui commence Par ailleurs, l'utilisateur dclar par les directives rootdn et rootpw dans les chiers de conguration ignore totalement les ACLs, il n'y a aucune ncessit d'en prvoir pour lui. Ou alors, de ne pas utiliser ces directives (rootdn n'est ncessaire que sur un esclave) pour plus de contrle. L dessus, je ne rpondrai pas directement, c'est une question d'idologie, je prfre, dans la mesure du faisable, que les ACL rappellent explicitement les droits du superutilisateur plutt que de laisser cette information tacitement admise. C'est plus intelligible. Enn, je suis trs sceptique sur la ncessit pour une application d'avoir accs en lecture l'attribut userPassword. Les seuls cas que je connaisse concernent radius ou kerberos, dans des conguration particulires, dans lesquelles l'annuaire est utilis comme solution de stockage de mots de passe, avec des syntaxes spciques, et jamais en rutilisant l'attribut mot de passe de l'annuaire lui-mme. Toutes les autres applications se contentent d'une opration bind sur l'annuaire, avec l'identicant de l'utilisateur, pour laquelle seul la permission by anonymous auth est ncessaire. Cette permission n'existe que depuis rcemment, mon exemple dcrit un ACL qui remonte 2006 je crois. Par ailleurs, je crois que dovecot ne sa(va)it pas se binder directement en tant que l'utilisateur LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 17 sur 18 23/09/2014 21:18 pour vrier son mot de passe, je n'exclus pas de ne pas tre jour sur la question, mais du coup, l'acl dovecot semble utile Note : les commentaires appartiennent ceux qui les ont posts. Nous n'en sommes pas responsables. LDAP, un peu de technique. - LinuxFr.org http://linuxfr.org/users/peb--2/journaux/ldap-un-p... 18 sur 18 23/09/2014 21:18