O erro no global superior knowledgesignifica que slapdnão sabe onde colocar sua nova entrada. Isso normalmente significa que você não definiu um banco de dados apropriado. Com sistemas mais recentes (aqueles que usam em cn=configvez de slapd.conf), você normalmente adiciona um novo banco de dados ou modifica uma entrada existente usando ldapaddou ldapmodify. Por exemplo, no meu sistema Fedora 17, a instalação padrão configura um banco de dados como este para hospedagem 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 hospedar sua organização ( o=myorganization, c=fr), eu precisaria criar o seguinte arquivo 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
E então eu carregaria essas modificações assim:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Isso funciona devido às seguintes olcAccesslinhas já presentes na configuração:
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
Isso concede root, slapdatravés do ldapi:///soquete, acesso sem senha à cn=configárvore.
Eu carregaria minha entrada de nível superior:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Correndo:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Isso funciona porque eu adicionei uma ACL semelhante a esse banco de dados. Observe que não precisei começar c=fraqui, porque o banco de dados está definido para contero=myorganization,c=fr