निर्देशिका + x अनुमति के साथ, इसके बिना माता-पिता। यह कब उपयोगी होगा?


11

कहो कि मेरे पास folderनिम्नलिखित पथ में एक फ़ोल्डर है:

my_path = /a/b/c/d/e/folder

और fileउस फोल्डर में एक फाइल ।

इसके बाद, मैं / a / के तहत समूह अनुमतियाँ हटाने के लिए यह आदेश चलाता हूं

> chmod g-rwx -R /a/

अब, कहते हैं कि मैं देना +rxकरने के लिए अनुमति folder:

> chmod g+rx /a/b/c/d/e/folder

फिर, यदि मेरे समूह का कोई दूसरा उपयोगकर्ता चलता है:

> ls /a/b/c/d/e/folder

या

> cat /a/b/c/d/e/folder/file 

उसे अनुमति त्रुटियां मिलती हैं, और जहां तक ​​मुझे यह समझ में आता है, क्योंकि मुझे g+xसभी के माता-पिता तक पहुंच प्रदान करने की आवश्यकता है folder। मेरा प्रश्न तब है, जब या+x जिनके माता-पिता के पास नहीं है, उन्हें एक निर्देशिका की अनुमति देना कब तक उपयोगी होगा?

धन्यवाद


1
क्या आप वाकई दौड़ रहे हैं chmod +grx -R /a/b/c/d/e/folder? यह गलत है, इसे अंजाम देने का सही तरीका है:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
सीधे तौर पर इस सवाल का जवाब नहीं देता, लेकिन बैकग्राउंड रीडिंग की सिफारिश की गई: डायरेक्टरी परमिशन की व्याख्या
गिल्स एसओ- '

जवाबों:


6

अधिकांश समय, यदि आप संपूर्ण निर्देशिका की पहुंच और उपयोग (इसके उपनिर्देशिका सहित) को अवरुद्ध करना चाहते हैं, तो आप इसे हटाकर (गैर-पुनरावर्ती) कर सकते हैं -x। इसलिए, आपने +xबिना किसी नुकसान के, उपनिर्देशिका को छोड़ दिया हो सकता है।

उपनिर्देशिकाओं पर अनुमतियाँ रखना कई कारणों से उपयोगी हो सकता है (विशेषकर जब -xसभी पर लागू नहीं होता है लेकिन कम से कम एक उपयोगकर्ता अभी भी कुछ कर सकता है)।

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

आपके पास एक ऐसी स्थिति भी हो सकती है जहां एक स्क्रिप्ट (जरूरी नहीं कि मालिक द्वारा संचालित हो) एक अस्थायी स्थान पर निर्देशिका ट्री का बैकअप लेता है (जिसे दूसरों द्वारा पठनीय नहीं होना चाहिए) और एक टार फाइल में सब कुछ डालता है, अनुमति सेटिंग्स को संरक्षित करता है। निर्देशिका की सामग्री।


7

किसी भी और सभी पैरेंट डाइरेक्टरीज़ पर cd या फ़ाइल को डायरेक्ट्री में एक्सेस करने के लिए आपको + x परमिशन की आवश्यकता होती है।

फ़ाइलों को सूचीबद्ध करने के लिए आपको निर्देशिकाओं में + r अनुमतियों की आवश्यकता है। तो यहाँ एक उदाहरण है:

आप कुछ सामान सेटअप प्राप्त करने के लिए ये आदेश जारी कर सकते हैं:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

कोई अधिकार नहीं:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

केवल निष्पादन के साथ

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

अब पढ़ने के साथ:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

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

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
साभार @skrewler आपने कहा: "आपको किसी निर्देशिका में किसी फ़ाइल को सीडी या एक्सेस करने के लिए किसी भी और सभी मूल निर्देशिकाओं पर + x अनुमतियों की आवश्यकता है ", जो कि मैंने सोचा था। मेरा प्रश्न तो यह है: क्यों क्या तुमने कभी एक निर्देशिका जिसका करने के लिए + x अनुमति देना होगा माता-पिता करते नहीं + x अनुमति है?
एमिलियो वाज़केज़-रीना

केवल एक चीज जो मैं सोच सकता हूं कि अगर आप सीधे पेरेंट निर्देशिका w / o को निष्पादित करने की अनुमति को दरकिनार कर बाइंड माउंट बनाना चाहते हैं। अगर इससे कोई मतलब नहीं है तो मैं एक उदाहरण दिखाऊंगा।
स्कवॉयर

उपरोक्त अधिक स्पष्ट होना चाहिए था। सभी मूल निर्देशिकाओं की अनुमति वाला एक रूट उपयोगकर्ता अन्य उपयोगकर्ताओं को निर्देशिका तक पहुंचने की अनुमति देने के लिए इस बाइंड माउंट को बना सकता है। चूँकि वे / a / b / c / d / e तक पहुँच सकते हैं, जहाँ केवल d या e में वैश्विक निष्पादन था, जिससे आप / mnt / d -> / / a / b / c / d / e से माउंट कर सकते हैं और एक उपयोगकर्ता तक पहुँच सकता है माउंट बिंदु पर जाकर। यह एक निर्देशिका पेड़ में कहीं गहरे में कड़ी बनाने के समान विचार है जो अन्यथा पहुंच से बाहर होगा। प्रतीकात्मक लिंक इस तरह से काम नहीं करते हैं, हालांकि, एक बांध माउंट की जरूरत है।
Skrewler

2

आप +xउस स्थिति में गैर-पुनरावर्ती अनुमतियों का उपयोग करना चाहते हैं जो आपने दी थी:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(यह मानता है कि उपयोगकर्ता प्रत्येक निर्देशिका के समूह का सदस्य है। यदि नहीं, तो आपको chmod o+xऐसी किसी भी निर्देशिका के लिए करना होगा ।)

उपयोगकर्ता को ls /a/b/c/d/e/folderसफलतापूर्वक करने के लिए , उसे मार्ग में प्रत्येक निर्देशिका पर अनुमति निष्पादित करनी होगी , और अनुमति को पढ़ना होगा folder

अगर तुमने किया

chmod g+x -R /a

यह काम करेगा, लेकिन आप / a के तहत हर फाइल और डायरेक्टरी को ग्रुप एग्जीक्यूट अनुमति दे रहे होंगे । यह अनावश्यक है, और फाइलों के मामले में, शायद गलत है।


1

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

यदि आप निष्पादित करते हैं:

chmod g-rwx -R /a/

तब aऔर उसके सभी बच्चों के पास वह अनुमति होगी।

जब योउ निष्पादित करें:

chmod g+rx -R /a/b/c/d/e/folder

तब folderऔर उसके सभी बच्चों के पास भी यही अनुमति होगी। लेकिन, इस पर बाद में आदेश के साथ, फ़ोल्डर a/, a/bऔर जब तक पर तो a/b/c/d/eउनकी अनुमतियाँ नहीं बदलेगा।


0

निर्देशिकाओं पर x बिट हटाने का सामान्य मामला उपयोगकर्ताओं को उनके घरेलू निर्देशिकाओं में लॉक करना है। प्रतिबंधित गोले के पास cdपूर्ण मार्ग का संदर्भ देने की अनुमति नहीं देने और पूर्ण पथ का उपयोग करके कार्यक्रमों के निष्पादन की अनुमति नहीं देने का विकल्प है। वे cd ..अपने घर की निर्देशिका के मूल निर्देशिका में भी नहीं कर सकते हैं और इस प्रकार प्रभावी रूप से किसी भी प्रोग्राम को चलाने में असमर्थ हैं और $ PATH में नहीं हैं।

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