সুপার ব্যবহারকারী কেবল পঠনযোগ্য ফাইলগুলিতে লিখতে পারে?


11

আমি ফ্রিবিএসডি-তে আশ্চর্যজনক (আমার জন্য) অনুমতি আচরণে হোঁচট খেয়েছি। ধরা যাক আমি নন-রুট ব্যবহারকারী হিসাবে অপারেটিং করছি । আমি একটি ফাইল তৈরি করি, কেবলমাত্র পঠন-পাঠাতে তার অনুমতি সেট করি এবং তারপরে এটি লেখার চেষ্টা করি:

$ touch f
$ chmod 400 f
$ ls -l f
-r--------  1 user  wheel  f
$ echo a >> t
t: Permission denied.

এ পর্যন্ত সব ঠিকই. এখন আমি রুট হিসাবে একই কাজ এবং এটি ফাইলের মধ্যে লিখেছে:

# ls -l f2
-r--------  1 root  wheel  f2
# echo a >> f2
# echo $?
0

এটি কোনও বাগ বা উদ্দেশ্যমূলক আচরণ? আমি কী নিরাপদে ধরে নিতে পারি যে এটি কোনও ইউনিক্স এবং লিনাক্সে কাজ করবে?


যে কোনও ব্যবহারকারী এটি CAP_DAC_OVERRIDEকরতে পারেন। প্রায় সমস্ত লিনাক্স সিস্টেমে এর অর্থ রুট এটি করতে পারে তাই এটি ইচ্ছাকৃত। ফ্রিবিএসডি অংশের পক্ষে কথা বলতে পারব না তবে আমি ভাবতে পারি যে তাদের একই রকম সেটআপ রয়েছে।
ব্র্যাচলে

1
রুটকে সর্বদা একটি ফাইল লিখতে সক্ষম হওয়ার কারণটি হ'ল ট্র্যাডিশনাল ইউনিক্স ফাইল সিস্টেমে (ext4, zfs ইত্যাদি) ফাইল অনুমতি ফাইলের অংশ। সুতরাং যদি রুট কোনও ফাইলে লিখতে না পারে তবে কোনও ফাইলই কেবল পঠনযোগ্য ফাইলকে লেখার যোগ্য করতে chmodপারে না কারণ ফাইলটি লিখতে পারে না।
slebetman

1
@ স্লেবেটম্যান আপনার কাছে অনুমতিগুলি আপডেট করার জন্য কোনও ফাইলের লেখার অ্যাক্সেসের প্রয়োজন নেই। touch somefile; chmod 0000 somefile; chmod 0644 somefileএকটি সাধারণ ব্যবহারকারী হিসাবে চেষ্টা করুন।
ব্যবহারকারী 253751

@ ইমিবিস: এটি আপনার নিজের। রুটের নিজস্ব নয় এমন ফাইলগুলিতে অনুমতিগুলি পরিবর্তন করতে সক্ষম হওয়া দরকার
স্ল্যাবেটম্যান

@ স্লেবেটম্যান হ্যাঁ ... তবে আপনি যে ফাইলগুলিতে লিখতে পারবেন না সেগুলিতে অনুমতি পরিবর্তন করার কথা বলছিলেন, নিজের মালিকানাধীন ফাইলটিতে অনুমতি পরিবর্তন করার বিষয়ে নয়।
ব্যবহারকারী 253751

উত্তর:


13

rootএই পদ্ধতিতে অনুমতিগুলি ওভাররাইড করতে সক্ষম হওয়া স্বাভাবিক ।

আর একটি উদাহরণ rootপঠিত অ্যাক্সেস ছাড়াই একটি ফাইল পড়তে সক্ষম হচ্ছে:

$ echo hello > tst
$ chmod 0 tst
$ ls -l tst
---------- 1 sweh sweh 6 Aug 16 15:46 tst
$ cat tst
cat: tst: Permission denied
$ sudo cat tst
hello

কিছু সিস্টেমে অপরিবর্তনীয় ফাইলের ধারণা রয়েছে । যেমন ফ্রিবিএসডি তে:

# ls -l tst
-rw-r--r--  1 sweh  sweh  6 Aug 16 15:50 tst
# chflags simmutable tst
# echo there >> tst
tst: Operation not permitted.

এখন এমনকি rootফাইল লিখতে পারে না। তবে অবশ্যই পতাকাটি মুছে ফেলতেroot পারে :

# chflags nosimmutable tst
# echo there >> tst
# cat tst
hello
there

ফ্রিবিএসডি দিয়ে আপনি আরও একধাপ এগিয়ে যেতে পারেন এবং পতাকাটি সরাতে না দেওয়ার জন্য একটি কার্নেল পতাকা সেট করতে পারেন root:

# chflags simmutable tst
# sysctl kern.securelevel=1
kern.securelevel: -1 -> 1
# chflags nosimmutable tst
chflags: tst: Operation not permitted

এখন কেউ, এমনকি rootএই ফাইলটি পরিবর্তন করতে পারে না।

(নিরাপদমীমা কমিয়ে আনতে সিস্টেমটির পুনরায় বুট করা দরকার)।


কীভাবে কার্যকর সুরক্ষা পরিমাপ পুনরায় বুট করা দরকার? এছাড়াও, যদি রুটটি মূল হয় এবং কিছু করতে পারে তবে কেন রুট যা চায় তা করতে বাধা দেওয়ার চেষ্টা করে কেন বিরক্ত হয়?
বিড়াল

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

4
FWIW, লিনাক্সে অপরিবর্তনীয় বৈশিষ্ট্য chattr +i tstনির্ধারণ করে ।
Ruslan

3

হ্যাঁ, এটি খুব স্বাভাবিক। মূলের পড়ার / লেখার কোনও সীমা নেই (খুব অল্প ব্যতিক্রম সহ), কারণ তিনি মূল।

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