"कोई वैश्विक श्रेष्ठ ज्ञान" नहीं है जबकि एक देश जोड़ रहा है


14

मुझे organizationalunitइस तरह से एक नई स्थापित OpenLDAP (Ubuntu 12.04 पर) में जोड़ना चाहिए :

dn: ou=MYREGION, ou=MYAPP, ou=GROUPS, o=myorganization, c=fr
ou: MYREGION
objectClass: top
objectClass: organizationalunit

इसलिए जैसा कि यह एक नया LDAP है, मुझे लगता है कि मुझे पहले frदेश को जोड़ना होगा , और मैं उस फ़ाइल को बनाऊंगा:

dn: c=fr
c: fr
objectClass: top
objectClass: country

अब मैं इसे उस कमांड के साथ आयात करने का प्रयास करता हूं (मेरे पास उस सर्वर के लिए कोई डोमेन नहीं है):

ldapadd -x -D cn=admin,dc=nodomain -W -f country_fr.ldif

लेकिन OpenLDAP उस आदेश को अस्वीकार करता है:

adding new entry "c=fr"
ldap_add: Server is unwilling to perform (53)
    additional info: no global superior knowledge

कोई संकेत?

जवाबों:


21

त्रुटि का 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


ठीक है, बहुत बहुत धन्यवाद। लेकिन अगर मैं आपके उत्तर को सही ढंग से समझता हूं, तो यहां आप इस OpenLDAP के डेटाबेस के वर्तमान उपसर्ग को संशोधित करते हैं। क्या होगा अगर मैं एक नया जोड़ना चाहूंगा? (मैं वैसे भी आपकी सिफारिशों का परीक्षण करूंगा, मैं अभी उत्सुक हूं)
एंथनी ओ।

1
के ldapaddबजाय का उपयोग करें ldapmodifyऔर एक मॉडल के रूप में मौजूदा रिकॉर्ड का उपयोग करें।
लार्क्स

यदि यह उत्तर आपकी समस्या को हल कर देता है, तो यह प्रश्न के ऊपरी बाएँ पर चेकबॉक्स पर क्लिक करके इसे स्वीकार करने के लिए बहुत ही अच्छा होगा।
लार्क्स 12

वास्तव में, इससे मुझे बहुत मदद मिली, लेकिन यह मेरे द्वारा पारित किए गए सटीक आदेश नहीं थे, इसीलिए मैंने अपना उत्तर बनाया है। मैंने आपके उत्तर को ldifs (विशेष रूप से olcAccess) और मेरे द्वारा उपयोग किए जाने वाले आदेशों के साथ सही करने के लिए संपादित करने का साहस नहीं किया ... लेकिन यदि आप इसे मेरे उत्तर से कॉपी / पेस्ट के साथ संपादित करना चाहते हैं, तो मैं इसे स्वीकार्य और चिह्नित कर सकता हूं मेरी निकालो :)
एंथनी ओ।

(मुझे लगता है कि यह मेरे जवाब को कम करने का कारण नहीं है ...)
एंथनी ओ।

2

लार्क्स जवाब के लिए धन्यवाद , यहां मैंने जो किया है।

पहले यहां Ubuntu 12.04 (फ़ाइल /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif) के साथ डिफ़ॉल्ट कॉन्फ़िगरेशन का एक उद्धरण है :

dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=nodomain" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=nodomain" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain

इसलिए मैंने निम्नलिखित बनाया change_suffix.ldif:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization,c=fr
-
replace: olcRootDN
olcRootDN: cn=admin,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,o=myorganization,c=fr" write by * none
olcAccess: {2}to * by self write by dn="cn=admin,o=myorganization,c=fr" write by * read

और निम्न कमांड के साथ इसे मेरे ldap में जोड़ा:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f change_suffix.ldif

अब मुझे निम्नलिखित के साथ संगठन नोड बनाना था myorganization.ldif:

dn: o=myorganization,c=fr
objectclass: organization
o: myorganization

और अंत में इसे निम्नलिखित कमांड के साथ जोड़ दें (पहले वाले के कारण काम नहीं किया गया Insufficient access (50)):

ldapadd -x -D cn=admin,o=myorganization,c=fr -W -f myorganization.ldif

अब मैं संगठनात्मक इकाइयों को जोड़ सकता है:

dn: ou=GROUPS, o=myorganization,c=fr
ou: GROUPS
objectClass: top
objectClass: organizationalunit

dn: ou=MYAPP, ou=GROUPS, o=myorganization,c=fr
ou: MYAPP
objectClass: top
objectClass: organizationalunit

dn: ou=MYREGION, ou=MYAPP, ou=GROUPS, o=myorganization,c=fr
ou: MYREGION
objectClass: top
objectClass: organizationalunit

यह dn: olcDatabase={1}hdb,cn=configमेरे लिए महत्वपूर्ण था, धन्यवाद
मिगफेल्ग जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.