त्रुटि का no global superior knowledge
अर्थ है कि slapd
आपकी नई प्रविष्टि को कहां रखा जाए, यह नहीं पता। इसका आमतौर पर मतलब है कि आपने एक उपयुक्त डेटाबेस को परिभाषित नहीं किया है। नए सिस्टम के साथ (जिनके cn=config
बजाय उपयोग करने वाले slapd.conf
), आप आमतौर पर एक नया डेटाबेस जोड़ते हैं या किसी मौजूदा डेटाबेस प्रविष्टि का उपयोग करके ldapadd
या संशोधित करते हैं ldapmodify
। उदाहरण के लिए, मेरे फेडोरा 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