मैं पढ़ने की अनुमति के साथ एक निर्देशिका क्यों नहीं सूचीबद्ध कर सकता हूं?


14

मैंने एक निर्देशिका dऔर fउसके अंदर एक फ़ाइल बनाई । मैंने तब खुद को उस निर्देशिका पर केवल पढ़ने की अनुमति दी। मैं समझता हूं इसका मतलब यह होना चाहिए कि मैं फाइलों को सूचीबद्ध कर सकता हूं (जैसे यहां ), लेकिन मैं नहीं कर सकता।

will@wrmpb /p/t/permissions> ls -al
total 0
drwxr-xr-x   3 will  wheel  102  4 Oct 08:30 .
drwxrwxrwt  16 root  wheel  544  4 Oct 08:30 ..
dr--------   3 will  wheel  102  4 Oct 08:42 d
will@wrmpb /p/t/permissions> ls d
will@wrmpb /p/t/permissions>

यदि मैं लिखने और निष्पादित करने की अनुमति को बदलता हूं, तो मैं फ़ाइल देख सकता हूं।

will@wrmpb /p/t/permissions> chmod 500 d
will@wrmpb /p/t/permissions> ls d
f
will@wrmpb /p/t/permissions> 

ऐसा क्यों है? मैं MacOS का उपयोग कर रहा हूं।

संपादित करें: @ ccorn के उत्तर के संदर्भ में, यह प्रासंगिक है कि मैं मछली का उपयोग कर रहा हूं और type lsनिम्नलिखित देता हूं :

will@wrmpb /p/t/permissions> type ls
ls is a function with definition
function ls --description 'List contents of directory'
    command ls -G $argv
end

डुप्लिकेट प्रश्न का उत्तर नहीं देता है। तात्पर्य यह है कि आप वह कार्य कर सकते हैं जो मैं आपको प्रदर्शित कर सकता हूं। @ कॉकर का जवाब एकदम सही है।
15

वाह, मछली बात (प्रारंभिक) लापता जानकारी का एक महत्वपूर्ण टुकड़ा है।
स्टीफन किट

हाँ, आप सही हैं, मुझे इसे जोड़ना चाहिए था, लेकिन ऐसा लगता है कि यदि आप alias ls='ls -G', जो मुझे लगता है कि बहुत से लोग करते हैं , तो वही होगा ।
wrgrs

मेरे लिए करता है क्या आप MacOS पर हैं? शायद यहाँ एक और सवाल है। संपादित करें: हां, मुझे लिनक्स पर अलग व्यवहार मिलता है।
wrgrs

जवाबों:


8

कुछ तैयारी, बस यह सुनिश्चित करने के लिए कि lsइससे अधिक चीजों की कोशिश नहीं करनी चाहिए:

$ unalias ls 2>/dev/null
$ unset -f ls
$ unset CLICOLOR

rनिर्देशिका अनुमति का प्रदर्शन :

$ ls -ld d
dr--------  3 ccorn  ccorn  102  4 Okt 14:35 d
$ ls d
f
$ ls -l d
ls: f: Permission denied
$ ls -F d
ls: f: Permission denied

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

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

यही कारण है कि ls -l, ls -F, lsसाथ रंग कोडित उत्पादन आदि असफल बिना xअनुमति के, एक मात्र जबकि lsसफल होता है।

xअनुमति अकेले इनोड एक्सेस की अनुमति देती है, अर्थात, उस निर्देशिका के भीतर एक स्पष्ट नाम दिया गया है, xइसके इनकोड को देखने की अनुमति देता है और उस निर्देशिका प्रविष्टि के मेटाडेटा तक पहुँचने की अनुमति देता है:

$ chmod 100 d
$ ls -l d/f
-rw-r--r--  1 ccorn  ccorn  0  4 Okt 14:35 d/f
$ ls d
ls: d: Permission denied

इसलिए, एक फ़ाइल खोलने के लिए /a/b/c/fया इसका मेटाडेटा निर्देशिका सूची /, /a, /a/b, और /a/b/cप्रदान किया जाना चाहिए xअनुमति।

अप्रत्याशित रूप से, निर्देशिका प्रविष्टियों को बनाने के लिए wऔर xअनुमति दोनों की आवश्यकता होती है :

$ chmod 100 d
$ touch d/g
touch: d/g: Permission denied
$ chmod 200 d
$ touch d/g
touch: d/g: Permission denied
$ chmod 300 d
$ touch d/g
$

विकिपीडिया में फ़ाइल सिस्टम अनुमतियों पर एक लेख में एक संक्षिप्त अवलोकन है ।


गजब का। /bin/ls dमेरे लिए सामग्री दिखाता है। धन्यवाद!
wrgrs

ठीक है, इसलिए यह एक पुनर्परिभाषित मुद्दा था ( -Gरंगीन आउटपुट के लिए, जिसे मेटाडेटा की आवश्यकता है, इस प्रकार xपरमिट)। इसलिए मेरी तैयारी unalias lsऔर के साथ unset CLICOLOR। मुझे unset -f lsऐसी किसी भी फ़ंक्शन परिभाषा को हटाने के लिए जोड़ा जाना चाहिए । संपादित।
16

अधिक विकी राशियाँ
loxaxs

4

एक निर्देशिका को पढ़ने के लिए भी आपको इसमें (x बिट) पार करने में सक्षम होना चाहिए। तो, कम से कम आपको किसी भी तरह से इसे एक्सेस करने में सक्षम होने के लिए एक निर्देशिका के लिए आरएक्स की आवश्यकता होती है।


2
नहीं, तुम नहीं; lsअभी भी निर्देशिका में फ़ाइलों को सूचीबद्ध करने में सक्षम होना चाहिए , भले ही निर्देशिका निष्पादन योग्य न हो।
स्टीफन किट

आप पढ़ी गई अनुमति को छोड़ सकते हैं। फिर आप फ़ाइलों को एक्सेस करने में सक्षम होंगे लेकिन निर्देशिका की सामग्री को सूचीबद्ध करने के लिए नहीं।
Kusalananda

@ कुसलानंद - अच्छा बिंदु, वास्तव में मैं समय-समय पर इसका उपयोग करता हूं।
सोरुक

@ स्टीफन किट - शायद यह होना चाहिए, लेकिन कार्यान्वयन यह नहीं है।
सोरुक

1
@ सोरुक और इसलिए यह सवाल बना हुआ है: ऐसा क्यों नहीं होता?
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.