Помилка no global superior knowledge
означає, що slapd
не знає, куди слід поставити новий запис. Зазвичай це означає, що ви не визначили відповідну базу даних. З новішими системами (тими, що використовують cn=config
замість цього slapd.conf
), ти зазвичай спочатку додаєш нову базу даних або модифікуєш існуючу запис бази даних за допомогою ldapadd
або ldapmodify
. Наприклад, у моїй системі Fedora 17 установка за замовчуванням встановлює таку базу даних, як хостинг 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
Щоб розмістити вашу організацію ( o=myorganization, c=fr
), мені потрібно створити такий файл 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
І я б завантажував такі зміни, як це:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Це працює через такі olcAccess
рядки, які вже є в конфігурації:
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
Це надає root
, звертаючись slapd
через ldapi:///
сокет, без доступу пароля до cn=config
дерева.
Тоді я б завантажувався у своєму записі верхнього рівня:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Запустивши:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Це працює, тому що я додав подібний ACL до цієї бази даних. Зауважте, що мені тут не потрібно було починати c=fr
, оскільки база даних визначена для зберіганняo=myorganization,c=fr