कैसे Linux पर काम करने के लिए निर्देशिका अनुमतियाँ माना जाता है?


11

मैंने डायरेक्टरी बनाई है एक निर्मित में ये अनुमतियाँ हैं - दूसरे उपयोगकर्ता के पास

drwxr - r-- 5 उपयोगकर्ता उपयोगकर्ता 4096 2012-09-15 19:30 साइटें

जब किसी अन्य उपयोगकर्ता के रूप में निर्देशिका पर एक ls -l करें

ls -l / home / उपयोगकर्ता / साइटें

यह डायरेक्टरी आउटपुट है। मैंने सोचा था कि उस निर्देशिका पर x बिट सेट के बिना फ़ाइल नाम बिल्कुल नहीं दिखाएंगे।

d????????? ? ? ? ?                ? dev.user.com  
-????????? ? ? ? ?                ? user.20120914_082804.sql.gz   
d????????? ? ? ? ?                ? shared  
-????????? ? ? ? ?                ? shared.tar.gz  
-????????? ? ? ? ?                ? www.20120914_083256.tar.gz
d????????? ? ? ? ?                ? www.user.com

क्या यहाँ कुछ असंगति है?

जवाबों:


16

xआपको वास्तव में निर्देशिका में रहने और निर्देशिका में फ़ाइलों तक पहुंचने की rअनुमति देता है , आपको निर्देशिका की सामग्री को देखने की अनुमति देता है।

यदि आपने निर्देशिका को xबिट देकर और बिट को हटाकर स्थिति को उलट दिया है r, तो उपयोगकर्ता खुल सकता है shared.tar.gz(फ़ाइल पर उचित अनुमतियों को मानते हुए), लेकिन केवल अगर वह पहले से फ़ाइल नाम जानता था, lsतो निर्देशिका में फ़ाइलों को सूचीबद्ध करने में असमर्थ होगा। ।


1
मैं इसका परीक्षण करूंगा और आपके पास वापस आऊंगा। मैंने हमेशा लिनक्स फाइल शेयरिंग के इस पहलू को भ्रामक पाया है।
vfclists

यह व्यवहार लिनक्स के लिए अद्वितीय नहीं है; यह UNIX के शुरुआती दिनों में वापस आता है - लिनक्स, एक UNIX- संगत प्रणाली होने के नाते, इस तरह से काम करता है - और Windows NT ACL प्रविष्टियों में समान अनुमति बिट्स हैं।

2

अनुमतियों की यह व्याख्या प्रारंभिक यूनिक्स फ़ाइल सिस्टम पर वापस आती है। शुरुआत में, केवल फाइलें थीं। (ठीक है, और डिवाइस, और पाइप, और ... लेकिन मैं यहां एक कहानी बताने की कोशिश कर रहा हूं, 100% सख्ती से सटीक नहीं है; इसके अलावा, डिवाइस और पाइप और बाकी सब के लिए यह सब सच है क्योंकि सब कुछ एक फ़ाइल है, यहां तक ​​कि निर्देशिका)।

निर्देशिकाएं केवल फाइलें हैं जो फाइल सिस्टम का उपयोग मेटाडेटा को रखने के लिए करता है जो निर्देशिका ट्री का वर्णन करता है, और इसमें शामिल फाइलें। निर्देशिका में प्रत्येक फ़ाइल को एक साधारण डेटा संरचना द्वारा वर्णित किया गया था जिसमें एक फ़ाइल नाम (मूल रूप से 14 वर्ण, IIRC) के लिए कमरा था जिसमें इनोड नंबर के साथ जहां डेटा संग्रहीत किया गया था, फ़ाइल का आकार, समय टिकट, और अनुमतियाँ शब्द । हर निर्देशिका की शुरुआत दो प्रविष्टियों के साथ हुई .और नाम दिया गया .., पहला संकेत इस निर्देशिका के इनोड पर, और दूसरा इसकी मूल निर्देशिका के इनकोड पर।

अनुमतियों के शब्द में स्वामी के उपचार, एक ही समूह के अन्य सदस्यों और दुनिया का वर्णन करने के लिए नौ बिट्स थे। प्रत्येक झंडे के लिए तीन बिट्स चाहे संबंधित उपयोगकर्ता पढ़ सकता है, लिख सकता है या फ़ाइल को निष्पादित कर सकता है। (आप देख सकते हैं कि 16-बिट अनुमतियों वाले शब्द में पाँच और बिट्स हैं जिन्हें मैं अनदेखा कर रहा हूँ। उन्होंने अंततः अर्थ प्राप्त कर लिया, लेकिन यह कहानी के इस हिस्से के लिए प्रासंगिक नहीं है।) (इसके अलावा, यह नौ की व्याख्या है। लिनक्स सहित प्रारंभिक यूनिक्स के सभी वंशों में बिट्स बहुत अधिक बने हुए हैं।)

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

तो, रीड बिट का मतलब है कि उपयोगकर्ता निर्देशिका को स्वयं पढ़ सकता है। वह क्लास रीडर को प्रत्येक फ़ाइल के डेटा के फ़ाइल नाम, समय टिकटों, आकार और इनोड नंबर तक पहुंच प्रदान करता है। विशेष रूप से, rसेट के साथ आप lsनिर्देशिका में सभी फ़ाइलों के नाम देखने के लिए उपयोग कर सकते हैं , लेकिन यह सूचीबद्ध फ़ाइलों में से किसी को खोलने (या किसी भी तरह से उपयोग करने) के लिए पर्याप्त नहीं है।

निष्पादित बिट का मतलब है कि उपयोगकर्ता निर्देशिका को "निष्पादित" कर सकता है। चूंकि निर्देशिकाएं विशेष हैं, इसलिए वास्तव में इसका मतलब है कि नाम से एक प्रविष्टि देखें और इसका उपयोग करें। इसका मतलब है कि यदि xआप सेट हैं, तो आप फ़ाइलों को खोलने की कोशिश कर सकते हैं , लेकिन बिना rआप उनके नाम की खोज नहीं कर सकते। बेशक, अनुरोधित फ़ाइल की अनुमतियाँ भी पहुंच को प्रभावित करती हैं, इसलिए यहां तक xकि निर्देशिका पर आप एक फ़ाइल को पढ़ने में सक्षम नहीं होंगे जब तक कि यह आपको प्रदान नहीं करता है r

राइट बिट का अर्थ है कि उपयोगकर्ता निर्देशिका में लिख सकता है, लेकिन स्वाभाविक रूप से केवल फ़ाइल सिस्टम द्वारा मध्यस्थता की जाती है। इसका मतलब है कि wसेट के साथ आप उस निर्देशिका में नई फ़ाइलें बना सकते हैं, या मौजूदा फ़ाइलों की निर्देशिका प्रविष्टियों को संपादित कर सकते हैं। लेकिन xसेट के बिना , आप वास्तव में किसी भी फाइल का उपयोग नहीं कर सकते, और बिना rआप उन्हें देख भी नहीं सकते।

जैसे ही यूनिक्स और उसके वंशजों में उपयोगकर्ता पहचान के अधिक जटिल मॉडल विकसित हुए हैं, ये वही बुनियादी विवरण उल्लेखनीय रूप से बने रहने में कामयाब रहे हैं।

संक्षेप में, rइसका मतलब है कि आप इसकी सामग्री देख सकते हैं, xइसका मतलब है कि आप इसका उपयोग कर सकते हैं, और wइसका मतलब है कि आप इसे निर्देशिका के लिए भी संशोधित कर सकते हैं।


मुझे लगता है कि आप mode_tचीज़ को थोड़ा और समझा सकते हैं (वह हिस्सा जहाँ अनुमतियाँ और फ़ाइल प्रकार एक ही 32 बिट फ़ील्ड में संग्रहीत हैं)
SaveTheRbtz

1
मैं 80 के दशक में सक्रिय रूप से एक यूनिक्स उपयोगकर्ता और डेवलपर था। मैं इस बारे में पूरी कहानी बताने की कोशिश नहीं कर रहा था कि आज क्या सच है, जितना कि इसे ऐतिहासिक संदर्भ में रखा गया है, और अपने मनोरंजन को उजागर करता हूं कि वही पहेली जो मैंने पहली बार सीखने वाले यूनिक्स से सामना की थी और आज इसका जवाब दिया जा सकता है। इसी तरह की व्याख्या मुझे १ ९
I३
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.