लॉग इन करते समय, मैं निम्नलिखित कर सकता हूं:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
फिर मैं vim (जैसा नहीं root
) खोल सकता हूं , संपादित कर सकता हूं bar
, एक राइट को मजबूर कर सकता हूं w!
, और फाइल को संशोधित किया जा सकता है।
मैं किसी भी फ़ाइल संशोधन को ऑपरेटिंग सिस्टम को कैसे बंद कर सकता हूं?
UPDATE Mar 02 2017
chmod 500 foo
एक लाल हेरिंग है: एक निर्देशिका पर लिखने की अनुमति का फ़ाइल की सामग्री को संशोधित करने की क्षमता से कोई लेना-देना नहीं है - केवल फ़ाइलों को बनाने और हटाने की क्षमता।chmod 400 foo/bar
वास्तव में फ़ाइल की सामग्री को बदले जाने से रोकता है। लेकिन , यह फ़ाइल की अनुमतियों को बदलने से नहीं रोकता है - एक फ़ाइल का स्वामी हमेशा अपनी फ़ाइल की अनुमतियों को बदल सकता है (यह मानते हुए कि वे फ़ाइल तक पहुँच सकते हैं अर्थात सभी पूर्वजों निर्देशिकाओं पर अनुमति निष्पादित करते हैं)। वास्तव में, स्ट्रेस (1) से पता चलता है कि यह वही है जो विम (7.4.576 डेबियन जेसी) कर रहा है - विम कॉल chmod (2) को अस्थायी रूप से फ़ाइल के मालिक के लिए लेखन अनुमति जोड़ने के लिए, फ़ाइल को संशोधित करता है, और फिर chmod ( 2) फिर से लिखने की अनुमति को हटाने के लिए। इसीलिएchattr +i
कार्यों का उपयोग करते हुए - केवल रूट कॉल कर सकते हैंchattr -i
। सैद्धांतिक रूप से, vim (या कोई भी प्रोग्राम) चटट्रों के साथ वैसा ही कर सकता है जैसा कि रूट पर चलने पर किसी अपरिवर्तनीय फ़ाइल पर chmod के साथ होता है।
root
?
vim
वास्तव में अनुमतियों को बदल रहा है और फिर इसे वापस डाल रहा है।