হার্ড-লিঙ্ক তৈরি - অনুমতি?


17

হার্ড-লিঙ্ক তৈরিতে কোন অনুমতিগুলি প্রভাবিত করে? ফাইল মালিকানা নিজেই কি গুরুত্বপূর্ণ?


মনে করুন ব্যবহারকারী কোনও ডিরেক্টরিতে aliceফাইলের একটি হার্ড লিঙ্ক তৈরি করতে চান ।target.txttarget-dir

  • কোনটি অনুমতি নেই aliceউভয় দরকার target.txtএবং target-dir?
  • যদি target.txtব্যবহারকারী মালিকানাধীন হয় billএবং target-dirব্যবহারকারী মালিকানাধীন হয় chad, এটা কিছু পরিবর্তন করে?

আমি এই পরিস্থিতিতে একটি ext4ফাইল সিস্টেমে নিম্নলিখিত ফোল্ডার / ফাইল কাঠামো তৈরি অনুকরণ করার চেষ্টা করেছি :

#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct  1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct  1 11:40 target-dir

source-dir:
-r--r--r-- 1 bill bill 0 Oct  1 11:29 target.txt

target-dir:
-rw-rw-r-- 1 alice alice 0 Oct  1 11:40 dummy

এতে aliceকোনও সফট-লিঙ্ক তৈরি করতে পারার পরে target.txt, সে হার্ড লিঙ্ক তৈরি করতে পারে না:

#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted

যদি aliceমালিকানা থাকে target.txtএবং কোনও অনুমতি পরিবর্তন না হয় তবে হার্ড-লিঙ্কটি সফল হয়। আমি এখানে কি মিস করছি?


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

না এটি কোনও কাজের জন্য নয়। আমি এই সঠিক দৃশ্যের মুখোমুখি হয়েছি এবং কিছু অনুমানও করেছি, তবে আমি মনে করি তাত্ত্বিক দিক থেকে জিজ্ঞাসা করা ভাল হবে be আমার ক্ষেত্রে আমি নির্ধারিত অনুমতি target.txttarget-dirঅনুমতি ছাড়াই হার্ড-লিঙ্কটি তৈরি করতে অক্ষম , যতক্ষণ না আমি sudoরুট।
gcscaglia

হার্ড লিঙ্কগুলি একই মালিকানা এবং অনুমতিগুলি ভাগ করে, তাই এটি মূল ফাইলটি অ্যাক্সেস করার সমান।
টেপিক

@teppic আমার কঠিন কঠিন লিঙ্ক তৈরি করেছেন অ্যাক্সেস করছে না, যেমন এটি হার্ড-লিঙ্ক তৈরি করছে alice.আমি উভয় মূল ফাইল এবং (সঙ্গে তৈরি হওয়া কঠিন-লিঙ্ক অ্যাক্সেস করতে পারেন sudo), কিন্তু আমি যত লিংক তৈরি করতে পারবেন না ব্যবহারকারী aliceআমরা সবাই এই অনুমতি সম্মত সত্ত্বেও তার জন্য যথেষ্ট হওয়া উচিত।
gcscaglia

উত্তর:


19

হার্ড-লিঙ্ক তৈরি করতে সমস্ত ক্ষেত্রে অনুমতি aliceপ্রয়োজন হবে । প্রয়োজনীয় অনুমতিগুলি বিভিন্ন হতে পারে:write+executetarget-dirtarget.txt

  • fs.protected_hardlinks = 1তারপরে যদি aliceহয় তবে এর মালিকানা প্রয়োজন target.txtবা এর উপর কমপক্ষে read+writeঅনুমতি।
  • fs.protected_hardlinks = 0তারপরে যদি কোনও সেট অনুমতি দেয়; এমনকি 000 ঠিক আছে।

অনুরূপ প্রশ্নের এই উত্তরটিতে এই প্রশ্নের উত্তর দেওয়ার জন্য তথ্যগুলির অনুপস্থিত অংশ ছিল।

থেকে http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [জোর খনি]:

Hardlinks:

সিস্টেম ফাইলগুলির মতো একই পার্টিশনে ব্যবহারকারী-লিখনযোগ্য ডিরেক্টরি রয়েছে এমন সিস্টেমে, সুরক্ষার সমস্যার একটি দীর্ঘস্থায়ী শ্রেণি হ'ল হার্ডলিঙ্ক-ভিত্তিক-চেক-সময়-ব্যবহারের জাতি, যা সাধারণত বিশ্ব-লিখনযোগ্য ডিরেক্টরিতে দেখা যায় Like / tmp এই ত্রুটিটি ব্যবহারের সাধারণ পদ্ধতি হ'ল একটি প্রদত্ত হার্ডলিঙ্ক অনুসরণ করার সময় বিশেষাধিকারের সীমানা অতিক্রম করা (যেমন কোনও রুট প্রক্রিয়া অন্য ব্যবহারকারী দ্বারা তৈরি একটি হার্ডলিঙ্ক অনুসরণ করে)। অতিরিক্তভাবে, একটি সমস্যা উপস্থিত রয়েছে যেখানে ব্যবহারকারীরা একটি সম্ভাব্য দুর্বল সেটিউড / সেটজিড ফাইলটিকে "পিন" করতে পারেন যাতে কোনও প্রশাসক আসলে কোনও সিস্টেমকে পুরোপুরি আপগ্রেড না করে।

সমাধানটি হ'ল হার্ডলিঙ্কগুলি কেবল তখনই তৈরি করার অনুমতি দেওয়া হয় যখন ব্যবহারকারী ইতিমধ্যে বিদ্যমান ফাইলের মালিক, বা যদি তারা ইতিমধ্যে বিদ্যমান ফাইলটিতে পঠন / লেখার অ্যাক্সেস পেয়ে থাকে


ধন্যবাদ! এটিই আমি ডেবিয়ান 9 এ এক দিনের জন্য লড়াই করে যাচ্ছি!
আর্দা

আমার কাছে ফাইলটিতে ডির এবং ডাব্লু পার্মস থাকা সত্ত্বেও কেন আমি "অপারেশন অনুমোদিত নয়" পাব?
মাইকেল

1

aliceকমপক্ষে পড়ার অনুমতি প্রয়োজন target.txtএবং লিখতে + চালানোর অনুমতি চালু করুন target-dir

এখন, অনুমতি কাঠামোটি তিনগুণ পৃথক পৃথক সেট হিসাবে কাজ করে:

  1. ব্যবহারকারীর অনুমতি: নোডের মালিক এমন ব্যবহারকারীর জন্য আবেদন করুন ।
  2. গোষ্ঠী অনুমতি: নোডের মালিক যে গোষ্ঠীর সাথে সম্পর্কিত কোনও ব্যবহারকারীর জন্য আবেদন করুন ।
  3. অন্যের অনুমতি: নোডের মালিক নয় এমন অন্য কোনও ব্যবহারকারী / গোষ্ঠীতে প্রয়োগ করুন ।

অতএব, মালিকানার প্রশ্নটি কেবলমাত্র যার মধ্যে প্রয়োজনীয় অনুমতিগুলির জন্য প্রয়োজনীয় অনুমতিগুলি সেট রয়েছে সেগুলিকে প্রভাবিত করে alice:

  • যদি aliceমালিক ব্যবহারকারী হয় তবে প্রয়োজনীয় অনুমতিগুলি অবশ্যই "ব্যবহারকারী" অংশে থাকতে হবে।
  • যদি aliceএটির মালিকানাধীন গোষ্ঠীর অংশ হয় তবে প্রয়োজনীয় অনুমতিগুলি "গ্রুপ" অংশে থাকতে হবে।
  • যদি aliceএটির মালিকানা না থাকে এবং তার মালিকানাধীন গোষ্ঠীর অংশ না হয়, প্রয়োজনীয় অনুমতিগুলি অবশ্যই "অন্যান্য" অংশে থাকতে হবে।

আমিও তাই ভেবেছি। তবে আমার পরিস্থিতিতে target.txt৪৪৪ টি অনুমতি রয়েছে এবং target-dir77 777 টি অনুমতি রয়েছে তবে আমি হার্ড-লিঙ্ক তৈরি করতে পারিনি যতক্ষণ না আমি রুট হিসাবে এটি না করি বা আমার সাথে সংযুক্ত ফাইলটির মালিক না হয়। অদ্ভুতভাবে যথেষ্ট, একটি নরম লিঙ্ক আপনার বর্ণনা অনুসারে কাজ করবে।
gcscaglia

সেই তথ্যটি নিজেই প্রশ্নটিতে থাকতে দরকারী, আমি আপনাকে আপডেট করার পরামর্শ দিই। অদ্ভুতভাবে যথেষ্ট আমি এর আগে এটি ভাবিনি ... তবে আপনি যে ফাইল সিস্টেমটি কাজ করছেন সেখানে কি ইউনিক্সের মতো মালিকানা / অনুমতিগুলি সমর্থন করবেন?
ডেভ_ালাকারিন

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