Error de ldap_add (80) El controlador <olcModuleLoad> salió con 1

8

Estoy tratando de seguir este tutorial para configurar un servidor LDAD básico (OpenLDAP) para la autenticación cleint, pero estoy atascado en el paso donde agrego la configuración de back-end.

He creado mi archivo backend.ldif como se especifica, e intento agregarlo con:

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

Pero me sale:

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

El LDIF completo es:

#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

¿Alguna sugerencia sobre cómo solucionar problemas? No sé nada sobre los servidores LDAP, este es el primero.

ACTUALIZAR:

He comenzado de nuevo con una nueva instalación de 11.04 Server.

He hecho lo siguiente:

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

Intento cargar el primer esquema:

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

Yo obtengo:

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"

Probé el comando que se sugirió a continuación:

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

Pero esta vez no cumple con un módulo, se queja de un "Duplicate attributeType".

Entonces, ¿necesito un comando que diga "mostrar tipos de atributos cargados" para ver si "coseno" ya está en la lista?

OK, voy a asumir 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

son innecesarios ya que todos los productos tienen el mismo error.

Así que pasé a agregar ~ / backend.ldif. Eliminé las líneas del módulo de carga desde la parte superior, ya que el módulo ya parece estar cargado.

Ahora cuando trato de agregar:

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

Yo obtengo:

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

Lo cual no tiene sentido ya que esta es la única base de datos en la computadora, y esta es la primera entrada que le agrego.

Mella
fuente

Respuestas:

6

El mensaje de error indica que el back_hdbmódulo ya está incluido en la configuración. Puedes verificar esto con el comando

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

Si esto incluye líneas similares a las siguientes, ya está incluido:

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

Si este es el caso, simplemente quite las primeras seis líneas de su backend.ldife intente nuevamente.

Si desea comenzar desde cero, puede usar el comando

apt-get purge slapd ldap-utils

para deshacerse de la instalación completa de ldap, incluidos todos los archivos de datos.

Después de eso, deberá reinstalar OpenLDAP con el comando correspondiente

apt-get install slapd ldap-utils

Por cierto, acabo de seguir este tutorial (mientras usaba todos los valores predeterminados de su script) y esto funcionó bien en una VM Lucid recién creada.


Editar

OK, en tu otra publicación hablaste sobre 10.04. De hecho, la configuración automática en 11.04 slapdes mucho mejor en comparación con 10.04. Lo que hace por usted es todo en el tutorial sobre los archivos de esquema y el backend.ldif e incluso una parte del frontend: puede eliminar las siguientes líneas del fronted.ldif e intentar continuar desde allí:

# 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 

Algún consejo adicional: la configuración de back-end de OpenLDAP ( cn=config) no es más que una colección de archivos LDIF en una estructura de sistema de archivos equivalente a la estructura LDAP. Puedes buscarlo tú mismo /etc/ldap/slapd.d. 10.04 tenía el mínimo necesario para slapdcomenzar a trabajar, mientras que 11.04 preparó todo para que pueda comenzar de inmediato.

Sven
fuente
Voy a tratar de hacer todo de nuevo. Estoy haciendo esto en una VM 11.04. Tal vez hay algo incompatible en la nueva versión? ¿O la versión de OpenLDAP que viene con 11.04 ya tiene ese módulo cargado mientras que 10.04 no? Entonces, si instalo ldap y lo arruino, ¿ejecutar "apt-get purge slapd ldap-utils" será lo mismo que si estuviera comenzando con una instalación limpia? ¿No deja ninguna "basura" en ningún lado?
Nick
OK, he intentado nuevamente con una instalación nueva y obtengo un "olcAttributeTypes: Duplicate attributeType" cuando intento cargar el esquema "coseno". Por favor vea arriba para el mensaje completo.
Nick
Vea mi edición, esto se está volviendo demasiado largo para un comentario.
Sven
Tengo LDAP trabajando usando 10.04 y siguiendo el tutorial nuevamente. Estoy marcando como resuelto ya que responde la pregunta del título. ¡Gracias!
Nick
1

agregue .la al final de back_hdb

el LDIF ahora debería leer

#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

para explicación: http://ubuntuforums.org/archive/index.php/t-1594138.html

Sudh33ra
fuente