ldap_add error (80) Le gestionnaire <olcModuleLoad> est sorti avec 1

8

J'essaie de suivre ce tutoriel pour installer un serveur LDAD de base (OpenLDAP) pour l'authentification clé, mais je suis bloqué sur l'étape où j'ajoute la configuration principale.

J'ai créé mon fichier backend.ldif comme spécifié et j'essaye de l'ajouter avec:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Mais je reçois:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcModuleLoad> handler exited with 1

Le LDIF complet est:

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mydomain,dc=us" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mydomain,dc=us" write by * read

Des suggestions sur la façon de dépanner? Je ne sais rien des serveurs LDAP, c'est mon premier.

MISE À JOUR:

J'ai recommencé avec une toute nouvelle installation de 11.04 Server.

J'ai fait ce qui suit:

hostname ldap.mycompany.com
nano /etc/hosts (set to ldap.mycompany.com)
nano /etc/hostname (set to ldap.mycompany.com)
sudo apt-get install slapd ldap-utils

J'essaie de charger le premier schéma:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif

Je reçois:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: olcAttributeTypes: Duplicate attributeType: "0.9.2342.19200300.100.1.2"

J'ai essayé la commande suggérée ci-dessous:

root@ldap:~# cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
structuralObjectClass: olcModuleList
entryUUID: 3bedbe64-e4b2-1030-832a-17900c7b3644
creatorsName: cn=config
createTimestamp: 20120206020131Z
entryCSN: 20120206020131.785958Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120206020131Z

Mais ce n'est pas compliqué à propos d'un module cette fois, il se plaint d'un "Duplicate attributeType".

J'ai donc besoin d'une commande qui dit "afficher les types d'attributs chargés" pour voir si "cosinus" est déjà dans la liste?

OK, je vais supposer que:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

sont inutiles car ils produisent tous la même erreur.

Je suis donc passé à l'ajout de ~ / backend.ldif. J'ai supprimé les lignes de chargement du module par le haut, car le module semble déjà chargé.

Maintenant, quand j'essaye d'ajouter:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Je reçois:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcDatabase=hdb,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcSuffix> namingContext "dc=mycompany,dc=us" already served by a preceding hdb database

Ce qui n'a aucun sens puisque c'est la seule base de données sur l'ordinateur, et c'est la première entrée que j'y ajoute.

pseudo
la source

Réponses:

6

Le message d'erreur indique que le back_hdbmodule est déjà inclus dans la configuration. Vous pouvez le vérifier avec la commande

cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif

Si cela inclut des lignes similaires aux suivantes, c'est déjà inclus:

olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb 

Si tel est le cas, supprimez simplement les six premières lignes de votre backend.ldifet réessayez.

Si vous voulez repartir de zéro, vous pouvez utiliser la commande

apt-get purge slapd ldap-utils

pour se débarrasser de l'installation complète de ldap, y compris tous les fichiers de données.

Après cela, vous devrez réinstaller OpenLDAP avec la commande correspondante

apt-get install slapd ldap-utils

BTW, je viens de suivre ce tutoriel (tout en utilisant toutes les valeurs par défaut de leur script) et cela a bien fonctionné sur une VM Lucid fraîchement créée.


Éditer

OK, dans votre autre article, vous avez parlé du 10.04. En fait, la configuration automatique de 11.04 slapdest bien meilleure que celle de 10.04. Ce qu'il fait pour vous, c'est tout dans le tutoriel concernant les fichiers de schéma et le backend.ldif et même une partie du frontend: vous pouvez supprimer les lignes suivantes du fronted.ldif et essayer de continuer à partir de là:

# Create top-level object in domain
dn: dc=tuxnetworks,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Tuxnetworks
dc: Tuxnetworks
description: LDAP Server 

# Admin user.
dn: cn=admin,dc=tuxnetworks,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: mypassword 

Un autre indice: la configuration dorsale d'OpenLDAP ( cn=config) n'est rien de plus qu'une collection de fichiers LDIF dans une structure de système de fichiers équivalente à la structure LDAP. Vous pouvez le parcourir vous-même dans /etc/ldap/slapd.d. 10.04 avait le strict minimum pour slapdtravailler, tandis que 11.04 a tout préparé pour que vous puissiez commencer tout de suite.

Sven
la source
Je vais essayer de refaire le tout. Je fais cela sur une VM 11.04. Peut-être qu'il y a quelque chose d'incompatible dans la nouvelle version? Ou la version d'OpenLDAP fournie avec 11.04 a déjà ce module chargé alors que 10.04 ne le fait pas? Donc, si j'installe ldap et le visse, exécuter "apt-get purge slapd ldap-utils" sera le même que si je commençais avec une installation propre? Il ne laisse aucune "poubelle" nulle part?
Nick
OK, j'ai réessayé avec une nouvelle installation et j'ai obtenu un "olcAttributeTypes: Duplicate attributeType" lors de la tentative de chargement du schéma "cosinus". Veuillez voir ci-dessus pour le message complet.
Nick
Voir mon montage, cela devient trop long pour un commentaire.
Sven
J'ai fait fonctionner LDAP en utilisant 10.04 et en suivant à nouveau le tutoriel. Je marque comme résolu car il répond à la question du titre. Merci!
Nick
1

ajoutez .la à la fin de back_hdb

le LDIF devrait maintenant lire

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb.la

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mydomain,dc=us" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mydomain,dc=us" write by * read

pour explication: http://ubuntuforums.org/archive/index.php/t-1594138.html

Sudh33ra
la source