[SLAPD] Reconfiguration impossible, comportement incohérent

Salut à tous!
Bon ca fait trop longtemps que je me prend la tête, me voila dans l’obligation de poster.

Alors voila, j’essaye de réinstaller slapd sur une debian squeeze ou il était installé depuis un moment… et lamentablement craché pour des raisons indéterminées depuis un moment…

D’abord j’ai essayé de réinstaller avec un coup de “apt-get remove --purge slapd” suivi d’un “rm /var/lib/ldap -R” (on éradique tout) avant d’“apt-get install slapd”.
Dans ce cas, pas d’assistant d’installation. Les fichiers de configs de /etc/ldap/slapd.d sont bien supprimés suite au remove, et sont recréés suite à l’install.
la configuration sort donc de je-ne-sais-ou, puisque ca m’étonnerai que “olcRootDN: cn=admin,dc=fr” soit une conf par défaut du paquet (fichier /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif).

Il faut noter qu’a ce moment, ca fonctionne.
Seulement un DN qui vaut dc=fr, ca ne me va pas, je cherche à avoir dc=mondomaine,dc=fr.

J’ai donc essayé dpkg-reconfigure slapd. L’assistant me permet de saisir un DN pour ma base openldap, mais n’applique rien. La procédure arrive à son terme sans erreur apparente et la base n’a pas changé. Pas étonnant puisque je constate que les fichiers de cfg de la base dans /etc/ldap/slapd.d/cn=config/ n’ont pas bougés.

Du coup, je que je me suis dis c’est que je pouvais supprimer la base openldap et en recréer une nouvelle à la mano :

  1. /etc/init.d/slapd stop
  2. rm /var/lib/ldap/*
  3. remplacement de toutes les occurences de dc=fr par dc=mondomaine,dc=fr dans /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif (il s’agit du seul fichier de configuration de la base il me semble, dc=fr n’apparrait dans aucun autre fichier du répertoire /etc/ldap/slapd.d/cn=config.
  4. /etc/init.d/slapd start

=> Là c’est à mon sens incohérent, je me connecte avec cn=admin,dc=domaine,dc=fr mais l’objet dc=domaine,dc=fr est introuvable.

J’ai essayé tout un tas de tutos pour créer une nouvelle base openldap… Sans succès.
Du coup je déprime là. Je fais quoi à votre avis?

Merci.

Salut,

Donnes le retour de cette commande …

Salut!
aptitude search ~c ne renvoi rien. C’est supposé lister les paquets désinstallés non?
J’ai oublié de préciser que j’effectue un apt-get autoclean entre le remove et la réinstalle de slapd…

Oui!

En première idée, tes fichiers de conf, sont toujours présents, chose que tu sembles confirmer.

Suppression d’un paquet en plus propre!

Requière aptitude.

En mode simulation -s

Nettoyer sa Debian. isalo.org/wiki.debian-fr/ind … _sa_Debian

Recherches les fichiers de configuration “orphelins”.

Supprimer tous les Fichiers de configuration orphelins.

Recherches la présence du répertoire slapd. Probablement dans /etc/…

Supprimes si présent dans /etc/…

-i pour demande de confirmation, rm va descendre dans le dit répertoire et t’interrogera. Réponses :Oui où Non ( Y où N)

ps: fais un copier/coller de toutes ces opérations de la console, dans le cas ou, pour débrouiller l’affaire … si tu as le moindre doute n’hésites donc pas.

Ensuite, réinstallation de slapd en mode simulation.

  • Nettoies la base.

[code] # apt-get clean

apt-get autoclean[/code]

Le bébé se présentant bien … install!

Yes merci,
alors c’est partit :

root@xxx:/home/lyrad# aptitude -s remove --purge slapd
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.
Charger/installer/enlever des paquets.
root@xxx:/home/lyrad# dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')
dpkg: --purge a besoin d'au moins un nom de paquet comme paramètre
Utiliser « dpkg --help » pour une obtenir une aide sur l'installation et la désinstallation des paquets [*] ;
Utiliser « dselect » ou « aptitude » pour gérer les paquets de manière
plus conviviale ;
Utiliser « dpkg -Dhelp » pour obtenir une liste des valeurs drapeaux de débogage ;
Utiliser « dpkg --force-help » pour consulter la liste des options de forçage ;
Utiliser « dpkg-deb --help » pour obtenir une aide sur la manipulation des fichiers *.deb ;
Les options marquées d'un [*] affichent beaucoup d'informations - tubez-les à travers « less » ou « more ».

Marche pas terrible, du coup :

root@xxx:/home/lyrad# aptitude purge ~c
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.
root@xxx:/home/lyrad# find / -name "*slapd*"
/var/run/slapd
/usr/share/webmin/ldap-server/save_slapd.cgi
/usr/share/webmin/ldap-server/help/slapd.html
/usr/share/webmin/ldap-server/help/slapd.ca.html
/usr/share/webmin/ldap-server/images/slapd.gif
/usr/share/webmin/ldap-server/edit_slapd.cgi

/var/run/slapd est un répertoire vide le reste c’est webmin. Dans le doute je les ai flingués.

root@xxx:/var/run/slapd# aptitude -s install slapd
Les NOUVEAUX paquets suivants vont être installés :
  slapd
0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 1 589 ko d'archives. Après dépaquetage, 4 018 ko seront utilisés.
Charger/installer/enlever des paquets.

Ca se présente bien…

root@xxx:/var/run/slapd# apt-get install slapd
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les NOUVEAUX paquets suivants seront installés :
  slapd
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 1 589 ko dans les archives.
Après cette opération, 4 018 ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://ftp.fr.debian.org/debian/ squeeze/main slapd amd64 2.4.23-7.2 [1 589 kB]
1 589 ko réceptionnés en 0s (6 583 ko/s)
Préconfiguration des paquets...
Sélection du paquet slapd précédemment désélectionné.
(Lecture de la base de données... 62450 fichiers et répertoires déjà installés.)
Dépaquetage de slapd (à partir de .../slapd_2.4.23-7.2_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de slapd (2.4.23-7.2) ...
  Moving old database directory to /var/backups:
  - directory unknown... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.
Starting OpenLDAP: slapd.

Fail, l’assistant de config ne me demande qu’un mot de passe administrateur pour la base OpenLdap. Il devrait me demander le DN et le nom de l’organisation.
A cette étape donc, je me connecte à mon serveur avec les params cn=admin,dc=fr pour l’user et dc=fr pour l’objet racine. Ca fonctionne.

dkpg-reconfigure slapd
Vous vous omettre la configuration d'openLDAP? NON
DN (est présent fr dans le champ) : domaine.fr
Organisation (est présent fr dans le champ) : domaine.fr
mdp admin (2fois) : xxx
Module de base de données à utiliser : HDB
Faut-il supprimer la base de données à la purge du paquet ? OUI
Faut-il déplacer l'ancienne base de données ? OUI
Faut-il autoriser le protocole LDAPv2 ? NON

Moving old database directory to /var/backups:
Backup path /var/backups/unknown-2.4.23-7.2.ldapdb exists. Giving up...
/etc/init.d/sldap restart

Et… Fail, la connection à ma base openLDAP fonctionne toujours avec cn=admin/dc=fr, dpkg-reconfigure n’a eu aucun effet.

J’arrive pas a déterminer si c’est seulement un problème de paquet/configuration. Je devrait pouvoir détruire cette base à la main et en recréer un nouvelle à partir d’un fichier ldiff non?

Bon, une conf par défaut est importée de dieu sait ou, et le reconfigure ne marche pas, c’est un fait.

Mais admettons, peut etre il a t’il une solution pour créer la base à la mano :

Arret du deamon

/etc/init.d/slapd stop

Destruction de la base :

rm /var/lib/ldap/*

modification du fichier de création de la base : Je remplace toutes les occurrences de dc=fr par dc=mondomaine,dc=fr. C’est ce que devrait me faire l’assistant de configuration quand je lui donne pour DN mondomaine.fr.

Fichier original :

[color=#0080FF]root@xxx:/etc/ldap# cat slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif[/color]
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: 5d7d08ca-df9c-1030-9193-87360a98f803
creatorsName: cn=config
createTimestamp: 20120130144223Z
entryCSN: 20120130144223.347902Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120130144223Z
root@xxx:/etc/ldap# cat slapd.d/cn\=config/olcDatabase\=\{1\}hdb.ldif
dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=fr
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=fr" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=fr" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=fr
olcRootPW:: xxx
olcDbCheckpoint: 512 30
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
olcDbIndex: objectClass eq
structuralObjectClass: olcHdbConfig
entryUUID: 5d7d82d2-df9c-1030-919b-87360a98f803
creatorsName: cn=admin,cn=config
createTimestamp: 20120130144223Z
entryCSN: 20120130144223.351026Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20120130144223Z

On y trouve donc la fameuse conf que debian me met par defaut quand j’installe le paquet : cn=admin,dc=fr et que dpkg-reconfigure refuse de modifier.

Après forçage à la main donc
Fichier après modif :

[color=#0080FF]root@xxx:/etc/ldap# cat slapd.d/cn\=config/olcDatabase\=\{1\}hdb.ldif[/color]
dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=domaine,dc=fr
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=domaine,dc=fr" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=domaine,dc=fr" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=domaine,dc=fr
olcRootPW:: xxx
olcDbCheckpoint: 512 30
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
olcDbIndex: objectClass eq
structuralObjectClass: olcHdbConfig
entryUUID: 5d7d82d2-df9c-1030-919b-87360a98f803
creatorsName: cn=admin,cn=config
createTimestamp: 20120130144223Z
entryCSN: 20120130144223.351026Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20120130144223Z

Voila, sur ce je redémarre slapd :

/etc/init.d/slapd start

Puisque qu’il n’a plus de base de donnée, il va piocher dans ses fichier de conf et créé la nouvelle base à partir de celui que j’ai modifié :

root@xxx:/etc/ldap# ll /var/lib/ldap
total 1580
-rw-r--r-- 1 openldap openldap     2048 30 janv. 17:28 alock
-rw------- 1 openldap openldap    24576 30 janv. 17:28 __db.001
-rw------- 1 openldap openldap   376832 30 janv. 17:28 __db.002
-rw------- 1 openldap openldap  2629632 30 janv. 17:28 __db.003
-rw------- 1 openldap openldap   163840 30 janv. 17:28 __db.004
-rw------- 1 openldap openldap  1277952 30 janv. 17:28 __db.005
-rw------- 1 openldap openldap    32768 30 janv. 17:28 __db.006
-rw-r--r-- 1 openldap openldap       96 30 janv. 17:28 DB_CONFIG
-rw------- 1 openldap openldap     8192 30 janv. 17:28 dn2id.bdb
-rw------- 1 openldap openldap    32768 30 janv. 17:28 id2entry.bdb
-rw------- 1 openldap openldap 10485760 30 janv. 17:28 log.0000000001

Et c’est la que ca devient chelou :
Pour me connecter à la base, l’utilisateur qui fonctionne maintenant est cn=admin,dc=domaine,dc=fr (+pass) => Parfait!
Une fois la connexion établie, impossible de trouver l’objet racine dc=domaine,dc=fr (ni dc=fr tout seul d’ailleurs, qui fonctionnait avant ces modif). => Fail!

Avis aux pro d’openLDAP donc :

  1. Cette démarche pour “changer” de base LDAP vous semble elle correcte? (j’ai essayé ca mais egalement une armée de tutos differents chopés sur google sans plus de résultats.

  2. Y a t’ils d’autre fichiers de configuration pour 1 base openldap que /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif? Ca serait l’expliquation idéal pour cet objet racine non trouvé… D’un autre coté j’ai balancé des cat * | grep “dc=fr” tout azimut dans tous les rép et sous rep qui me semblaient liés à slapd et je n’ai trouvé que ce fichier…

  3. Est ce que j’ai un moyen d’avoir plus d’infos sur ce qui ce passe?(logs…)

  4. Si je suis dans une impasse avec ce paquet, quelle solution de contournement me reste t’il pour faire tourner un serveur ldap sur cette debian? choper les sources et recompiler l’bordwell?

Voila, merci beaucoup!

:118:naughty:

-s = simulation !!!

Simulation de l’opération. “-s”
Simuler : Faire paraître comme réelle une chose qui ne l’est pas.
Simulé un orgasme.

Simulation …

# aptitude -s remove --purge slapd

la suite coule de source … :033

[quote=“lyrad”]root@xxx:/home/lyrad# aptitude -s remove --purge slapd
Aucun paquet ne va être installé, mis à jour ou enlevé.[/quote]

[quote]root@xxx:/home/lyrad# dpkg -P $(dpkg -l | awk ‘$1~/^rc$/{print $2}’)
dpkg: --purge a besoin d’au moins un nom de paquet comme paramètre[/quote]

Tu m’étonne … :mrgreen:

cela risque d’être coton pour la suite, :mrgreen: dans la mesure, ou tu l’auras compris à présent, slapd n’a pas était dé-installé!!!

Avec les rm en pagailles … :033

Pas si sur … la pseudo réinstallation est peut être dû à rm /var/run/slapd et autre …

En conclusion, reprends la dés-installation à proprement dit! Sans là simulation, n’en déplaise à Madame … :laughing:

aptitude  remove --purge slapd

Attend attend,
Merci beaucoup pour ton intérêt et ton aide mais on s’emmèles les pinceaux je crois :blush: :

Dans mon post, à la première commande de désinstall en mode simulation : aptitude -s remove --purge slapd, debian me répond :
"0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour."
Donc à ce moment là, slapd n’est pas installé.

Ton poste propose une méthode alternative à apt-get remove --purge slapd si j’ai bien compris (“Suppression d’un paquet en plus propre!”).
Donc moi j’ai fait un apt-get remove --purge slapd, et j’ai appliqué ta méthode pour vérifier que le paquet était bien désinstallé.
Et oui, comme tu l’a vu, une simulation de désinstalle ne donne rien (normal, il est déjà désinstallé), les fichiers de conf ne sont pas présents, la seule trace qu’il reste de slapd est ce répertoire vide dans /var/run/.

Après je peux recommencer :

root@xxx:/home/lyrad# apt-get remove --purge slapd
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  slapd*
0 mis à jour, 0 nouvellement installés, 1 à enlever et 2 non mis à jour.
Après cette opération, 4 018 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 62691 fichiers et répertoires déjà installés.)
Suppression de slapd ...
Stopping OpenLDAP: slapd.
Purge des fichiers de configuration de slapd ...
Removing slapd configuration... done.
Traitement des actions différées (« triggers ») pour « man-db »...

find / -name “slapd” donne 2 entrées l’archive (qui disparait après un apt-get clean)
et le répertoire vide /var/run/slapd (que je supprime)

Voila, on est dans la même configuration qu’au début de mon post d’hier : Pas de trace de slapd sur le système, comportement illogique et mauvaise conf si je fais une réinstalle…