এক্স-অনুমতি ব্যতীত কোনও ডিরেক্টরিতে ফাইল অ্যাক্সেস করা হচ্ছে?


19

ডিরেক্টরিগুলির জন্য নির্বাহী অনুমতির অর্থ কী তা বোঝার জন্য আমি কিছুটা সমস্যায় পড়ছি। ডিরেক্টরিটি অন্তর্ভুক্ত থাকা জিনিসগুলি যদি ব্যবহারকারীকে নির্দিষ্ট অধিকার দেয় এমনকি যে ডিরেক্টরিতে ব্যবহারকারীর এক্স-রাইটস নেই তার যে কোনও কিছুতেই অ্যাক্সেসযোগ্য আমি কী এটি সঠিকভাবে বুঝতে পারি?

অথবা ব্যবহারকারীর ডিরেক্টরিতে থাকা জিনিসগুলিতে এখনও সরাসরি অ্যাক্সেস থাকতে পারে তবে কেবল ডিরেক্টরিতে রয়েছে তা তালিকাভুক্ত করতে পারে না?

(আমি যা বোঝার চেষ্টা করছি সেটি অন্য ব্যবহারকারীদের কাছ থেকে এক্স-অনুমতি না থাকলে ডিরেক্টরি থেকে অ্যাক্সেস করা কতটা নিরাপদ))

উত্তর:


20

ডিরেক্টরি জন্য এক্স বিট অনুসন্ধান বিট হিসাবেও ডাকা হয়। প্রকৃতপক্ষে, এটি আপনাকে ফোল্ডারের ভিতরে তালিকাভুক্ত ফাইলগুলির ইনোডগুলি অ্যাক্সেস করতে সক্ষম করে। সুতরাং আপনি যদি / home/user/foo/bar.txt অ্যাক্সেস করতে চান তবে আপনার অবশ্যই বার.txt এর প্রতিটি পূর্বপুরুষের অনুসন্ধানের অ্যাক্সেস থাকতে হবে

পৃষ্ঠা থেকে উদ্ধৃতি

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

কোনও ডিরেক্টরিতে এটি সিডি করতে সক্ষম হওয়ার জন্য নির্ধারিত অনুমতি প্রয়োজন (এটি কোনও ডিরেক্টরিকে আপনার বর্তমান ওয়ার্কিং ডিরেক্টরি তৈরি করতে)।

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

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

দয়া করে আরও পড়তে ফাইল অনুমতি ডিরেক্টরির অধ্যায়।

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

user@user-desktop:~/test$ ls -lart
total 12
drwxr-xr-x 49 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x  3 user user 4096 2011-11-30 22:37 .
drwxr-xr-x  2 user user 4096 2011-11-30 22:38 level1
user@user-desktop:~/test$ ls -lart level1/
total 12
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 .
-rw-r--r-- 1 user user    8 2011-11-30 22:38 file1
user@user-desktop:~/test$ stat level1
  File: `level1'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 808h/2056d  Inode: 95494       Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2011-11-30 22:46:16.576702105 +0530
Modify: 2011-11-30 22:38:12.386701913 +0530
Change: 2011-11-30 22:46:08.876702102 +0530
user@user-desktop:~/test$ stat level1/file1 
  File: `level1/file1'
  Size: 8           Blocks: 8          IO Block: 4096   regular file
Device: 808h/2056d  Inode: 60775       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2011-11-30 22:38:19.846701917 +0530
Modify: 2011-11-30 22:38:16.366701915 +0530
Change: 2011-11-30 22:38:16.366701915 +0530
user@user-desktop:~/test$ chmod -x level1
user@user-desktop:~/test$ stat level1/file1 
stat: cannot stat `level1/file1': Permission denied
user@user-desktop:~/test$ ls -lart level1/
ls: cannot access level1/..: Permission denied
ls: cannot access level1/.: Permission denied
ls: cannot access level1/file1: Permission denied
total 0
-????????? ? ? ? ?                ? file1
d????????? ? ? ? ?                ? ..
d????????? ? ? ? ?                ? .
user@user-desktop:~/test$ cat level1/file1
cat: level1/file1: Permission denied
user@user-desktop:~/test$ find . -inum 95494
./level1
user@user-desktop:~/test$ find . -inum 60775
user@user-desktop:~/test$ find ./level -inum 60775
find: `./level': No such file or directory
user@user-desktop:~/test$ find ./level1 -inum 60775

2
সুতরাং, যদি আমার কাছে অনুসন্ধান-অধিকার ছাড়াই ডিরেক্টরিতে কোনও ফাইল / ডিরেক্টরিতে ইনোড নম্বর থাকে, তবে এর অনুমতিগুলি যতক্ষণ অনুমতি দেয় আমি ততক্ষণ এটিকে অ্যাক্সেস করতে সক্ষম হব? (স্ট্যাট করতে না পেরে ইনোড নম্বর পাওয়া আমার পক্ষে মনে করা সত্ত্বেও শক্ত))
লিও

@ লীও আমি বিশ্বাস করি, আমাদের এটি করা সম্ভব হবে না। আমি উত্তর আপডেট করেছি। আপনার যদি ছোট সি স্টাব থাকে তবে দয়া করে এটি পরীক্ষা করে আমাদের জানান।
আমে জাহ

1
@ আমেজেহ, আসলে, আমি বাজি ধরতে পারি তুমি পারো। আপনি যখন কোনও অনুমতি সহ অন্য কোনও ডিরেক্টরিতে কোনও ফাইলকে হার্ড লিঙ্ক করেন তখন কী হয় তা বিবেচনা করুন। একই ইনোড, তবে আপনি এটি পড়তে পারেন। অন্য কথায়, পড়ার অনুমতিটি সিস্টেমটি যে সমস্ত ফোল্ডারটির সাথে ইনডটি থাকতে পারে এবং যেগুলি x বিট পেয়েছে তা দেখার জন্য নির্ভর করে না। দুর্দান্ত উত্তর যদিও। অনেক ধন্যবাদ.
ব্যবহারকারী 1477

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

5

যেহেতু আপনি ডিরেক্টরি জিজ্ঞাসা করছেন:

পড়ার অর্থ: সামগ্রীগুলি পড়ুন, অর্থাত্ সেগুলি তালিকাভুক্ত করুন।

লেখার অর্থ: পরিচালককে লিখুন। অর্থাত্ ফাইল বা উপ-ডিরেক্টরি তৈরি করা।

এক্সিকিউট করার অর্থ: সেই ডিরেক্টরিতে প্রবেশ করুন।

অনুমতিগুলি পড়ুন এবং সম্পাদন করুন ডিরেক্টরিগুলির জন্য কিছুটা জটিল হতে পারে।

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

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


2
আপনার যদি পড়ার অনুমতি রয়েছে তবে কার্যকর না হলে আপনি ডিরেক্টরিটির বিষয়বস্তু তালিকাভুক্ত (এলএস) করতে পারেন তবে এতে থাকা ফাইলগুলিতে (বিড়াল) অ্যাক্সেস করতে পারবেন না। আপনার যদি অনুমতি কার্যকর করে তবে পড়া না থাকলে এবং আপনি যে ফাইলগুলির অ্যাক্সেস করতে পারেন (বিড়াল) তার নামগুলি জানেন।
ড্যাশ 17291

2

ডিরেক্টরিতে নির্বাহের অনুমতি অর্থ:

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

xআপনার ডিরেক্টরিতে যদি অধিকার না থাকে তবে আপনি পারবেন না:

  • ডিরেক্টরিতে প্রবেশ করুন (যেমন cd:)
  • এই ডিরেক্টরিতে কোনও ফাইল অ্যাক্সেস করা যায় না (আপনি নামটি জানলেও)।

উদাহরণ:

$ ls -ld testdir
drw------- 2 xxxxxx xxxxxx 14 2011-11-29 19:38 testdir

$ cd testdir
bash: cd: testdir: Permission denied

$ cat testdir/a
cat: testdir/a: Permission denied

$ chmod 700 testdir
$ cat testdir/a
Some text.

বিষয়টিতে ভাল পরিচয়ের জন্য লিনাক্স ফাইল অনুমতি কনফিউশন পিটি 2 পড়ুন ।

xঅনুমতিটি কেবলমাত্র সেই ডিরেক্টরিটির ফাইলগুলির নাম অ্যাক্সেস করা থেকে বিরত রাখে বলে মনে হয় না ।

উদাহরণ:

$ ls -ld testdir
drw------- 2 xxxxxx xxxxxx 14 2011-11-29 19:38 testdir

$ ls testdir
ls: cannot access testdir/a: Permission denied
ls: cannot access testdir/b: Permission denied
a  b
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.