अपनी स्थापना के बाद से, लिनक्स को मल्टी-यूज़र वातावरण का समर्थन करने के लिए तैयार किया गया था। एक कार्यशील सिस्टम पर कई उपयोगकर्ताओं और ग्रुप्स के साथ, एक ही ग्रुप के उपयोगकर्ताओं के बीच शेयर्ड डायरेक्टरी का सामना करना काफी आम है, और डायरेक्टरी में फ़ाइलों को शेयर करने से समस्याएं उत्पन्न होती हैं। इस लेख में, हम चर्चा करेंगे कि आप शेयर्ड डायरेक्टरी पर फ़ाइल एक्सेस अनुमति को फाइन-ट्यून करने के लिए स्टिकी बिट्स का उपयोग कैसे कर सकते हैं।
चित्रण उद्देश्यों के लिए, हमारे पास तीन उपयोगकर्ताओं - john1, john2 और john3 के साथ एक सिस्टम है, जो सभी सामान्य ग्रुप "johns" के सदस्य हैं।
मान लीजिए "john1" "shared-dir" नामक एक नई डायरेक्टरी बनाता है जिसे "johns" ग्रुप के सभी उपयोगकर्ताओं के बीच शेयर किया जाना है।
ls कमांड के साथ, हम "shared-dir" की अनुमति देख सकते हैं, जिसे निम्न तालिका में समझाया जा सकता है:
केवल "john1" डायरेक्टरी की सामग्री पढ़ सकता है और डायरेक्टरी में लिख भी सकता है। चूंकि हम एक शेयर्ड डायरेक्टरी के साथ काम कर रहे हैं, हम ग्रुप के सभी उपयोगकर्ताओं को "shared-dir" में लिखने में सक्षम बनाना चाहते हैं।
इसके लिए, हम chmod कमांड का उपयोग करके अनुमतियों को संशोधित करेंगे। हम नीचे दिखाए अनुसार "johns" ग्रुप के सभी उपयोगकर्ताओं को "लिखने" की अनुमति जोड़ देंगे।
हम नीचे दिखाए अनुसार "shared-dir" के लिए अपडेट की गई अनुमतियां देख सकते हैं। पीले रंग से अंडरलाइन किया गया भाग दिखाता है कि "johns" ग्रुप को "लिखने" की अनुमति दी गई है।
शेयर्ड डायरेक्टरी में फ़ाइलें जोड़ना
अब "john1" "shared-dir" में दो फ़ाइलें (j1_file1.txt और j1_file2.txt) जोड़ता है।
आसान समझ के लिए, फ़ाइल नाम के पहले दो वर्ण उपयोगकर्ता नाम के समानार्थी हैं।
इसी तरह, "john2" भी "shared-dir" डायरेक्टरी में "लिखने" में सक्षम हैं।
अब "shared-dir" में चार फ़ाइलें हैं।
क्या वर्तमान सेटअप में कोई समस्या है?
"j1_file1.txt" फ़ाइल "john1" द्वारा बनाई गई थी जिससे "john1" फ़ाइल मालिक बना। अब "john2" लॉग इन करता है और इस फ़ाइल को हटाने का प्रयास करता है, और वह ऐसा करने में सक्षम होगा।
"john1" फ़ाइल मालिक था, लेकिन "john2" इसे हटाने में सक्षम था क्योंकि "लिखने" की अनुमति "johns" ग्रुप के सभी सदस्यों को दी गई थी।
यह परिदृश्य आदर्श नहीं है। हम चाहते हैं कि सभी उपयोगकर्ता डायरेक्टरी में लिख सकें, लेकिन केवल फ़ाइल मालिक ही फ़ाइल को हटा सके। इसे कैसे प्राप्त किया जा सकता है?
Sticky Bit का परिचय
स्टिकी बिट एक विशेष अनुमति है जिसे उस डायरेक्टरी पर सेट किया जा सकता है जिस पर एक्सेस वाले ग्रुप के लिए "लिखने" की अनुमति सेट है। यह बिट सुनिश्चित करता है कि ग्रुप के सभी सदस्य डायरेक्टरी में लिख सकते हैं, लेकिन केवल वही व्यक्ति जिसने फ़ाइल बनाई है, यानी फ़ाइल मालिक, फ़ाइल को हटा सकता है।
chmod कमांड का उपयोग +t फ्लैग के साथ डायरेक्टरी पर स्टिकी बिट सेट करने के लिए किया जा सकता है।
अपडेट की गई अनुमति नीचे देखी जा सकती है।
अब यदि "john2" "john1" द्वारा बनाई गई फ़ाइल "j1_file2.txt" को हटाने का प्रयास करता है, तो वह ऑपरेशन अनुमत नहीं है।
यदि आप "अन्य" के लिए "निष्पादन" अनुमति हटा देते हैं, जैसा कि नीचे दिखाया गया है:
डायरेक्टरी पर स्टिकी बिट का अस्तित्व अनुमति स्ट्रिंग के "अन्य" भाग में अपरकेस "T" द्वारा दर्शाया गया है। डायरेक्टरी पर स्टिकी बिट व्यवहार वही रहता है।
"chmod" कमांड का संस्करण
chmod कमांड का संख्यात्मक रूप भी डायरेक्टरी पर स्टिकी बिट सेट करने के लिए उपयोग किया जा सकता है।
chmod nxyz
जहां,
- n = 1, स्टिकी बिट को संदर्भित करता है। "n" के अन्य मूल्य अन्य विशेष अनुमतियों को संदर्भित करते हैं।
- x : फ़ाइल मालिक को दी गई अनुमति
- y : फ़ाइल तक पहुंच वाले ग्रुप को दी गई अनुमति
- z : अन्य को दी गई अनुमति
"shared-dir" पर स्टिकी बिट सेट करने के लिए, निम्न कमांड का उपयोग करें:
chmod 1755 shared-dir
जो मौजूदा डिफ़ॉल्ट अनुमतियों पर +t का उपयोग करके वही परिणाम देता है।
स्टिकी बिट का उपयोग केवल डायरेक्टरी के लिए मान्य है, फ़ाइलों के लिए इसका उपयोग करना समझदारी नहीं होगी।