2009-10-15 8 views
6

का उपयोग कर लिनक्स में उपयोगकर्ता-समूह बनाएं I CentOS सिस्टम पर पायथन का उपयोग करके उपयोगकर्ता समूह बनाना चाहते हैं। जब मैं 'पायथन का उपयोग' कहता हूं तो मेरा मतलब है कि मैं ओएससिस्टम की तरह कुछ नहीं करना चाहता हूं और यूनिक्स कमांड को नया समूह बनाने के लिए देता हूं। मैं जानना चाहता हूं कि कोई पाइथन मॉड्यूल है जो इससे संबंधित है।पाइथन

नेट पर खोज पाइथन उपयोगकर्ता समूहों को छोड़कर, जो कुछ मैं चाहता हूं उसके बारे में बहुत कुछ नहीं बताता .. इसलिए मुझे यह पूछना पड़ा।

मैंने एसओ पर खोज करके जीआरपी मॉड्यूल के बारे में सीखा, लेकिन समूह बनाने के बारे में कुछ भी नहीं मिला।

संपादित करें: मुझे नहीं पता कि मुझे इसके लिए एक नया प्रश्न शुरू करना है, लेकिन मैं यह भी जानना चाहूंगा कि नए बनाए गए समूह में उपयोगकर्ताओं को कैसे जोड़ा जाए।

किसी भी मदद की सराहना की। धन्यवाद।

+0

मुझे लगता है कि मैं कमांड लाइन टूल्स को निष्पादित करने के साथ जा रहा हूं ... –

उत्तर

10

मैं यह करने के लिए एक अजगर मॉड्यूल के पता नहीं है जाने के लिए चयन है, लेकिन/etc/समूह और/etc/gshadow प्रारूप बहुत मानक है, इसलिए यदि आप चाहते थे कि आप केवल फाइलें खोल सकें, तो अपनी वर्तमान सामग्री को पार्स करें और फिर आवश्यक होने पर नया समूह जोड़ें।

इससे पहले कि आप यह कर जाने, पर विचार करें:

  • यदि आप एक समूह है कि पहले से ही सिस्टम
  • क्या होता है जब अपने कार्यक्रम के कई उदाहरण पर एक समूह जोड़ने की कोशिश पर मौजूद है जोड़ने का प्रयास करते हैं तो क्या होता एक ही समय
  • एक असंगत परिवर्तन समूह प्रारूप करने के लिए किया जाता है जब आप अपने कोड के लिए होता लाइन नीचे एक जोड़े को रिलीज
  • एनआईएस, LDAP, करबरोस, ...

यदि आप इन प्रकार की समस्याओं से निपटने के इच्छुक नहीं हैं, तो बस उपप्रोसेसर मॉड्यूल का उपयोग करें और समूह समूह चलाएं। यह आपके ग्राहकों की मशीनों को तोड़ने की संभावना कम होगी।

एक और चीज जो आप कर सकते हैं वह लिखने से कम नाजुक होगी, जो कि पाइथन में groupadd.c (छाया पैकेज में) कोड को लपेटना होगा और इसे इस तरह से करें। मैं इसे खरीदने के लिए आपको बहुत अधिक खरीद नहीं देख रहा हूं, हालांकि, और यह आपके निर्माण में अधिक जटिलता और नाजुकता को जोड़ देगा।

+1

एक उत्कृष्ट उत्तर के लिए धन्यवाद। उपयोग के मामले में मैं स्क्रिप्ट लिख रहा हूं, इसमें आपकी कोई भी समस्या नहीं है, लेकिन मेरी प्रविष्टियों को उन 'पवित्र' लिनक्स फाइलों में जोड़ना ... मुझे दोषी महसूस करता है:) ... मुझे लगता है कि मुझे बस जाना होगा subprocess समाधान के साथ। एक बार फिर धन्यवाद। –

5

मुझे लगता है कि आप अपने प्रोग्राम से कमांडलाइन प्रोग्राम का उपयोग करना चाहिए, बहुत सावधानी बरतने में यह सुनिश्चित हो गया है कि कुछ गलत होने पर वे समूह फ़ाइल को तोड़ नहीं देते हैं।

हालांकि फ़ाइल स्वरूप काफी सीधे आगे कुछ अपने आप को लिखने के लिए अगर आप इस तरह

+0

दृश्यों के पीछे कुछ सी कार्य और पुस्तकालय होना चाहिए .. (अच्छी तरह से स्पष्ट रूप से बनाया गया है) कि आदेशों का उपयोग कर रहे हैं, मैं उम्मीद कर रहा हूं कि उनके चारों ओर एक अजगर आवरण हो सकता है .. ?? –

1

समूह बनाने के लिए कोई लाइब्रेरी कॉल नहीं है। ऐसा इसलिए है क्योंकि समूह बनाने के लिए वास्तव में ऐसी कोई चीज़ नहीं है। एक जीआईडी ​​बस एक प्रक्रिया या फ़ाइल को आवंटित एक संख्या है। ये सभी संख्याएं पहले से मौजूद हैं - जीआईडी ​​का उपयोग शुरू करने के लिए आपको कुछ भी करने की ज़रूरत नहीं है। उचित विशेषाधिकारों के साथ, आप किसी प्रक्रिया के जीआईडी ​​को किसी भी नंबर पर सेट करने के लिए चॉउन (2) को कॉल कर सकते हैं, या वर्तमान प्रक्रिया के जीआईडी ​​को सेट करने के लिए सेटगिड (2) (इसके अलावा इसके अलावा थोड़ा और प्रभावी आईडी के साथ, पूरक आईडी, आदि)।

एक जीआईडी ​​को नाम देना बुनियादी यूनिक्स/लिनक्स/पीओएसईक्स सिस्टम पर/etc/group में एक प्रविष्टि द्वारा किया जाता है, लेकिन यह वास्तव में यूनिक्स/लिनक्स/पॉज़िक्स उपयोगकर्तालैंड उपकरण का पालन करने वाला एक सम्मेलन है। जैक लॉयड द्वारा उल्लिखित अन्य नेटवर्क-आधारित निर्देशिका भी मौजूद हैं।

मैन पेज समूह (5)/etc/group फ़ाइल के प्रारूप का वर्णन करता है, लेकिन यह अनुशंसा नहीं की जाती है कि आप इसे सीधे लिखें। आपके वितरण में नीतियां होंगी कि अनामित जीआईडी ​​आवंटित किए गए हैं, जैसे कि विभिन्न उद्देश्यों के लिए कुछ रिक्त स्थान आरक्षित करना (निश्चित सिस्टम समूह, गतिशील सिस्टम समूह, उपयोगकर्ता समूह इत्यादि)। इन संख्याओं की सीमा अलग-अलग वितरणों पर भिन्न होती है। इन नीतियों को आमतौर पर कमांड लाइन उपकरण में एन्कोड किया जाता है जो एक sysadmin अनामित जीआईडी ​​असाइन करने के लिए उपयोग करता है।

इसका मतलब है कि स्थानीय रूप से समूह को जोड़ने का सबसे अच्छा तरीका कमांड लाइन टूल का उपयोग करना है।

+0

"वास्तव में कोई समूह बनाने जैसी कोई चीज़ नहीं है" ... यह निश्चित रूप से जानना अच्छा है ... बहुत अच्छा जवाब के लिए धन्यवाद ... मुझे लगता है कि मैं कमांड लाइन टूल्स को निष्पादित करने के साथ जाऊंगा। –

0

यदि आप पाइथन को देख रहे हैं, तो इस प्रोग्राम को आजमाएं। इसका उपयोग करने के लिए काफी सरल है, और कोड को आसानी से अनुकूलित किया जा सकता है http://aleph-null.tv/downloads/mpb-adduser-1.tgz