लिनक्स में एक बहुत ही उपयोगी विशेषता "एक्सेस कंट्रोल लिस्ट्स" है जो फाइलों और निर्देशिकाओं तक पहुंच को नियंत्रित करती है। यहां बताया गया है कि एक्सेस कंट्रोल सूचियां Linux में फ़ाइल अनुमतियों को नियंत्रित करने के लिए कैसे काम करती हैं।
नोट: एक्सेस कंट्रोल सूचियां कैसे काम करती हैं, इसे पूरी तरह से समझने के लिए, हम पहले कुछ उपयोगकर्ताओं और समूहों को काम कर रहे लिनक्स सिस्टम पर सेट कर रहे हैं। काली ऑपरेटिंग सिस्टम चलाने वाली वर्चुअल मशीन पर निम्नलिखित अभ्यास किया जाता है। रूट उपयोगकर्ता के पास सिस्टम में नए उपयोगकर्ताओं को जोड़ने और उन्हें समूहों में आवंटित करने की शक्ति है।
उपयोगकर्ता और समूह बनाना
सबसे पहले, हम रूट के रूप में लॉग इन करेंगे, उपयोगकर्ता बनाएंगे और उन्हें संबंधित समूहों में रखेंगे जैसा कि नीचे दी गई तालिका में दिखाया गया है। अवधारणा को बेहतर ढंग से समझने में मदद करने के लिए उपयोगकर्ताओं को सरल नाम दिए गए हैं।
उपयोगकर्ता वें> | समूह वें> |
---|---|
john1 john2 john3 | जॉन्स |
jane1 jane2 | जेन्स |
हम adduser
. का उपयोग करेंगे सिस्टम में नए उपयोगकर्ता जोड़ने का आदेश।
id
कमांड नए बनाए गए उपयोगकर्ता का विवरण प्रदर्शित करेगा। यह यूजर आईडी (यूआईडी), समूह आईडी (जीआईडी) और समूह का नाम (समूह) दिखाएगा। उपयोगकर्ता, निर्माण पर, उपयोगकर्ता नाम के समान नाम वाले समूह में स्वचालित रूप से जुड़ जाता है। वह उपयोगकर्ता समूह का एकमात्र सदस्य होगा।
इसी तरह, उपयोगकर्ता "जॉन2" और "जॉन3" भी बनाए जाते हैं।
adduser john2 adduser john3
एक बार तीन उपयोगकर्ता बन जाने के बाद, id
. का उपयोग करें संबंधित उपयोगकर्ता और समूह आईडी देखने के लिए आदेश।
हम देख सकते हैं कि तीन उपयोगकर्ता अपने-अपने समूहों में हैं - 1000, 1001 और 1002। पहले दिखाई गई तालिका के अनुसार, हम चाहते हैं कि तीन उपयोगकर्ता एक ही समूह में हों: johns
. चूंकि इस तरह का कोई समूह वर्तमान में सिस्टम पर मौजूद नहीं है, हम इसे groupadd
. के साथ बनाएंगे आदेश:
groupadd -g <new_group_ID> <group_name>
नया समूह आईडी 5000 के रूप में निर्दिष्ट है। यदि -g
स्विच को अनदेखा कर दिया जाता है, तो सिस्टम स्वचालित रूप से एक समूह आईडी चुन लेगा। नए समूह का नाम "जॉन्स" है। अब तीन उपयोगकर्ता - "जॉन 1," "जॉन 2" और "जॉन 3" - को इस समूह के सदस्यों के रूप में जोड़ने की आवश्यकता है। हम usermod
. का उपयोग करेंगे इस कार्य के लिए आदेश।
usermod -g <group_name> <user_name>
usermod
उपयोगकर्ता “user_name” को “group_name” समूह में जोड़ता है। निम्नलिखित आंकड़ा समूह परिवर्तन से पहले "जॉन 1" के लिए पहले यूआईडी और जीआईडी दिखाता है। usermod
. के बाद कमांड सफलतापूर्वक चलता है, "जॉन 1" को जीआईडी 5000 के साथ "जॉन" समूह में जोड़ा जाता है।
यही प्रक्रिया “john2” और “john3” के उपयोगकर्ताओं के लिए भी की जाती है।
usermod -g johns john2 usermod -g johns john3
अंत में, "जॉन्स" समूह में तीन उपयोगकर्ताओं का विवरण id
. का उपयोग करके देखा जा सकता है आदेश।
हमने सफलतापूर्वक तीन उपयोगकर्ता बनाए हैं और उन्हें एक ही समूह में जोड़ा है।
इसी तरह, उपयोगकर्ता "जेन 1" और "जेन 2" को जीआईडी 6000 के साथ "जेन्स" समूह में बनाया और जोड़ा जाता है। उनका विवरण id
का उपयोग करके देखा जा सकता है कमांड जैसा कि नीचे दिखाया गया है।
पहुंच नियंत्रण सूचियों की क्या आवश्यकता है?
मान लें कि उपयोगकर्ता “जॉन1” लॉग इन करता है,
होम निर्देशिका में एक नई फ़ाइल बनाता है,
और इसमें कुछ सामग्री जोड़ता है।
ls
. का उपयोग करना कमांड, हम फ़ाइल का मेटाडेटा देखते हैं।
आउटपुट में पहले कुछ अक्षर, - rw - r - - r - -
अनुमति स्ट्रिंग के लिए खाता। आइए इसे विच्छेदित करें।
– | <वें>आरडब्ल्यू -वें>r – – | r – – | |
---|---|---|---|
फ़ाइल प्रकार | अनुमति john1 फ़ाइल पर है | जॉन्स समूह के सदस्यों के पास फ़ाइल में अनुमतियां हैं | अन्य लोगों को दी गई अनुमतियां जो जॉन्स समूह में नहीं हैं |
यह लेख फ़ाइल अनुमतियों पर एक अच्छा प्राइमर है।
क्या होगा यदि "जॉन1", फ़ाइल स्वामी होने के नाते, अतिरिक्त रूप से केवल "जॉन 2" और "जेन 1" को लिखने की अनुमति देना चाहता है, लेकिन "जॉन 3" और "जेन 2?" के लिए पढ़ने की अनुमति के साथ बना रहता है?
rw - | r – – |
---|---|
john1 john2 jane1 | जॉन3 जेन2 |
एक विकल्प "जॉन 1," "जॉन 2" और "जेन 1" के लिए पढ़ने, लिखने की अनुमति के साथ एक नया समूह बनाना होगा और दूसरा समूह केवल "जॉन 3" और "जेन 2" के लिए पढ़ने की अनुमति के साथ होगा। यदि जॉन 1 किसी समूह सदस्य के लिए अनुमतियों को और संशोधित करना चाहता है, तो अधिक समूह बनाने की आवश्यकता है। एकाधिक समूह बनाना और प्रबंधित करना सिस्टम व्यवस्थापक के लिए एक बोझ है।
इसके बजाय, एक फ़ाइल के लिए एक "एक्सेस कंट्रोल लिस्ट" बनाई जा सकती है जो स्पष्ट रूप से बताएगी कि कोई भी उपयोगकर्ता उस फ़ाइल पर क्या कर सकता है।
किसी फ़ाइल के लिए एक्सेस कंट्रोल लिस्ट (ACL) कैसे बनाएं?
निर्माण पर प्रत्येक फ़ाइल में एक एसीएल असाइन किया गया है। इसे कुशलता से उपयोग करना बस इसे संशोधित करने का मामला है। केवल फ़ाइल स्वामी और रूट उपयोगकर्ता फ़ाइल के ACL को संशोधित कर सकते हैं।
हम getfacl
. का उपयोग कर सकते हैं मौजूदा एसीएल देखने के लिए कमांड:
getfacl <file_name>
#
. से शुरू होने वाली लाइनें टिप्पणी पंक्तियाँ हैं। वास्तविक जानकारी आउटपुट की अंतिम तीन पंक्तियों में है, जो पहले प्राप्त अनुमति स्ट्रिंग के समान है। "उपयोगकर्ता" लाइन फ़ाइल स्वामी "जॉन 1" को असाइन की गई अनुमतियों को संदर्भित करती है। "समूह" लाइन "जॉन्स" समूह में अन्य सदस्यों को दी गई अनुमतियों को संदर्भित करती है। जैसा कि आपने अनुमान लगाया, "अन्य" पंक्ति समूह के बाहर किसी और को संदर्भित करती है।
आइए हम setfacl
. का उपयोग करें फ़ाइल पर मौजूदा एसीएल को संशोधित करने का आदेश।
setfacl -m entity:name:permissions <file_name>
इकाई वें> | नाम वें> | अनुमतियां वें> |
---|---|---|
यहाँ का मान दर्शाता है कि ACL प्रविष्टि किसके लिए है: उपयोगकर्ता (यू) या समूह (जी) या अन्य (ओ) | उपयोगकर्ता या समूह का नाम, जिसके लिए ACL प्रविष्टि प्रासंगिक है | पढ़ने, लिखने, निष्पादित करने की अनुमतियों को r,w,x | अक्षरों द्वारा दर्शाया जाता है
"जॉन 2" को पहले फ़ाइल में पढ़ने, लिखने की एक्सेस दी जाती है,
उसके बाद "jane1."
आइए हम अपडेटेड एसीएल को "सीक्रेटफाइल" के लिए देखें।
हम देख सकते हैं कि पढ़ने और लिखने की अनुमति "जॉन 2" और "जेन 1" को सौंपी गई है।
ACL की प्रामाणिकता की पुष्टि करना
हम देख सकते हैं कि “john2” फ़ाइल को पढ़ने और उस पर लिखने में सक्षम है।
"john2" द्वारा दर्ज की गई नई जानकारी को फ़ाइल में जोड़ दिया गया है।
इसी तरह, "जेन 1" को एक ही विशेषाधिकार प्राप्त होता है - पहुंच पढ़ने और लिखने की पहुंच।
लेकिन उसी समूह में "जॉन3" फ़ाइल में लिखने में असमर्थ है।
"जेन 2", जो दूसरी श्रेणी से संबंधित है, वह भी फाइल पर लिखने में असमर्थ है।
निष्कर्ष
उसी प्रक्रिया को निर्देशिकाओं तक भी बढ़ाया जा सकता है। एक्सेस कंट्रोल लिस्ट सिस्टम एडमिनिस्ट्रेटर को फाइल और डायरेक्टरी एक्सेस को एक अच्छे तरीके से हैंडल करने में सक्षम बनाती है।