ldap_add error (80) <olcModuleLoad> -Handler wurde mit 1 beendet

8

Ich versuche, diesem Tutorial zu folgen, um einen grundlegenden LDAD-Server (OpenLDAP) für die Cleint-Authentifizierung einzurichten, aber ich bleibe bei dem Schritt, bei dem ich die Back-End-Konfiguration hinzufüge.

Ich habe meine Datei backend.ldif wie angegeben erstellt und versuche, sie hinzuzufügen mit:

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

Aber ich verstehe:

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

Das vollständige LDIF lautet:

#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

Irgendwelche Vorschläge zur Fehlerbehebung? Ich weiß nichts über LDAP-Server. Dies ist meine erste.

AKTUALISIEREN:

Ich habe mit einer brandneuen Installation von 11.04 Server neu begonnen.

Ich habe folgendes getan:

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

Ich versuche das erste Schema zu laden:

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

Ich bekomme:

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"

Ich habe den folgenden Befehl ausprobiert:

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

Diesmal geht es jedoch nicht um ein Modul, sondern um einen "Duplicate attributeType".

Ich brauche also einen Befehl mit der Aufschrift "Geladene Attributtypen anzeigen", um festzustellen, ob "Cosinus" bereits in der Liste enthalten ist.

OK, ich gehe davon aus, dass:

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

sind unnötig, da sie alle Produkte den gleichen Fehler haben.

Also fuhr ich mit dem Hinzufügen von ~ / backend.ldif fort. Ich habe die Lademodulzeilen von oben entfernt, da das Modul bereits geladen zu sein scheint.

Wenn ich jetzt versuche hinzuzufügen:

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

Ich bekomme:

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

Das macht keinen Sinn, da dies die einzige Datenbank auf dem Computer ist und dies der erste Eintrag ist, den ich hinzufüge.

Nick
quelle

Antworten:

6

Die Fehlermeldung zeigt an, dass das back_hdbModul bereits in der Konfiguration enthalten ist. Sie können dies mit dem Befehl überprüfen

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

Wenn dies Zeilen enthält, die den folgenden ähnlich sind, ist dies bereits enthalten:

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

Wenn dies der Fall ist, entfernen Sie einfach die ersten sechs Zeilen von Ihrem backend.ldifund versuchen Sie es erneut.

Wenn Sie von vorne beginnen möchten, können Sie den Befehl verwenden

apt-get purge slapd ldap-utils

um die komplette ldap-Installation einschließlich aller Datendateien loszuwerden.

Danach müssen Sie OpenLDAP mit dem entsprechenden Befehl neu installieren

apt-get install slapd ldap-utils

Übrigens habe ich gerade dieses Tutorial befolgt (während ich alle Standardwerte aus dem Skript verwendet habe) und dies hat auf einer frisch erstellten Lucid-VM einwandfrei funktioniert.


Bearbeiten

OK, in deinem anderen Beitrag hast du über 10.04 gesprochen. Tatsächlich ist die automatische Konfiguration in 11.04 für slapdim Vergleich zu 10.04 viel besser. Was es für Sie tut, ist alles im Tutorial, was die Schemadateien und die Datei backend.ldif und sogar einen Teil des Frontends betrifft: Sie können die folgenden Zeilen aus der fronted.ldif entfernen und versuchen, von dort aus fortzufahren:

# 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 

Ein weiterer Hinweis: Die Backend-Konfiguration von OpenLDAP ( cn=config) ist nichts anderes als eine Sammlung von LDIF-Dateien in einer Dateisystemstruktur, die der LDAP-Struktur entspricht. Sie können es selbst durchsuchen /etc/ldap/slapd.d. 10.04 hatte dort das Nötigste, um an die slapdArbeit zu gehen, während 11.04 alles so vorbereitete, dass Sie sofort loslegen können.

Sven
quelle
Ich werde versuchen, das Ganze noch einmal zu machen. Ich mache das auf einer 11.04 VM. Vielleicht ist in der neuen Version etwas inkompatibel? Oder hat die mit 11.04 gelieferte OpenLDAP-Version dieses Modul bereits geladen, 10.04 jedoch nicht? Wenn ich also ldap installiere und es vermassle, ist das Ausführen von "apt-get purge slapd ldap-utils" dasselbe, als würde ich mit einer Neuinstallation beginnen? Es hinterlässt nirgendwo "Müll"?
Nick
OK, ich habe es erneut mit einer Neuinstallation versucht und beim Versuch, das "Cosinus" -Schema zu laden, einen "olcAttributeTypes: Duplicate attributeType" erhalten. Die vollständige Nachricht finden Sie oben.
Nick
Siehe meine Bearbeitung, dies wird zu lang für einen Kommentar.
Sven
Ich habe LDAP mit 10.04 zum Laufen gebracht und das Tutorial erneut befolgt. Ich markiere als gelöst, da es die Titelfrage beantwortet. Vielen Dank!
Nick
1

Fügen Sie .la am Ende von back_hdb hinzu

Das LDIF sollte jetzt lesen

#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

Zur Erklärung: http://ubuntuforums.org/archive/index.php/t-1594138.html

Sudh33ra
quelle