अनुमतियों की यह व्याख्या प्रारंभिक यूनिक्स फ़ाइल सिस्टम पर वापस आती है। शुरुआत में, केवल फाइलें थीं। (ठीक है, और डिवाइस, और पाइप, और ... लेकिन मैं यहां एक कहानी बताने की कोशिश कर रहा हूं, 100% सख्ती से सटीक नहीं है; इसके अलावा, डिवाइस और पाइप और बाकी सब के लिए यह सब सच है क्योंकि सब कुछ एक फ़ाइल है, यहां तक कि निर्देशिका)।
निर्देशिकाएं केवल फाइलें हैं जो फाइल सिस्टम का उपयोग मेटाडेटा को रखने के लिए करता है जो निर्देशिका ट्री का वर्णन करता है, और इसमें शामिल फाइलें। निर्देशिका में प्रत्येक फ़ाइल को एक साधारण डेटा संरचना द्वारा वर्णित किया गया था जिसमें एक फ़ाइल नाम (मूल रूप से 14 वर्ण, IIRC) के लिए कमरा था जिसमें इनोड नंबर के साथ जहां डेटा संग्रहीत किया गया था, फ़ाइल का आकार, समय टिकट, और अनुमतियाँ शब्द । हर निर्देशिका की शुरुआत दो प्रविष्टियों के साथ हुई .
और नाम दिया गया ..
, पहला संकेत इस निर्देशिका के इनोड पर, और दूसरा इसकी मूल निर्देशिका के इनकोड पर।
अनुमतियों के शब्द में स्वामी के उपचार, एक ही समूह के अन्य सदस्यों और दुनिया का वर्णन करने के लिए नौ बिट्स थे। प्रत्येक झंडे के लिए तीन बिट्स चाहे संबंधित उपयोगकर्ता पढ़ सकता है, लिख सकता है या फ़ाइल को निष्पादित कर सकता है। (आप देख सकते हैं कि 16-बिट अनुमतियों वाले शब्द में पाँच और बिट्स हैं जिन्हें मैं अनदेखा कर रहा हूँ। उन्होंने अंततः अर्थ प्राप्त कर लिया, लेकिन यह कहानी के इस हिस्से के लिए प्रासंगिक नहीं है।) (इसके अलावा, यह नौ की व्याख्या है। लिनक्स सहित प्रारंभिक यूनिक्स के सभी वंशों में बिट्स बहुत अधिक बने हुए हैं।)
इसलिए, यदि कोई निर्देशिका वास्तव में केवल एक विशेष प्रकार की फ़ाइल है और किसी निर्देशिका में प्रविष्टि द्वारा वर्णित है, तो जाहिर है इसमें अनुमति बिट्स भी हैं, और उन बिट्स का अर्थ शायद कुछ है। लेकिन सवाल वही है, जो वास्तव में है। उन बिट्स को अर्थ प्रदान करने का सबसे आसान तरीका यह है कि पहली बार में उनका मतलब क्या नहीं बदलना है। और यह अनिवार्य रूप से जो किया गया था।
तो, रीड बिट का मतलब है कि उपयोगकर्ता निर्देशिका को स्वयं पढ़ सकता है। वह क्लास रीडर को प्रत्येक फ़ाइल के डेटा के फ़ाइल नाम, समय टिकटों, आकार और इनोड नंबर तक पहुंच प्रदान करता है। विशेष रूप से, r
सेट के साथ आप ls
निर्देशिका में सभी फ़ाइलों के नाम देखने के लिए उपयोग कर सकते हैं , लेकिन यह सूचीबद्ध फ़ाइलों में से किसी को खोलने (या किसी भी तरह से उपयोग करने) के लिए पर्याप्त नहीं है।
निष्पादित बिट का मतलब है कि उपयोगकर्ता निर्देशिका को "निष्पादित" कर सकता है। चूंकि निर्देशिकाएं विशेष हैं, इसलिए वास्तव में इसका मतलब है कि नाम से एक प्रविष्टि देखें और इसका उपयोग करें। इसका मतलब है कि यदि x
आप सेट हैं, तो आप फ़ाइलों को खोलने की कोशिश कर सकते हैं , लेकिन बिना r
आप उनके नाम की खोज नहीं कर सकते। बेशक, अनुरोधित फ़ाइल की अनुमतियाँ भी पहुंच को प्रभावित करती हैं, इसलिए यहां तक x
कि निर्देशिका पर आप एक फ़ाइल को पढ़ने में सक्षम नहीं होंगे जब तक कि यह आपको प्रदान नहीं करता है r
।
राइट बिट का अर्थ है कि उपयोगकर्ता निर्देशिका में लिख सकता है, लेकिन स्वाभाविक रूप से केवल फ़ाइल सिस्टम द्वारा मध्यस्थता की जाती है। इसका मतलब है कि w
सेट के साथ आप उस निर्देशिका में नई फ़ाइलें बना सकते हैं, या मौजूदा फ़ाइलों की निर्देशिका प्रविष्टियों को संपादित कर सकते हैं। लेकिन x
सेट के बिना , आप वास्तव में किसी भी फाइल का उपयोग नहीं कर सकते, और बिना r
आप उन्हें देख भी नहीं सकते।
जैसे ही यूनिक्स और उसके वंशजों में उपयोगकर्ता पहचान के अधिक जटिल मॉडल विकसित हुए हैं, ये वही बुनियादी विवरण उल्लेखनीय रूप से बने रहने में कामयाब रहे हैं।
संक्षेप में, r
इसका मतलब है कि आप इसकी सामग्री देख सकते हैं, x
इसका मतलब है कि आप इसका उपयोग कर सकते हैं, और w
इसका मतलब है कि आप इसे निर्देशिका के लिए भी संशोधित कर सकते हैं।