Note
Suite a de nombreuses frustration de votre part et de la mienne au sujet de OpenLDAP. OpenLDAP “is a pain in the a..”. Pour mon infrastructure j’ai migré vers OpenDS; necessite un peu plus de ressource (Java) par contre, la gestion et la syncronisation est un charme. Je vais publier bientôt des tutoriel au sujet de OpenDS.
Description
La configuration d’OpenLDAP c’est un peu compliquer. cn=config est toujours utilisé, par contre lors de l’installation du paquet, uniquement un squelette de la configuration est installé.
On ne vous demande plus de mot de passe lors de l’installation du paquet et “dpkg-reconfigure slapd” ne fait que restaurer le squelette de la configuration initial. Vous devez utiliser le compte root (ou sudo) pour configurer la base de donnée, dn et acl.
Voici une procédure sur comment installer OpenLDAP sous Ubuntu 9.10 ou 10.4.
Le guide officiel sur help.ubuntu.com n’est pas à jour et ne spécifie pas comment installer OpenLDAP sous Karmic ou Lucid.
Dans ce tutoriel nous utiliserons dc=example,dc=com comme arbre LDAP. Ajuster en conséquence.
Pré-requis
Avoir installé Ubuntu
Paquets à installer :
apt-get -y install slapd ldap-utils
Configuration
Étape 1: Changer de répertoire pour /etc/ldap :
cd /etc/ldap
Étape 2: Ajouter les schéma que vous avez de besoin, car uniquement le schema core est ajouté par défaut :
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Étape 3: Ajouter le module de base de donnée et la créer.
Créer un fichier : db.ldif
vi db.ldif# Load dynamic backend modules
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb
# Create the database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: example
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eqldapadd -Y EXTERNAL -H ldapi:/// -f db.ldif
Étape 4: Créer le dn de base et ajouter le compte administrateur pour le serveur OpenLDAP.
Modifer le text suivant a vos besoins the text below to your needs and wants and generate a password for the admin account. La chaine MD5 présente dans l’exemple représente : example
Créer un mot de passe encrypter pour le compte administrateur, avec la commande suivante :
slappasswd -hCréer le fichier base.ldif:
vi base.ldifdn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: example.com
dc: example
description: My LDAP Root
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword:{MD5}Gnmk1g3mcY6OWzJuM4rlMw==
description: LDAP administratorldapadd -Y EXTERNAL -H ldapi:/// -f base.ldif
Étape 5: Modifier le système d’acl (liste de contrôle d’accès)
Il y a quelques acl dans la configuration d’OpenLDAP qui prévient la connexion à partir d’un client ldap comme phpldapadmin ou Apache Directory Sudio, alors nous allons ajuster les droits pour cn=admin,cn=config. Après cette modification l’option -D cn=admin,cn=config sera nécessaire pour ce connecter au serveur LDAP.
Créer un fichier config.ldif
vi config.ldif
Contenu du fichier config.ldif:
dn: cn=config
changetype: modify
delete: olcAuthzRegexp
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
delete: olcAccess
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcRootDN
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}Gnmk1g3mcY6OWzJuM4rlMw==
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccessIntégrer dans OpenLDAP :
ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
Étape 6: Ajuster les acl du LDAP
Maintenant nous devons ajouter quelques droits au LDAP, root possède les droits de lecture et d’écriture, parcontre l’acl suivant représente celui qui à toujours été livré avec OpenLDAP dans le passé.
Créer un fichier nommé acl.ldif :
vi acl.ldifdn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * readNow load the acl into the openldap server:ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
Bonjour,
Je viens de découvrir ce tutoriel et je suis arrivé à la même chose.
J’ai juste une question, j’ai créé des utilisateurs et des groupes.
Je souhaiterais forcer le changement de mot de passe à l’utilisateur lors de sa première connexion.
Nous devons faire appel à ppolicy.schema.
J’ai tenté de créer le fichier suivant :
olcDatabase: {1}hdb
olcSuffix: dc=local,dc=lan
overlay ppolicy
ppolicy_default “cn=default,dc=example,dc=com”
dn: ou=policies,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: policies
dn: cn=default,ou=policies,dc=example,dc=com
cn: default
objectClass: pwdPolicy
objectClass: Person
objectClass: top
pwdAllowUserChange: TRUE
pwdAttribute: 2.5.4.35
pwdMustchange: TRUE
Mais ce fichier est non fonctionnel.
Je n’arrive pas à arriver à ce que je veux, j’ai une erreur sur les lignes
overlay ppolicy
ppolicy_default “cn=default,dc=example,dc=com”
que je n’arrive pas à implémenter.
Auriez-vous une idée?
Merci.
hello,
Merci, vraiment pratique.
juste une remarque, il y à une erreur de copier/coller à la fin des fichiers db.ldif et config.ldif avec un bout en trop …
Merci, c’est corrigé.
Malheureursement pas pour l’instant. Mais je doit configurer c’est configuration bientôt. Je vais vous tenir au courrant.
Super cool ton tuto. ça marche à merveille. Il ya un truc qui me derange pourquoi l’on t’il rendu aussi compliquer ? Dans es anciennes versions comme sous debian 4.0 ubuntu 8 il suffisait que qq ligne et le serveur est debout.
Merci
Liquideshark.
Es ce possible de sauvegarder toute la configuration d’installation ? et la reutiliser en cas de reinstallation ?
Merci
Merci, OpenLDAP a integré les config avec “cn=config” pour permettre la modification en temps réel des configurations, sans avoir à redémarrer le service. Ubuntu a intégré ce mode de configuration avec 9.10 (a mon souvenir), mais la version qui venais de Ubuntu ne fonctionnait pas et était non documenter. Je suis d’accord que c’est plus complexe, mais on fini par s’habituer.
Oui tu peux faire un backup répertoire cn=config.
Salut et merci pour tes reponses. j’ai un petit souci c’est que j’ai essayer d’ajouter : core.ldif
root@ldapserver:/home/jamal# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry “cn=core,cn=schema,cn=config”
ldap_add: Insufficient access (50)
Il ne me donne pas l’autharisation. Ta pas une idée ?
Merci
C’est ok le core.ldif est installé par default.
Bonjour,
J’ai suivi votre tuto et j’ai une erreur
Lorsque je lance le config.ldiff, j’obtiens :
ldap_modify: No such attribute (16)
additional info: modify/delete: olcAuthzRegexp: no such attribute
Test fait sur ubuntu 10.04
Dans votre tuto, vous n’expliquez pas comment repartir sur une config neuve.
Ce tutoriel explique comment faire la configuration a partir d’un système vierge. L’idée de réinitialiser un serveur peut être le sujet d’un autre tutoriel.
j’ai suivi votre tuto à la lettre sauf pour le mot de passe biensur ^^
mais j’obtien deux erreurs
Étape 5: Modifier le système d’acl (liste de contrôle d’accès)
modifying entry “cn=config”
ldap_modify: No such attribute (16)
additional info: modify/delete: olcAuthzRegexp: no such attribute
Étape 6: Ajuster les acl du LDAP
root@Hasnae-laptop:/etc/ldap# ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
j’étais ds le 9.10 et j’ai upgdr en 10.04
mais tjrs les memes erreurs
je desinstal et je réinstall ldap en vin si ya une commande qui réinitializ tt
je vous serai reconnaissante si vs m’en faites part
Ps j’utilise
apt-get remove –purge ldap slapd-utils
mercii d’avance , je galère ça fé une semaine et j’ai un mini netbook je boot sur clé ni debian ni ubuntu 8.04 ne marche s
J’ai la meme erreur que mike:
Lorsque je lance le config.ldiff, j’obtiens :
ldap_modify: No such attribute (16)
additional info: modify/delete: olcAuthzRegexp: no such attribute
Test fait sur ubuntu 10.04
Merci pour ce tuto, mais je bloque également (précision, je suis un linuxien débutant (c, et sous ubuntu 10.4).
Déjà, je tombe sur la même erreur que Mike.
Mais surtout, arrivé à la ligne :
ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
J’ai inéxorablement droit au :
ldap_bind: Invalid credentials (49)
J’avais d’abord fait une install avec mon nom de domaine, mon mot de passe personnalisé (essai en clair, puis modification des fichiers pour le mettre en crypté) … et puis j’ai essayé en copiant directement les textes depuis ce tuto, sans rien changer.
J’ai également utilisé le script de Keith Smith (dans les commentaires sur le lien howtoforge.com) … et exactement le même résultat. De même avec d’autres tutos approchant … vous avez une idée ?
Bonjour,
j’ai suivi le tuto jusqu’au niveau de la commande:”ldapadd -Y EXTERNAL -H ldapi:/// -f base.ldif”. j’ai cette erreur suivante:(SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry “dc=example,dc=com”
ldap_add: Server is unwilling to perform (53)
additional info: no global superior knowledge).
Que faire svp, je suis coincé.
merci
bonjour tout le monde
je suis un tout petit débutant dans le domaine de UBUNTU et j’aimerai bien savoir quelles sont les modif à prevoir pour un nom du domaine different que exemple .com ?
Merci d’avance pour votre attention et votre aide
C’est assez simple, change exemple.com pour tonnomdedommaine.lafindunomdedomaine !
Bonjour,
comme mike suivi le tuto mais arrivé à l’étape 5 ca bug
voila le log :
/etc/ldap# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/config.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry “cn=config”
ldap_modify: No such attribute (16)
additional info: modify/delete: olcAuthzRegexp: no such attribut
donc si quelqu’un connais la solution je suis preneur
Merci d’avance pour votre aide
pour l’étape 5 j’ai réussi en modifiant directement les fichier dans sldap.d
maintenant il me reste la gestion des droit qui ne passe pas
ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
Enter LDAP Password:
modifying entry “olcDatabase={1}hdb,cn=config”
ldap_modify: Other (e.g., implementation specific) error (80)
additional info: handler exited with 1
si vous avez des idées
root@serverldap:/etc/ldap# ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
Enter LDAP Password:
ldapbind: Invalid credentials (49)
une idée?
merci
bjr,
je suis débutant en openldap et j’ai un travail a rendre dans trois jours. une sorte d’un programme en perl qui interoge un annuaire ldap.
j’ai suivé ces étapes pour crée un serveur ldpa et l’étape 5 : il m affiche ça
root@fahem:/etc/ldap# ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapadd: invalid format (line 13) entry: “cn=config”
ldapadd: wrong attributeType at line 4, entry “cn=config”
ça vient d’ou svp
voila mon fichier config.ldif
dn: cn=config
changetype: modify
delete: olcAuthzRegexp
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
delete: olcAccess
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcRootDN
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootPW::{SSHA}HWhjXI9VzWCeLCUI07Lr2ienC++4yiVa
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess
Bonjour,
merci pour ce tuto assez pratique …
j’ai juste un soucis avec la création du fichier db.ldif j’obtient l’erreur suivante :
adding new entry “cn=module{0},cn=config”
ldap_add: Invalid syntax (21)
additional info: objectClass: value #2 invalid per syntax
je n’ai aucune idée sur la cause puis-je avoir une soulution svp
Merci,
Pour répondre a ta question, je crois que le changement est pour permettre des modifications en “live” sans redémarrer le serveur OpenLDAP.
Un GRAND MERCI !
Bonjour,
J’ai suivi votre tuto tout a très bien marché jusqu’à la dernière commande :
“ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif”
qui me ressort l’erreur suivante :
ldap_bind: Invalid credentials (49)
Je ne comprend pas d’où peut venir mon erreur.
Y a-t’il quelque chose d’autre à modifier ?
Merci de votre aide
bnjour;
j’ai un problem; quelqu’un me aidé svp;
lors que j’ai fai la commande: ldapadd -Y EXTERNAL -H ldapi:/// -f db.ldif
j’ai reçu un erreur :
ldapadd: attributeDescription “dn”: (possible missing newline after line 7, entry “cn=module{0},cn=config”?)
adding new entry “cn=module{0},cn=config”
ldap_add: Invalid syntax (21)
additional info: objectClass: value #2 invalid per syntax
merci d’avance .
Bonjour,
je rencontre des problèmes durant l’installation, j’ai des erreurs à chaque fois que je rentre une ligne de type ldapadd -Y EXTERNAL -H ldapi:/// -f *.ldif : ldap_add: Undefined attribute type (17)
additional info: dn: attribute type undefined
Je ne sais pas d’où ça vient et j’ai une erreur sur la dernière commande après la demande du mot de passe il m’affiche : ldap_bind: Invalid credentials (49)
merci de d’avance de vos réponse
bonjour tout le monde
le tuto ca marche bien mé just j’ai rencontré un probleme lorsque j’execute la commande suivante
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapadd: wrong attributeType at line 7, entry “olcDatabase={-1}frontend,cn=config”
et je ne sais pa d’ou vient cette erreur merci d’avance
bonjour, openldap marche correctement avec aprés un grand effort, j’utilise phpldapadmin pour le manipuler
Salut,
Tout d’abord merci à estheban pour cet excellent tuto. Ca permet d’avoir une bonne base mais j’ai aussi rencontré comme on peut voir sur la plupart des commentaires.
Je donne les petites astuces qui m’ont permis de trouver les solutions à mes problèmes:
- sur la partie du mot de passe (slappasswd -h) il faut taper sous console :
slappasswd -h "{MD5}"les guillemets sont importants sinon elles sont interprétés par le shell.
- pour ceux qui ont des erreurs du genre :
ldapadd: Invalid syntax (21)
additional info: objectClass: value #2 invalid per syntax
Regardez bien votre fichier ldif, il doit avoir un espace en trop en fin de ligne (souvent sur les lignes vides, ça arrive avec les copier-coller).
- pour ceux qui ont des erreurs du genre :
ldapmodify: No such attribute (16)
additional info: modify/delete: olcAuthzRegexp: no such attribute
Dans cet exemple il ne trouve pas l’attribut ‘olcAuthzRegexp’ dans sa base, donc il ne peut pas le supprimer. Il suffit donc de modifier dans le fichier ldif et de commenter la ligne ‘delete: olcAuthzRegexp’ et de relancer la commande. Répétez l’opération si nécessaire.
Bonne chance !