কেন লিনাক্স / পসিক্সের এলসিএইচড আছে তবে ল্যাচমড নয়?


11

দেখে মনে হচ্ছে লিনাক্স প্রতীকী লিঙ্কের (যেমন lchown) মালিককে পরিবর্তন করতে সমর্থন করে তবে একটি প্রতীকী লিঙ্কের মোড / অনুমতি পরিবর্তন (যেমন lchmod) সমর্থন করে না । আমি যতদূর দেখতে পাচ্ছি এটি পসিক্স অনুসারে। যাইহোক, আমি বুঝতে পারি না কেন একজন কেন এই দুটি অপারেশনগুলির মধ্যে একটির সমর্থন করবে তবে উভয়ই নয়। এর পিছনে অনুপ্রেরণা কী?


1
একটি সিমিলিংকের অনুমতি সর্বদা থাকে lrwxrwxrwx। এ chmodএখানে কোনও অর্থবোধ করে না। লিঙ্কটি অনুসরণ করা আপনাকে লক্ষ্যগুলির অনুমতিগুলিতে নিয়ে যায়।
অট--

2
@ott: লিনাক্সে, একটি সিমলিংকের অনুমতিগুলি সর্বদা আপনি ঠিকঠাকভাবে দিয়েছেন কারণ লিনাক্স সমর্থন করে না lchmod। তবে অন্যান্য ইউনিক্স-এর মতো ওএস এটি সমর্থন করে না (যেমন ম্যাক ওএস এক্স ), সুতরাং প্রশ্ন হল কেন লিনাক্স সমর্থন করে না কেন lchown
ফ্লোরিয়ান ব্রুকার

উত্তর:


9

লিনাক্স, বেশিরভাগ ইউনিক্স-মতো সিস্টেমের মতো (অ্যাপল ওএস / এক্স বিরল ব্যতিক্রমগুলির মধ্যে একটি), উদাহরণস্বরূপ যখন তাদের লক্ষ্যগুলি সমাধান করার বিষয়টি আসে তখন সিমলিঙ্কগুলিতে অনুমতিগুলি উপেক্ষা করে।

তবে অন্যান্য ফাইলগুলির মতো সিমলিঙ্কগুলির মালিকানা প্রাসঙ্গিক যখন tবিট সেট রয়েছে এমন ডিরেক্টরিতে তাদের এন্ট্রিগুলির নাম পরিবর্তন বা লিঙ্কমুক্ত করার অনুমতি আসে /tmp

এর মধ্যে কোনও ফাইল সিমলিংক বা নাম পরিবর্তন করতে সক্ষম হতে আপনাকে ফাইলের /tmpমালিক হতে হবে। এটি এক কারণ হতে পারে যে কেউ সিমলিংকের মালিকানা পরিবর্তন করতে চায় (এটির লিঙ্ক / নাম পরিবর্তন করার অনুমতি প্রদান বা সরিয়ে দিতে)।

$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed

$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted

এছাড়াও, মার্ক প্লটনিক তার এখন মুছে ফেলা উত্তরে যেমন উল্লেখ করেছেন , ব্যাকআপ এবং সংরক্ষণাগার অ্যাপ্লিকেশনগুলিকে lchown()তাদের মূল মালিকদের কাছে প্রতীক পুনরুদ্ধার করা দরকার । অন্য বিকল্পটি হ'ল সিমলিংক তৈরির আগে euid এবং egid স্যুইচ করা, তবে এটি কার্যকর হবে না এবং যে ডিরেক্টরিতে সিমলিংকটি বের করা হয়েছে তার ডান পরিচালনগুলিকে জটিল করে তুলবে না।


এটি আসল প্রেরণা কিনা তা আমি নিশ্চিত নই, তবে এটি নকশাটি কার্যকর হওয়ার কারণ দেয়। ধন্যবাদ!
ফ্লোরিয়ান ব্রুকার

0

পোস্টিক্সে কোনও lchmod () নেই তবে fchmodat () যা সিমলিংকের অনুমতি নির্ধারণ করতে দেয়। এটি এখনও মূল্যায়ন করার জন্য সিমলিংকের অনুমতি প্রয়োজন হয় না।


1
ওপি জানে যে lchmodপসিক্সের সাথে সামঞ্জস্য নয় । এই উত্তরটি কী যুক্ত করে যা ইতিমধ্যে প্রশ্নে নেই?
মুুরু

অপ্টটি জিজ্ঞাসা করেছিল যে কেবলমাত্র একটি ফাংশনই সমর্থনযোগ্য এবং আমি ব্যাখ্যা করেছিলাম যে কার্যত উভয়ই উপলব্ধ, কেবল উল্লিখিত নাম অনুসারে নয়।
schily

1
তা কেমন করে? স্ট্যান্ডার্ডটি বলে : কিছু বাস্তবায়ন প্রতীকী লিঙ্কগুলির মোড পরিবর্তন করতে পারে। এটি পসিক্স নির্দিষ্টকরণের ইন্টারফেসগুলির দ্বারা সমর্থিত নয়। এই জাতীয় সমর্থন সহ সিস্টেমগুলি lchmod () নামে একটি ইন্টারফেস সরবরাহ করে। এই জাতীয় বাস্তবায়ন সমর্থন করতে fchmodat () এর একটি পতাকা প্যারামিটার রয়েছে। এই সমস্ত বলে যে fchmodat এর জন্য একটি পতাকা রয়েছে যা বাস্তবায়নকে সিমলিংক পারমগুলি পরিবর্তন করতে দেয়। এটি অগত্যা পারে না।
মুুরু

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

@ শচিলি, ওএস / এক্স সিমলিঙ্কগুলিতে সম্মানের অনুমতি দেয়। সেখানে, যদি আপনার কাছে পড়ার অনুমতি না থাকে তবে আপনি তাদের লক্ষ্যগুলি সমাধান করতে পারবেন না।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.