দ্রষ্টব্য : লিগ্যাসি লাইসেন্সিং কারণে, বেশিরভাগ জিএনইউ / লিনাক্স বিতরণে বিল জয়ের লিখিত মূল vi প্রোগ্রাম অন্তর্ভুক্ত করে না। পরিবর্তে, vi কমান্ডটি ভিআই-সামঞ্জস্যতা মোডে ভিম চালিয়ে সরবরাহ করা হয়। নিম্নলিখিত উত্তরটি তার ভি-সামঞ্জস্যতা মোডের সাথে ভিম চালানোর উপর ভিত্তি করে।
কেবল পঠনযোগ্য ফাইলটি সংশোধন করা হচ্ছে
ভিম ব্যবহারকারীকে সাবধান করে যদি তারা কেবল-পঠনযোগ্য ফাইলের বাফারটি পরিবর্তন করে W10: Warning: Changing a readonly file
,। যদি ব্যবহারকারী এই ফাইলটিতে লেখার চেষ্টা করে তবে তারা নিম্নলিখিত ত্রুটি বার্তাটি পান 'readonly' option is set (add ! to override)
,।
যখন পিতামাতার ডিরেক্টরিটি ভিম ব্যবহারকারীর দ্বারা লিখিত হয়
ভিম, সহায়ক হচ্ছেন, ব্যবহারকারীকে জানতে দিন যে তারা আদেশের সাথে বিস্মৃত চিহ্নটি যুক্ত করে লেখার জন্য জোর দিয়ে জোর করতে !
পারে w
। যদি রাইট কমান্ডের এই বলিষ্ঠ সংস্করণটি ব্যবহার করা হয়, তবে ভিম মূল ফাইলটি মুছে ফেলবে (যদি ভিম-কেবলমাত্র backup
বিকল্প সেটটি দিয়ে উইম ব্যবহার করে থাকে তবে মূল ফাইলটিকে প্রকৃতপক্ষে নামটির নামকরণ করা হবে ব্যাকআপ ফাইলের মতোই)। তখনই প্রর্দশিত (সৃষ্টি) একটি নতুন ফাইল সঙ্গে একই নামের মূল হিসেবে এবং এই নতুন ফাইল তার বাফার বিষয়বস্তু লিখেছেন। এটি ভিম চালানোর আগে এবং পরে ফাইলটির ইনোড পরীক্ষা করে পর্যবেক্ষণ করা যেতে পারে :
$ ls -l --inode t
131529 -r--r--r-- 1 anthony anthony 0 Apr 13 09:23 t
$ vi t
$ ls -l --inode t
131649 -r--r--r-- 1 anthony anthony 4 Apr 13 09:23 t
দ্রষ্টব্য: এটি ফাইলের অনুমতি এবং মালিকানা এবং ব্রেক (প্রতীকী) লিঙ্কগুলিও পরিবর্তন করতে পারে, উদাহরণস্বরূপ, যদি মূল ফাইলটি অন্য কোনও ব্যবহারকারীর মালিকানাধীন থাকে তবে নতুন ফাইলটি ভিম চলমান ব্যবহারকারীর মালিকানাধীন হবে।
কোনও প্রক্রিয়া কেবল তখনই এটি করতে পারে যদি এতে ফাইলের প্যারেন্ট ডিরেক্টরিতে লেখার অনুমতি থাকে। সাধারণভাবে, কোনও প্রোগ্রাম কোনও ফাইল কোনও ফাইল সংশোধন করতে না পারে তা নিশ্চিত করার জন্য, ফাইলটি ও তার মূল ডিরেক্টরি উভয়েরই অনুমতি সুরক্ষিত করা উচিত।
যখন পিতামাতার ডিরেক্টরিটি ভিম ব্যবহারকারীর দ্বারা লিখিত না হয়
যাইহোক, এমনকি এই ক্ষেত্রেও, ভিম এখনও জিদগ্রাহী ব্যবহারকারীকে ফাইলটি ওভার-লিখনে সহায়তা করার জন্য যথাসাধ্য চেষ্টা করে। যদি ভিমের ব্যবহারকারীর ফাইলটির মালিকানা থাকে, অল্পক্ষণের জন্য ফাইলের অনুমতি ( chmod
সিস্টেম কল ব্যবহার করে ), ফাইলটিতে বাফার লিখে, ফাইলটি বন্ধ করে এবং তারপরে পরিবর্তন করে ভিমের কেবল পঠনযোগ্য পিতামাতার ডিরেক্টরি সীমাবদ্ধতাটি পাওয়া যাবে অনুমতি ফিরে। স্ট্রেসের মাধ্যমে vi চালানোর সময় করা সিস্টেম কলগুলির একটি সূত্র এখানে রয়েছে strace -o ../vi.trace vi t
:
getuid() = 501
chmod("t", 0100644) = 0
open("t", O_WRONLY|O_CREAT|O_TRUNC, 0644) = 4
write(4, "I am good singer,\n", 18) = 18
fsync(4) = 0
close(4) = 0
chmod("t", 0100444) = 0
দ্রষ্টব্য: যদি ভিম ব্যবহারকারী কোনও ফাইল সম্পাদনা করেন তবে ভিম ফাইলের অনুমতিগুলি পরিবর্তন করতে পারবেন না বলে তাদের মালিকানা নেই don't
অভিযোজ্য বস্তু
ফাইলটি সংশোধন করা যায় না তা নিশ্চিত হওয়ার জন্য (একটি জিএনইউ / লিনাক্স সিস্টেমে), chattr
সুপার-ইউজার হিসাবে কমান্ডটি চালান :
sudo chattr +i filename
থেকে man chattr
:
'I' বৈশিষ্ট্যযুক্ত কোনও ফাইল পরিবর্তন করা যায় না: এটি মোছা বা পুনরায় নামকরণ করা যায় না, এই ফাইলটিতে কোনও লিঙ্ক তৈরি করা যায় না এবং ফাইলটিতে কোনও ডেটাও লেখা যায় না। কেবল সুপারইজার বা CAP_LINUX_IMMUTABLE সক্ষমতা সম্বলিত একটি প্রক্রিয়া এই বৈশিষ্ট্যটি সেট বা সাফ করতে পারে।