सुडो का उपयोग किए बिना, अधिमानतः?
सुडो का उपयोग किए बिना, अधिमानतः?
जवाबों:
प्रयत्न:
chattr +i filename
हालांकि, ऐसा करने से rootउपयोगकर्ता द्वारा फाइल को भी अनिर्धारित किया जा सकेगा - सावधानी के साथ उपयोग करें।
touch test && chattr +i testयह एक त्रुटि फेंकता है; chattr: Operation not permitted while setting flags on test। इसके लिए आपको चाहिए sudo। इसके आगे: फ़ाइल को हटाना अभी भी संभव है: sudo chattr -i test && rm testकाम करता है।
नहीं, यह संभव नहीं है। सामान्य उपयोगकर्ताओं के लिए किसी फ़ाइल को हटाना असंभव: निश्चित है।
आपको sudoफ़ाइलों को हटाने के लिए उपयोगकर्ताओं को रोकने की आवश्यकता होगी । आपका व्यवस्थापक -always- एक फ़ाइल को हटाने में सक्षम होगा।
sudo chattr +i testविलोपन को रोका जा सकता है लेकिन इसकी आवश्यकता होती है sudo। एक साधारण sudo chattr -i testफ़ाइल को निकालना संभव बनाता है। व्यवस्थापक के अलावा कोई अन्य उपयोगकर्ता उपयोग नहीं कर सकता है chattr।
और ... बस रिबूट करने और बचाव मोड में जाने से वह व्यक्ति उस फ़ाइल को हटाने में सक्षम हो जाएगा। यह एक सुरक्षा जोखिम होगा यदि कोई फ़ाइल हटाने में सक्षम नहीं होने की एक विधि थी।
यह थोड़ा कच्चा है, लेकिन यह करीब है - अगर आप डायरेक्ट्री पर राइट एक्सेस को हटा देते हैं, तो इसके अंदर मौजूद फाइल्स को डिलीट नहीं किया जा सकता है। और इसकी आवश्यकता नहीं है 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 द्वारा कहा गया है, निश्चित रूप से इसके आसपास कई तरीके हैं।
किसी फ़ाइल को हटाने के लिए, आपको उन सभी निर्देशिकाओं को लिखने की अनुमति चाहिए जो फ़ाइल से जुड़ी हुई है। इसे एक डायरेक्टरी से अनलिंक करने के लिए, आपको उस डायरेक्टरी को लिखने की अनुमति चाहिए।
इसलिए जब तक आप फ़ाइल को लिखित अनुमति (या स्वामित्व) देते हैं लेकिन उस निर्देशिका या निर्देशिका के लिए नहीं जो फ़ाइल से जुड़ी है, उस फ़ाइल को हटाया नहीं जा सकता है।
इसे प्राप्त करने का सबसे अच्छा तरीका उस फ़ाइल को एक निर्देशिका से लिंक करना होगा जो रूट के स्वामित्व में है और जो किसी के द्वारा लिखित नहीं है। आप इसके बजाय इसे अपने स्वामित्व में कर सकते हैं, जिसका अर्थ होगा कि आप और रूट दोनों इसे हटा सकते हैं।
यह अभी भी अन्य उपयोगकर्ताओं को उस फ़ाइल को अन्य निर्देशिकाओं से लिंक करने और उसके बाद इसे वहां से लिंक करने की अनुमति देगा, लेकिन वे अभी भी फ़ाइल को हटा नहीं पाएंगे क्योंकि वे इसे अपनी निर्देशिका से अनलिंक करने में सक्षम होंगे।
ध्यान दें कि इसके लिए पूरी तरह से काम करने के लिए, फ़ाइल के हर पथ घटक की लिखित अनुमति को नियंत्रित करना होगा। क्योंकि उदाहरण के लिए यदि फ़ाइल है /a/b/the-fileऔर आप /a/bकिसी के द्वारा लिखने योग्य नहीं हैं, लेकिन हर किसी के पास पहुंच है /a, तो वे /a/bकिसी और चीज़ का नाम बदल सकते हैं और अपना स्वयं /a/bका निर्माण कर सकते हैं और अपना स्वयं का निर्माण कर /a/b/the-fileसकते हैं।