বনাম পড়ুন বিট কার্যকর করুন। লিনাক্সে ডিরেক্টরি অনুমতিগুলি কীভাবে কাজ করে?


380

আমার সিএমএসে, আমি লক্ষ্য করেছি যে ডিরেক্টরিগুলি +xব্যবহারকারীদের খোলার জন্য নির্বাহযোগ্য বিট ( ) সেট প্রয়োজন । ডিরেক্টরি পড়ার জন্য কেন নির্বাহের অনুমতি প্রয়োজন হয় এবং লিনাক্সে ডিরেক্টরি অনুমতিগুলি কীভাবে কাজ করে?


17
... ওহ, কারণ এটি "+ x" পতাকাটি :)
Badp


16
এটির মতো চিন্তা করুন: ডিরেক্টরি এন্ট্রিতে ফাইলের নাম রয়েছে , সুতরাং "পড়া" ডিরেক্টরিটি ফাইলগুলি তালিকাভুক্ত করে, "ডিরেক্টরিটি" ব্যবহার করে ফাইলগুলি অ্যাক্সেস করা হয়।
টাইলার

7
ডিরেক্টরি এক্সিকিউট বিট সেট সহ , আপনি এটির শ্রেণিবিন্যাস অতিক্রম করতে পারবেন । আপনি "অন্যান্য" লোকের অন্তর্ভুক্ত এবং কেবল বিট সেট কার্যকর করেছেন ( chmod 771 dirOne) আপনি dirOne সামগ্রী তালিকাভুক্ত করতে পারবেন না। তবে যদি এটিতে উপ-ডিরেক্টরি "dirTwo" থাকে তবে এর মতো অধিকার সেট করা থাকে ( chmod 774 dirTwo) আপনি আসলে এটির বিষয়বস্তু তালিকাভুক্ত করতে পারেন!
স্টাফেন

1
: ফিউচার দর্শক এছাড়াও AskUbuntu উপর সংশ্লিষ্ট প্রশ্ন দেখতে পাবেন askubuntu.com/q/1106822/295286
Sergiy Kolodyazhnyy

উত্তর:


351

লিনাক্স ডিরেক্টরিতে অনুমতি প্রয়োগ করার সময়, অনুমতি বিটগুলির নিয়মিত ফাইলগুলির চেয়ে আলাদা অর্থ রয়েছে।

  • পঠিত বিট ( r) ডিরেক্টরির মধ্যে ফাইল তালিকা আক্রান্ত ব্যবহারকারী পারবেন
  • লেখার বিট ( w) আক্রান্ত ব্যবহারকারী তৈরি করতে নামান্তর, অথবা ডাইরেক্টরি মধ্যে ফাইল মুছুন এবং ডিরেক্টরির গুণাবলী সংশোধন পারবেন
  • চালানো বিট ( x) ডিরেক্টরির প্রবেশ করতে প্রভাবিত ব্যবহারকারী অনুমতি দেয়, এবং এক্সেস ফাইল ও ডিরেক্টরিগুলি ভিতরে
  • চটচটে বিট ( Tবা tচালানো বিট অন্যদের জন্য সেট করা হয় যদি থাকে) যে ডিরেক্টরিটি মধ্যে ফাইল ও ডিরেক্টরিগুলি শুধুমাত্র মোছা হয়েছে বা তাদের মালিক (অথবা root) দ্বারা নতুন নামকরণ করা হতে পারে

25
দুর্দান্ত উত্তর, তবে আমি মনে করি শেষ বাক্যটি বিভ্রান্তিকর। এই অনুমতিগুলির কোনওটিই আসলে প্রতি ফাইল-ওভাররাইড করা যাবে না। এখানে "অ্যাক্সেস" কিছুটা অস্পষ্ট: +xডিরেক্টরিতে ডিরেক্টরিটি এই নির্দিষ্ট ডিরেক্টরিটির মাধ্যমে ফাইল আইওডগুলিতে অ্যাক্সেস দেয় (কম কিছু নয়, এর চেয়ে বেশি কিছুই নয়, সম্ভবত ... খুব chdirপ্রয়োজন +x)। একটি ফাইলের বিষয়বস্তু পড়তে বা লিখতে, ব্যবহারকারীর এই ফাইলটিতে +r/ প্রয়োজনও রয়েছে +wতবে সেগুলি পৃথক অনুমতি (তারা কোনও কিছুতেই ওভাররাইড করে না)।
স্টাফেন গিমেনেজ

2
অপরিবর্তনীয় পতাকাটি ফাইল-সিস্টেম নির্দিষ্ট এবং এটি যথাযথভাবে এই অনুমতিগুলিকে ওভাররাইড করবে না, এ কারণেই আমি মনে করি যে শেষ বাক্যটি বিভ্রান্তিকর :-)
স্টাফেন গিমেনেজ

1
আমি মনে করি এটি এবং অন্যান্য উত্তরে এসিএল উল্লেখ করা কার্যকর হতে পারে, কারণ কিছু ডিরেক্টরিতে তাদের অ্যাপ্লিকেশনটি বিভ্রান্তিকর হতে পারে যদি কেউ কেবল ক্রিস ডাউন দ্বারা প্রদত্ত তথ্য বিবেচনা করে
ব্যবহারকারী 907860

4
দেখে মনে হচ্ছে যে এই উত্তরটি লিখিত বিটের সম্মিলিত প্রভাব এবং বিট সম্পাদন করার বিড়ালটির উল্লেখ করে না, যেমন বাল্ড্রিকের উত্তর নীচে উল্লেখ করেছে? উদাহরণস্বরূপ, যদি আপনার কেবল লেখার অনুমতি থাকে তবে মৃত্যুদন্ডের অনুমতি না থাকে তবে এটি যথেষ্ট অকেজো।
xji

1
@ স্টাফেইনি গিমেনেজ " +xডিরেক্টরিতে থাকা ফাইল আইনোডগুলিতে অ্যাক্সেস দেয়" - এটি একটি ভাল নিমোনিক বলে মনে হচ্ছে, তবে সম্ভবত পুরো গল্পটি বলে না? কোনও ডিরেক্টরিতে এক্সিকিউট বিট সেট ব্যতীত আপনি সেই ডিরেক্টরিতে কোনও ফাইলের ফাইলের নাম পরিবর্তন করতে পারবেন না। আমি কেন ভাবছি তা ভাবছি কারণ ফাইলের নামটি কোনও ইনড নয়, ডিরেক্টরি এন্ট্রিতে সংরক্ষিত।
কেভিন হুইলার 22

258

প্রথমে ভাবেন: ডিরেক্টরি কী? এটি কেবলমাত্র আইটেমগুলির একটি তালিকা (ফাইল এবং অন্যান্য ডিরেক্টরি) যা এর মধ্যে থাকে। সুতরাং: ডিরেক্টরি = নামের তালিকা।

বিট পড়ুন = সেট করা থাকলে আপনি এই তালিকাটি পড়তে পারেন। সুতরাং, উদাহরণস্বরূপ, যদি আপনার নামের একটি ডিরেক্টরি থাকে poems:

  • আপনি ls poemsপাবেন এবং আপনি এর মধ্যে থাকা আইটেমগুলির একটি তালিকা পাবেন ( -lকোনও বিবরণ প্রকাশ করবে না)।
  • আপনি কমান্ড-লাইন সমাপ্তি ব্যবহার করতে পারেন touch poems/so <TAB> poems/somefile
  • আপনি poemsআপনার কার্যকারী ডিরেক্টরি তৈরি করতে পারবেন না (যেমন cdএটিতে)।

বিট লিখুন = সেট করা থাকলে আপনি এই তালিকাটি সংশোধন করতে পারবেন অর্থাৎ আপনি এতে নাম যুক্ত করতে, পুনরায় নামকরণ, মুছতে পারেন। কিন্ত! এক্সিকিউটিভ বিট সেট করা থাকলে আপনি আসলে এটি করতে পারেন।

বিট কার্যকর করুন = এই ডিরেক্টরিটিকে আপনার কার্যক্ষম ডিরেক্টরি হিসাবে তৈরি করুন cdinto আপনি যদি চান তবে আপনার এই অনুমতি দরকার:

  • ভিতরে থাকা আইটেমগুলিতে অ্যাক্সেস (পড়ুন, লিখুন, চালান)
  • তালিকাটি নিজেই সংশোধন করুন অর্থাৎ এতে নাম যুক্ত, পুনরায় নামকরণ, নাম মুছুন (অবশ্যই লেখার লিখিত বিটটি সেট করতে হবে)।

আকর্ষণীয় কেস 1 : যদি আপনার কাছে ডিরেক্টরিতে + চালানো অনুমতিগুলি লিখতে থাকে তবে আপনি সেই আইটেমগুলিতে লেখার অনুমতি না থাকলেও আপনি সেই আইটেমগুলিকে {মুছুন, নতুন নামকরণ করতে পারেন। (এটি প্রতিরোধের জন্য স্টিকি বিট ব্যবহার করুন)

আকর্ষণীয় কেস 2 : আপনি যদি কোনও ডিরেক্টরিতে অনুমতি প্রয়োগ করেন (তবে লেখেন না) এবং এর মধ্যে থাকা কোনও ফাইলে আপনার লেখার অনুমতি রয়েছে তবে আপনি ফাইলটি মুছতে পারবেন না (কারণ এটি তালিকা থেকে এটি সরিয়ে দেওয়ার সাথে জড়িত)। তবে আপনি এর সামগ্রীগুলি মুছতে পারেন যেমন এটি কোনও পাঠ্য ফাইল যদি আপনি vi ব্যবহার করে তা খুলতে এবং সমস্ত কিছু মুছতে পারেন। ফাইলটি এখনও থাকবে, তবে এটি খালি থাকবে।

সারাংশ:

বিট পড়ুন = আপনি তালিকার নামগুলি পড়তে পারেন।
বিট লিখুন = আপনি যদি তালিকায় নামগুলি যুক্ত করতে, পুনরায় নামকরণ, মুছতে} করতে পারেন তবে এক্সিকিউট বিটটি সেট করা থাকলে।
বিট কার্যকর করুন = আপনি এই ডিরেক্টরিটিকে আপনার কার্যক্ষম ডিরেক্টরি করতে পারেন।

পিএস: কুসালানন্দ দ্বারা বর্ণিত নিবন্ধটি ভাল পঠিত।


17
তালিকা হিসাবে ডিরেক্টরি সম্পর্কে চিন্তা করা বিষয়গুলিকে আরও পরিষ্কার এবং যৌক্তিক করে তোলে।
ত্রিশমেগিস্টোস

20
দুর্দান্ত উত্তর, তবে খুব "ওয়ার্কিং ডিরেক্টরি" শব্দটির প্রতি মনোনিবেশ করেছেন। আমি প্রয়োজন xজন্য বিট কোনো এই ফাইলের অ্যাক্সেস: এর জন্য cat a/b/c/d, আমি প্রয়োজন xসব বিট a, bএবং c, এমনকি যদি আমি তাদের cwd যেমন ব্যবহার করবেন না।
glglgl

1
এটি এখানেই আমি জানতে পেরেছিলাম যে এটি সম্পাদনযোগ্য না হলে আপনি লিখতে পারবেন না! কেস 2 এছাড়াও আকর্ষণীয়, দুর্দান্ত উত্তর!
মিরকো

1
অন্য নোটটি হ'ল xডিরেক্টরিতে আপনার অনুমতি থাকলেও যদি আপনার মধ্যে ফাইলের মধ্যে xঅনুমতি না থাকে তবে আপনি ফাইলটি সত্যই "এক্সিকিউট" করতে পারবেন না। আপনি কেবল catউদাহরণস্বরূপ এটি করতে পারেন, তবে আপনি নিজে ফাইলটি চালাতে পারবেন না।
xji

2
আপনি যদি ls -lকোনও ফোল্ডারের জন্য কাজ করতে চান তবে উভয়ের অনুমতি rএবং xঅনুমতি প্রয়োজন ।
এরিক ওয়াং

44

সমস্ত সম্ভাব্য অনুমতি এবং তাদের ব্যবহারিক প্রভাব সহ আমি এই টেবিলটি প্রস্তুত করেছি।

লিনাক্স ডিরেক্টরি অনুমতি

(*) কেবল ফাইলের নাম : আকার বা তারিখের মতো অন্যান্য বৈশিষ্ট্যগুলি অ্যাক্সেসযোগ্য নয়। উদাহরণস্বরূপ আপনি স্বয়ংক্রিয়রূপে ট্যাব কী ব্যবহার করতে পারেন তবে ls কমান্ড নয়।

কিছু চিন্তা :

  • সঙ্গে এক্স সেট না , আর এবং W বেশিরভাগই অকেজো হয়।
  • আপনি কেবল অন্ধভাবে ফাইলের বিষয়বস্তু পড়তে এবং লিখতে এবং উপ-ডিরেক্টরিগুলিতে অ্যাক্সেস করতে পারছেন বলে এক্স একা আর ডাব্লু অক্ষম করা আপনাকে সুরক্ষার একটি ভ্রান্ত ধারণা দেয়। আপনার নিশ্চিত হওয়া উচিত যে ডিরেক্টরিটির প্রতিটি প্রত্যক্ষ বাচ্চাদের স্পষ্ট অনুমতি রয়েছে।
  • কদাচিৎ আপনি এর চেয়ে অন্যান্য মানগুলি ব্যবহার করবেন:
    • 0 : অ্যাক্সেস নেই।
    • 1 : ন্যূনতম অ্যাক্সেস ট্র্যাভারিংয়ের অনুমতি দেয়।
    • 5 : পড়ার / লেখার অনুমতি দিন তবে ডিরেক্টরি গাছের কাঠামোতে কোনও পরিবর্তন নেই।
    • 7 : সম্পূর্ণ অ্যাক্সেস।

1
আমি 5 টি সহায়ক সহায়ক হিসাবে বিবেচনা করব, যখন আপনি পড়ার / লেখার অনুমতি দিতে চান তবে ডিরেক্টরি গাছের কাঠামোতে কোনও পরিবর্তন না করে।
hgiesel

তুমি ঠিক. আপডেট করা হয়েছে!
ডেভিড

4
দুর্দান্ত সংক্ষিপ্ত তালিকা। আমাকে आश्चर्यचकিত করে তোলে যে কেউ ডিরেক্টরিগুলির জন্য -W-কার্যত সমতুল্য হওয়ার ---জন্য কী ভাবছিলেন । খুব স্বজ্ঞাত নয়। অবশ্যই এই ধরণের নিম্ন স্তরের বিটগুলি প্রায়শই হয় না।
সিভিফ্যান 21

2
আমি এটি আমার ম্যাকটিতে পরীক্ষা করেছি, তবে এর সাহায্যে -W-আমি ডিরেক্টরিটির নাম পরিবর্তন করতে পারি (একটি স্টিকি বিটযুক্ত ডিরেক্টরিতে) তবে এর সাথে নয় ---। এটি একটি পার্থক্য বলে মনে হচ্ছে
কোজাইকোনমোটেল

3
@ ডেভিড, আপনি স্টিকি বিটটি মিস করছেন।
পেসারিয়ার

42

এখানে এটি একটি ভাল নিবন্ধ।

সারাংশ:

এর xবিট সেট সহ একটি ডিরেক্টরি ব্যবহারকারীকে cdএই ডিরেক্টরিতে (ডিরেক্টরি পরিবর্তন করতে) এবং এতে থাকা ফাইলগুলিতে অ্যাক্সেস করার অনুমতি দেয়।

বিবরণ:

  • পড়ুন ( r)

    এই ডিরেক্টরিতে সঞ্চিত ফাইলগুলির নাম পড়ার ক্ষমতা।

  • লিখুন ( w)

    ডিরেক্টরিতে ফাইলগুলির পুনরায় নামকরণ, নতুন ফাইল তৈরি করা বা বিদ্যমান ফাইলগুলি মুছে ফেলার ক্ষমতা, যদি আপনার কাছেও এক্সিকিউট অনুমতি থাকে। আপনার যদি পার্ক এক্সিকিউট না করে থাকে তবে লেখার পারম অর্থহীন।

  • কার্যকর করুন ( x)

    cdএই ডিরেক্টরিতে প্রবেশ করার ক্ষমতা এবং এই ডিরেক্টরিতে ফাইল অ্যাক্সেস করতে।

এখানে কয়েকটি উদাহরণ দেওয়া হয়েছে যা বোঝার জন্য এটি সহজ করা উচিত:

# "Full Access".  Reegen can list, create, delete, rename, delete,
# and stat any files in dir.
# Access to file contents is subject to the permissions
# of the file itself.
# New files can be created, any file can be deleted, regardless of
# file permissions.
drwx------  1 reegen    reegen          4096 Jan 01 2003  dir

# Reegen can do everything in the "Full Access" list except create,
# delete, or rename files in this directory.
dr-x------  1 reegen    reegen          4096 Jan 01 2003  dir

# Reegen can do everything in the "Full Access" list except list the
# filenames in this directory.  If she suspects there is a file
# named "program" she can list it, but cannot do an 'ls'
# of the directory itself.  She can access any file (file
# permissions permitting) if she knows its name.  She can
# create new files, or rename/delete existing ones.
d-wx------  1 reegen    reegen          4096 Jan 01 2003  dir

# Reegen cannot create or delete any files in this directory.
# She can access any file (permissions permitting) if she
# knows its name already.
d--x------  1 reegen    reegen          4096 Jan 01 2003  dir

হ্যাকিং লিনাক্স এক্সপোজ নিবন্ধে আরও আরও তথ্য রয়েছে ।



2

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

/a/b/c.txtউদাহরণ হিসাবে পথ ধরুন , বলুন যে ব্যবহারকারীর 1 টি) অনুমতি চালানো আছে /এবং /a; 2) অনুমতি পড়ার অনুমতি আছে /a/b; 3) অনুমতি পড়তে এবং লিখতে /a/b/c.txt

  • ব্যবহারকারী পড়তে (তালিকা) ব্যর্থ হবে /a, কারণ এর কোনও পড়ার অনুমতি নেই। তবে পথের রেজোলিউশন ব্যর্থ হয় না।

  • ব্যবহারকারী পড়তে (তালিকা) পড়তে সক্ষম হবেন /a/b, কারণ ব্যবহারকারীর অনুমতি চালানো হয়েছে /, /aএবং অনুমতি পড়তে হবে /a/b। মনে রাখবেন যে, পড়ার /a/bসময় ফাইলের c.txtনামটি দৃশ্যমান হয় তবে মেটাডেটা (যেমন ফাইলসাইজ) এবং সামগ্রীটি নয়, কারণ ফাইলের নামটি ডিরেক্টরিতে সঞ্চয় করা হয়, ফাইলের সাথে নয়, তবে মেটাডেটা ফাইলের ইনোডে সঞ্চিত থাকে।

  • ব্যবহারকারী পড়তে ব্যর্থ হবে /a/b/c.txt, কারণ যখন থেকে পাথ সমাধানে /করতে /aকরতে /a/b, এটা এ ব্যর্থ /a/bযেহেতু ব্যবহারকারীর অনুমোদন চালানো নেই।

কীভাবে কোনও ফাইলের মধ্যে কোনও পাথের নাম সমাধান করা হয় তা দেখুন ।


0

একটি দরকারী উপমা হ'ল প্রতিটি ফাইলকে একটি বই হিসাবে ভাবা এবং প্রতিটি ডিরেক্টরিকে যেখানে বই রাখা হয় সেগুলি ঘর হিসাবে ভাবা।

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

সেই নিয়মগুলি প্রতিটি বইয়ের নিয়মের চেয়ে পৃথক এবং পৃথক। কাউকে বই খোলার এবং এর বিষয়বস্তু পড়ার অনুমতি দেওয়ার নিয়ম রয়েছে: প্রতিটি ফাইলের জন্য পঠন বিট (গুলি)। কোনও বইয়ের বিষয়বস্তুগুলি সংশোধন করার নিয়ম রয়েছে: প্রতিটি ফাইলের জন্য লেখার বিট (গুলি)। এবং একটি ফাইল কার্যকর করতে: প্রতিটি ফাইলের জন্য বিট (গুলি) চালান।

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

সুতরাং, কোনও ব্যবহারকারীর একটি ঘরে প্রবেশ করতে এবং গ্রন্থাগার থেকে বইগুলি সরিয়ে দেওয়ার অনুমতি দেওয়া যেতে পারে তবে একই বইয়ের বিষয়বস্তু পড়ার অনুমতি নেই।

এজন্য ডিরেক্টরিগুলির জন্য একটি রিড বিট প্রয়োজন: কক্ষের বিষয়বস্তু (বইয়ের শিরোনাম) কে তালিকাভুক্ত করার অনুমতি দেওয়া হয়েছে তা নিয়ন্ত্রণ করতে।

এবং বইগুলির ঘরে কে প্রবেশ করতে পারে তা নিয়ন্ত্রণ করতে এক্সিকিউটিভ বিট ব্যবহার করা হয়।


-1

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


1
কার্য সম্পাদনের অনুমতি বিট আবিষ্কারটি প্রায় দুই দশক ধরে একটি পৃথক ট্রান্সভার্স অনুমতিের ধারণার আবিষ্কারের প্রাক-তারিখ করে। এই উত্তরের যুক্তি একটি historicতিহাসিক সময়রেখা থেকে নির্ভর করে যা বাস্তব বিশ্বের মতো কিছুই নয়, এবং এর অস্তিত্ব GENERIC_EXECUTEএবং এটি কী তা লক্ষ্য করতে ব্যর্থ হয়।
জেডিবিপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.