UID <500 के साथ एक सामान्य उपयोगकर्ता बनाने के खतरे क्या हैं?


14

UID <500 के साथ एक सामान्य उपयोगकर्ता बनाने के खतरे क्या हैं? यूआईडी की मानें तो मौजूदा यूआईडी के डुप्लिकेट नहीं हैं, तो क्या गलत हो सकता है?

यह कुछ ऐसा नहीं है जो मैं करना चाहता हूं, लेकिन ऐसा कुछ जो मैंने देखा है और जानना चाहता हूं कि ऐसा क्यों नहीं किया जाना चाहिए। इस उदाहरण में, यह RHEL5 पर है।


2
डेबियन-व्युत्पन्न सिस्टम सामान्य यूआईडी को 1000 में शुरू करते हैं, 500 पर नहीं।
कीथ थॉम्पसन

जवाबों:


16

मुझे विश्वास नहीं है कि कोई अंतर्निहित जोखिम है, यह कुछ ऐसा है जो सिस्टम खातों और उपयोगकर्ता खातों के बीच अलगाव बनाने के लिए किया जाता है। मेरे अनुभव से 500 से नीचे की संख्याओं का उपयोग करने का अभ्यास एक रेडहैट-इस्म है, और वास्तव में इससे अधिक कुछ भी नहीं है।

सोलारिस पर मैंने देखा कि उपयोगकर्ताओं को 100 से शुरू होने वाली संख्याएँ सौंपी जा रही हैं, केवल वर्षों बाद पता चलता है कि 2 छोटे विभागों के सिस्टम को एक साथ मिलाने से कई प्रकार के दुःस्वप्न पैदा हो जाते हैं, क्योंकि 2 विभागों में कई उपयोगकर्ता थे जो एक ही यूआईडी थे / GID को सौंपा गया।

UIDs को असाइन करते समय यह वास्तव में मुख्य जोखिम / सिरदर्द है। चूंकि UID वह है जो अंतत: किसी उपयोगकर्ता की दी गई फ़ाइलों / निर्देशिकाओं के लिए इनोड में लिखा जाता है, आप नहीं चाहते हैं कि सड़क के नीचे बड़े पैमाने पर उन findफ़ाइलों की तलाश हो जो UID 1234 के स्वामित्व में हैं और उन्हें 5678 में बदलना है। ।

इसलिए यूआईडी के चयन में कुछ विचार रखकर, प्रशासक सड़क के नीचे सिरदर्द से बच सकते हैं।

500 और इसके बाद के संस्करण का उपयोग सिर्फ रेडहैट (और अन्य यूनिक्स) द्वारा खुद को पर्याप्त बफर देने के लिए एक प्रयास है कि किसी भी सिस्टम खाते को बनाने की आवश्यकता हो सकती है जो यूआईडी के साथ इंटरमिक्स नहीं किया जाता है जो उपयोगकर्ताओं को सौंपा जाता है।

/etc/login.defs

संयोग से, संख्या 500, कॉन्फ़िग फ़ाइल में इस सेटिंग के द्वारा संचालित है /etc/login.defs

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN           500
UID_MAX         60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN           500
GID_MAX         60000

आप इसे अपनी इच्छानुसार किसी भी चीज़ में बदल सकते हैं, यदि आप डिफ़ॉल्ट व्यवहार को useradd/ adduserआदेशों से ओवरराइड करना चाहते हैं ।

Useradd मैन पेज

यदि आप उस useraddआदमी पृष्ठ पर एक नज़र डालते हैं, तो आप इस हिस्से को नोटिस करेंगे जो GID के लिए डिफ़ॉल्ट मान पर चर्चा करता है, लेकिन यह टिप्पणी यूआईडी पर भी लागू होती है:

अंश

-g, --gid GROUP
    The group name or number of the user´s initial login group. The group name 
    must exist. A group number must refer to an already existing group.

    If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB 
    variable in /etc/login.defs. If this variable is set to yes 
    (or -U/--user-group is specified on the command line), a group will be 
    created for the user, with the same name as her loginname. If the variable 
    is set to no (or -N/--no-user-group is specified on the command line), 
    useradd will set the primary group of the new user to the value specified by 
    the GROUP variable in /etc/default/useradd, or 100 by default.

सिस्टम खाते

useraddमैन पेज में नोटिस लेने के लिए एक और चीज यह सिस्टम अकाउंट जनरेशन पर है।

अंश

-r, --system
    Create a system account.

    System users will be created with no aging information in /etc/shadow, 
    and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX 
    range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their 
    GID counterparts for the creation of groups).

    Note that useradd will not create a home directory for such an user, 
    regardless of the default setting in /etc/login.defs (CREATE_HOME). You 
    have to specify the -m options if you want a home directory for a system 
    account to be created.

यह इस पद्धति ( useradd -r ...) है जिसे अक्सर स्क्रिप्टिंग द्वारा उपयोग किया जाता है जिसे विभिन्न पैकेज मैनर्स में शामिल किया जाता है, जैसे कि RPM, जब एक पैकेज स्थापित किया जा रहा है। इसे इस तरह से स्क्रिप्ट करना सिस्टम को यूआईडी / जीआईडी ​​पर कदम रखने के जोखिम के बिना किसी दिए गए सिस्टम पर स्वचालित रूप से अगले उपलब्ध यूआईडी / जीआईडी ​​का चयन करने की अनुमति देता है।


1
FWIW, मुझे लगता है कि यह एक सामान्य GNU / Linux-ism है, न कि केवल Red Hat-ism। मैंने इसे उन सभी प्रणालियों पर देखा है जिनका मैं उपयोग करता हूं, और मैंने कभी भी Red Hat का उपयोग नहीं किया है।
१५:१३ बजे १

@strugee - धन्यवाद मैं कथन को अधिक व्यापक नहीं बनाना चाहता था और यह मुझे काटने के लिए वापस आया है।
SLM

2

कर्नेल के दृष्टिकोण से केवल एक विशेष उपयोगकर्ता है: UID 0. प्रशासनिक कारणों से UID की विभाजन सीमाएँ आपके जीवन को सरल बनाती हैं। सामान्य श्रेणियां विक्रेता, प्रणाली, स्थानीय, वैश्विक हैं।

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


1

ऐसा करने में कोई अंतर्निहित खतरे नहीं हैं। यदि आप यूआईडी 499 के साथ एक उपयोगकर्ता बनाते हैं, तो उनके पास कोई अतिरिक्त निजी नहीं होने वाला है। इसका कारण यह बताया गया है कि यूआईडी आमतौर पर सिस्टम उपयोगकर्ताओं के लिए आरक्षित नहीं है। इस तरह की UID को बनाने में जो समस्या आ सकती है, वह यह है कि कुछ सिस्टम सेवा UID को उपलब्ध होने की उम्मीद करती है। यह एक नई सेवा बनाने की तरह है जो एक प्रसिद्ध बंदरगाह पर चलती है - इसके साथ कोई समस्या नहीं है, लेकिन यह जरूरी नहीं है, लेकिन यह अच्छा अभ्यास नहीं है और जब आप sshd, ftpd, इत्यादि की स्थापना कर रहे हैं, तो आगे सड़क पर समस्याएँ पैदा कर सकते हैं।

उस ने कहा, मैंने कई प्रणालियां देखी हैं जहां यूआईडी <500 बिना किसी समस्या के उपयोगकर्ता बनाए गए थे। हालाँकि, जैसा कि उपयोगकर्ता आधार बढ़ता है और अब हजारों उपयोगकर्ता हैं, उपयोगकर्ता खातों और सिस्टम खातों के बीच अंतर करना मुश्किल हो सकता है। बिना यूआईडी <500 के नियम का पालन करना बहुत आसान है। तो, यह खातों को व्यवस्थित करने का एक अच्छा तरीका है।


1

कोई वास्तविक खतरा नहीं है। कर्नेल 0. के अलावा उपयोगकर्ता आईडी मूल्यों की परवाह नहीं करता है। अधिकांश प्रशासन उपकरण या तो परवाह नहीं करते हैं - सिस्टम के बहुत कम हिस्से सिस्टम उपयोगकर्ताओं और मानव उपयोगकर्ताओं के बीच अंतर करते हैं।

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

कुछ वितरण सिस्टम यूजर्स के लिए रेंज 1-499 (रेड हैट एंड रिलेटिव्स) या 1-999 (डेबियन एंड रिलेटिव्स) रखते हैं, जिसमें यूजर्स को एक सिस्टम सर्विस वाले पैकेज को इंस्टॉल करते समय आवंटित किया जाता है, जिसमें डेडिकेटेड यूजर की जरूरत होती है। डेबियन का कन्वेंशन यह है कि 1–99 की सीमा को आबंटित किया जाता है (इसलिए उस रेंज में एक मानव उपयोगकर्ता बनाना एक बहुत बुरा विचार है क्योंकि यह सिस्टम उपयोगकर्ता के साथ टकरा सकता है) जबकि 100-999 की रेंज गतिशील रूप से आवंटित की जाती है (इसलिए एक मानव उपयोगकर्ता का निर्माण होता है उस सीमा में हानिरहित है, क्योंकि कोई भी नया सिस्टम उपयोगकर्ता एक मुफ्त उपयोगकर्ता आईडी लेगा)।

आप छोटी असुविधाओं में भाग सकते हैं, जैसे प्रदर्शन प्रबंधक यूआईडी के साथ उपयोगकर्ताओं को उनकी सूची में सीमा के नीचे की पेशकश नहीं करते हैं।

एक अलग मशीन के लिए मुख्य खतरा यह है कि आप अपने साथी सिस्टम प्रशासकों को भ्रमित करने की संभावना रखते हैं। एक नेटवर्क में एक मशीन के लिए जहां उपयोगकर्ता आईडी साझा किए जाते हैं, आप अन्य मशीनों के साथ संघर्ष में भाग सकते हैं जहां इन उपयोगकर्ताओं के पास सिस्टम उपयोगकर्ता के समान उपयोगकर्ता आईडी है। साझा उपयोगकर्ता आईडी वाले नेटवर्क में, मानव उपयोगकर्ताओं के लिए 1000-65533 या 10000-65533 की सीमा तक रहना सबसे अच्छा है।

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