मैं दूसरे दिन हमेशा की तरह विम का इस्तेमाल कर रहा था, जब मुझे कुछ अजीब लगा। यहाँ मैंने क्या किया है:
~$ touch testfile
~$ ls -l | grep testfile
-rw-r--r-- 1 username groupname 0 Jul 23 10:00 testfile
~$ vim testfile
फिर मैंने एक बदलाव किया, और बचाया और साथ छोड़ दिया :wq
। काफ़ी साधारण। फिर, हालांकि:
~$ sudo chown root:root testfile
~$ sudo chmod 644 testfile
~$ sudo -k
~$ ls -l | grep testfile
-rw-r--r-- root root 0 Jul 23 10:02 testfile
~$ vim testfile
तो रूट में r / w का उपयोग होना चाहिए और बाकी सभी को केवल पढ़ना चाहिए। फ़ाइल संपादित करें, सहेजने का प्रयास करें - आप नहीं कर सकते। बहुत बढ़िया, इरादा के अनुसार काम करना। हालाँकि, यदि आप सहेजते हैं, तो :w!
विम किसी तरह फ़ाइल स्वामित्व को वापस उपयोगकर्ता नाम में बदल देता है: उपयोगकर्ता समूह और फ़ाइल सहेज ली जाती है। अगर आप ऐसा करते हैं:
~$ sudo chmod 444 testfile
~$ sudo -k
~$ ls -l | grep testfile
-r--r--r-- 1 root root 0 Jul 23 10:06 testfile
~$ vim testfile
आप अभी भी साथ अधिलेखित कर सकते हैं :w!
! क्या हो रहा है? फ़ाइल स्वामित्व और अनुमति जैसे कानूनों को कैसे तोड़ सकते हैं? मैंने यह कहते हुए विम पेज में मदद की :help :w
और यह पाया:
:w[rite]! [++opt] Like ":write", but forcefully write when 'readonly' is set or there is another reason why writing was refused.
Note: This may change the permission and ownership of the file and break (symbolic) links. Add the 'W' flage to 'cpoptions' to avoid this.
जब मुझे नहीं करना चाहिए तो मैं पहले से ही एक फ़ाइल में लिखने में असमर्थ रहा हूँ, इसलिए मुझे लगता है कि मेरे सवाल का वास्तविक दिल है, मैं कैसे एक फ़ाइल को अनिमित-सक्षम बना सकता हूँ और यह फ़ाइल पर आधारित क्यों नहीं है सिस्टम अनुमतियाँ, जैसे मैं उम्मीद करता हूँ, और वह कौन सा तंत्र है जो फ़ाइल को संपादित करने के लिए उपयोग किया जाता है जिसे अन्य संपादक (gedit, नैनो) उपयोग नहीं कर सकते?
संपादित करें: मैंने जिस कंप्यूटर पर यह कोशिश की थी वह लिनक्स कर्नेल 3.15.5-2-ARCH का उपयोग कर रहा है। विम का संस्करण संख्या 7.4.373-1 है, और इसके द्वारा स्थापित किया गया है pacman
- मैंने इसे किसी विशेष विकल्प के साथ खरोंच से संकलित नहीं किया।