एक उपनिर्देशिका का उपयोग करते समय क्या माता-पिता की निर्देशिका की अनुमति मायने रखती है?


159

यदि मेरे पास कुछ प्रतिबंधक अनुमति के साथ एक रूट फ़ोल्डर है, तो हम 600 कहते हैं, और अगर बाल फ़ोल्डर / फ़ाइलों में 777 अनुमति है, तो क्या रूट फ़ोल्डर में 600 होने पर भी हर कोई बच्चे की फाइल को पढ़ने / लिखने / निष्पादित करने में सक्षम होगा?


12
ध्यान दें कि एक निर्देशिका को 600 तक पहुंचाने से यह मालिक के लिए भी अप्राप्य हो जाता है, क्योंकि आपको इसमें chdir की अनुमति की आवश्यकता होती है ...
Shadur

जवाबों:


183

सटीक नियम यह है: आप एक निर्देशिका को आगे बढ़ा सकते हैं यदि और केवल तभी जब आप उस पर अनुमति देते हैं।

इसलिए उदाहरण के लिए उपयोग करने के लिए dir/subdir/file, आपको निष्पादित अनुमति की आवश्यकता होती है , dirऔर dir/subdirसाथ ही fileआपको जिस प्रकार की पहुंच चाहिए, उसके लिए अनुमतियों पर भी । कोने के मामलों में हो रही है, मुझे यकीन नहीं है कि यह सार्वभौमिक है कि आपको किसी रिश्तेदार पथ के माध्यम से एक फ़ाइल का उपयोग करने के लिए वर्तमान निर्देशिका पर अनुमति की आवश्यकता है (आप लिनक्स पर करते हैं)।

जिस तरह से आप किसी फ़ाइल तक पहुँच प्राप्त करते हैं। उदाहरण के लिए, यदि आपने अनुमतियों को निष्पादित /foo/barकिया है /foo, लेकिन चालू नहीं है , लेकिन आपकी वर्तमान निर्देशिका है /foo/bar, तो आप /foo/barकिसी संबंधित पथ के माध्यम से फ़ाइलों को एक्सेस कर सकते हैं, लेकिन निरपेक्ष पथ के माध्यम से नहीं। आप /foo/barइस परिदृश्य में नहीं बदल सकते हैं; एक अधिक विशेषाधिकार प्राप्त प्रक्रिया cd /foo/barअप्रकाशित होने से पहले निश्चित रूप से की गई है। यदि किसी फ़ाइल में कई हार्ड लिंक हैं, तो जिस पथ का उपयोग आप करते हैं, वह आपकी पहुंच की बाधाओं को निर्धारित करता है।

प्रतीकात्मक लिंक कुछ भी नहीं बदलते हैं। कर्नेल उन्हें कॉल करने के लिए कॉलिंग प्रक्रिया के एक्सेस अधिकारों का उपयोग करता है। उदाहरण के लिए, यदि symनिर्देशिका का प्रतीकात्मक लिंक है dir, तो आपको dirएक्सेस करने के लिए निष्पादन की अनुमति चाहिए sym/foo। सिम्लिंक पर अनुमतियाँ ओएस और फाइलसिस्टम (कुछ उनका सम्मान करते हैं, कुछ उन्हें अनदेखा करते हैं) पर निर्भर करता है या हो सकता है।

रूट डायरेक्टरी से निष्पादित अनुमति को हटाना प्रभावी रूप से किसी उपयोगकर्ता को डायरेक्टरी ट्री के एक हिस्से को प्रतिबंधित करता है (जो कि अधिक विशेषाधिकार प्राप्त प्रक्रिया को बदलना होगा)। इसके लिए एक्सेस कंट्रोल लिस्ट की जरूरत होती है। उदाहरण के लिए यदि /और /homeसीमा से बाहर हैं करने के लिए joe( setfacl -m user:joe:0 / /home) और /home/joeहै joeघर निर्देशिका, तो joe(के साथ खोल स्क्रिप्ट चला सहित प्रणाली के बाकी हिस्सों तक पहुँचने के लिए सक्षम नहीं होगा /bin/shया गतिशील रूप से जुड़े हुए बाइनरी पहुँच की जरूरत है कि /libआप ऐसा है, तो ' डी को व्यावहारिक उपयोग के लिए गहराई से जाने की आवश्यकता है, जैसे setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib)।

एक निर्देशिका पर अनुमति पढ़ें प्रविष्टियों को भर्ती करने का अधिकार देता है। पठन अनुमति दिए बिना निष्पादन की अनुमति देना कभी-कभी उपयोगी होता है: प्रविष्टियों के नाम उन्हें एक्सेस करने के लिए पासवर्ड के रूप में कार्य करते हैं। मैं निर्देशिका को बिना अनुमति के किसी निर्देशिका को पढ़ने या लिखने की अनुमति देने के किसी भी उपयोग के बारे में नहीं सोच सकता।


32

नहीं। रूट फ़ोल्डर की अनुमति चाइल्ड फ़ाइलों की अनुमति को सीमित करती है। आप इसे आज़मा सकते हैं।

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

मैंने इसे प्राप्त किया:

$ cat: ./rootfolder/childfile: permission denied

4

आप बच्चे निर्देशिका को योग्य बना सकते हैं यहां तक ​​कि मूल निर्देशिका भी नहीं है। मैं समूहों के लिए ऐसा करता हूं।

उदाहरण के लिए: मूल निर्देशिका समूह कोडर के स्वामित्व में है

drwxr-sr-x

बाल निर्देशिका

drwxrwsr-x

आप (कोडर समूह का कोई भी सदस्य) अभी भी चाइल्ड डायरेक्टरी को लिख सकते हैं लेकिन पेरेंट डायरेक्टरी को नहीं।


1

यदि आप मूल निर्देशिका पर कोई विशेषाधिकार निष्पादित नहीं करते हैं, तो भी आप फ़ाइल तक पहुँचने के लिए हार्ड लिंक बना सकते हैं। लेकिन यहां पकड़ आपको माता-पिता की निर्देशिका पर अपने निष्पादित विशेषाधिकार खोने से पहले कड़ी कड़ी बनाने की है

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