অন্য ব্যবহারকারীর মালিকানার অধীনে আরএমকে কেন একটি ফাইল মুছতে দেওয়া হচ্ছে?


52

পোস্ট থেকে আরএম কেন পঠনযোগ্য ফাইলগুলি সরাতে পারে? আমি বুঝতে পারি যে rmফাইলটি সরানোর জন্য কেবল ডিরেক্টরিতে লেখার অনুমতি প্রয়োজন। তবে আচরণটি হজম করা আমার পক্ষে কঠিন মনে হয়েছে যেখানে আমরা সহজেই এমন কোনও ফাইল মুছতে পারি যা পৃথক পৃথক মালিক এবং গ্রুপ।

আমি নিম্নলিখিত চেষ্টা করেছিলাম

mtk: আমার ইউজারনেম
abc: একটি নতুন ব্যবহারকারী তৈরি করেছে

$ ls -l file
-rw-rw-r-- 1 mtk mtk       0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc       0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>

আমি ভাবছিলাম এটির অনুমতি দেওয়া উচিত ছিল না। একজন ব্যবহারকারীকে তার মালিকানার অধীনে কেবল ফাইলগুলি মুছতে সক্ষম হওয়া উচিত? কেন এটি অনুমোদিত তা নিয়ে কেউ আলোকপাত করতে পারেন? এবং এড়ানো উপায় কি? আমি ভাবতে পারি যে কেবলমাত্র অভিভাবক ডিরেক্টরিতে লেখার অনুমতি সীমাবদ্ধ করা ফাইলের বিস্মৃত মুছে ফেলা নিষ্ক্রিয় করার অনুমতি দেয়।

উত্তর:


100

এটি অনুমোদিত হওয়ার কারণটি আসলে কোনও ফাইল অপসারণের সাথে সম্পর্কিত। ধারণামূলকভাবে, rmকাজ হ'ল ডিরেক্টরি থেকে একটি নাম এন্ট্রি সরিয়ে ফেলা। ফাইলটি কেবল তখনই অ্যাক্সেসযোগ্য হতে পারে যদি সেই ফাইলটির একমাত্র নাম ছিল এবং ফাইলটি দখল করা ইনোড এবং স্পেসটি সেই মুহুর্তে পুনরুদ্ধার করা যায় তবে এটি প্রায় ঘটনাই। rmকমান্ডটি আহ্বান করে এমন সিস্টেমটির নাম , যা এটি unlinkএই সত্যটিরও পরামর্শ দেয়।

এবং, ডিরেক্টরি থেকে একটি নাম এন্ট্রি সরিয়ে ফেলা মূলত সেই ডিরেক্টরিতে একটি অপারেশন , যাতে ডিরেক্টরিটি এমন একটি জিনিস যা আপনার লেখার অনুমতি থাকা দরকার।


নিম্নলিখিত পরিস্থিতি এটি আরও স্বাচ্ছন্দ্য বোধ করতে পারে? ধরুন এখানে ডিরেক্টরি রয়েছে:

/home/me    # owned and writable only by me
/home/you   # owned and writable only by you

এবং এমন একটি ফাইল রয়েছে যা আমার মালিকানাধীন এবং এর দুটি শক্ত লিঙ্ক রয়েছে:

/home/me/myfile
/home/you/myfile

সেই শক্ত লিঙ্কটি /home/you/myfileসেখানে প্রথম স্থানে কীভাবে আসে তা মনে করবেন না। হয়তো rootসেখানে লাগাতে হবে।

এই উদাহরণটির ধারণাটি হ'ল আপনাকে কঠোর লিঙ্কটি সরানোর অনুমতি দেওয়া উচিত /home/you/myfile। সর্বোপরি, এটি আপনার ডিরেক্টরিকে বিশৃঙ্খলা করছে । আপনার ভিতরে যা আছে এবং কী নেই তা নিয়ন্ত্রণ করতে সক্ষম হওয়া উচিত /home/you। এবং আপনি মুছে ফেললে /home/you/myfile, লক্ষ্য করুন যে আপনি আসলে ফাইলটি মুছলেন না। আপনি এর সাথে কেবল একটি লিঙ্ক সরিয়েছেন।


মনে রাখবেন যদি চটচটে বিট ডিরেক্টরির একটি ফাইল (যেমন দেখায় ধারণকারী সেট করা হয় tমধ্যে ls), তারপর আপনি না ফাইলের মালিক হতে অর্ডার মধ্যে মুছে করার অনুমতি দেওয়া হবে (যতক্ষণ না আপনি ডিরেক্টরি মালিক) প্রয়োজন। স্টিকি বিটটি সাধারণত চালু থাকে /tmp


6
ডিরেক্টরিতে স্টিকি বিটের সাহায্যে, ফাইলটি সরিয়ে ফেলার জন্য আপনাকে মডিফাই করতে সক্ষম হতে হবে। এটি হ'ল যদি ফাইলটি আপনার মতো একই গ্রুপের অন্য কারও সাথে থাকে এবং গ্রুপটি ফাইলটিতে লিখতে পারে তবে আপনি ফাইলটি সরাতে পারেন। Olপনিবেশিক: যে কোনও ব্যক্তি পাবলিক রাইটিংয়ের অনুমতি সহ একটি ফাইল সরিয়ে ফেলতে পারে। (সমস্ত অবশ্যই ডিরেক্টরিটি পরিবর্তন করতে সক্ষম হবেন subject)
জোনাথন লেফলার

1
আমি আপনাকে ভুল ব্যাখ্যা করতে পারি তবে আপনি কি বলছেন না যে আমি -rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/fooআমার নিয়মিত ব্যবহারকারী হিসাবে এটি অপসারণ করতে পারি ( /tmpআঠালো) কারণ এটি লেখার অনুমতি রয়েছে? তবুও পারি না।
সেলেদা

4
আমি বিশ্বাস করি যে me/ youযদি আপনি প্রকল্প রচনা করা যে ব্যবহারকারী (এক যারা ফাইল মালিক না) লিঙ্ক তৈরি করেছেন দৃশ্যকল্প পরিষ্কার ফোকাস মধ্যে আসে। সর্বনাম ব্যবহার করা শক্ত; আসুন ধরা যাক আল তৈরি করেন /home/al/file1, এবং বব, যিনি অ্যাক্সেস কার্যকর করেছেন (এবং সম্ভবত পড়তেও পারেন) /home/al, ফাইলটিকে হার্ড লিঙ্ক করে /home/bob/als_file। বব একটি লিঙ্ক না সরিয়েই থেকে বাধা দেওয়া উচিত যে তিনি সৃষ্টি করেছেন?   এবং /home/bob/als_fileযখন আলার কাছে লেখার অ্যাক্সেস নেই তখন কি তাকে মুছে ফেলার (লিঙ্কমুক্ত) করার অনুমতি দেওয়া উচিত /home/bob? এই রাস্তা বিশৃঙ্খলার দিকে নিয়ে যায়।
স্কট

2
@JonathanLeffler: স্কটের উদাহরণ দেখায় হিসাবে, না, লিঙ্ক মুক্ত এবং ছাঁটা হচ্ছে না না একই নেট ফলাফলের যখন খেলার মধ্যে হার্ড লিঙ্ক থাকে না।
কেভিন 21

6
@ কেভিন আমি মনে করি মূল বক্তব্যটি হ'ল কারও কাছে যদি ফাইলটিতে লেখার অনুমতি থাকে তবে তিনি বিষয়বস্তুগুলি ধ্বংস করতে পারেন, তবে তাকে পাশাপাশি এটি লিঙ্কমুক্ত করার অনুমতিও দেওয়া হতে পারে (ধরে নেওয়াও যে তিনি ডিরেক্টরিতে লেখার অনুমতিও পেয়েছেন)। কথোপকথনটি প্রযোজ্য নয় - একটি ডিরেক্টরি থেকে ফাইলটি সরিয়ে ফেলতে সক্ষম হওয়ার অর্থ এই নয় যে সেগুলি অন্য ডিরেক্টরি থেকে অ্যাক্সেসযোগ্য হতে পারে, কারণ সামগ্রীগুলি নষ্ট করতে সক্ষম হবে। এটি কীভাবে স্টিকি বিট কাজ করে তার পিছনে যুক্তি রয়েছে।
বার্মার

9

একটি ফাইল সরানোর জন্য, আপনাকে কেবল ফাইলটি যে ডিরেক্টরিটিতে রয়েছে সেটিতে লিখতে সক্ষম হতে হবে।

আপনি যদি এটি পছন্দ করেন না, আপনি chmod +t dirযদি অর্ধেক সাম্প্রতিক ওএসে থাকেন তবে আপনি "স্টিকি" বিট সেট করতে পারেন (সুনোস-এ এই বৈশিষ্ট্যটি 1986 সালের দিকে প্রবর্তিত হয়েছিল)।

আপনি যদি আরও সূক্ষ্ম দানযুক্ত হতে চান তবে আপনার জেডএফএসের মতো আধুনিক এসিএল বাস্তবায়ন সহ একটি ফাইল সিস্টেমের দরকার। এনটিএফএসের উপর ভিত্তি করে স্ট্যান্ডার্ড এনএফএসভি 4 এসিএলগুলির মধ্যে ব্যবহারকারী প্রতি ফাইল নির্দিষ্ট মুছে ফেলার অনুমতি এবং ডিরেক্টরিগুলির জন্য "মুছে ফেলা" অনুমতি অন্তর্ভুক্ত করে।


9
নোট করুন যে tবিটটি যুক্ত করতে আপনার নিজের ডিরেক্টরি থাকতে হবে। এবং যদি আপনি ডিরেক্টরিটির মালিক হন তবে আপনি tবিট সেট করা আছে কি না তা নির্বিশেষে সবসময় ফাইলগুলি সরাতে পারবেন । আপনি যদি কারও কারও ডিরেক্টরিতে কোনও ফাইল লিঙ্ক করেন তবে অন্য কারও এটি অপসারণের জন্য আপনাকে প্রস্তুত থাকা উচিত। বিকল্পটি হ'ল প্রথমে আপনার একটি সাব-ডির তৈরি করা হবে এবং তার পরিবর্তে সেখানে আপনার ফাইল যুক্ত করুন, কারণ মালিক সেই সাবডিরটি খালি না করে সরিয়ে ফেলতে পারবেন না।
স্টাফেন চেজেলাস

6
আপনি পরিস্থিতি বিভ্রান্তিমূলকভাবে বর্ণনা করেছেন। প্রযুক্তিগতভাবে, একটি ফাইল ডিরেক্টরিতে নেই; বরং ফাইলের একটি নাম ডিরেক্টরিতে থাকে এবং এটি ডিরেক্টরিতে rmএকটি অপারেশন, ফাইলের মধ্যে নয়। কোনও ফাইলের সর্বশেষ উল্লেখটি মুছে ফেলা হবে না, তবে প্রযুক্তিগতভাবে, এটি একটি পার্শ্ব প্রতিক্রিয়া।
পুনরায় পোস্টার

0

যুক্তিটি কোনও বাড়ির অনুরূপ: কোনও অতিথি যার মালিক তা বিবেচনা না করেই মালিক বা ভাড়াটিয়া সিদ্ধান্ত নেয় যে কোন অতিথিদের বের করে দেওয়া উচিত। এছাড়াও, উচ্ছেদ হওয়া অতিথিকে অন্য বাড়িতে স্বাগত জানানো (অন্য কারও ডিরেক্টরিতে অন্য একটি হার্ডলিঙ্ক রয়েছে) বাইরে মৃত্যুতে জমে যাবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.