क्या हमेशा एक ही यूआईडी और जीआईडी ​​की जोड़ी होगी?


11

मुझे फ़ाइल / निर्देशिका के स्वामित्व का उपयोग करना है। chmodमुझे केवल मालिकों का उपयोगकर्ता नाम पता है, लेकिन साथ ही साथ डिफ़ॉल्ट समूह का नाम बदलना चाहते हैं। इस स्तर पर समूह का नाम तय नहीं किया गया है इसलिए मैं उपयोगकर्ता नाम के समान ही लगा रहा हूं

chown -R username:username path_to_dir

कमांड विभिन्न sytems / उपयोगकर्ताओं के लिए चल सकता है, इसलिए मेरी चिंता यह है कि क्या linux में हमेशा एक युग्म उपयोगकर्ता नाम (उपयोगकर्ता) होगा: उपयोगकर्ता नाम (समूह) या कुछ बिंदु पर यह डिफ़ॉल्ट group_name त्रुटि दे सकता है।

हालांकि मैंने उपयोगकर्ता के GID को ढूंढना शुरू कर दिया है

id username | tr '(=)' ':' | awk -F: '{print $3}

लेकिन ज्ञान के लिए मैं जानना चाहता हूं। अब तक /etc/passwd /etc/groupsकुछ उपयोगकर्ताओं को "शटडाउन, हाल्ट, सिंक, ओपियर्टोर" को छोड़कर सभी उपयोगकर्ताओं के समूहों में भी सूचीबद्ध किया गया है।

EDIT 1: id -gn username भी अच्छा विकल्प है


3
दूसरे उदाहरण में, क्या आप खोज रहे थे id -g username?
user1686

1
या id -gn usernameजो आईडी के बजाय नाम प्रिंट करता है।
क्रिस्टियन सियुपिटु

लिनक्स में, बहुत सारे "डिवाइस-समूह" हैं - उदाहरण के लिए। डिस्क, मेम, kmem, ऑडियो, वीडियो, आदि - जिनके पास संबंधित उपयोगकर्ता नहीं है।
बार्ड कोपरपुड

जवाबों:


20

इस बात की कोई गारंटी नहीं है कि groupname = usernameमौजूद होगा।

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

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

इसलिए आपको इस तथ्य पर भरोसा नहीं करना चाहिए कि उपयोगकर्ता नाम = groupname


यह न केवल स्थानीय प्रशासन नीति पर निर्भर हो सकता है, बल्कि विभिन्न वितरणों के साथ शामिल उपकरणों पर भी निर्भर करता है। कई साइटें केवल प्रदान किए गए टूल द्वारा उपयोग किए गए चूक को स्वीकार करेंगी। जबकि अधिकांश वितरण मैंने वर्षों में जहाज का उपयोग एक useraddस्क्रिप्ट के साथ किया है जो डिफ़ॉल्ट रूप से एक ही नाम के साथ एक समूह बनाता है, सभी के पास नहीं है। पिछली बार मैंने इसका इस्तेमाल किया था (कई, कई साल पहले), स्लैकवेयर की उपयोगकर्ता निर्माण स्क्रिप्ट एक एकल समूह होने में चूक गई थी usersजिसे सभी उपयोगकर्ताओं को इसके बजाय सदस्य बनाया गया था। docs.slackware.com/slackbook:users यह अभी भी मामला हो सकता है पता चलता है।
जूल्स

11

हालांकि उपयोगकर्ता निजी समूह मुहावरा अक्सर आधुनिक Linux सिस्टम में प्रयोग किया जाता है, * nix वास्तव में प्रत्येक उपयोगकर्ता के लिए एक अनूठा प्राथमिक समूह की आवश्यकता नहीं है, और यह इस तरह के रूप में एक आम प्राथमिक समूह साझा करने के कई उपयोगकर्ता खातों के लिए संभव है usersया staff

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


6

जैसा कि रमेश ने डिफ़ॉल्ट रूप से संकेत दिया है कि यूआईडी और जीआईडी ​​आम उपयोगकर्ताओं के लिए समान हैं। हालाँकि, यह हमेशा ऐसा नहीं होता है, इसलिए आपको ऐसी धारणा नहीं बनानी चाहिए क्योंकि इससे आपके सिस्टम पर कहर बन सकता है। फ़ाइल / फ़ोल्डर की अनुमति गलत समूह को सौंपना कुछ गड़बड़ है, है ना?

तो, संक्षिप्त उत्तर: नहीं, UID हमेशा GID के बराबर नहीं है। फिर भी, /etc/passwdएक ही पंक्ति पर डिफ़ॉल्ट समूह के यूआईडी और जीआईडी ​​दोनों शामिल हैं , इसलिए उन्हें निकालना आसान है।


"डिफ़ॉल्ट रूप से यूआईडी और जीआईडी ​​आम उपयोगकर्ताओं के लिए समान हैं" - वास्तव में, यह कथन केवल तभी सच है जब आप "कुछ लोकप्रिय लिनक्स वितरणों पर" जोड़ते हैं। हां, उबंटू एट अल। इसे इस तरह से करें, लेकिन मैं एक सामान्य "उपयोगकर्ता" समूह को डिफ़ॉल्ट रूप से अधिक मानूंगा।
jstarek

हां, यदि हम 100% सटीक होने का लक्ष्य रखते हैं तो आप सही हैं। हम शायद एक भी अपवाद को याद नहीं करने के लिए एक दर्जन से अधिक विभिन्न 'इफ़्स' जोड़ने की आवश्यकता होगी। मेरे सभी डेबियन-आधारित डिस्ट्रोस (LMDE, क्रंचबैंग, शुद्ध डेबियन) इस तरह से व्यवहार करते हैं और एक सेंटोस 6.5 मैं भी है। आपको लगता है कि चूंकि मेरे लिए बड़ी मात्रा में उपयोगकर्ताओं को जोड़ने की कोई आवश्यकता नहीं है, इसलिए मैं adduserइसके बजाय उपयोग करना चाहता हूं useraddऔर डिफ़ॉल्ट में /etc/adduser.confसेट हैं USERGROUPS=yesजो प्रत्येक नए उपयोगकर्ता के लिए एक समूह बनाता है। ये समूह आमतौर पर (हमेशा नहीं, हालांकि) उपयोगकर्ता के यूआईडी के समान जीआईडी ​​होते हैं जिनके लिए उन्हें बनाया गया था।
एराथियल

2

से इस लिंक, मैं नीचे दी गई जानकारी देखें।

एक यूजर आईडी (यूआईडी) एक यूनिक पॉजिटिव पूर्णांक है जो प्रत्येक उपयोगकर्ता को यूनिक्स-जैसे ऑपरेटिंग सिस्टम द्वारा सौंपा गया है। प्रत्येक उपयोगकर्ता को उसके यूआईडी द्वारा सिस्टम की पहचान की जाती है, और उपयोगकर्ता नाम आमतौर पर केवल मनुष्यों के लिए एक इंटरफेस के रूप में उपयोग किया जाता है।

यूआईडी को उनके संबंधित उपयोगकर्ता नाम और अन्य उपयोगकर्ता-विशिष्ट जानकारी के साथ, /etc/passwdफ़ाइल में संग्रहीत किया जाता है, जिसे बिल्ली कमांड के साथ पढ़ा जा सकता है:

cat /etc/passwd

तीसरे फ़ील्ड में UID होता है, और चौथे फ़ील्ड में समूह ID (GID) होता है, जो डिफ़ॉल्ट रूप से सभी सामान्य उपयोगकर्ताओं के लिए UID के बराबर होता है।

संपादित करें

हालाँकि, जैसा कि @ कार्लसन बताते हैं कि यह सही नहीं है कि यूआईडी डिफ़ॉल्ट रूप से जीआईडी ​​के बराबर होगा।

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

अधिक संदर्भ

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


अंतिम कथन पूरी तरह से गलत है। UID = GID केवल उस स्थिति में जब नया उपयोगकर्ता स्थानीय सिस्टम पर बनाया गया है और GID को किसी मौजूदा समूह को स्पष्ट रूप से असाइन नहीं किया गया है।
कार्लसन

नहीं, यह पूरी तरह से गलत नहीं है, क्योंकि यह स्पष्ट रूप से "डिफ़ॉल्ट रूप से" कहता है। कुछ स्पष्टीकरण यहाँ बहुत सराहना की जाएगी।
एराथिएल

1
@Erathiel डिफ़ॉल्ट रूप से GID उपयोगकर्ता के निर्माण में निर्दिष्ट GID के बराबर है। यदि उपयोगकर्ता स्थानीय रूप से बनाया गया है और कार्यक्रम में -gध्वज में GID को निर्दिष्ट किए बिना useraddआपके लिए एक समूह बनाएगा और जब तक कोई GID शिफ्ट नहीं हुआ है तब तक यह = UID होगा। हालांकि, अगर निर्माण विधि ज्ञात नहीं है, तो आप इस तथ्य पर भरोसा नहीं कर सकते हैं कि यह मामला होगा:uid=123456(ME) gid=777(ABC) groups=777(ABC)
कार्लसन

कुछ सिस्टम पर यूजरअड खाता के लिए एक ही नाम का एक समूह भी बनाता है। लिनक्स के स्वाद पर निर्भर करता है।
पीट

@ कार्लसन, मैंने कभी उल्लेख नहीं किया कि यह हमेशा बराबर होगा। यह स्पष्ट रूप से निर्दिष्ट है कि डिफ़ॉल्ट रूप से यह सभी सामान्य उपयोगकर्ताओं के लिए यूआईडी के बराबर है
रमेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.