Sie sind auf Seite 1von 18

Journal : LDAP, un peu de technique.

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

Das könnte Ihnen auch gefallen