ข้อผิดพลาด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