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


8

আমি এমন /etc/network/interfacesকোনও ব্যবহারকারীর সাথে চিঠি লেখার চেষ্টা করছি যার মূল অধিকার নেই।

এটি লিখতে ইচ্ছুক হওয়ার কারণটি হ'ল কেবলমাত্র একটি কমান্ড লাইন সার্ভার চালানোর কারণে ব্যবহারকারীকে একটি স্ট্যাটিক আইপি সেট করার অনুমতি দেওয়া হবে। ব্যবহারকারীকে আমার কী অনুমতি দিতে হবে etc/sudoers?

আমি চাই না যে ব্যবহারকারীটির সম্পূর্ণ রুট অনুমতি হোক। এই ফাইলটি সম্পাদনা করার ক্ষমতা কেবল।

উত্তর:


25

ব্যবহারের পরিবর্তে sudo, কেবলমাত্র ফাইলটিতে একটি এসিএল সেট করুন:

$ ls -l /var/tmp/foo
-rw-rw---- 1 root root 4 Jul 31 15:26 /var/tmp/foo
$ sudo setfacl -m u:white:rw /var/tmp/foo
$ whoami
white
$ cat /var/tmp/foo
bar

এখন ফাইলটি 'রুট' এর মালিকানাধীন তবে ব্যবহারকারী 'সাদা' এটি পড়তে এবং লিখতে পারে। 'সাদা' ব্যবহারকারী এখন ফাইল সম্পাদনা করতে তার / তার প্রিয় সম্পাদক ব্যবহার করতে পারেন।


একটু বিভ্রান্ত। হয় /var/tmp/foo= /etc/network/interfaces? আপনি সেখানে যা বলতে চাইছেন তা সত্যই কখনও দেখেনি, আমি লিনাক্সে বেশ নতুন।
কিথ

এটি কেবল একটি ফাইল। আপনি যা চান ফাইলটি ব্যবহার করতে পারেন।
জেফ হোয়াইট

1
খুশী হলাম। আমি ভেবেছিলাম যে এসিএলগুলি কেবল অনুমতিগুলি সীমাবদ্ধ করতে এবং তাদের মঞ্জুরি দেওয়ার জন্য ব্যবহার করা যেতে পারে - এটি সত্য নয় তা জানতে পেরে চমৎকার!
রোমানো

মনে হয় না যে ডাব্লুএসএল এর অধীনে সমর্থিত:setfacl: /etc/logrotate.conf: Operation not supported
এমপেন

8

এমন একটি স্ক্রিপ্ট প্রস্তুত করুন যা আপনি চান সম্পাদনা করুন, উদাহরণস্বরূপ এমন একটি স্ক্রিপ্ট যা স্থির আইপি দিয়ে সঠিক ফাইলটি লিখবে (এই স্ক্রিপ্টে কী লিখতে হবে তা এই প্রশ্নোত্তরের বাইরে নয়)। এই স্ক্রিপ্ট কল করুন /root/set_static_ip। (1)

সম্পাদনা /etc/sudoers(2) ( visudoএটির চেয়ে ভাল, এটি বিচক্ষণতার জন্য পরীক্ষা করে, একটি অবৈধ sudoers ফাইল সহ একটি সিস্টেম পুনরুদ্ধার করা খুব কঠিন , এমনকি দূরবর্তী (3)) থেকে অসম্ভব , এবং যুক্ত করা

user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip 

এখন ব্যবহারকারী sudo /root/set_static_ip কোনও পাসওয়ার্ড জিজ্ঞাসা না করেই ব্যবহার করতে সক্ষম হবেন এবং স্ক্রিপ্টটি সমস্ত সুযোগ-সুবিধা সহ চলবে; অন্য কোনও আদেশের অনুমতি দেওয়া হবে না।

আপনি যদি চান যে ব্যবহারকারী কেবল কোনও ফাইলের পরিবর্তে তার যা কিছু চান, স্ক্রিপ্টটি সহজেই হতে পারে (এটি কল করুন /root/unsafe-overwrite-interface)

#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces 
exit 0

... এবং আপনি ব্যবহারকারীকে সম্পাদনা করতে /tmp/temp-iface.txtএবং তারপরে চালানোর কথা বলুন sudo /root/unsafe-overwrite-interface--- উপরে বর্ণিত হিসাবে এটি sudoers এ সক্ষম করে। অথবা আপনি ব্যবহারকারীকে একটি এসিএল তালিকায় যুক্ত করতে পারেন এবং নির্দিষ্ট ফাইলটিতে তাদের লেখার অনুমতি দিতে পারেন

কিন্তু লক্ষ্য করা যে আপনি নিরাপত্তার জন্য ফাইলের বিষয়বস্তু চেক করবেন না, ব্যাপক ধ্বংস হবে ঘটবে, হয় ইচ্ছাকৃত বা অনিচ্ছাকৃত।


পাদটীকা :

(1) এই লিপিটি যথাসম্ভব নিরাপদ থাকতে হবে। ইনপুট এবং আরও চেক করুন। এটি সম্পূর্ণ অনুমতি দিয়ে কার্যকর করা হবে।

(২) আধুনিক সুডো ইনস্টলেশনতে, আপনি /etc/sudoers.d/ডিরেক্টরিতে একটি ফাইল যুক্ত করতে পারেন যা আরও ভাল --- আপডেটগুলি টিকে থাকবে।

(3) আমি sudo -iযখন sudoers প্রক্রিয়াটি পরিবর্তন করি এবং ব্যাকআপ ব্যবহার করি তখন আমি সাধারণত একটি রুট সেশন খোলা ( ) সহ একটি টার্মিনাল রাখি।


এটির সাথে একমাত্র সমস্যা হ'ল চাহিদা অনুযায়ী স্থির আইপি সেটিংস পরিবর্তন করা দরকার। আপনি যে স্ক্রিপ্টটি পেয়েছেন তা সম্পর্কে আমার বোঝাপড়াটি মূলত /etc/network/interfacesযা যা হোক ফাইলটি পুনরায় লেখবে /root/set_static_ip। আপনি যদি কোনও স্ক্রিপ্ট তৈরি করতে না পারেন যা ব্যবহারকারীকে আইপি ঠিকানা, গেটওয়ে ইত্যাদির ইনপুট জিজ্ঞাসা করে ... এটি আমি যথেষ্ট তৈরি করি না।
কিথ

আপনি এমন একটি স্ক্রিপ্ট লিখতে পারেন যা পরামিতিগুলি গ্রহণ করে ... তবে হ্যাঁ, এটি সবচেয়ে নিরাপদ উপায়। আপনি যদি ব্যবহারকারীকে অন্ধভাবে ফাইল সম্পাদনা করতে দেন, যদি তারা কোনও ত্রুটি করে তবে কী হবে? আপনার সার্ভারের নাগালের বাইরে থাকতে পারেন ... সুতরাং স্ক্রিপ্টটির জন্য কেবল কোনওভাবে প্যারামিটারগুলি জিজ্ঞাসা করার প্রয়োজন নেই, তবে সেগুলি নিরাপদ কিনা তা খতিয়ে দেখার প্রয়োজন।
রোমান

3
সম্পর্কিত /etc/sudoers, এটা visudoনা sudoedit
saiarcot895

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