क्या मैं एक निजी निर्देशिका के तहत सार्वजनिक निर्देशिका बना सकता हूँ?


20

मेरे पास अनुमति के साथ सर्वर पर एक व्यक्तिगत फ़ोल्डर / ए / बी है। मैं दूसरों को / ए / बी में सामग्री की सूची नहीं देना चाहता। / A का स्वामी जड़ है।

अब मुझे सभी उपयोगकर्ताओं के लिए निर्देशिका / a / b / c के पूर्ण प्राधिकरण खोलने की आवश्यकता है।

मैंने / a / b / c की अनुमति को 777 में बदल दिया लेकिन यह अभी भी दूसरों के लिए अप्राप्य है।


2
आपको निर्देशिका ट्रैवर्सल (ट्रैवर्स / ए और / ए / बी) की अनुमति देने के लिए 'एक्जीक्यूट बिट' सेट करने की आवश्यकता है, इससे आपकी समस्या का समाधान हो सकता है:chmod +x /a/b
14

जवाबों:


34

आप ऐसा कर सकते हैं। आपको बस /a/bनिर्देशिका पर निष्पादन योग्य बिट सेट करना होगा । यह कुछ भी देखने में सक्षम होने से रोकेगा b, लेकिन अगर आप सीधे जाते हैं, तो भी आप सब कुछ कर सकते हैं a/b/c

% mkdir -p a/b/c
% chmod 711 a/b
% sudo chown root a/b
% ll a/b
  ls: cannot open directory a/b: Permission denied
% touch a/b/c/this.txt
% ls a/b/c
  this.txt

इस बात से सावधान रहें कि जबकि अन्य सामग्री को सूचीबद्ध नहीं कर सकते हैं /a/b, वे फ़ाइल के नाम का अनुमान लगाने पर उस निर्देशिका में फ़ाइलों तक पहुँच सकते हैं।

% echo hello | sudo tee a/b/f
% cat a/b/f
hello
% cat a/b/doesntexist
cat: a/b/doesntexist: No such file or directory

तो निर्देशिका के भीतर अन्य सभी फाइलों / निर्देशिकाओं पर उचित अनुमतियों (कोई समूह / दुनिया) को बनाए रखना सुनिश्चित करें b, क्योंकि यह इस चेतावनी से बच जाएगा।


निष्पादन योग्य बिट की स्थापना के विकल्प के रूप में, क्या आप किसी अन्य स्थान पर रहने वाले / b / c को एक कठिन लिंक भी प्रदान कर सकते हैं?
मोबी डिस्क

2
@MobyDisk आप किसी निर्देशिका से लिंक नहीं कर सकते।
माइकल हैम्पटन

यह काम नहीं करेगा, क्योंकि कोई फर्क नहीं पड़ता, आपको अभी भी bलिंक करने के लिए पढ़ने की जरूरत हैc
stevieb

3
ध्यान दें कि इसके लिए कुछ महत्वपूर्ण चेतावनी हैं। यदि किसी भी फाइल में a/bनॉनजेरो ग्रुप / अन्य अनुमतियां हैं, और एक विरोधी जानता है या उनके नामों का अनुमान लगा सकता है, तो कहा कि विरोधी उन फाइलों के साथ बातचीत कर सकता है।
केविन

सच @ केविन, के तहत सब कुछ के लिए bपरमिट बनाने से पहले इस के खिलाफ की रक्षा करने के लिए सेट की अनुमति होनी चाहिए c, और तब परिश्रम की आवश्यकता होती है जब अन्य वस्तुओं bको यह सुनिश्चित करने के लिए पॉपुलेट किया जाता है कि केवल मालिक के लिए सुरक्षित हैं।
स्टिवेब

9

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


3

यदि कोई उपयोगकर्ता नहीं पहुंच सकता है /a/b, तो वे किसी भी फ़ाइल के अंतर्गत नहीं पहुँच सकते हैं /a/b/c/a/b/cनिर्देशिका ट्रैवर्सल के रुकने के बाद अनुमतियाँ अप्रासंगिक हैं /a/b

यदि आप चाहते हैं कि निर्देशिका /a/bको सूचीबद्ध होने से रोका जाए , लेकिन आप उन फ़ाइलों तक पहुँचने वाले उपयोगकर्ताओं के साथ ठीक हैं /a/bयदि वे किसी फ़ाइल नाम का अनुमान लगाते हैं, तो आप /a/bनिष्पादन योग्य बना सकते हैं, लेकिन पठनीय नहीं। एक निर्देशिका पर, पढ़ने की अनुमति केवल निर्देशिका सामग्री को सूचीबद्ध करने को नियंत्रित करती है, जबकि निष्पादित अनुमति उस निर्देशिका की प्रविष्टियों तक पहुंच को नियंत्रित करती है।

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
 contents of /a/b/

यदि आप नहीं चाहते हैं कि अन्य उपयोगकर्ता फ़ाइलों को एक्सेस करने में सक्षम /a/bहों /a/b/c, तो आप /a/b/cएक अन्य दृश्य के माध्यम से, बाइंड माउंट के माध्यम से उजागर कर सकते हैं ।

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
 contents of /a/b/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.