यदि मेरे पास कुछ प्रतिबंधक अनुमति के साथ एक रूट फ़ोल्डर है, तो हम 600 कहते हैं, और अगर बाल फ़ोल्डर / फ़ाइलों में 777 अनुमति है, तो क्या रूट फ़ोल्डर में 600 होने पर भी हर कोई बच्चे की फाइल को पढ़ने / लिखने / निष्पादित करने में सक्षम होगा?
यदि मेरे पास कुछ प्रतिबंधक अनुमति के साथ एक रूट फ़ोल्डर है, तो हम 600 कहते हैं, और अगर बाल फ़ोल्डर / फ़ाइलों में 777 अनुमति है, तो क्या रूट फ़ोल्डर में 600 होने पर भी हर कोई बच्चे की फाइल को पढ़ने / लिखने / निष्पादित करने में सक्षम होगा?
जवाबों:
सटीक नियम यह है: आप एक निर्देशिका को आगे बढ़ा सकते हैं यदि और केवल तभी जब आप उस पर अनुमति देते हैं।
इसलिए उदाहरण के लिए उपयोग करने के लिए 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
)।
एक निर्देशिका पर अनुमति पढ़ें प्रविष्टियों को भर्ती करने का अधिकार देता है। पठन अनुमति दिए बिना निष्पादन की अनुमति देना कभी-कभी उपयोगी होता है: प्रविष्टियों के नाम उन्हें एक्सेस करने के लिए पासवर्ड के रूप में कार्य करते हैं। मैं निर्देशिका को बिना अनुमति के किसी निर्देशिका को पढ़ने या लिखने की अनुमति देने के किसी भी उपयोग के बारे में नहीं सोच सकता।
नहीं। रूट फ़ोल्डर की अनुमति चाइल्ड फ़ाइलों की अनुमति को सीमित करती है। आप इसे आज़मा सकते हैं।
$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile
मैंने इसे प्राप्त किया:
$ cat: ./rootfolder/childfile: permission denied
आप बच्चे निर्देशिका को योग्य बना सकते हैं यहां तक कि मूल निर्देशिका भी नहीं है। मैं समूहों के लिए ऐसा करता हूं।
उदाहरण के लिए: मूल निर्देशिका समूह कोडर के स्वामित्व में है
drwxr-sr-x
बाल निर्देशिका
drwxrwsr-x
आप (कोडर समूह का कोई भी सदस्य) अभी भी चाइल्ड डायरेक्टरी को लिख सकते हैं लेकिन पेरेंट डायरेक्टरी को नहीं।