মালিককে ফাইল তৈরি এবং পড়তে অনুমতি দিন, তবে সংশোধন বা মুছবে না


17

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

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

একেবারে পরিষ্কার হয়ে উঠতে, আমি নিম্নলিখিতগুলি চাই:

  • প্রতিধ্বনি হ্যালো> পরীক্ষা # সফল হয়, কারণ পরীক্ষার অস্তিত্ব নেই, এবং সৃষ্টি অনুমোদিত
  • প্রতিধ্বনি হ্যালো >> টেস্ট # অ্যাডেন্ডিং অনুমোদিত কিনা তা নির্ভর করে সফল বা ব্যর্থ হতে পারে
  • ইকো হ্যালো 2> পরীক্ষা # ব্যর্থ হয়, কারণ পরীক্ষা ইতিমধ্যে বিদ্যমান, এবং পরিবর্তনের অনুমতি নেই not
  • বিড়াল পরীক্ষা # সফল হয়, কারণ পাঠ্য অনুমোদিত
  • আরএম পরীক্ষা # ব্যর্থ হয়, কারণ মোছার অনুমতি নেই

আপনি যদি ভাবছেন যে আমি কেন এটি করতে চাই, তবে এটি একটি ডুপ্ল্যাটি ব্যাকআপ সিস্টেমকে র্যানসমওয়ারের বিরুদ্ধে প্রতিরোধী করে তুলবে।


1
ফাইলগুলি সর্বদা খালি তৈরি করা হয়। আপনি যখন করেন echo > test, শেলটি একটি করে open("test", O_WRONLY|O_CREAT|O_TRUNC)যা ফাইল তৈরি করে এবং অনুরোধ echoকরে যাতে লিখিত সামগ্রীটি এটি পরিবর্তন করে। এখন আপনি কেবল প্রথম উন্মুক্ত (ডাব্লুআর) সফল হতে পারবেন।
স্টাফেন চেজেলাস

উত্তর:


16

আপনি যেমন ব্যবহার করতে bindfsপারেন:

$ ls -ld dir
drwxr-xr-t 2 stephane stephane 4096 Aug 12 12:28 dir/

এই ডিরেক্টরিটি স্টেফেনের মালিকানাধীন, গ্রুপ স্টেফেনের (স্টেফেনের একমাত্র সদস্য)। এছাড়াও এটি নোট করুন tযা ব্যবহারকারীদের নিজস্ব নয় এমন এন্ট্রিগুলির নাম পরিবর্তন করতে বা সরিয়ে দেওয়ার থেকে বাধা দেয়।

$ sudo bindfs -u root -p u=rwD,g=r,dg=rwx,o=rD dir dir

আমরা bindfs dirফাইলস এবং ডিরেক্টরিগুলির জন্য স্থির মালিকানা এবং অনুমতি নিয়েই শেষ করেছি। সমস্ত ফাইল মালিকানাধীন প্রদর্শিতroot (যদিও প্রকৃত ডিরেক্টরিতে তারা এখনও স্টেফেনের মালিকানাধীন রয়েছে)।

ডিরেক্টরিগুলি drwxrwxr-x root stephaneঅন্যান্য ধরণের ফাইলগুলিতে অনুমতি পায় -rw-r--r-- root stephane

$ ls -ld dir
drwxrwxr-t   2 root     stephane   4096 Aug 12 12:28 dir

ডিরেক্টরিটি লেখার যোগ্য বলে এখন একটি ফাইল তৈরি করা কাজ করে:

$ echo test > dir/file
$ ls -ld dir/file
-rw-r--r-- 1 root stephane 5 Aug 12 12:29 dir/file

তবে সেই ফাইলটিতে দ্বিতীয় রচনা open() করা সম্ভব নয় কারণ আমাদের এতে অনুমতি নেই:

$ echo test > dir/file
zsh: permission denied: dir/file

(দ্রষ্টব্য যে সেখানে সংযোজন অনুমোদিত নয় (আপনার প্রাথমিক প্রয়োজনীয়তার অংশ হিসাবে নয়))।

একটি সীমাবদ্ধতা: আপনি বিটের dirকারণে এন্ট্রিগুলি সরিয়ে বা পুনরায় নামকরণ করতে পারবেন না t, আপনি যে নতুন ডিরেক্টরি সেখানে তৈরি করবেন তাতে tবিট থাকবে না , সুতরাং আপনি সেখানে প্রবেশাধিকারীর নাম পরিবর্তন করতে বা মুছতে সক্ষম হবেন।


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

4

chattr +aবিকল্পটি কেবল যোগ করার অনুমতি দেবে will ফাইলগুলি সেভাবে পরিবর্তন করা যেতে পারে তবে কেবল তাদের সাথে (অর্থাত্ লাইন যুক্ত করা)। আপনি বিদ্যমান ফাইলগুলি মুছতে পারবেন না, তবে নতুন ফাইল তৈরি করতে পারবেন। এটি আপনার প্রয়োজন মাপসই হতে পারে:

sudo chattr -R +a /dir/to/apply/to

থেকে man chattr

`A 'এ্যাট্রিবিউট সেট সহ একটি ফাইল কেবল লেখার জন্য অ্যাপেন্ড মোডে খোলা যেতে পারে। কেবল সুপারইজার বা CAP_LINUX_IMMUTABLE সক্ষমতা সম্বলিত একটি প্রক্রিয়া এই বৈশিষ্ট্যটি সেট বা সাফ করতে পারে।

(নোট করুন এটি ডিরেক্টরিতেও প্রযোজ্য)

সুতরাং আপনার তালিকা দেখতে হবে:

echo hello > test # succeeds, because test doesn't exist, and creation is allowed
echo hello2 > test # fails, because test already exists, and overwriting is not allowed
echo hello3 >> test # succeeds, because appending is allowed
cat test # succeeds, because reads are allowed
rm test # fails, because delete is not allowed

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

ডিরেক্টরিতে যদি বৈশিষ্ট্যটি থাকে, বৈশিষ্ট্যগুলি সুস্পষ্টভাবে সেট না করেও ফাইলগুলি সেই অনুযায়ী আচরণ করবে। সমস্যাটি নতুন সাবডিয়ারগুলিতে ফাইল। উদাহরণস্বরূপ dir1 হ'ল chattr +aআমি তখন একটি ফাইল তৈরি করতে পারি, এটি অপসারণের অনুমতি দেওয়া হয় না, সংযোজন করতে পারি। আমি যদি dir1 / dir2 তৈরি করি তবে আমি দয়া করে IN dir2 হিসাবে করতে পারি
ফিক্সিম্যান

1
দুর্ভাগ্যক্রমে নয়: dpaste.com/042XQ7X
paj28

আহ, দুঃখিত - আমি আগে একটি ভুল পরীক্ষা করেছি
ফিক্সিম্যান

@ পাজ 28 আপনার লিঙ্কটি নষ্ট হয়েছে :-(
এমজেগার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.