Reconstruire une base OpenLDAP

© Christian PAULUS. Document créé le 27 septembre 2001 , mis à jour le 14 mars 2007.

Un idiot pauvre est un idiot, un idiot riche est un riche. Paul Laffitte

Accueil du site > Astuces > LDAP > Reconstruire une base OpenLDAP

Sauvegarde / openLDAP 2.0.14

A noter : les manipulations suivantes peuvent être réalisées sans le démon slapd actif. Les commandes slapcat et slapadd lisent directement le fichier de configuration slapd.conf et vont directement scruter la base (slapcat) et l’enrichir (slapadd). Il est toutefois conseillé d’arrêter le service slapd pour éviter la perte des données enregistrées par le démon (qui lui, continue à écouter le réseau et fournir le service d’annuaire). Si vous ne désirez pas arrêter le service d’annuaire, placez slapd en mode ’lecture seule’ (voir Une-base-en-lecture-seule).

Attention : si vous ne maîtrisez pas Unix et ses commandes, évitez les manipulations conseillées ici sur votre serveur de production. Demandez conseil à un expert si vous avez le moindre doute à propos de cette astuce.

Conseil : excercez vous sur un serveur de test, sur une base de test, ou tout autre solution qui ne risque pas de mettre vos données et votre service en péril. La manipulation est aisée, mais une erreur humaine peut toujours arriver.

Exercice : une base a besoin parfois d’être nettoyée, lorsque par exemple on passe d’un "schemacheck off" (pas de contrôle du schéma) à un "schemacheck on" (l’inverse). Pour plus de renseignements sur "schemacheck", consulter le manuel en tapant sur terminal : man slapd.conf.

Marche à suivre : sauvegarder la base, exporter la base à nettoyer, nettoyer l’export, re-importer la base.

Sauvegarder la base

  • Arrêtez la base par un ’kill -INT slapdpid’ (slapdpid étant le numéro de process de slapd à arrêter ;
  • Vérifiez que votre démon est bien arrêté (telnet sur le serveur et le port par exemple, etc.) ;
  • Editez le fichier de configuration de slapd (en général : slapd.conf) ;
  • Repérez la ligne précisant le chemin de la base, la directive (à gauche) est "directory". A droite de cette directive se trouve le chemin d’accès de la base ;
  • Allez dans le répertoire précisé par "directory" et sauvegardez les 4 fichiers présents (dn2id.dbb, id2entry.dbb, nextid.dbb et objectClass.dbb) ;
  • Mettez ces fichiers en lieu sûr. Si l’import se passe mal, ou si vous désirez retrouver votre base dans son ancien état, il suffit de replacer ces fichiers sauvegardés ici et de relancer le démon slapd.

Exporter la base

  • Lancez ’slapcat -n 1 -c > /tmp/manouvellebase.ldif’ s’il n’y a qu’une seule base maintenue par slapd (le numéro de la base est indiqué par -n). Le nombre de base maintenue par slapd correspond au nombre de directives "directory" rencontrées dans slapd.conf. Lire le man de slapd.conf si vous avez un doute, sinon vous risquez de travailler sur une base donnée tout en croyant en corriger une autre. Lire le man de slapcat pour plus d’info sur cette commande.

Corriger l’export de la base

  • Editez le fichier /tmp/manouvellebase.ldif (qui est un fichier texte) obtenu par la commande slapcat précédente. Pour l’éditer, vi est conseillé. Le fichier LDIF en question peut-être très gros ;
  • Corrigez les erreurs éventuelles, les attributs incorrects, etc... Attention, certains champs sont enrichis en utf8 (vois si besoin UTF-8-dans-un-fichier-LDIF).

Re-importer la base

  • Retournez dans le répertoire d’accueil de la base (celui indiqué par "directory") ;
  • Supprimez ou déplacez les 4 fichiers *.db. Le répertoire d’accueil (directory) doit être vide ;
  • Lancez ’slapadd -n 1 -l /tmp/manouvellebase.ldif’ s’il n’y a qu’une seule base (lisez plus haut, ou re-lisez la documentation en cas de doute). slapdadd reconstruit les fichiers *.db nécessaires dans le répertoire courant en relisant ce fichier /tmp/manouvellebase.ldif.
  • Vérifiez que les fichiers *.db possèdent les bons droits d’accès : 0400 pour le possesseur de la base, qui est également le possesseur du process slapd (option -u de slapd si besoin).
  • Relancez votre démon slapd.

Plussoyez !

Les forums sont fermés.