কেন সিস্টেমটিতে /etc/sudoers.d আছে? আমি কীভাবে এটি সম্পাদনা করব?


48

শেষবার, আমি এগুলির (/ ইত্যাদি / sudoers) ঝুঁকি সম্পর্কে জিজ্ঞাসা করেছি:

    user_name ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf
    %group_name ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf

আমি যখন এই সমস্যাটি নিয়ে ভাবছিলাম তখন আমি /etc/sudoers.d ডিরেক্টরিটি পেয়েছি । ডিরেক্টরিতে থাকা ফাইলগুলির / etc / sudoers এর সাথে একই রকম ফাংশন থাকা উচিত (উপরের স্ক্রিপ্টগুলি এখনও /etc/sudoers.d তে সমস্যাযুক্ত) এবং তবে একটি নিবন্ধ বলেছে যে ডিরেক্টরিটি আমাদের ব্যবহার করা উচিত নয় কারণ আমরা visudoফাইলগুলি সম্পাদনা করতে পারি না এটা। এটি হ'ল আমরা sudoডিরেক্টরিতে কোনও ভুল করলে ব্যবহারের অধিকারটি হারাব ।

যদি এটি সত্য হয় তবে আমাদের /etc/sudoers.d কেন আছে ? অথবা /etc/sudoers.d এ ফাইল সম্পাদনা করার জন্য আমাদের কি ভাল উপায় আছে ?

উত্তর:


45

/etc/sudoers.dআপনি যদি সিস্টেম আপগ্রেড করেন তবে ফাইলগুলিতে করা পরিবর্তনগুলি ঠিক আছে । সিস্টেমটি আপগ্রেড করা হলে এটি ব্যবহারকারীর লকআউটগুলি প্রতিরোধ করতে পারে। উবুন্টু এই আচরণটি পছন্দ করেন। অন্যান্য বিতরণগুলিও এই বিন্যাসটি ব্যবহার করছে।

এটি আমার অভিজ্ঞতা হয়েছে যে এই ডিরেক্টরিতে ফাইলগুলির নিয়মগুলি এর চেয়ে লঘু /etc/sudoers। এটি অন্তর্ভুক্ত করেছে:

  • ফাইলের ভুলগুলি sudoব্যর্থ হওয়ার কারণ হয়নি । তবে, ফাইলটি উপেক্ষা করা হয়েছিল।
  • অনুমতি বিধি কম কঠোর প্রদর্শিত। এটি প্রয়োগযোগ্য গোষ্ঠী বা অন্যান্যটিকে ফাইলটি পড়তে দেয়। আমি বিশ্বাস করি না যে এটি সম্ভব হয়েছিল /etc/sudoersrootসুরক্ষা বজায় রাখতে লেখার অনুমতিগুলি সীমাবদ্ধ করতে হবে। সুডোর বর্তমান উবুন্টু সংস্করণটি গ্রুপ বা অন্যের জন্য পড়ার অনুমতিগুলিকে মঞ্জুরি দেয়। (এই ক্ষমতাটি সুড অ্যাক্সেসকে মূল অ্যাক্সেসের প্রয়োজন ছাড়াই অডিট করার অনুমতি দেয়।)

visudoকমান্ড শুধুমাত্র ডিফল্ট /etc/sudoers। এটি -fবিকল্পটির মাধ্যমে আপনার নির্দিষ্ট করা কোনও ফাইল সম্পাদনা ও যাচাই করবে । আমি এই ক্ষমতাটি ফাইল সম্পাদনা করতে ব্যবহার করি যা স্বয়ংক্রিয়ভাবে /etc/sudoersবা হিসাবে ইনস্টল হবে /etc/sudoders.d। তবে অন্যান্য ফাইল থেকে সংজ্ঞা পাওয়া যাবে না। ফাইলটি স্বাধীন করা ভাল।

একা থাকা ফাইল রাখার sudoক্ষমতা কোনও অ্যাপ্লিকেশনের পক্ষে ইনস্টলেশনের সক্ষমতা সক্ষম করে এবং আন-ইনস্টল করা অবস্থায় এগুলি সরিয়ে ফেলা সহজ করে তোলে । অটোমেটেড কনফিগারেশন সরঞ্জামগুলিও এই ক্ষমতাটি ব্যবহার করতে পারে।

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


1
আপনি উল্লেখ করেছেন দুটি sudoers.d বৈশিষ্ট্য সত্যিই গুরুত্বপূর্ণ এবং সহায়ক বলে মনে হচ্ছে। ধন্যবাদ!
এওব

আমার উত্তর এবং সতর্কতা দেখুন কেন সেগুলি আসলে sudoers.d এর বৈশিষ্ট্য নয়।
ড্রাগন 788

1
'ফাইলের ভুলগুলি sudoব্যর্থ হওয়ার কারণ হয়নি' বিবৃতিটির সাথে দৃ disag়ভাবে একমত নন । আমি /etc/sudoers.d থেকে একটি ফাইলে ভুল সিনট্যাক্স সহ আরএইচইএলে সুডো ভেঙেছি। এটি পুনরুদ্ধার করতে উল্লেখযোগ্য প্রচেষ্টা নিয়েছে এবং আমি মনে করি যে visudo -fএই ফাইলগুলি সম্পাদনার জন্য সর্বদা ব্যবহার করা উচিত ।
79E09796

@ 79E09796 আমি অন্যান্য ফাইলগুলিতে বিধি দ্বারা সমস্যা সৃষ্টি না করে /etc/sudoers.d তে ফাইলগুলি ভেঙে ফেলেছি। YMMV। আপনি যদি সিস্টেমে প্রবেশের জন্য sudo কনফিগারেশনটি ভাঙ্গেন তবে আপনার সমস্যা হবে। আপনার যদি সিস্টেমটি পুনরায় বুট করার অ্যাক্সেস থাকে তবে পুনরুদ্ধার মোডে রিবুট করা এবং ফাইলটি ঠিক করা তুলনামূলকভাবে সহজ। আমি সম্মত হই যে সম্পাদনা করতে ভিসোডো ব্যবহার করা ভাল, বা কমপক্ষে sudo কনফিগারেশন ফাইলগুলিতে পরিবর্তনগুলি যাচাই করা ভাল best
বিলথোর

62

হ্যাঁ, আপনি visudoএই ফাইলগুলি সম্পাদনা করতে ব্যবহার করতে পারেন । আপনাকে যা করতে হবে তা হ'ল -fবিকল্পটির সাহায্যে আপনি যে ফাইলটি সম্পাদনা করতে চান তার নাম নির্দিষ্ট করে । উদাহরণ স্বরূপ:

visudo -f /etc/sudoers.d/somefilename

বা, যদি প্রয়োজন হয়:

sudo visudo -f /etc/sudoers.d/somefilename

নথিপত্র

থেকে man visudo:

-f sudoers
বিকল্প এবং sudoers ফাইলের অবস্থান নির্দিষ্ট করুন। এই বিকল্পের সাহায্যে ভিজুডো ডিফল্ট, / ইত্যাদি / sudoers এর পরিবর্তে আপনার পছন্দের sudoers ফাইল সম্পাদনা করবে (বা পরীক্ষা করবে)। ব্যবহৃত লক ফাইলটি ".tmp" এর সাথে যুক্ত হওয়া নির্দিষ্ট সূডার ফাইল। কেবলমাত্র চেক-মোডে, -f এর আর্গুমেন্ট "-" হতে পারে, এটি সূচিত করে যে sudoers স্ট্যান্ডার্ড ইনপুট থেকে পঠিত হবে।

সংক্ষেপে:

  1. সিনট্যাক্স: উভয় visudoএবং visudo -f একই সিনট্যাক্স চেকিং করান

  2. অনুমতি / মালিকানা: বৃহত সিস্টেমগুলির প্রশাসনে সহায়তা করার জন্য একটি বৈশিষ্ট্য হিসাবে , অধীন সম্পাদিত ফাইলগুলি visudo -fমালিকানা বা অনুমতিগুলির জন্য পরীক্ষা করা হয় না: এটি অফলাইনে বা পুনর্বিবেশন নিয়ন্ত্রণ ব্যবস্থার অংশ হিসাবে কোনও ফাইলের সিনট্যাক্স চেক করার অনুমতি দেয়।

কেন ব্যবহার /etc/sudoers.d/

সাধারণত /etc/sudoersআপনার বিতরণের প্যাকেজ ম্যানেজারের নিয়ন্ত্রণে থাকে। যদি আপনি সেই ফাইলটিতে পরিবর্তন করেছেন এবং প্যাকেজ পরিচালক এটি আপগ্রেড করতে চান, আপনাকে নিজেই পরিবর্তনগুলি পরীক্ষা করতে হবে এবং সেগুলি কীভাবে নতুন সংস্করণে একীভূত করা হয়েছে তা অনুমোদন করতে হবে। /etc/sudoers.d/ডিরেক্টরিতে কোনও ফাইলে আপনার স্থানীয় পরিবর্তনগুলি স্থাপন করে আপনি এই ম্যানুয়াল পদক্ষেপটি এড়িয়ে যান এবং আপগ্রেডগুলি স্বয়ংক্রিয়ভাবে এগিয়ে যেতে পারে।

কখন কোন sudoফাইলকে উপেক্ষা করবেন /etc/sudoers?

যদি আপনার /etc/sudoersফাইলটিতে লাইন থাকে:

#includedir /etc/sudoers.d

তারপরে sudoডিরেক্টরিতে ফাইলগুলি পড়বে /etc/sudoers.d

ব্যতিক্রমগুলি হ'ল:

  1. ফাইলগুলির নাম যার শেষ হয় ~
  2. ফাইলগুলির নামগুলিতে একটি .অক্ষর থাকে

এটি (ক) প্যাকেজ পরিচালকদের সুবিধার জন্য এবং এছাড়াও (খ) যাতে সম্পাদকদের থেকে ব্যাকআপ ফাইলগুলি উপেক্ষা করা হয় done


ধন্যবাদ, তবে আমার একটা সন্দেহ আছে কি visudo -fনিরাপদ?
এওব

5
হ্যাঁ, visudo -fসাধারণের মতো নিরাপদ ফ্যাশনে সম্পাদনাগুলি visudo। এজন্যই আমাদের রয়েছে visudoএবং কেন এটি -fবিকল্প সরবরাহ করে ।
1024

এটি ব্যবহার করার সময় অনুমতিগুলি কীভাবে উপেক্ষা করা হবে সে সম্পর্কে দুর্দান্ত দ্রষ্টব্য, -fএটির দ্বিগুণ পরীক্ষা না করেই কে /etc/sudoers.d/ এ অনুলিপি করে এমন কোনও বাইট করতে পারে।
ড্রাগন 788

1
আপনাকে ব্যতিক্রম বিভাগের জন্য ধন্যবাদ। আমি আমার ফাইলটির মতো কিছু নাম রেখেছি /etc/sudoers.d/mysudorules.sudoএবং আমার উত্তরটি পড়তে পারিনি কারণ আপনার উত্তরটি পড়ার আগে কেন অভ্যন্তরীণ নিয়মগুলি প্রয়োগ করা হয়নি।
জারোথ

1
ব্যতিক্রম উল্লেখ করার জন্য আপনাকে ধন্যবাদ। আমার ফাইলটি /sudoers.d/mysite.co.ukকাজ করছে না এবং এর নামকরণের পরে mysiteএটি কাজ করে! :)
J86

20

আমাদের /etc/sudoers.d কেন আছে?

কারণ স্বয়ংক্রিয় সরঞ্জামগুলির জন্য (যেমন শেফ বা পুতুল) স্বতন্ত্র ফাইলগুলিকে এই ডিরেক্টরিতে ফেলে রাখা সহজ, পরিবর্তিত পরিবর্তে /etc/sudoers, যা ভঙ্গুর হতে পারে।

ফাইলগুলি /etc/sudoers.d(কার্যকরভাবে) একত্রিত হয়। আপনি এই প্যাটার্নের আরও বেশ কয়েকটি উদাহরণ দেখতে পাবেন /etc, যেমন /etc/cron.dএবং /etc/logrotate.d


আমি জানি না অন্যান্য অনুরূপ ডিরেক্টরি আছে। ধন্যবাদ.
এওব

14

visudo -fকিছু উত্তরে উল্লিখিত হিসাবে ব্যবহারের আরেকটি সুবিধা হ'ল একটি সম্পর্কিত বিকল্প রয়েছে -cবা --checkএটি যাচাই করে আপনার কোনও sudoers.d ফাইল বা sudoers.d রাখতে চাইলে অন্য কোনও ফাইলের অবৈধ তথ্য নেই। স্বয়ংক্রিয় সরঞ্জামগুলির সাথে উল্লিখিত ক্ষেত্রে এটি হ'ল কার্যকরী, যেমন আপনি চালাতে পারেন

sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers

এটি নিঃশব্দে ফাইলটি পরীক্ষা করে (-কিউ কারণে আউটপুট নেই) এবং কেবল যদি এটি ত্রুটি না ফেরায় (প্রস্থান 1 এর অর্থ একটি অবৈধ sudoers ফাইল) তবে এটি ফাইলটি sudoers.d এ অনুলিপি করবে, আপনি এইভাবে ফাইলটি তৈরি করতে পারেন এবং প্রথমবারের মতো এটি তৈরি না করেই এটিতে কাজ করুন (ব্যবহার sudo visudo -f /etc/sudoers.d/myfileকরে সফল হতে হবে বা আপনি যদি এটি ঠিক না করেন তবে বিষয়বস্তু বাদ দেয়)।

এছাড়াও, অন্যান্য উত্তরগুলি থেকে এই বিবৃতিগুলি সম্পর্কে একটি সতর্কতার শব্দ

আমার অভিজ্ঞতা হয়েছে যে এই ডিরেক্টরিতে থাকা ফাইলগুলির নিয়মগুলি / etc / sudoers এর চেয়ে কম। এটি অন্তর্ভুক্ত করেছে:

ফাইলের ভুলগুলি sudo ব্যর্থ হতে পারে না। তবে, ফাইলটি উপেক্ষা করা হয়েছিল। অনুমতি বিধি কম কঠোর প্রদর্শিত। আমি প্রয়োগযোগ্য গোষ্ঠীকে ফাইলটি পড়ার অনুমতি দিই। আমি বিশ্বাস করি না যে এটি / ইত্যাদি / সুডোর মাধ্যমে সম্ভব।

/Etc/sudoers.d এ থাকা ফাইলগুলিকে / ইত্যাদি / সুডোয়ারের মতো একই সিনট্যাক্স মেনে চলা প্রয়োজন, কারণ কভারগুলির আওতায় সিস্টেমটি কেবল "উইনিং" -তে সর্বশেষ ফাইলগুলি একসাথে একত্রিত করে যদি এর জন্য একাধিক এন্ট্রি থাকে একবাক্য সেটিং।

/Etc/sudoers.d/ এ থাকা ফাইলগুলিতে যদি অনুমতিগুলি মারাত্মকভাবে ভুল (বিশ্ব লিখনযোগ্য) থাকে তবে সেগুলি উপেক্ষা করা হয়, এটিই হতে পারে যা অবৈধ ফাইলগুলিকে উপেক্ষা করতে পারে, অন্যথায় আপনি sudoকোনও অবৈধ sudoers রেখে কমান্ডটিকে গুরুতরভাবে ভেঙে ফেলতে পারেন । d সঠিক অনুমতি সহ ফাইল।

আপনি sudoers ফাইলগুলিকে বিশ্ব পঠনযোগ্য হতে দিতে পারেন, যদি আপনি দুর্ঘটনাক্রমে অন্য 'র' লেখার অনুমতিটিকে অন্য ব্যবহারকারী হিসাবে sudo করার প্রয়োজন হয় বা কোনও রুট টার্মিনাল থেকে এই কমান্ডটি চালান। ফাইলটি রুট: রুট ব্যতীত অন্য কারও মালিকানাধীন থাকলে এটিও ভেঙে যেতে পারে।

sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers

আমি কেবল নিশ্চিত করে দিয়েছি যে আমি চালানো হলে আমি chmod o+w /etc/sudoers.d/vagrantআর অসম্পূর্ণ ব্যবহারকারী হিসাবে sudo করতে পারি না, এটি আমার পাসওয়ার্ডের জন্য আমাকে অনুরোধ করে এবং ব্যর্থ হয়।

যখন আমি sudo -lপ্রয়োগকৃত কমান্ড অনুমতিগুলি অন্য বৈধ sudo ব্যবহারকারী হিসাবে দৌড়ে গিয়েছিলাম তখন আমি ফাইলের অনুমতি সম্পর্কে একটি সতর্কতাও পেয়েছিলাম। এটি আমি একই কমান্ডটি ব্যবহার করে নিশ্চিত করেছিলাম যে আমি যখন o+wব্যবহারকারীকে সুডো অনুমতি দিয়ে ফাইলটিতে অনুমতি প্রয়োগ করি তখন 'ভ্যাগ্র্যান্ট' ব্যবহারকারী সুডো হারিয়েছিল ।


3

কোনও সাধারণ উত্তরের জন্য একটি সংক্ষিপ্ত সংযোজন ... অন্য কোনও উত্তরই আমার সমস্যাটি স্থির করেনি, যা ছিল সেই আদেশের বিষয়টি।

যদি আপনার লাইনগুলি sudoers এ কাজ করে তবে sudoers.d না করে, # অন্তর্ভুক্তকে ঘুরিয়ে দেওয়ার চেষ্টা করুন, বা আপনার sudoers.d ফাইলগুলির ক্রম পরিবর্তন করুন (একটি সংখ্যার সাথে উপসর্গ দিয়ে)। দেখে মনে হচ্ছে সুনির্দিষ্ট জিনিসটি ফাইলের মধ্যে প্রথম হওয়া উচিত।

আমার মতো কিছু ছিল:

somebody ALL=(ALL): somecommand
somebody ALL=(someoneelse) NOPASSWD: somecommand

এবং দ্বিতীয়টির কোনও প্রভাব নেই কারণ প্রথম ইতিমধ্যে ম্যাচ হয়েছে। NOPASSWD একটি শর্ত নয়, তবে ক্রিয়াটি সংশোধন করার কিছু উপায়।

এবং এটি সুস্পষ্ট ছিল না কারণ এটি একটি একক ফাইলে ছিল না, sudoers.d ডিরেক্টরিটির কারণে।

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