Errore ldap_add (80) <olcModuleLoad> gestore chiuso con 1


8

Sto cercando di seguire questo tutorial per impostare un server LDAD di base (OpenLDAP) per l'autenticazione intelligente, ma sono bloccato sul passaggio in cui aggiungo la configurazione back-end.

Ho creato il mio file backend.ldif come specificato e sto tentando di aggiungerlo con:

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

Ma ottengo:

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

Il LDIF completo è:

#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

Qualche suggerimento su come risolvere? Non so nulla dei server LDAP, questo è il mio primo.

AGGIORNARE:

Ho ricominciato con una nuovissima installazione di 11.04 Server.

Ho fatto quanto segue:

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

Provo a caricare il primo schema:

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

Ottengo:

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"

Ho provato il comando che è stato suggerito di seguito:

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

Ma questa volta non si conforma a un modulo, si lamenta di un "Duplicate attributeType".

Quindi ho bisogno di un comando che dice "mostra i tipi di attributo caricati" per vedere se "coseno" è già nella lista?

OK, suppongo che:

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

non sono necessari in quanto tutti i prodotti hanno lo stesso errore.

Quindi sono passato all'aggiunta di ~ / backend.ldif. Ho rimosso le righe di modalità di caricamento dall'alto, poiché il modulo sembra essere già caricato.

Ora quando provo ad aggiungere:

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

Ottengo:

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

Il che non ha senso poiché questo è l'unico database sul computer e questa è la prima voce che sto aggiungendo ad esso.

Risposte:


6

Il messaggio di errore indica che il back_hdbmodulo è già incluso nella configurazione. Puoi verificarlo con il comando

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

Se questo include righe simili alle seguenti, è già incluso:

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

In questo caso, rimuovi le prime sei righe dalla tua backend.ldife riprova.

Se si desidera iniziare da zero, è possibile utilizzare il comando

apt-get purge slapd ldap-utils

per sbarazzarsi dell'installazione completa di ldap compresi tutti i file di dati.

Successivamente, dovrai reinstallare OpenLDAP con il comando corrispondente

apt-get install slapd ldap-utils

A proposito, ho appena seguito questo tutorial (usando tutti i valori predefiniti dal loro script) e questo ha funzionato bene su una VM Lucid appena creata.


modificare

OK, nel tuo altro post hai parlato di 10.04. In effetti, la configurazione automatica in 11.04 per slapdè molto migliore rispetto a 10.04. Quello che fa per te è tutto nell'esercitazione riguardante i file dello schema e backend.ldif e persino una parte dal frontend: puoi rimuovere le seguenti righe da fronted.ldif e provare a continuare da 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 

Qualche ulteriore suggerimento: la configurazione back-end di OpenLDAP ( cn=config) non è altro che una raccolta di file LDIF in una struttura di filesystem equivalente alla struttura LDAP. Puoi sfogliarlo tu stesso /etc/ldap/slapd.d. 10.04 aveva il minimo indispensabile per slapdfunzionare, mentre 11.04 ha preparato tutto in modo da poter iniziare subito.


Proverò a fare di nuovo tutto. Lo sto facendo su una VM 11.04. Forse c'è qualcosa di incompatibile nella nuova versione? O la versione di OpenLDAP fornita con 11.04 ha già caricato quel modulo mentre 10.04 no? Quindi se installo ldap e lo rovino, l'esecuzione di "apt-get purge slapd ldap-utils" sarà la stessa di se avessi iniziato con un'installazione pulita? Non lascia "spazzatura" da nessuna parte?
Nick,

OK, ho provato di nuovo con una nuova installazione e ottengo un "olcAttributeTypes: Duplicate attributeType" quando provo a caricare lo schema "coseno". Si prega di vedere sopra per il messaggio completo.
Nick,

Vedi la mia modifica, questo sta diventando troppo lungo per un commento.
Sven

Ho fatto funzionare LDAP usando 10.04 e seguendo nuovamente il tutorial. Sto marcando come risolto poiché risponde alla domanda del titolo. Grazie!
Nick,

1

aggiungi .la alla fine di back_hdb

il LDIF ora dovrebbe leggere

#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

per spiegazione: http://ubuntuforums.org/archive/index.php/t-1594138.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.