Ldapsearch का उपयोग करके समूह के सदस्यों की सूची बनाना


12

हमारी कॉर्पोरेट LDAP निर्देशिका को हिम तेंदुए सर्वर ओपन डायरेक्टरी सेटअप पर रखा गया है। मैं बाह्य रूप से प्रमाणित करने के लिए किसी अन्य बाहरी LDAP सर्वर ldapsearchमें आयात करने के लिए .ldif फ़ाइल को निर्यात करने के लिए उपकरण का उपयोग करने की कोशिश कर रहा हूं ; मूल रूप से आंतरिक और बाह्य रूप से समान क्रेडेंशियल्स का उपयोग करने में सक्षम होने की कोशिश कर रहा है।

मुझे ldapsearchकाम मिल गया है और मुझे "उपयोगकर्ता" OU में सब कुछ की सामग्री और विशेषताएँ दे रहा है , और केवल उन विशेषताओं को भी फ़िल्टर कर रहा है जो मैं चाहता हूं:

ldapsearch -xLLL -H ldap://server.domain.net / 
 -b "cn=users,dc=server,dc=domain,dc=net" objectClass / 
 uid uidNumber cn userPassword > directorycontents.ldif

यह मुझे उन उपयोगकर्ताओं और गुणों की एक सूची देता है जिन्हें मैं अपने दूरस्थ OpenLDAP सर्वर पर आयात कर सकता हूं।

dn: uid=username1,cn=users,dc=server,dc=domain,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: organizationalPerson
uidNumber: 1000
uid: username1
userPassword:: (hashedpassword)
cn: username1

हालाँकि, जब मैं एक "कंटेनर" के बजाय OD "समूह" पर समान क्वेरी का प्रयास करता हूं, तो परिणाम कुछ इस तरह से होते हैं:

dn: cn=groupname,cn=groups,dc=server,dc=domain,dc=net
objectClass: posixGroup
objectClass: apple-group
objectClass: extensibleObject
objectClass: top
gidNumber: 1032
cn: groupname
memberUid: username1
memberUid: username2
memberUid: username3

जो मैं वास्तव में चाहता हूं, उनके समूह सदस्यता के आधार पर फ़िल्टर किए गए शीर्ष उदाहरण के उपयोगकर्ताओं की एक सूची है, लेकिन ऐसा लगता है कि सदस्यता उपयोगकर्ता की ओर के बजाय समूह की ओर से सेट की गई है। इसे फ़िल्टर करने का एक तरीका होना चाहिए और केवल वही निर्यात करना चाहिए जिसकी मुझे आवश्यकता है, ठीक है?

जवाबों:


4

मैं LDAP के साथ काम करता हूं, लेकिन सर्वर का वह विशिष्ट ब्रांड नहीं।

पहली चीज़ जो मैं कोशिश करूँगा, वह उपयोगकर्ताओं पर एक खोज है जो उनके उदाहरण को अपने तरीके से प्रतिबंधित करने के बजाय उनकी सभी विशेषताओं को खींच रही है।

ldapsearch -xLLL -H ldap://server.domain.net \
    -b "cn=users,dc=server,dc=domain,dc=net" uid=username1 \* +

अक्सर उपयोगकर्ता पर "सदस्यऑफ" विशेषता होती है जो उन समूहों के लिए समूह का नाम या समूह डीएन को सूचीबद्ध करता है जो उपयोगकर्ता में है, समूह में जानकारी के साथ सिंक में रखा जाता है। अगर ऐसा है, तो आप जो चाहते हैं वह करने का सबसे आसान तरीका है।

*सभी उपयोगकर्ता विशेषताओं (डिफ़ॉल्ट व्यवहार) हड़पने जाएगा और +सभी परिचालन विशेषताएं (विशेष विशेषताएँ) हड़पने होगा।


यह एक पुराना धागा है लेकिन यह उल्लेख किया जाना चाहिए कि OpenLDAP (ओपन डायरेक्टरी का आधार) memberOfएक परिचालन विशेषता है और इसे स्पष्ट रूप से समझने की आवश्यकता है। ldapsearchयहाँ सुझाए गए मात्र की वापसी नहीं होगी memberOf, भले ही यह मौजूद हो। यह भी उल्लेख किया जाना चाहिए कि memberOfओवरले आमतौर पर डिफ़ॉल्ट रूप से सक्षम नहीं है, हालांकि मुझे नहीं पता कि यह ओएस एक्स और ओपन डायरेक्टरी में कैसे संभाला जाता है।
daff

@daff मेरा मानना है कि एक + सभी परिचालन गुण मिलना चाहिए ...
Freiheit

आह, वास्तव में। आपके अपडेट किए गए ldapsearchकार्य विज्ञापन के रूप में हैं।
daff

0

क्या आप अलग-अलग कंटेनरों में स्थित उपयोगकर्ता ऑब्जेक्ट्स द्वारा समूहों का प्रतिनिधित्व करने का लक्ष्य रखते हैं? पसंद:

dn: uid=username1,cn=users,cn=accounting,dc=server,dc=domain,dc=net
...
dn: uid=username2,cn=users,cn=engineering,dc=server,dc=domain,dc=net
...

यदि हां, तो मुझे उम्मीद है कि आपको LDIF की मालिश करने के लिए एक स्क्रिप्ट लिखनी होगी। उत्कृष्ट पायथन-एलडीएपी मॉड्यूल का प्रयास करें ।

मैं सवाल करूंगा कि आप ऐसा क्यों करना चाहते हैं। यह उन उपयोगकर्ताओं के लिए गड़बड़ कर देता है जो कई समूहों से संबंधित हैं, और ओपन निर्देशिका के सम्मेलनों के विपरीत है। क्या आप केवल अपने OpenLDAP सर्वर के लिए सभी उपयोगकर्ता और समूह ऑब्जेक्ट की प्रतिलिपि नहीं बना सकते हैं, और उपयोगकर्ता की वस्तु में मौजूद कंटेनर के बजाय समूह सदस्यता के आधार पर इसे क्वेरी कर सकते हैं?


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.