बिना पढ़े एक्सेस का उपयोग लिखें


16

क्या उपयोगकर्ता के लिए किसी फ़ाइल पर राइट एक्सेस होना संभव है और इसे पढ़ने में सक्षम नहीं है? यह कैसे संभव है?

मैंने निम्नलिखित आदेशों की कोशिश की:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

जैसा कि आप यहां देख सकते हैं, मैंने लिखा है, लेकिन इस फ़ाइल पर पहुंच नहीं पढ़ी है। ऐसा कैसे हो सकता है? क्या इसे बग के रूप में माना जाता है? यदि नहीं, तो यह किस स्थिति में उपयोगी होगा?

जवाबों:


18

यह बग नहीं है, यह एक विशेषता टीएम है (इसके अलावा, परमिट के लिए सार्वभौमिक यूनिक्स दृष्टिकोण का एक परिणाम)।

निर्देशिकाओं के मामले में ड्रॉपबॉक्स की तरह व्यवहार के अलावा (BillThor द्वारा वर्णित), कुछ विशेष (छद्म-) फ़ाइलों के तहत /procऔर केवल लिखने के लिए उपयोग आवश्यक है /sys। ऐसी फ़ाइलों का उपयोग कुछ ड्राइवर या कर्नेल गुणों को सेट करने या सिस्टम एक्शन को ट्रिगर करने के लिए किया जाता है। आप उन्हें नहीं पढ़ सकते हैं, क्योंकि उनका उपयोग केवल एक तरफ़ा सिग्नलिंग के लिए किया जाता है - आप केवल उन्हें कुछ पाठ / डेटा प्रतिध्वनित कर सकते हैं। ऐसी फ़ाइलों को खोजने के लिए, आप उपयोग कर सकते हैं

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

ध्यान दें कि, चूंकि इन फ़ाइलों का उपयोग उन्नत सिस्टम कॉन्फ़िगरेशन (संभावित रूप से खतरनाक) के लिए किया जाता है, केवल rootउनके पास (ज्यादातर मामलों में) पहुंच होती है।


21

रीड एक्सेस के बिना लिखने की अनुमति देने का मुख्य कारण यह है कि यह कर्नेल के अंदर और उपयोगकर्ता कार्यक्रमों में अनुमतियों के प्रबंधन को सरल करता है। दो अनुमतियाँ हैं, एक पढ़ने के लिए और एक लेखन के लिए, और वे स्वतंत्र रूप से प्रबंधित की जाती हैं। यह एक बग नहीं है क्योंकि प्रलेखित व्यवहार वास्तविक व्यवहार के साथ मेल खाता है और एक अलग व्यवहार की आवश्यकता के लिए कोई अच्छा कारण नहीं है।

पठन अनुमतियों के बिना लिखने की अनुमति होने से नियमित फ़ाइलों के लिए अधिक समझ में नहीं आता है। यह विभिन्न विशेष फ़ाइलों के लिए समझ में आता है।

  • कुछ सिस्टम एपेंड-ओनली फाइलों की अनुमति देते हैं। यह लॉग फ़ाइलों के लिए उपयोगी है, उदाहरण के लिए। यह कई उपयोगकर्ताओं को लॉग प्रविष्टियाँ बनाने की अनुमति देने के लिए समझ में आता है, लेकिन उन्हें मौजूदा प्रविष्टियों को मिटाने या अधिलेखित करने की अनुमति नहीं देता है (इसलिए: अनुमति लिखें, लेकिन केवल-केवल विशेषता), और न ही उन्हें दूसरों की प्रविष्टियों को पढ़ने की अनुमति दें (इसलिए: नहीं अनुमति पढ़ें)।
  • एक कार्यक्रम को नामांकित पाइप को लिखने की अनुमति दी जा सकती है, इसे पढ़ने की अनुमति के बिना।
  • कुछ उपकरण केवल-लेखन हैं। उदाहरण के लिए, साउंड आउटपुट डिवाइस लाउडस्पीकर से जुड़ा होता है, लेकिन किसी भी माइक्रोफोन को लिखने की अनुमति नहीं होनी चाहिए लेकिन कोई रीड की अनुमति नहीं होनी चाहिए।
  • विभिन्न विशेष फाइल सिस्टम हैं जहां फ़ाइल को पढ़ने या लिखने से स्टोरेज के डेटा को पुनर्प्राप्त करने या जोड़ने के बजाय तत्काल प्रभाव पड़ता है। उदाहरण के लिए, लिनक्स के तहत, विभिन्न फाइलें हैं /procऔर /sysउपयोगकर्ता स्पेस प्रोग्राम को किसी विशेष फाइल पर लिखकर कर्नेल को कमांड भेजने की अनुमति देते हैं। यदि वह कमांड कोई प्रतिक्रिया प्रदान नहीं करता है, तो विशेष फाइल को केवल लिखा जाता है।

3

नहीं, यह बग नहीं है। हालाँकि, मैं इसे आमतौर पर फाइलों पर लागू नहीं देखता।

मैंने सबसे अधिक बार केवल ड्रॉपबॉक्स निर्देशिकाओं पर लेखन को देखा है। उपयोगकर्ता निर्देशिका में फ़ाइलें जोड़ सकते हैं, लेकिन यह नहीं देख सकते हैं कि कौन सी फ़ाइलें मौजूद हैं।

एक नियमित पाठ फ़ाइल के लिए केवल ड्रॉपबॉक्स प्रकार की पहुंच के लिए उपयुक्त होगा।

अपने लिए केवल लिखने की स्थापना सेट करना बहुत उपयोगी नहीं होगा, लेकिन यह अनुमति कोड को जटिल नहीं होने देगा।

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

नियमों की स्थापना, जिस पर अनुमति संयोजन स्वीकार्य हैं, अप्रत्याशित उपयोगी अनुमतियों को रोकने के लिए नेतृत्व कर सकता है। कई संयोजन मालिक स्तर की तुलना में समूह या विश्व स्तर पर अधिक समझ में आते हैं। मालिक द्वारा पहुंच को रोकने के किसी भी प्रयास को आसानी से ओवरराइड किया जा सकता है। हालांकि, वे हालांकि दूसरे को शांत करने के लिए उपयोगी हो सकते हैं।


एक "ड्रॉपबॉक्स फ़ाइल" वास्तव में बहुत कम समझ में आता है। इसका उपयोग केवल कुछ डेटा लिखने के लिए किया जा सकता है और यहां तक ​​कि अगर इसे किसी बिंदु पर पठनीय बनाया गया था, तब भी इसकी सामग्री का वास्तविक पता नहीं लगेगा कि यह क्या हो रहा था, क्योंकि यह पहले मिटाया या हटाया जा सकता था।
rozcietrzewiacz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.