मैं रूट किए बिना अपने होम डायरेक्टरी में रूट के स्वामित्व वाली फ़ाइल को हटाने में सक्षम क्यों था?


40

इसलिए मैं आज पहले अपने सर्वर पर कुछ रखरखाव कर रहा था और मैंने देखा कि मैं अपने घर निर्देशिका में रूट के स्वामित्व वाली फ़ाइल को हटाने में सक्षम था।

मैं एक नमूना पुन: पेश करने में सक्षम था:

[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-r--r--.  1 root     root        0 Oct  5 21:00 file-owned-by-root
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$

मेरा सवाल यह है कि मैं रूट के स्वामित्व वाली फ़ाइल को कैसे हटा सकता हूं और इसकी अनुमति है -rw-r--r--, जबकि मैं रूट नहीं हूं?


6
आप निर्देशिका में प्रविष्टि को हटा सकते हैं जो फ़ाइल को इंगित करता है क्योंकि आपके पास निर्देशिका तक पहुंच है। आप फ़ाइल को जरूरी नहीं हटा सकते हैं; फ़ाइल में कहीं और एक और कड़ी हो सकती है।
user253751

2
मजेदार एक्सटेंशन: आप फ़ाइल का नाम बदल सकते हैं, या इसके हार्ड लिंक बना सकते हैं।
पीटर ने कहा कि मोनिका

11
कृपया स्वीकार किए गए उत्तर के लिए अपनी पसंद पर पुनर्विचार करें, क्योंकि वर्तमान एक सर्वथा भ्रामक है: आपको इसके लिए कुछ भी करने की अनुमति नहीं है कि यह निर्देशिका की अनुमतियों के आधार पर इसके भीतर की सामग्री को चीर दे
Cululhu 10

@ कथुलु हो गया! इस प्रश्नोत्तर के लिए सभी टिप्पणियों के लिए सभी को धन्यवाद, निश्चित रूप से बहुत उपयोगी जानकारी यहाँ!
कार्ल बेनेट

जवाबों:


34

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

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

जब आप किसी ऐसे फ़ोल्डर को हटाते हैं जो खाली नहीं होता है तो आपको उस फ़ोल्डर पर लिखने की अनुमति चाहिए जिसे आप हटा रहे हैं और उसके अभिभावक को।


1
तो अनुमतियाँ इनोड पर हैं या अनुमतियाँ इनोड के लिंक पर हैं , और मैं केवल उस लिंक को हटा रहा हूं (और इस प्रकार केवल उसी लिंक को हटा दिया जाता है, इसलिए इनोड का अस्तित्व समाप्त हो जाता है)?
कार्ल बेनेट

3
रेटिंग्स इनोड पर हैं। किसी फाइल की हार्ड लिंक बनाकर, उस पर अनुमतियों को बदलकर, और फिर मूल पर अनुमतियों की जांच करके इसे आसानी से सत्यापित किया जाता है।
राउटर वेरेलस्ट

लेकिन मान लें कि इसमें एक निर्देशिका और एक फाइल है, जो दोनों रूट से संबंधित है, निर्देशिका उपयोगकर्ता के स्वामित्व वाली निर्देशिका में है। आप उन्हें हटाने में सक्षम नहीं होगा, है ना?
njzk2 15

1
यह ext2, ext3 और ext4 के लिए विशिष्ट विशेषता है। उदाहरण: sudo touch test_file;sudo chattr +i test_file;rm -f test_fileदेखें:man chattr
मिर्चे वुटकोविसी

1
अपरिवर्तनीय विशेषता किसी भी परिवर्तन के लिए फ़ाइल को रूट से भी बचाता है।
मिरिकिया वुटकोविसी

19

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


46
बिल्कुल नहीं। उदाहरण के लिए, ओपी उस रूट के स्वामित्व वाली फ़ाइल को संशोधित करने में सक्षम नहीं होगा। बात यह है कि, फ़ाइल को हटाने को फ़ाइल पर कार्रवाई नहीं माना जाता है, बल्कि निर्देशिका पर (फ़ाइल के लिए सूचक को हटा दिया जाता है) और यही कारण है कि निर्देशिका पर अनुमतियाँ मायने रखती हैं।
Cululhu

1
@Cthulhu तो क्या आप रूट स्वामित्व वाली फ़ाइल को हटा सकते हैं, और उसी नाम के बाद एक नया संशोधित नाम बना सकते हैं?
केडीईएक्स

3
@Morgoroth हाँ आप कर सकते हैं, लेकिन वह अब एक ही फ़ाइल नहीं होगी। एक और (शायद अधिक स्पष्ट) उदाहरण के लिए, आप अपनी निर्देशिका में फ़ाइल को पढ़ने में सक्षम नहीं होंगे यदि यह रूट से संबंधित है और केवल इसके मालिक इसे पढ़ सकते हैं।
Cthulhu

@inetknght यह स्पष्ट किया जाना चाहिए। मैं समझता हूं कि आप खुद को संस्थाओं के रूप में फाइलों में हेरफेर करने के लिए संदर्भित करने की कोशिश कर रहे हैं, लेकिन यह स्पष्ट नहीं है। आप उदाहरण के लिए इसकी सामग्री को संशोधित करने में सक्षम नहीं हैं। और आप उन विशेषताओं का उल्लेख नहीं करते हैं जो निर्देशिका अनुमतियों को ट्रम्प कर सकती हैं।
माइक एस।

1
@captcha ऐसा इसलिए viहै क्योंकि फ़ाइल को पहले अस्थायी प्रतिलिपि में सहेजता है, फिर मूल फ़ाइल को हटा देता है और प्रतिलिपि को मूल (या कुछ और) में बदल देता है।
Cululhu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.