2014-05-09 14 views
5

ich installiert OpenLDAP nur auf Ubuntu Server 12.10, und ich fügte eine LDIF-Datei slapadd -c -l init.ldif wie folgt verwendet:Hinzufügen eines Eintrags zu OpenLDAP

dn:dc=tpw,dc=uca,dc=ma 
dc: tpw 
objectClass: dcObject 
objectClass: top 
objectClass: domain 

dn: ou=people,dc=tpw,dc=uca,dc=ma 
ou: people 
objectClass: organizationalUnit 
objectClass: top 

dn: ou=groupes,dc=tpw,dc=uca,dc=ma 
ou: groupes 
objectClass: organizationalUnit 
objectClass: top 

dn: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma 
uid: admin 
sn: Admin 
cn: Admin 
objectClass: inetOrgPerson 
objectClass: organizationalPerson 
objectClass: person 
objectClass: top 
userPassword:: e1NIQX0wRFBpS3VOSXJyVm1EOElVQ3V3MWhReE5xWmM9 
mail: [email protected] 
givenName: admin 

dn: cn=GI,ou=groupes,dc=tpw,dc=uca,dc=ma 
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma 
cn: GI 
objectClass: groupOfUniqueNames 
objectClass: top 

dn: cn=GP,ou=groupes,dc=tpw,dc=uca,dc=ma 
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma 
cn: GP 
objectClass: groupOfUniqueNames 
objectClass: top 

dn: cn=GT,ou=groupes,dc=tpw,dc=uca,dc=ma 
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma 
cn: GT 
objectClass: groupOfUniqueNames 
objectClass: top 

Jetzt sieht mein ldap Baum wie folgt aus:

enter image description here

Dann habe ich versucht, ein neues inetOrgPerson mit Apache Directory Studio hinzuzufügen, aber ich habe diesen Fehler:

[LDAP: error code 80 - index generation failed] 

Dann habe ich versucht, die gleiche Sache phpLDAPadmin, aber ich habe diesen Fehler:

Impossible d'ajouter l'objet au serveur LDAP. 
LDAP dit :: Other (e.g., implementation specific) error 
Erreur numéro :: 0x50 (LDAP_OTHER) 

Dann habe ich eine Datei, die ich xx.ldif genannt:

dn: uid=xx,ou=people,dc=tpw,dc=uca,dc=ma 
cn: XX 
givenname: xx 
mail: [email protected] 
objectclass: inetOrgPerson 
objectclass: organizationalPerson 
objectclass: person 
objectclass: top 
sn: XX 
uid: xx 
userpassword: toor 

Und ich versuchte, diesen Eintrag hinzufügen Verwenden Sie diesen Befehl über Terminal:

sudo ldapadd -x -D cn=Manager,dc=tpw,dc=uca,dc=ma -W -f xx.ldif 

Aber ich habe diesen Fehler:

ldap_add: Other (e.g., implementation specific) error (80) 
     additional info: index generation failed 

Wie kann ich dieses Problem lösen?

PS: In einem anderen Szenario löschte ich meine Datenbank und ich änderte die Datei init.ldif, die alle Einträge enthält, die ich hinzufügen möchte, und ich den Eintrag xx, dann importierte ich meine Datei mit dem Befehl slapadd, aber In Auf diese Weise muss ich die Datenbank jedes Mal löschen, wenn ich einen neuen Eintrag hinzufügen möchte, was nicht praktikabel ist.

Edit1:

Dies ist die Ausgabe des Befehls slapindex:

WARNING! 
Runnig as root! 
There's a fair chance slapd will fail to start. 
Check file permissions! 

5370d6f9 /etc/ldap/slapd.conf: line 95: rootdn is always granted unlimited privileges. 
5370d6f9 /etc/ldap/slapd.conf: line 112: rootdn is always granted unlimited privileges. 
5370d6f9 hdb_db_open: database "dc=tpw,dc=uca,dc=ma": database already in use. 
5370d6f9 backend_startup_one (type=hdb, suffix="dc=tpw,dc=uca,dc=ma"): bi_db_open failed! (-1) 
slap_startup failed 
+0

Ich denke, Sie müssen Slapd stoppen und Slapindex ausführen. – EJP

+0

@EJP, überprüfen Sie bitte die Änderung, die ich zu meinem Beitrag gemacht habe. –

+0

Diese Frage ist hier nicht aufgeführt und gehört zu serverfault.com. – EJP

Antwort

1

Die erste Sache ist, dass init.ldif Datei falsch konfiguriert zu sein scheint:

  • domain "UCA" (dc = UCA) fehlt, sollte es ein Eintrag (dcObject oder Domäne objectClass), um dieses Attribut zu definieren, das eine Komponente des Domänennamens enthält.

  • dcObject ist für die Verwendung in Einträgen vorgesehen, für die eine entsprechende Strukturobjektklasse vorhanden ist. Wenn die Domäne beispielsweise eine bestimmte Organisation darstellt, hätte der Eintrag die Strukturobjektklasse "Organisation" und die Klasse "dcObject" wäre eine Hilfsklasse.

  • Domäne ist eine Strukturobjektklasse, die für Einträge verwendet wird, in denen keine anderen Informationen gespeichert werden.Die Domänenobjektklasse wird normalerweise für Einträge verwendet, die Platzhalter sind oder deren Domänen nicht mit echten Entitäten übereinstimmen. ": Dc = tpw, dc = uca, dc = ma dn" mit diesen 2 (dann löschen Sie Ihre Datenbank erneut und wiederholen Sie den Befehl slapadd):

In Ihrem .ldif Datei können Sie den ersten Eintrag ersetzen

dn: dc=uca,dc=ma 
objectClass: top 
objectClass: organization 
objectClass: dcObject  
dc: uca 
o: an organization name (mandatory with 'organization' objectClass) 

dn: dc=tpw,dc=uca,dc=ma 
objectClass: top 
objectClass: domain 
dc: tpw 

Zweite Sache: offensichtlich sind Sie in ein Indexproblem gelandet. Ich denke, dass Sie Indizes verwenden möchten, aber wenn nicht, suchen Sie und entfernen Sie jede Zeile beginnend mit index aus slapd.conf, z. : index objectClass eq.

Denken Sie daran, slapd und führen slapindex nach jeder Änderung der Indexdefinitionen in slapd.conf, und sicherzustellen, dass alle LDAP-Clients, bevor Schlag laufen getrennt haben comitted zu stoppen Befehle database already in use Nachrichten zu verhindern.

1

So die Hinweise von slapindex gegeben dauern. Führen Sie slapd nicht als root aus, fixieren Sie die Zeilen 95 und 112, und führen Sie slapd nicht zweimal aus, oder beheben Sie alles, was dazu führt, dass die Datenbank bereits verwendet wird.