El error no global superior knowledge
significa que slapd
no sabe dónde colocar su nueva entrada. Esto generalmente significa que no ha definido una base de datos adecuada. Con los sistemas más nuevos (los que usan en cn=config
lugar de slapd.conf
), normalmente primero debe agregar una nueva base de datos o modificar una entrada de la base de datos existente usando ldapadd
o ldapmodify
. Por ejemplo, en mi sistema Fedora 17, la instalación predeterminada configura una base de datos como esta para alojar 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
Para alojar su organización ( o=myorganization, c=fr
), necesitaría crear el siguiente archivo LDIF:
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
Y luego cargaría estas modificaciones de esta manera:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Esto funciona debido a las siguientes olcAccess
líneas ya presentes en la configuración:
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
Esto otorga root
, contactando a slapd
través del ldapi:///
zócalo, acceso sin contraseña al cn=config
árbol.
Luego cargaría en mi entrada de nivel superior:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Mediante la ejecución:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Esto funciona porque he agregado una ACL similar a esta base de datos. Tenga en cuenta que no necesitaba comenzar c=fr
aquí, porque la base de datos está definida para contenero=myorganization,c=fr
ldapadd
lugar deldapmodify
y use el registro existente como modelo.olcAccess
) y los comandos que realmente usé ... pero si desea editarla con copiar / pegar de mi respuesta, puedo marcarla como aceptable y eliminar el mío :)Gracias a la respuesta de larsks , esto es lo que hice.
Primero, aquí hay un extracto de la configuración predeterminada con Ubuntu 12.04 (archivo
/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
):Entonces creé lo siguiente
change_suffix.ldif
:y lo agregué a mi ldap con el siguiente comando:
Ahora tenía que crear el nodo de organización con lo siguiente
myorganization.ldif
:Y finalmente agréguelo con el siguiente comando (el primero no funcionó debido a
Insufficient access (50)
):Ahora podría agregar las unidades organizativas:
fuente
dn: olcDatabase={1}hdb,cn=config
fue clave para mí, gracias