Kesalahan no global superior knowledge
berarti bahwa slapd
tidak tahu di mana harus meletakkan entri baru Anda. Ini biasanya berarti bahwa Anda belum mendefinisikan database yang sesuai. Dengan sistem yang lebih baru (yang menggunakan cn=config
bukan slapd.conf
), Anda biasanya akan menambahkan database baru atau memodifikasi entri database yang ada menggunakan ldapadd
atau ldapmodify
. Misalnya, pada sistem Fedora 17 saya, instalasi default menyiapkan database seperti ini untuk hosting 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
Untuk meng-host organisasi Anda ( o=myorganization, c=fr
), saya perlu membuat file LDIF berikut:
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
Dan saya akan memuat modifikasi ini seperti ini:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Ini berfungsi karena olcAccess
baris - baris berikut sudah ada dalam konfigurasi:
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
Ini memberikan root
, menghubungi slapd
melalui ldapi:///
soket, akses bebas kata sandi ke cn=config
pohon.
Saya kemudian akan memuat entri tingkat atas saya:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Dengan menjalankan:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Ini berfungsi karena saya telah menambahkan ACL serupa ke database ini. Perhatikan bahwa saya tidak perlu memulai dengan di c=fr
sini, karena basis data didefinisikan untuk menampungo=myorganization,c=fr