আমি কি কোনও ব্যক্তিগত ডিরেক্টরিতে কোনও পাবলিক ডিরেক্টরি তৈরি করতে পারি?


20

আমার 700 টি অনুমতি সহ সার্ভারে একটি ব্যক্তিগত ফোল্ডার / a / b আছে I / এ এর ​​মালিক মূল।

এখন আমাকে ডিরেক্টরি ব্যবহারের পুরো কর্তৃপক্ষ / এ / বি / সি খুলতে হবে।

আমি / a / b / c এর অনুমতিটি 77 777 এ পরিবর্তন করেছি তবে এটি অন্যের জন্য এখনও অ্যাক্সেসযোগ্য।


2
ডিরেক্টরি ট্র্যাভারসালকে (ট্র্যাভার্স / এ এবং / এ / বি তে) অনুমতি দেওয়ার জন্য আপনাকে 'এক্সিকিউট বিট' সেট করতে হবে, এটি আপনার সমস্যার সমাধান করতে পারে:chmod +x /a/b
এক্সটেনস

উত্তর:


34

আপনি পারেন। আপনাকে কেবল /a/bডিরেক্টরিতে এক্সিকিউটেবল বিট সেট করতে হবে । এটি কোনও কিছু দেখতে সক্ষম হতে বাধা দেবে b, তবে আপনি সরাসরি গেলে আপনি সব কিছু করতে পারেন a/b/c

% mkdir -p a/b/c
% chmod 711 a/b
% sudo chown root a/b
% ll a/b
  ls: cannot open directory a/b: Permission denied
% touch a/b/c/this.txt
% ls a/b/c
  this.txt

সাবধান হন যে অন্যরা এই বিষয়বস্তু তালিকাভুক্ত না করতে পারে /a/b, তবে তারা যদি ফাইলটির নাম অনুমান করে তবে তারা সেই ডিরেক্টরিতে ফাইলগুলি অ্যাক্সেস করতে পারে।

% echo hello | sudo tee a/b/f
% cat a/b/f
hello
% cat a/b/doesntexist
cat: a/b/doesntexist: No such file or directory

সুতরাং ডিরেক্টরিতে থাকা অন্য সমস্ত ফাইল / ডিরেক্টরিতে সঠিক অনুমতিগুলি (গোষ্ঠী / বিশ্ব নয়) বজায় রাখার বিষয়ে নিশ্চিত হন b, কারণ এটি এই সতর্কতা এড়াবে।


এক্সিকিউটেবল বিট সেট করার বিকল্প হিসাবে, আপনি অন্য কোনও জায়গায় থাকা / বি / সি-তে একটি হার্ড লিঙ্কও সরবরাহ করতে পারেন?
মুবি ডিস্ক

2
@ মোবিডিস্ক আপনি কোনও ডিরেক্টরিতে হার্ড লিঙ্ক করতে পারবেন না।
মাইকেল হ্যাম্পটন 17

এটি কাজ করবে না, কারণ যাই হোক না কেন, আপনাকে এখনও bলিঙ্কে পড়তে হবেc
স্টিভিয়েব

3
মনে রাখবেন এটির জন্য কয়েকটি গুরুত্বপূর্ণ ক্যাভেট রয়েছে। যদি কোনও ফাইলের a/bননজারো গ্রুপ / অন্যান্য অনুমতি থাকে এবং কোনও শত্রু তাদের নাম জানে বা অনুমান করতে পারে তবে বলেছে যে বিরোধীরা এই ফাইলগুলির সাথে যোগাযোগ করতে পারে।
কেভিন

সত্যিকার @ কেভিন, এর অধীনে bথাকা সমস্ত কিছুর জন্য পার্মস তৈরির পূর্বে এটিকে রক্ষা করার জন্য পার্সস থাকা উচিত cএবং তারপরে পার্থক্য bকেবলমাত্র মালিকের পক্ষে সুরক্ষিত হয় তা নিশ্চিত করার জন্য যখন অন্যান্য আইটেমগুলি পপুলেট করা হয় তখন প্রয়োজন হয়।
স্টিভিয়েব

9

এই অনুমতিগুলির সাথে, আপনি আপনার লক্ষ্যে পৌঁছাতে পারবেন না। ডিরেক্টরিতে cপৌঁছানোর জন্য, আপনাকে অবশ্যই অন্য সমস্ত ব্যবহারকারীর ডিরেক্টরিকে ট্র্যাভার্স করার অনুমতি দিতে হবে bযা সেই ডিরেক্টরিটির জন্য এক্সিকিউট করার অনুমতি দিয়ে করা হয়। সঙ্গে /a/bমোড 711 সেট করতে চান, আপনি অর্জন করতে পারেন আপনি যা চান তা যেহেতু আপনি ডিরেক্টরি ট্র্যাভেরসাল দেওয়া কিন্তু পড়া এবং লেখার আত্মত্যাগী করছে। তবে মনে রাখবেন যে অন্য ব্যবহারকারীরা ফাইল তালিকাভুক্ত করতে না /a/bপারলেও তারা নামটি অনুমান করে এবং ফাইলগুলিতে পর্যাপ্ত পরিমাণে অনুমতি থাকতে পারে তবে তারা অ্যাক্সেস করতে পারে।


3

যদি কোনও ব্যবহারকারী অ্যাক্সেস করতে না /a/bপারে তবে তারা এর অধীনে কোনও ফাইল অ্যাক্সেস করতে পারবেন না /a/b/c/a/b/cডিরেক্টরি ট্র্যাভারসাল বন্ধ হওয়া থেকে অনুমতিগুলি অপ্রাসঙ্গিক /a/b

আপনি যা চান তা হ'ল ডিরেক্টরিটি /a/bতালিকাভুক্ত হওয়া থেকে রক্ষা করা, তবে ব্যবহারকারীরা /a/bযদি কোনও ফাইলের নাম অনুমান করেন তবে ফাইলগুলি অ্যাক্সেস করা আপনার পক্ষে ঠিক আছে , তবে আপনি কার্যকর করতে পারবেন /a/bতবে পঠনযোগ্য নয়। কোনও ডিরেক্টরিতে, পঠন অনুমতি কেবল ডিরেক্টরি সামগ্রীর তালিকা নিয়ন্ত্রণ করে, অন্যদিকে কার্যকর করার অনুমতি সেই ডিরেক্টরিতে প্রবেশের প্রবেশাধিকার নিয়ন্ত্রণ করে।

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
 contents of /a/b/

আপনি অন্য ব্যবহারকারীদের অ্যাক্সেস ফাইল পাবে না চান তাহলে /a/bছাড়া /a/b/c, আপনি প্রকাশ করতে পারে /a/b/cঅন্য দৃশ্য মাধ্যমে মাধ্যমে একটি বাঁধাই করা মাউন্ট

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
 contents of /a/b/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.