Der Fehler no global superior knowledge
bedeutet, dass Sie slapd
nicht wissen, wo Sie Ihren neuen Eintrag ablegen sollen. Dies bedeutet normalerweise, dass Sie keine geeignete Datenbank definiert haben. Bei neueren Systemen (solche, die cn=config
anstelle von verwenden slapd.conf
) fügen Sie normalerweise zuerst eine neue Datenbank hinzu oder ändern einen vorhandenen Datenbankeintrag mit ldapadd
oder ldapmodify
. Auf meinem Fedora 17-System richtet die Standardinstallation beispielsweise eine Datenbank wie diese für das Hosting ein dc=my-domain,dc=com
:
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
creatorsName: cn=config
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
Um Ihre Organisation ( o=myorganization, c=fr
) zu hosten , müsste ich die folgende LDIF-Datei erstellen:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization, c=fr
-
replace: olcRootDN
olcRootDN: cn=Manager,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by dn.base="cn=Manager,o=myorganization,c=fr" write
by * none
Und ich würde dann diese Modifikationen wie folgt laden:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Dies funktioniert aufgrund der folgenden olcAccess
Zeilen, die bereits in der Konfiguration vorhanden sind:
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * none
Dadurch root
wird slapd
über den ldapi:///
Socket ein kennwortfreier Zugriff auf den cn=config
Baum gewährt .
Ich würde dann meinen Top-Level-Eintrag laden:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Durch Ausführen von:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Dies funktioniert, weil ich dieser Datenbank eine ähnliche ACL hinzugefügt habe. Beachten Sie, dass ich hier nicht anfangen musste c=fr
, da die Datenbank für das Halten definiert isto=myorganization,c=fr
ldapadd
anstelle vonldapmodify
und verwenden Sie den vorhandenen Datensatz als Modell.olcAccess
) und Befehlen zu korrigieren, die ich wirklich verwendet habe ... aber wenn Sie sie mit Kopieren / Einfügen aus meiner Antwort bearbeiten möchten, kann ich sie als akzeptabel markieren & entferne meine :)Dank der Antwort von Larsks habe ich Folgendes getan.
Hier ist zunächst ein Auszug aus der Standardkonfiguration mit Ubuntu 12.04 (Datei
/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
):Also habe ich folgendes erstellt
change_suffix.ldif
:und fügte es meinem ldap mit dem folgenden Befehl hinzu:
Jetzt musste ich den Organisationsknoten mit folgendem erstellen
myorganization.ldif
:Und schließlich fügen Sie es mit dem folgenden Befehl hinzu (der erste funktionierte aufgrund von nicht
Insufficient access (50)
):Jetzt könnte ich die Organisationseinheiten hinzufügen:
quelle
dn: olcDatabase={1}hdb,cn=config
war der Schlüssel für mich, danke