Bonjour à tous,


Voici quelques jours que j'essais de configurer un serveur openldap sur une machine sans succès.

Pour ce faire j'ai trouvé ce tuto, qui me semblait être un bon point de départ.

j'ai donc installé openldap-clients, openldap-servers et openldap-devel; openldap étant installé de base.

en suivant le tuto j'ai donc trouvé mon fichier etc/openldap/ldap.conf comme suit :
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
URI ldap://127.0.0.1/
BASE dc=mondomaine,dc=org
TLS_CACERTDIR /etc/openldap/cacerts
et renommer le fichier /etc/openldap/slapd.conf.bak en /etc/openldap/slapd.conf et fais les modifs propodées, à savoir modifié les :
suffix "dc=mondomaine,dc=org"
rootdn "cn=Manager,dc=mondomaine,dc=org"
rootpw {CRYPT}D8PqOlSGr9alM

pour avoir un fichier slapd.conf comme ceci :
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#

include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema

# Allow LDAPv2 client connections. This is NOT the default.
allow bind_v2

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

# Load dynamic backend modules:
# modulepath /usr/lib/openldap # or /usr/lib64/openldap
# moduleload accesslog.la
# moduleload auditlog.la
# moduleload back_sql.la
# moduleload denyop.la
# moduleload dyngroup.la
# moduleload dynlist.la
# moduleload lastmod.la
# moduleload pcache.la
# moduleload ppolicy.la
# moduleload refint.la
# moduleload retcode.la
# moduleload rwm.la
# moduleload syncprov.la
# moduleload translucent.la
# moduleload unique.la
# moduleload valsort.la

# The next three lines allow use of TLS for encrypting connections using a
# dummy test certificate which you can generate by changing to
# /etc/pki/tls/certs, running "make slapd.pem", and fixing permissions on
# slapd.pem so that the ldap user or group can read it. Your client software
# may balk at self-signed certificates, however.
# TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
# TLSCertificateFile /etc/pki/tls/certs/slapd.pem
# TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# ldbm and/or bdb database definitions
#######################################################################

database bdb
suffix "dc=mondomaine,dc=org"
checkpoint 1024 15
rootdn "cn=Manager,dc=mondomaine,dc=org"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
rootpw {CRYPT}D8PqOlSGr9alM

# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap

# Indices to maintain for this database
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub

# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
# bindmethod=sasl saslmech=GSSAPI
# authcId=host/ldap-master.example.com@EXAMPLE.COM


# enable monitoring
database monitor

# allow onlu rootdn to read the monitor
access to *
by dn.exact="cn=Manager,dc=mondomaine,dc=org" read
by * none
puis j'ai enfin testé la chose en faisant un service slapd start.

Mais voici ce que m'annonce la console :
[root@srvr ~]# service slapd start
/var/lib/ldap/__db.002 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/alock is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/id2entry.bdb is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/__db.006 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/log.0000000001 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/__db.003 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/dn2id.bdb is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/__db.001 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/__db.005 is not owned by "ldap" [AVERTISSEMENT]
/var/lib/ldap/__db.004 is not owned by "ldap" [AVERTISSEMENT]
Vérification des fichiers de configuration pour slapd : [ÉCHOUÉ]
bdb_db_open: database "dc=my-domain,dc=com": alock package is unstable.
backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (-1)
slap_startup failed (test would succeed using the -u switch)
d'anciens fichiers verroux peuvent être présents dans /var/[AVERTISSEMENT]
La console me parle d'un dc=my-domain,dc=com mais je ne vois pas ou elle trouve cette information.

Bref je fais appel à vous afin de trouver ce que je fais mal.

Si vous avez des idées sur la bêtise que j'ai faite ou ce qui ne va pas ????

D'avance merci à tous
à Heldwin,

voici les résultats de comandes :
[root@srvr ~]# ls -ld /var/lib/ldap
drwx------. 2 ldap ldap 4096 mai 12 12:53 /var/lib/ldap
[root@srvr ~]# ll /var/lib/ldap
total 1048
-rw-------. 1 root root 2048 mai 12 11:44 alock
-rw-------. 1 root root 24576 mai 12 11:44 __db.001
-rw-------. 1 root root 221184 mai 12 11:44 __db.002
-rw-------. 1 root root 270336 mai 12 11:44 __db.003
-rw-------. 1 root root 163840 avril 12 22:22 __db.004
-rw-------. 1 root root 802816 mai 12 11:44 __db.005
-rw-------. 1 root root 32768 mai 12 11:44 __db.006
-rw-------. 1 root root 8192 avril 12 22:21 dn2id.bdb
-rw-------. 1 root root 32768 avril 12 22:21 id2entry.bdb
-rw-------. 1 root root 10485760 avril 12 22:22 log.0000000001
tu penses que ca peut venir de là ????
à Heldwin :

j'ai fais la commande chown -R ldap /var/lib/ldap, puis refais un ll /var/lib/ldap et voici le résultat :
[root@srvr ~]# ll /var/lib/ldap
total 1048
-rw-------. 1 ldap root 2048 mai 12 11:44 alock
-rw-------. 1 ldap root 24576 mai 12 11:44 __db.001
-rw-------. 1 ldap root 221184 mai 12 11:44 __db.002
-rw-------. 1 ldap root 270336 mai 12 11:44 __db.003
-rw-------. 1 ldap root 163840 avril 12 22:22 __db.004
-rw-------. 1 ldap root 802816 mai 12 11:44 __db.005
-rw-------. 1 ldap root 32768 mai 12 11:44 __db.006
-rw-------. 1 ldap root 8192 avril 12 22:21 dn2id.bdb
-rw-------. 1 ldap root 32768 avril 12 22:21 id2entry.bdb
-rw-------. 1 ldap root 10485760 avril 12 22:22 log.0000000001
mais enfaisant un service slapd start j'ai ca maintenant :
[root@srvr ~]# service slapd start
Vérification des fichiers de configuration pour slapd : [AVERTISSEMENT]
bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
Expect poor performance for suffix "dc=my-domain,dc=com".
config file testing succeeded
Démarrage de slapd : [ OK ]
J'en déduis que le serveur a démarré, mais il me parle toujours d'un my-domain.com.

Tu vois d'ou ca peut venir ???
@fredouille : Il me semble que tu mélanges deux fichiers : slapd.conf (configuration de ton serveur) et ldap.conf (configuration du client).

Quelle version d'OpenLDAP utilises-tu ? Normalement c'est bien le paramètre suffix (ou olcSuffix dans le cas de la configuration dynamique) qui permet de déterminer la racine de ta base bdb.
@ aswat,

non je ne mélange pas les fichiers, j'ai bien compris que ldap.conf controlait le client et slapd.conf le serveur; mais merci pour le rappel...😉

pour la version du serveur c'est la 2.4.19
en suivant en parallèle ceci,

on me dit bien qu'une fois renseignée le suffix etn en faisant la commande : ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts je devrai voir si le serveur est bien configuré et coorectement définit.

Mais à chaque fois ca m'affiche ceci :
[root@srvr ~]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=my-domain,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
Je ne vois vraiment ou le serveur trouve cette info......

Vous avez une idée ????
a Heldwin,

Je viens de renommer le dossier /etc/openldap/slapd.d puis relancé le service slapd et en effet le serveur lit le bon suffix.

Je n'ai toujours pas compris pourquoi le fichier DB_CONFIG n'exite pas dès l'installation mais c'est pas grave je l'ai copié comme tu me l'avais proposé.
a tous :

merci pour tout, je viens de redémarrer avec le service avec le fichier DB_CONFIG copié, le dossier slapd.d renommé et une nouvelle entrée dans ma directory (comme le dit le site officiel et tout à très bien fonctionné.
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ OK ]
Démarrage de slapd : [ OK ]
Plus le moindre problème,


Merci à tous pour votre aide....:-D
fredouille wrote:a Heldwin,

Je viens de renommer le dossier /etc/openldap/slapd.d puis relancé le service slapd et en effet le serveur lit le bon suffix.

Je n'ai toujours pas compris pourquoi le fichier DB_CONFIG n'exite pas dès l'installation mais c'est pas grave je l'ai copié comme tu me l'avais proposé.
Le fichier DB_CONFIG est un fichier optionnel qui te permet de configurer de manière précise le "backend" que tu utilises, en général bdb. Ça te permet par exemple de spécifier la taille des logs, le répertoire de stockage des logs, la rotation automatique, etc ....

Pour ce qui est du répertoire slapd.d, en fait depuis la version 2.4.x d'OpenLDAP, la configuration du serveur est gérée de manière dynamique et non plus via le fichier slapd.conf (même s'il est toujours possible d'utiliser le fichier slapd.conf). Visiblement si le répertoire slapd.d et le fichier slapd.conf existent tous les deux, c'est le répertoire slapd.d qui prend le dessus, d'où le problème que tu as rencontré.
a tous,

petit souci, j'ai voulu tenté de repasser le propriétaire des fichiers du dossier /var/lib/ldap sous root (comme à l'install) avec la commande :
chown -R root /var/lib/ldap, sauf que je n'ai pas pensé à éteindre le serveur avant, donc quand j'ai voulu faire un service slapd restart, j'ai eu ce message :
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ÉCHOUÉ]
Vérification des fichiers de configuration pour slapd : [ÉCHOUÉ]
bdb_db_open: database "dc=mondomaine,dc=org": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=mondomaine,dc=org": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb(dc=mondomaine,dc=org): PANIC: fatal region error detected; run recovery
bdb_db_open: database "dc=mondomaine,dc=org" cannot be opened, err -30974. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=mondomaine,dc=org"): bi_db_open failed! (-30974)
slap_startup failed (test would succeed using the -u switch)
d'anciens fichiers verroux peuvent être présents dans /var/[AVERTISSEMENT]
j'ai bien compris la connerie que je viens de faire car même en repassant la commande chown -R ldap /var/lib/ldap, rien n'y fait.


Vous auriez une idée pour réparer ma bêtise ?????

Vrai de vrai je recommencerai plus.....🙁
fredouille wrote:a tous,

petit souci, j'ai voulu tenté de repasser le propriétaire des fichiers du dossier /var/lib/ldap sous root (comme à l'install) avec la commande :
chown -R root /var/lib/ldap, sauf que je n'ai pas pensé à éteindre le serveur avant, donc quand j'ai voulu faire un service slapd restart, j'ai eu ce message :
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ÉCHOUÉ]
Vérification des fichiers de configuration pour slapd : [ÉCHOUÉ]
bdb_db_open: database "dc=mondomaine,dc=org": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=mondomaine,dc=org": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb(dc=mondomaine,dc=org): PANIC: fatal region error detected; run recovery
bdb_db_open: database "dc=mondomaine,dc=org" cannot be opened, err -30974. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=mondomaine,dc=org"): bi_db_open failed! (-30974)
slap_startup failed (test would succeed using the -u switch)
d'anciens fichiers verroux peuvent être présents dans /var/[AVERTISSEMENT]
j'ai bien compris la connerie que je viens de faire car même en repassant la commande chown -R ldap /var/lib/ldap, rien n'y fait.


Vous auriez une idée pour réparer ma bêtise ?????

Vrai de vrai je recommencerai plus.....🙁
Tu as quoi comme message d'erreur au redémarrage ? Quels fichiers tu as dans /var/lib/ldap ?
a aswat :

le message d'erreur est le même qu'avant :
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ÉCHOUÉ]
Vérification des fichiers de configuration pour slapd : [ÉCHOUÉ]
bdb_db_open: database "dc=mondomaine,dc=org": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=mondomaine,dc=org": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb(dc=mondomaine,dc=org): PANIC: fatal region error detected; run recovery
bdb_db_open: database "dc=mondomaine,dc=org" cannot be opened, err -30974. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=mondomaine,dc=org"): bi_db_open failed! (-30974)
slap_startup failed (test would succeed using the -u switch)
d'anciens fichiers verroux peuvent être présents dans /var/[AVERTISSEMENT]
voici les fichiers qui sont dans /var/lib/ldap :
[root@srvr ~]# ll /var/lib/ldap
total 1112
-rw-------. 1 ldap root 4096 mai 12 15:11 alock
-rw-------. 1 ldap ldap 8192 mai 12 14:47 cn.bdb
-rw-------. 1 ldap root 24576 mai 12 14:57 __db.001
-rw-------. 1 ldap root 221184 mai 12 14:57 __db.002
-rw-------. 1 ldap root 270336 mai 12 14:57 __db.003
-rw-------. 1 ldap root 163840 mai 12 14:57 __db.004
-rw-------. 1 ldap root 802816 mai 12 14:57 __db.005
-rw-------. 1 ldap root 32768 mai 12 14:57 __db.006
-rw-r--r--. 1 ldap root 921 mai 12 14:47 DB_CONFIG
-rw-------. 1 ldap root 8192 mai 12 14:47 dn2id.bdb
-rw-------. 1 ldap root 32768 mai 12 14:47 id2entry.bdb
-rw-------. 1 ldap root 10485760 mai 12 14:47 log.0000000001
-rw-------. 1 ldap ldap 8192 mai 12 14:47 objectClass.bdb
a Heldwin :

j'ai fais la commande que tu me proposes et elle m'a donné ceci comme résultat :
[root@srvr ~]# slapd_db_recover -v -h /var/lib/ldap
Finding last valid log LSN: file: 1 offset 67943
Recovery starting from [1][67798]
Recovery complete at Wed May 12 15:30:01 2010
Maximum transaction ID 80000030 Recovery checkpoint [1][67943]
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ÉCHOUÉ]
Vérification des fichiers de configuration pour slapd : [AVERTISSEMENT]
bdb_db_open: database "dc=mondomaine,dc=org": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=mondomaine,dc=org": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded
Démarrage de slapd : [ OK ]
[root@srvr ~]# service slapd restart
Arrêt de slapd : [ OK ]
Démarrage de slapd : [ OK ]
[root@srvr ~]#
ca a l'air d'être reparti, je reboot la machine et je vous tiens au courant...

Concernant votre discussion entre le slapd.conf et le répertoire slapd.d, si depuis la version 2.4.x la config se fait en dynamique et que c'est le dossier slapd.d qui a la priorité, alors faut peut-être mieux que j'essais de configurer mon serveur en dynamique, donc avec slapd.d ???

Qu'en pensez-vous ???
fredouille wrote:Concernant votre discussion entre le slapd.conf et le répertoire slapd.d, si depuis la version 2.4.x la config se fait en dynamique et que c'est le dossier slapd.d qui a la priorité, alors faut peut-être mieux que j'essais de configurer mon serveur en dynamique, donc avec slapd.d ???

Qu'en pensez-vous ???
A mon avis oui, même s'il faut le reconnaitre c'est assez déroutant au début. Le principe est que la configuration du serveur se trouve dans une branche de l'annuaire (cn=config) et la configuration peut donc être modifiée a coup de ldapmodify comme le reste de l'arbre à quelques exceptions près.

la doc d'admin d'OpenLDAP c'est améliorée sur ce sujet.

Pour info, il est possible de convertir un "vieux" fichier slapd.conf en conf dynamique (répertoire slapd.d) comme ceci :
slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd.d
Par contre, visiblement le rpm de fedora a déjà fait le boulot puisque le répertoire slapd.d existe déjà. La présence du fichier slapd.conf entraine une confusion, je pense que cela permet surtout aux personnes qui ont peur de faire le grand saut de rester avec le fichier plat.
La conf dynamique est un réel plus lors de la mise en place d'architecture haute dispo. Pour le reste, effectivement, l'intérêt est limité 🙂 Il n'en reste pas moins que c'est la méthode officielle de configuration. Et rien ne dit qu'en 2.5, le fichier slapd.conf sera encore la ... Par contre, même si c'est pas la bonne pratique, il est possible de modifier la conf dynamique avec "vi" 😉

Exemple avec le fichier /etc/openldap/slapd.d/cn\=config.ldif :
dn: cn=config
objectClass: olcGlobal
cn: config
olcConfigFile: /etc/openldap/slapd.conf
olcConfigDir: /etc/openldap/slapd.d
olcAllows: bind_v2
olcArgsFile: /var/run/openldap/slapd.args
olcAttributeOptions: lang-
olcAuthzPolicy: none
olcConcurrency: 0
olcConnMaxPending: 100
olcConnMaxPendingAuth: 1000
olcGentleHUP: FALSE
olcIdleTimeout: 0 [...]
a Heldwin :

Je ne connais pas grand chose, mais voici ce que j'en pense même si ce n'est pas ce que j'ai fais :
- si depuis la version 2.4.x le slapd.d est en place et qu'il a la priorité sur le fichier slapd.conf qui d'ailleurs à l'install n'existe pas.
- si le slapd.d fait est géré de manière dynamique (même si je ne sais pas ce que cela veut dire précisément).

alors j'opterai pour une configuration par le slapd.d, mais de toi à moi, vu que je découvre le ldap, qu'il y a déjà une config en place dans le slapd.d (donc qu'il faut la modifier ou la supprimer et que je ne sais pas comment on fait), je prends l'option ou j'ai eu de l'aide donc slapd.conf.

Vraisemblablement aswat est du même avis que moi.....


Maintenant je veux bien y passer du temps, si vous vous sentez de m'accompagner dans cette découverte.....

A vous de me dire......
alors ????

Qui est partant pour tenter le coup avec slapd.d ?????



Personne ?????
a MarbolanGos,

Merci pour le fil......