আমি অন্যদিন যথারীতি ভিম ব্যবহার করছিলাম, যখন আমি কিছু অদ্ভুত কিছু লক্ষ্য করেছি। আমি যা করেছি তা এখানে:
~$ 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, ন্যানো) ব্যবহার করতে পারে না এমন ফাইলটি সম্পাদনা করার জন্য vim কী পদ্ধতি ব্যবহার করছে?
সম্পাদনা: আমি যে কম্পিউটারটি চেষ্টা করেছিলাম তা লিনাক্স কার্নেলটি 3.15.5-2-ARCH ব্যবহার করছে। ভিমের সংস্করণ নম্বরটি 7.4.373-1, এবং এটি ইনস্টল করা একটি pacman
- আমি কোনও বিশেষ বিকল্প দিয়ে এটিকে স্ক্র্যাচ থেকে সংকলন করি নি।
CAP_CHOWN
কল করা প্রয়োজন chown(2)
। যাইহোক, আমি ভিম .4.৪ সহ ডেবিয়ানে পুনরুত্পাদন করতে পারি।