सिस्टम में /etc/sudoers.d क्यों है? मुझे इसे कैसे संपादित करना चाहिए?


47

पिछली बार, मैंने इन (आदि / / 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 में फ़ाइलों को संपादित करने का एक अच्छा तरीका है ?

जवाबों:


43

/etc/sudoers.dयदि आप सिस्टम को अपग्रेड करते हैं, तो फाइलों में परिवर्तन किए जा सकते हैं । सिस्टम के अपग्रेड होने पर यह यूजर लॉकआउट को रोक सकता है। उबंटू को यह व्यवहार पसंद है। अन्य वितरण इस लेआउट का भी उपयोग कर रहे हैं।

यह मेरा अनुभव रहा है कि इस निर्देशिका की फाइलों पर नियम इसके बजाय शिथिल हैं /etc/sudoers। इसमें शामिल हैं:

  • फ़ाइल में गलतियाँ sudoविफल नहीं हुईं। हालाँकि, फ़ाइल को अनदेखा कर दिया गया था।
  • अनुमति नियम कम सख्त दिखाई देते हैं। यह लागू समूह या अन्य को फ़ाइल पढ़ने की अनुमति देता है। मुझे विश्वास नहीं होता कि यह संभव था /etc/sudoersrootसुरक्षा बनाए रखने के लिए लिखें अनुमतियां प्रतिबंधित होनी चाहिए । सुडू का वर्तमान उबंटू संस्करण समूह या अन्य के लिए पढ़ने की अनुमति देता है। (यह क्षमता रूट एक्सेस की आवश्यकता के बिना sudo एक्सेस को ऑडिट करने की अनुमति देती है।)

visudoआदेश केवल करने के लिए चूक /etc/sudoers। यह आपके द्वारा निर्दिष्ट किसी भी फ़ाइल को -fविकल्प के साथ संपादित और सत्यापित करेगा । मैं इस क्षमता का उपयोग उन फ़ाइलों को संपादित करने के लिए करता हूं जो स्वचालित रूप से /etc/sudoersया के रूप में स्थापित की जाएंगी /etc/sudoders.d। हालाँकि, अन्य फ़ाइलों से परिभाषाएँ नहीं मिल सकती हैं। फ़ाइल को स्वतंत्र बनाना सबसे अच्छा है।

स्टैंड-अलोन फ़ाइलों की sudoक्षमता इंस्टॉलेशन पर क्षमता को सक्षम करने और अन-इंस्टॉल होने पर उन्हें हटाने के लिए एक आवेदन के लिए सरल बनाता है। स्वचालित कॉन्फ़िगरेशन उपकरण भी इस क्षमता का उपयोग कर सकते हैं।

मैंने विशिष्ट प्रणालियों पर विशिष्ट उपयोगकर्ता समूहों तक पहुंच प्रदान करने के लिए आवश्यक परिवर्तनों को अलग करने के लिए इस क्षमता का उपयोग किया है।


1
Sudoers.d आपके द्वारा उल्लिखित दो लक्षण वास्तव में महत्वपूर्ण और सहायक लगते हैं। धन्यवाद!
अनोब

मेरा उत्तर और चेतावनी देखें कि वे वास्तव में sudoers.d के लक्षण क्यों नहीं हैं।
ड्रैगन 788

1
'गलती से फाइल में खराबी न आए' वाले बयान से काफी असहमत थे sudo। मैंने /etc/sudoers.d से फ़ाइल में गलत सिंटैक्स के साथ RHEL पर sudo को तोड़ दिया। इसे सुधारने के लिए महत्वपूर्ण प्रयास किया गया और मुझे लगता है कि visudo -fउन फाइलों को संपादित करने के लिए सिफारिश हमेशा उपयोग की जानी चाहिए ।
79E09796

@ 79E09796 मैंने /etc/sudoers.d में अन्य फ़ाइलों में नियमों के साथ समस्या पैदा किए बिना फ़ाइलों को तोड़ा है। YMMV। यदि आप सिस्टम में प्राप्त होने वाले sudo कॉन्फ़िगरेशन को तोड़ते हैं, तो आपके पास समस्याएँ होंगी। यदि आपके पास सिस्टम को रिबूट करने की पहुंच है, तो रिकवरी मोड में रिबूट करना और फ़ाइल को ठीक करना अपेक्षाकृत आसान है। मैं इस बात से सहमत हूं कि संपादित करने के लिए या सूदो कॉन्फ़िगरेशन फ़ाइलों में कम से कम परिवर्तनों को सत्यापित करने के लिए विडो का उपयोग करना सबसे अच्छा अभ्यास है।
बिलहोर

61

हां, आप visudoउन फ़ाइलों को संपादित करने के लिए उपयोग कर सकते हैं । आपको बस इतना करना है कि उस फ़ाइल का नाम निर्दिष्ट करें जिसे आप -fविकल्प के साथ संपादित करना चाहते हैं । उदाहरण के लिए:

visudo -f /etc/sudoers.d/somefilename

या, यदि आवश्यक हो:

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

प्रलेखन

से man visudo:

-f sudoers
फ़ाइल स्थान निर्दिष्ट और वैकल्पिक sudoers। इस विकल्प के साथ, डिफ़ॉल्ट, / etc / sudoers के बजाय visudo आपकी पसंद की sudoers फ़ाइल को संपादित (या जाँच) करेगा। जिस लॉक फ़ाइल का उपयोग किया गया है, वह ".tmp" के साथ निर्दिष्ट sudoers फ़ाइल है। केवल चेक-मोड में, -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. फ़ाइलें जिनके नाम में एक .वर्ण होता है

यह पैकेज प्रबंधकों की सुविधा के लिए (ए) किया जाता है और (बी) ताकि संपादकों से बैकअप फ़ाइलों को अनदेखा किया जाए।


धन्यवाद, लेकिन मुझे एक संदेह है। है visudo -fसुरक्षित?
अनोब

5
हां, visudo -fसामान्य की तरह एक सुरक्षित फैशन में संपादन करता है visudo। यही कारण है कि हमारे पास है visudoऔर यह -fविकल्प क्यों प्रदान करता है ।
जॉन १०२४

जब -fइस का उपयोग करते समय अनुमतियों को नजरअंदाज कर दिया जाता है, तो इस पर ध्यान दें कि कोई व्यक्ति इसे दोहराए बिना /etc/sudoers.d/ में कॉपी करता है।
ड्रैगन 788

1
अपवाद खंड के लिए धन्यवाद। मैंने अपनी फ़ाइल का नाम कुछ इस तरह रखा और अपने /etc/sudoers.d/mysudorules.sudoजीवन का पता नहीं लगा सका कि आपके उत्तर को पढ़ने से पहले अंदर के नियम क्यों लागू नहीं किए गए।
Zaroth

1
अपवादों का उल्लेख करने के लिए धन्यवाद। के तहत मेरी फ़ाइल /sudoers.d/mysite.co.ukकाम नहीं कर रही थी और नाम बदलने के बाद mysiteयह काम करता है! :)
J86

19

हमारे पास /etc/sudoers.d क्यों है?

क्योंकि स्वचालित फ़ाइलों (जैसे कि शेफ या कठपुतली) के लिए इस निर्देशिका में व्यक्तिगत फ़ाइलों को छोड़ना आसान है, बजाय बदलाव करने के /etc/sudoers, जो कि नाजुक हो सकती है।

फ़ाइलें /etc/sudoers.d(प्रभाव में) संक्षिप्त हैं। आपको इस पैटर्न के कई अन्य उदाहरण दिखाई देंगे /etc, जैसे /etc/cron.dऔर /etc/logrotate.d


मुझे नहीं पता था कि अन्य समान निर्देशिकाएं हैं। धन्यवाद।
अनोब

13

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

यह चुपचाप फ़ाइल की जाँच करता है (-q के कारण कोई आउटपुट नहीं) और केवल अगर वह एक त्रुटि वापस नहीं करता है (निकास 1 का मतलब है एक अवैध sudoers फ़ाइल) तो यह फ़ाइल को sudoers.d में कॉपी कर देगा, इस तरह से आप फ़ाइल बना सकते हैं और पहली बार इसे सही करने के बिना इस पर काम करें ( sudo visudo -f /etc/sudoers.d/myfileयदि आपको इसे ठीक नहीं करना है तो सामग्री का उपयोग करना होगा या इसे सफल करना होगा)।

इसके अलावा, अन्य उत्तरों से इन कथनों के बारे में सावधानी बरतें

यह मेरा अनुभव रहा है कि इस निर्देशिका की फाइलों पर नियम / etc / sudoers की तुलना में कम हैं। इसमें शामिल हैं:

फ़ाइल में गलतियाँ sudo के विफल होने का कारण नहीं बनीं। हालाँकि, फ़ाइल को अनदेखा कर दिया गया था। अनुमति नियम कम सख्त दिखाई देते हैं। मैं लागू समूह को फ़ाइल पढ़ने की अनुमति देता हूं। मुझे विश्वास नहीं है कि / etc / sudo के साथ यह संभव है।

/Etc/sudoers.d में फ़ाइलों को / etc / sudoers के समान सिंटैक्स का पालन करने की आवश्यकता होती है, क्योंकि कवर के तहत सिस्टम बस "जीतने" में पिछले एक के साथ सभी फ़ाइलों को एक साथ समेटता है यदि उसी के लिए कई प्रविष्टियाँ हैं विलक्षण सेटिंग।

यदि अनुमतियाँ /etc/sudoers.d/ में फ़ाइलों पर बुरी तरह से गलत (विश्व लेखन योग्य) हैं, तो उन्हें नजरअंदाज कर दिया जाता है, यही कारण हो सकता है कि अमान्य फ़ाइलों को अनदेखा कर दिया जाए, अन्यथा आप sudoएक अमान्य फ़ॉयर होने से कमांड को गंभीरता से तोड़ सकते हैं । d सही अनुमतियों वाली फ़ाइल।

यदि आप गलती से किसी अन्य उपयोगकर्ता के रूप में या किसी रूट टर्मिनल से इस कमांड को चलाने के लिए लिखित अनुमति देते हैं, तो आप sudoers फ़ाइलों को विश्व पठनीय होने की अनुमति दे सकते हैं। यह भी टूट सकता है अगर फ़ाइल रूट: रूट के अलावा किसी और के स्वामित्व में है।

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 उपयोगकर्ता के रूप में देखने के लिए दौड़ा , तो मुझे फ़ाइल अनुमतियों के बारे में एक चेतावनी भी मिली। यह वही कमांड है जिसकी मैं पुष्टि करता था कि 'योनि' उपयोगकर्ता ने sudo खो दिया जब मैंने o+wउस उपयोगकर्ता sudo को अनुमति देते हुए फ़ाइल पर अनुमतियाँ लागू कीं।


2

किसी भी सामान्य उत्तर के लिए बस एक छोटा सा ऐडऑन ... अन्य उत्तरों में से किसी ने भी मेरे मुद्दे को तय नहीं किया, जो कि आदेश मायने रखता था।

यदि आपकी लाइनें sudoers में काम करती हैं, लेकिन sudoers.d की नहीं, तो #include को चारों ओर ले जाने का प्रयास करें, या अपनी sudoers.d फ़ाइलों के क्रम को बदलकर (किसी संख्या के साथ उपसर्ग करके)। ऐसा लगता है कि सबसे विशिष्ट चीज पहले फ़ाइल में होनी चाहिए।

मेरे पास कुछ ऐसा था:

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

और दूसरे को कोई प्रभाव नहीं पड़ा क्योंकि पहले से ही मेल खाता था। NOPASSWD एक स्थिति नहीं है, लेकिन कार्रवाई को संशोधित करने का कुछ तरीका है।

और यह स्पष्ट नहीं था क्योंकि यह sudoers.d निर्देशिका के कारण एकल फ़ाइल में नहीं था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.