আমি কীভাবে কোনও ফাইলকে সংশোধনযোগ্য নয়?


35

লগ ইন করার সময়, আমি নিম্নলিখিতগুলি করতে পারি:

mkdir foo
touch foo/bar
chmod 400 foo/bar 
chmod 500 foo

তারপরে আমি ভিম (হিসাবে নয় root) খুলতে পারি , সম্পাদনা করতে পারি bar, একটি জোর দিয়ে লিখতে পারি w!এবং ফাইলটি সংশোধিত হয়।

আমি কীভাবে অপারেটিং সিস্টেমকে কোনও ফাইল সংশোধন নিষিদ্ধ করতে পারি?

আপডেট 02 মার্চ 2017

  1. chmod 500 fooএকটি লাল হেরিং: কোনও ডিরেক্টরিতে লেখার অনুমতি কোনও ফাইলের বিষয়বস্তু সংশোধন করার ক্ষমতা নিয়ে কিছুই করতে পারে না - কেবল ফাইল তৈরি ও মুছার ক্ষমতা।

  2. chmod 400 foo/barআসলে ফাইলের বিষয়বস্তু পরিবর্তন হতে বাধা দেয়। তবে এটি কোনও ফাইলের অনুমতি পরিবর্তন হতে বাধা দেয় না - কোনও ফাইলের মালিক সর্বদা তার ফাইলের অনুমতিগুলি পরিবর্তন করতে পারেন (ধরে নিলে তারা ফাইলটি অ্যাক্সেস করতে পারে অর্থাৎ সমস্ত পূর্বপুরুষের ডিরেক্টরিতে অনুমতি কার্যকর করতে পারে)। প্রকৃতপক্ষে, স্ট্রেস (1) প্রকাশ করে যে ভিএম (7.4.576 দেবিয়ান জেসি) এটি করছে - ভিএম chmod (2) কে অস্থায়ীভাবে ফাইলের মালিকের জন্য লেখার অনুমতি যুক্ত করতে, ফাইলটি সংশোধন করে এবং chmod কল করে ( 2) আবার লেখার অনুমতি সরাতে। এই কারণেই chattr +iকাজ করে - শুধুমাত্র রুট কল করতে পারে chattr -i। তাত্ত্বিকভাবে, ভিম (বা যে কোনও প্রোগ্রাম) চ্যাটারের সাথে একই জিনিস করতে পারে যেমন এটি চিটমোডের সাথে অপরিবর্তনীয় ফাইলে যেমন রুট হিসাবে চালানো হয় তেমন করে।


3
আমি বিশ্বাস করি হুডের নীচে, vimআসলে অনুমতিগুলি পরিবর্তন করে এবং আবার এটি ফিরিয়ে দেওয়া হয়।
জর্দানম

আপনি কি হিসাবে চালাচ্ছেন নাroot ?
অ্যালভিন ওয়াং

অ্যালভিন, আমি এটি নন-রুট ব্যবহারকারী হিসাবে করি। আমি স্পষ্ট করতে পোস্ট সম্পাদনা করেছি।
ব্যবহারকারী 2141130

উত্তর:


49

আপনি লিনাক্সের বেশিরভাগ ফাইল সিস্টেমের সাথে "অপরিবর্তনীয়" বৈশিষ্ট্যটি সেট করতে পারেন।

chattr +i foo/bar

অপরিবর্তনীয় বৈশিষ্ট্য অপসারণ করতে আপনি এর -পরিবর্তে ব্যবহার করুন +:

chattr -i foo/bar

একটি ফাইলের বর্তমান বৈশিষ্ট্যগুলি দেখতে, আপনি lsattr ব্যবহার করতে পারেন:

lsattr foo/bar

Chattr (1) র manpage সমস্ত উপলব্ধ বৈশিষ্ট্য একটি বিবরণ প্রদান করে। এখানে বর্ণনার জন্য i:

   A  file with the `i' attribute cannot be modified: it cannot be deleted
   or renamed, no link can be created to this file  and  no  data  can  be
   written  to  the  file.  Only the superuser or a process possessing the
   CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

3
লিনাক্সে, সেই অপরিবর্তনীয় পতাকাটি কেবলমাত্র ফাইল এক্সটায় / 3/4 নয় (কমপক্ষে বিটিআরএফএস, এইচএফএসপ্লাস, জেফএস, নীলফস 2, এক্সএফএস, ওসিএফএস 2, ইউবিফ, জিএফএস 2, রিসফার্স এএফএসিটি কোডের মাধ্যমে একটি তাত্ক্ষণিক দৃষ্টিভঙ্গি থেকে পাওয়া যায়)
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস আমি দেখেছি chattrকমান্ডটি e2fsprogsআমার সিস্টেমে প্যাকেজের অংশ ছিল । সে কারণেই আমি উক্ত বিবৃতি দিয়েছি। আমি আপনার মন্তব্যের ভিত্তিতে উত্তর আপডেট করেছি।
জর্দানম

এটি সিমলিংকের পক্ষে কাজ করে না :-(। সমাধানটি দুর্দান্ত হবে, কারণ আমি এড়াতে চাই যে
সিমিলিংটি

অপরিবর্তনীয় একটি ইনোড পতাকা সঠিক, না একটি xattr? আইওসিটিএল পতাকাটি সুনির্দিষ্ট হতে হবে?
ytpillai

1

আপনি পারেন:

  1. ফাইলের মালিক rootবা একটি নকল তৈরি করা নতুন ব্যবহারকারীকে পরিবর্তন করুন
  2. সঠিক গ্রুপ রাখুন।
  3. chmod 440গোষ্ঠী অনুসারে (যা আপনি) পড়ার অনুমতি দেওয়ার জন্য ব্যবহার করুন ।

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


3
আপনি যদি পিতামহিত ডিরেক্টরিতে লিখতে পারেন তবে ভিম ফাইলটি মুছতে এবং একটি নতুন তৈরি করতে পারে (এবং এটি করার পরে তা হয় :w!)। উইম অস্থায়ীভাবে যদিও ডিরেক্টরিটির অনুমতিগুলি পরিবর্তন করতে যায় না। সুতরাং ডিরেক্টরিটি অ-লিখনযোগ্য রাখা নিরাপদ হওয়া উচিত।
স্টাফেন চেজেলাস

0

একটি সম্পূর্ণ ডিরেক্টরি গাছকে কেবল পঠনযোগ্য করে তুলতে:

cd <directory>
find ./ -print0 | sudo xargs -I {} -0 chattr +i {}

এটিকে আবার পঠনযোগ্য করে তুলতে, এতে পরিবর্তন +iকরুন -i

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