'स्टाफ' उपयोगकर्ता समूह को समझना


23

यह ज्ञात है कि सभी उपयोगकर्ता 'स्टाफ' समूह के सदस्य हैं। यदि आप किसी मानक उपयोगकर्ता को सेटअप करते हैं और कोई फ़ाइल बनाते हैं, तो टर्मिनल में 'ls -la' के साथ उस फ़ाइल की एक सूची उपयोगकर्ता समूह को 'स्टाफ' दिखाती है।

Dscacheutil कमांड का उपयोग करके, हम समूहों के बारे में जानकारी देख सकते हैं। उदाहरण के लिए: -

dscacheutil -q group -a name admin

यह सभी सदस्यों सहित व्यवस्थापक समूह के बारे में जानकारी देता है।

हालाँकि, जब मैं 'स्टाफ' समूह को देखता था, तो मुझे मानक उपयोगकर्ताओं को समूह के सदस्यों के रूप में देखने की उम्मीद थी, लेकिन ऐसा नहीं है: -

dscacheutil -q group -a name staff

name: staff
password: *
gid: 20
users: root

इसलिए, यदि सभी मानक उपयोगकर्ता स्टाफ समूह में सदस्य हैं, तो वे यहां क्यों नहीं दिखाई देते हैं?

क्या कोई अन्य आदेश है जो कर्मचारी समूह के वास्तविक सदस्यों को दिखा सकता है?


3
बड़ा सवाल है। अगर यह पर्याप्त ध्यान नहीं देता है तो मैं शायद इसे इनाम देना चाहता हूं। मैं सोच रहा था कि इसे किसी तरह केवल प्राथमिक समूह के सदस्यों को दिखाने के लिए कोडित किया गया था, लेकिन मेरे सभी नामांकित उपयोगकर्ता (500 से ऊपर) सभी प्राथमिक समूह कर्मचारी के रूप में हैं और अभी भी समूह में कैश उपयोग द्वारा सूचीबद्ध नहीं हैं (जहां अजीब तरह से जीआईडी ​​के साथ जड़ें हैं) पहिया सूचीबद्ध है ...) वास्तव में अजीब सॉस ...
bmike

धन्यवाद @bmike, दिलचस्प बात यह है कि डायरेक्टरी यूटिलिटी ऐप में वही देखा जा सकता है, जो / System / Library / CoreServices में है।
TheDarkKnight

ओह, मुझे लगा कि केवल रूट ही स्टाफ का सदस्य था। जैसे / etc / group शोज: स्टाफ: *: 20: रूट
स्कॉट वाल्टर

@ScottWalter, व्यवस्थापक उपयोगकर्ता 'स्टाफ' और 'व्यवस्थापक' के सदस्य हैं, जबकि गैर-व्यवस्थापक केवल 'स्टाफ' समूह के सदस्य हैं। : यहाँ अनुभाग "स्वामी, समूह, अन्य" देखें support.apple.com/kb/HT2963
TheDarkKnight

जवाबों:


11

ओएस एक्स में एक समूह के सभी सदस्यों को प्राप्त करने के लिए केवल एक विश्वसनीय तरीका है और 2DD8847 से उत्तर को कवर किया गया है। "क्यों" के लिए मैं एक तार्किक स्पष्टीकरण नहीं दे सकता। सभी मैं आपको बता सकता हूं कि परिणामों में क्या अंतर है।

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

प्रवेश परिणाम:

dscl . -read /Groups/[groupname]
dscl . -read /Groups/[groupname] GroupMembership
dscacheutil -q group -a name [groupname]

पूरा परिणाम:

dscl . -list /Users PrimaryGroupID | grep [gid]

मैं आपको वास्तव में बता सकता हूं कि अपने प्राइमरीग्रुपिड (समूह के सदस्यों की सूची के बजाय) द्वारा समूह के सदस्यों को देखे बिना यह आपको पूर्ण परिणाम नहीं देगा। इसे यूनिक्स की विषमताओं तक ले जाएं। वहां कई हैं।

उम्मीद है की वो मदद करदे!

स्रोत


"इन उपयोगकर्ताओं को सूचीबद्ध नहीं किया गया था आधिकारिक तौर पर कर्मचारियों के समूह में नहीं जोड़ा गया था। उन्हें सिर्फ एक प्राथमिक समूह दिया गया था जो कर्मचारियों से मेल खाता है" - अब यह समझ में आता है। मुझे आश्चर्य है कि अगर इस के साथ एक वैध सुरक्षा हमला वेक्टर है; अगर वास्तव में उन्हें व्यवस्थापक समूह में शामिल किए बिना उपयोगकर्ता के प्राइमरीग्रुपआईड को सेट करना संभव है, तो क्या इससे उन्हें व्यवस्थापक अधिकार मिलेंगे? मैं जांच करूंगा।
TheDarkKnight

मेरा मतलब यह नहीं था कि कुछ भी गलत है। चिंता न करें, स्टाफ के सदस्यों को आपकी मशीन पर व्यवस्थापक अधिकार नहीं हैं। ओएस एक्स में लगभग सब कुछ मालिक के पास कर्मचारियों के लिए सेट है, लेकिन याद रखें कि अन्य अनुमतियाँ इस वास्तविकता के दुरुपयोग को ओवरराइड करती हैं। प्रत्येक उपयोगकर्ता फ़ोल्डर हर दूसरे उपयोगकर्ता द्वारा "पठनीय" है, लेकिन प्रत्येक उपयोगकर्ता फ़ोल्डर के अंदर आप देखेंगे कि व्यक्तिगत आइटम को फिर से पढ़ने के लिए सेट किया गया है। तो / उपयोगकर्ताओं / उपयोगकर्ता नाम / डेस्कटॉप उपयोगकर्ता के पास मौजूद हर किसी के लिए सेट नहीं पहुँच रहे हैं सुरक्षित यह साफ अनुमति प्रबंधन नहीं है, लेकिन यह काम करता है और आप -।
sgelliott

4
शायद आपका मतलब थाChalk it up to the oddities of OS X. There are many.
user3019105

मैं एक और मशीन से एक डिस्क को देख रहा था और हाँ, उपयोगकर्ता नाम बदला जाता है, मैं उपयोगकर्ता 502 या शायद 501 के रूप में "स्टीव" बन गया। किसी भी तरह। मेरा सिद्धांत यह है कि "स्टाफ" को शायद "मैकोक्स" कहा जाना चाहिए था और इसका उपयोग खोजकर्ता द्वारा नियमित उपयोगकर्ताओं की ओर से "जड़" करने के लिए किया जाता है। बस एक यादृच्छिक सिद्धांत।
टॉमाची

2
@ टोमाची स्टाफ़ मैकोक्स नहीं हो सकता है इसे किसी भी साल पहले ओएक्सएक्स में स्थापित किया गया था जब सिस्टम
नेक्सटी

4

वास्तव में आप क्या हासिल / करना चाहते हैं?

यह कमांड स्टाफ समूह के सभी उपयोगकर्ताओं को सूचीबद्ध करता है:

dscl . -list /Users PrimaryGroupID | grep ' 20$'

स्रोत

स्पष्टीकरण: कर्मचारी समूह के पास प्राथमिक समूह 20 है।


मैं यह समझने की कोशिश कर रहा हूं कि कर्मचारी समूह dscacheutil और निर्देशिका उपयोगिता के माध्यम से अपनी सदस्य सूची क्यों नहीं दिखाता है। मेरा मुख्य लक्ष्य एक अलग प्रक्रिया को बुलाए बिना, C ++ का उपयोग करने वाले समूह के सदस्यों की सूची को पुनः प्राप्त करना है। इस प्रक्रिया के दौरान, मैं समूह में अपने सदस्यों को प्रदर्शित नहीं करने के मुद्दे पर आया था और मैं जानना चाहता हूं कि ऐसा क्यों है।
TheDarkKnight

क्यों dscacheutil कर्मचारी समूह को सूचीबद्ध नहीं करता है ... मुझे नहीं पता। developer.apple.com/library/mac/documentation/Darwin/Reference/… यह एक कार्यान्वयन है, और किसी तरह उन्होंने उन्हें नहीं दिखाने का फैसला किया।
बस्तियन ग्रुबर

2
क्षमा करें, लेकिन "यह एक कार्यान्वयन है" कहकर और dscacheutil के मैन पेज से लिंक करने से सवाल का जवाब नहीं मिलता है।
TheDarkKnight

C ++ के लिए, आप शेल फ़ंक्शन को कॉल कर सकते हैं। मुझे यह साइट बहुत उपयोगी लगी : blog.earth-works.com/2012/09/13/… मुझे नहीं लगता कि कोई कारण है कि वे इसे क्यों नहीं दिखाते हैं। उन्होंने एक समारोह बनाया और आप कुछ याद कर रहे हैं..क्या कहूं। वे आपको सदस्यों को दिखाने से रोकते हैं क्योंकि वे इसे पसंद करते हैं?
बैस्टियन ग्रुबर

2
एक शेल फ़ंक्शन को कॉल करना एक अलग प्रक्रिया पैदा करता है। विभिन्न कारणों से, यह उस परियोजना के लिए व्यवहार्य नहीं है जिस पर मैं काम कर रहा हूं। अब मैं पहचान सेवाओं को देख रहा हूँ: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.