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