क्या ऐसी फ़ाइल बनाना संभव है जिसमें हर किसी के लिए पूर्ण अनुमति हो लेकिन हटाना असंभव है?


15

सुडो का उपयोग किए बिना, अधिमानतः?


2
भगवान, जड़, क्या अंतर है? ars.userfriendly.org/cartoons/?id=19981111 एक व्यावहारिक बात के रूप में, एक फाइल जो रूट को बाद में डिलीट नहीं कर सकती है वह एक मैलवेयर लेखक का सपना होगा।
दान

मैं मानता हूं @DanNeely प्लस फ़ॉर्मेटिंग एक फ़ाइल को हटाने का भी एक रूप है;)
रिनविंड

जवाबों:


3

प्रयत्न:

chattr +i filename

हालांकि, ऐसा करने से rootउपयोगकर्ता द्वारा फाइल को भी अनिर्धारित किया जा सकेगा - सावधानी के साथ उपयोग करें।


5
जब touch test && chattr +i testयह एक त्रुटि फेंकता है; chattr: Operation not permitted while setting flags on test। इसके लिए आपको चाहिए sudo। इसके आगे: फ़ाइल को हटाना अभी भी संभव है: sudo chattr -i test && rm testकाम करता है।
Rinzwind

23

नहीं, यह संभव नहीं है। सामान्य उपयोगकर्ताओं के लिए किसी फ़ाइल को हटाना असंभव: निश्चित है।

  1. आपको sudoफ़ाइलों को हटाने के लिए उपयोगकर्ताओं को रोकने की आवश्यकता होगी । आपका व्यवस्थापक -always- एक फ़ाइल को हटाने में सक्षम होगा।

  2. sudo chattr +i testविलोपन को रोका जा सकता है लेकिन इसकी आवश्यकता होती है sudo। एक साधारण sudo chattr -i testफ़ाइल को निकालना संभव बनाता है। व्यवस्थापक के अलावा कोई अन्य उपयोगकर्ता उपयोग नहीं कर सकता है chattr

और ... बस रिबूट करने और बचाव मोड में जाने से वह व्यक्ति उस फ़ाइल को हटाने में सक्षम हो जाएगा। यह एक सुरक्षा जोखिम होगा यदि कोई फ़ाइल हटाने में सक्षम नहीं होने की एक विधि थी।


8

यह थोड़ा कच्चा है, लेकिन यह करीब है - अगर आप डायरेक्ट्री पर राइट एक्सेस को हटा देते हैं, तो इसके अंदर मौजूद फाइल्स को डिलीट नहीं किया जा सकता है। और इसकी आवश्यकता नहीं है sudoयदि आप इसे अपनाते हैं:

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

तो आप फ़ाइल पर अनुमतियाँ सेट कर सकते हैं हालाँकि आप चाहते हैं।

इसके अलावा, @Rinzwind द्वारा कहा गया है, निश्चित रूप से इसके आसपास कई तरीके हैं।


यह वही दिखता है जो ओपी चाहता था। (हालांकि वे ऐसा क्यों चाहते थे, मुझे यकीन नहीं है।) उपयोगकर्ता फ़ाइलों को पढ़ सकते हैं, बदल सकते हैं और चला सकते हैं, लेकिन उन्हें हटा नहीं सकते हैं (हटा सकते हैं)।
एलियाह कगन

8

किसी फ़ाइल को हटाने के लिए, आपको उन सभी निर्देशिकाओं को लिखने की अनुमति चाहिए जो फ़ाइल से जुड़ी हुई है। इसे एक डायरेक्टरी से अनलिंक करने के लिए, आपको उस डायरेक्टरी को लिखने की अनुमति चाहिए।

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

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

यह अभी भी अन्य उपयोगकर्ताओं को उस फ़ाइल को अन्य निर्देशिकाओं से लिंक करने और उसके बाद इसे वहां से लिंक करने की अनुमति देगा, लेकिन वे अभी भी फ़ाइल को हटा नहीं पाएंगे क्योंकि वे इसे अपनी निर्देशिका से अनलिंक करने में सक्षम होंगे।

ध्यान दें कि इसके लिए पूरी तरह से काम करने के लिए, फ़ाइल के हर पथ घटक की लिखित अनुमति को नियंत्रित करना होगा। क्योंकि उदाहरण के लिए यदि फ़ाइल है /a/b/the-fileऔर आप /a/bकिसी के द्वारा लिखने योग्य नहीं हैं, लेकिन हर किसी के पास पहुंच है /a, तो वे /a/bकिसी और चीज़ का नाम बदल सकते हैं और अपना स्वयं /a/bका निर्माण कर सकते हैं और अपना स्वयं का निर्माण कर /a/b/the-fileसकते हैं।

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