उपयोगकर्ता खातों को डेबियन पैकेज कैसे बनाना चाहिए?


33

पैकेज qqq.debउस प्रोग्राम को स्थापित करता है जिसे उपयोगकर्ता खाते qqqसे चलना चाहिए uqqq। पैकेज में qqqप्रोग्राम, qqq.confकॉन्फिग फाइल और /etc/init.d/qqqइनस्क्रिप्ट शामिल हैं।

पैकेज को उपयोगकर्ता के निर्माण का प्रबंधन कैसे करना चाहिए uqqq? क्या इसके बारे में कोई सर्वोत्तम अभ्यास या आधिकारिक दिशानिर्देश हैं?

  1. बस उपयोगकर्ता स्वचालित रूप uqqqसे पोस्टइन में बनाएं ;
  2. /etc/init.d/qqqस्क्रिप्ट से पहले स्टार्टअप पर उपयोगकर्ता को स्वचालित रूप से बनाएं ;
  3. qqqप्रोग्राम के पहले स्टार्टअप (तर्क के बिना) पर उपयोगकर्ता को स्वचालित रूप से बनाएं
  4. कोई भी उपयोगकर्ता खाता न बनाएं, तब तक शुरू करने से इनकार करें जब तक कि उपयोगकर्ता स्पष्ट रूप से व्यवस्थापक द्वारा नहीं बनाया जाता है (उदाहरण के लिए, उपयोग करके qqq --create-user);
  5. कोई भी उपयोगकर्ता खाता न बनाएं, डिफ़ॉल्ट रूप से रूट से बेवजह चलाएं;
  6. पोस्टस्टीन, init.d स्क्रिप्ट या qqqउपयोगकर्ता को बनाने के लिए खुद से इंटरएक्टिव रूप से पूछें ।

अनइंस्टॉल होने पर पैकेज को उपयोगकर्ता खाते को हटा देना चाहिए?


7
इस प्रश्न के उत्तर प्राप्त करने का सबसे आसान तरीका आधिकारिक डेबियन पैकेजों की पूर्व / स्थापना के बाद की स्क्रिप्ट को देखना है। grep adduser /var/lib/dpkg/info/*.postinstकई उदाहरणों को प्राप्त करने के लिए किसी भी डेबियन आधारित प्रणाली पर दौड़ें ।
जोफेल

जब adduserउपयोग किया जाता है, तो इसे पैकेज पर भी निर्भर होना पड़ता है। देखें: lintian.debian.org/tags/…
Lekensteyn

जवाबों:


22

डेबियन विकी का पहले से उल्लेखित डेबियन पॉलिसी मैनुअल की तुलना में कुछ अधिक व्यापक और विशिष्ट मार्गदर्शन है। देखें अकाउंटहैंडलिंगइंटरटेनर स्क्रिप्ट्स :

Adduser प्रोग्राम सही काम करता है - यदि सिस्टम विकल्प के साथ कहा जाता है। यह इस प्रकार आमतौर पर केवल कॉल करने के लिए आवश्यक है

योजक - सिस्टम $ USERNAME

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

यह आम तौर पर गेट के साथ क्रॉस-चेक करने के लिए आवश्यक नहीं होना चाहिए कि क्या खाता पहले से ही मौजूद है क्योंकि एड्यूसर - सिस्टम आम तौर पर सही काम करता है। यदि नहीं, तो कृपया अपने अनुचर लिपियों को सरल रखने के लिए एड्यूसर के खिलाफ बग की रिपोर्ट करें।

खातों को हटाने के बारे में यह सलाह अनिर्णायक है। हालांकि, मैं ध्यान दूंगा कि फेडोरा के लिए संबंधित सलाह समान नहीं है।

उपयोगकर्ताओं या समूहों को न निकालें हम संकुल द्वारा बनाए गए उपयोगकर्ताओं या समूहों को कभी नहीं हटाते हैं। उन उपयोगकर्ताओं / समूहों द्वारा स्वामित्व वाली फ़ाइलों को पीछे छोड़ दिया गया है (और यहां तक ​​कि अगर ऐसा होता है, तो उनके साथ क्या करेंगे?) और मालिकाना हक वाले लोगों को पीछे छोड़ते हुए यह जांचने के लिए कोई भी तरीका नहीं है। जब शब्दार्थिक रूप से असंबंधित उपयोगकर्ता / समूह बाद में बनाया जाता है और UID / GID का पुन: उपयोग करता है। इसके अलावा, कुछ सेटअप में उपयोगकर्ता / समूह को हटाना संभव नहीं है और / या वांछनीय नहीं है (उदाहरण के लिए, साझा उपयोगकर्ता, दूरस्थ उपयोगकर्ता / समूह डेटाबेस का उपयोग करते समय)। अप्रयुक्त उपयोगकर्ताओं / समूहों की सफाई को सिस्टम प्रशासक पर छोड़ दिया जाता है ताकि वे चाहें तो इसका ध्यान रख सकें।


12

संकुल को स्थापित करने वाले एक प्रशासक के रूप में, मुझे अपने पैकेजों की अपेक्षा होगी कि वे उन उपयोगकर्ताओं को स्वचालित रूप से बनायें जिनकी उन्हें पूर्व या पोस्टस्टीन में आवश्यकता होती है, ताकि प्रोग्राम चलाने से पहले उपयोगकर्ता के स्वामित्व वाली किसी भी फाइल को बनाया जा सके।

आपका प्रोग्राम केवल रूट के रूप में चलना चाहिए, यदि इसे (जैसे कि विशेषाधिकार प्राप्त पोर्ट से बाँधना) और आवश्यकता पड़ने पर अपने विशेषाधिकारों को छोड़ देना चाहिए।

आप देख सकते हैं कि अन्य (स्थापित) पैकेजों ने कैसे उपयोग करके इसे संभाला है

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

और सूचीबद्ध फाइलों को पढ़ना (अधिकांश विकल्पों की एक से अधिक पंक्ति लेना)।

अजीब तरह से, सभी लेकिन मेरे एक स्थापित पैकेज जो उपयोगकर्ताओं adduserको जोड़ने के लिए एक उपयोगकर्ता उपयोग बनाता है , लेकिन एड्यूसर पैकेज एक आवश्यक पैकेज नहीं है, इसलिए इस पर निर्भर करने के लिए आपके पैकेज का निर्माण करना होगा। useraddकार्यक्रम libuuid1 पैकेज द्वारा किया जाता है, और का हिस्सा है passwdपैकेज है जो एक आवश्यक पैकेज है।


1
यह भयानक है, मैन्युअल रूप से हैकिंग के बजाय प्रींस्ट स्क्रिप्ट बनाने के उचित तरीके की जांच करें।
लेटॉर्फ

--quietदृष्टिकोण बहुत लोकप्रिय लगता है
vidstige

6

धारा 10.9। डिबियन नीति नियमावली में अनुमतियाँ और मालिक हैं जो आप देख रहे हैं ("संस्करण 3.9.5.0, 2013-10-28" से):

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

यदि आपको एक स्थिर रूप से आवंटित आईडी की आवश्यकता है, तो आपको base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of theआधार /etc/passwd' or / पास / पैकेज में मौजूद आईडी / समूह / समूह के साथ उपयोगकर्ता या समूह आईडी के लिए पूछना चाहिए , या सही के साथ उपयोगकर्ता या समूह बनाने के लिए अपने पैकेज की व्यवस्था करें। यदि संभव हो तो आईडी ( adduser') in itsप्रिंस्टन 'या पोस्टस्टीन का उपयोग postinst'. (Doing it in theकरना) को प्राथमिकता दी जानी चाहिए, अन्यथा' एड्यूसर 'पैकेज पर पूर्व-निर्भरता की आवश्यकता होगी।)

नोट: डेबियन-डेवेल सूची काफी सक्रिय है और ऐसे सवालों के जवाब भी देती है (हालांकि यह उदाहरण 2003 से है)।


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