सवाल अमान्य '/ etc / sudoers' फ़ाइल को कैसे संशोधित करें?


मैं एक अवैध sudoers फ़ाइल कैसे संपादित करूं? यह त्रुटि से नीचे फेंकता है और यह मुझे इसे ठीक करने के लिए फिर से संपादित करने की अनुमति नहीं दे रहा है।

यहां क्या होता है:

$ sudo visudo

>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting

206
2017-10-30 19:15


मूल


इस पृष्ठ पर विचार करने वाला महान सवाल उस त्रुटि को बनाता है help.ubuntu.com/community/RootSudoTimeout


जवाब:


एक आधुनिक उबंटू प्रणाली (और कई अन्य जीएनयू / लिनक्स वितरण) पर, एक दूषित फिक्सिंग sudoers फ़ाइल वास्तव में काफी आसान है, और किसी लाइव सीडी का उपयोग करके, या मशीन तक भौतिक पहुंच का उपयोग करने की आवश्यकता नहीं है।

एसएसएच के माध्यम से ऐसा करने के लिए, मशीन में लॉग इन करें और कमांड चलाएं pkexec visudo। यदि आपके पास मशीन तक भौतिक पहुंच है, तो एसएसएच अनावश्यक है; बस टर्मिनल विंडो खोलें और उसे चलाएं pkexec आदेश।

आपको लगता है कि (या कुछ अन्य उपयोगकर्ता) प्रोग्राम चलाने के लिए अधिकृत हैं root पॉलिसीकिट के साथ, आप अपना पासवर्ड दर्ज कर सकते हैं, और फिर यह चल जाएगा visudo जैसा root, और आप अपना समाधान कर सकते हैं /etc/sudoers

यदि आपको कॉन्फ़िगरेशन फ़ाइलों में से किसी एक को संपादित करने की आवश्यकता है /etc/sudoers.d (जो इस स्थिति में असामान्य है, लेकिन संभव है), उपयोग करें pkexec visudo -f /etc/sudoers.d/फ़ाइल का नाम

यदि आपके पास एक संबंधित स्थिति है जहां आपको समस्या को ठीक करने के लिए अतिरिक्त सिस्टम प्रशासन कमांड करना है (इस परिस्थिति में असामान्य भी है, लेकिन दूसरों में आम है), तो आप एक इंटरैक्टिव रूट खोल शुरू कर सकते हैं pkexec bash। आम तौर पर, आप जो भी गैर-ग्राफिकल कमांड के साथ भाग लेते हैं, बोलते हैं sudo के साथ चलाया जा सकता है pkexec बजाय।

(यदि प्रोग्राम चलाने के लिए अधिकृत सिस्टम पर एक से अधिक उपयोगकर्ता खाते हैं root पॉलिसीकिट के साथ, फिर उन कार्यों में से किसी एक के लिए, आपसे पूछा जाएगा कि आप किस पासवर्ड का उपयोग करना चाहते हैं, अपने पासवर्ड के लिए पूछे जाने से पहले।)


यदि यह काम नहीं करता है - उदाहरण के लिए, यदि कोई उपयोगकर्ता पॉलिसीकिट के माध्यम से रूट के रूप में प्रोग्राम चलाने के लिए अधिकृत नहीं है - तो उबंटू लाइव सीडी से बूट करें (जैसे सीडी जिसे आप शायद उबंटू इंस्टॉल करने के लिए उपयोग करते हैं) और फाइल सिस्टम को माउंट करें स्थापित प्रणाली। आप इसे चलाकर कर सकते हैं sudo parted -l अपने विभाजन देखने के लिए - शायद केवल एक ext4 विभाजन है, और यह रूट फाइल सिस्टम है।

मान लीजिए कि स्थापित उबंटू सिस्टम की रूट फाइल सिस्टम / dev / sda1 पर है। फिर आप इसे माउंट कर सकते हैं sudo mount /dev/sda1 /mnt। फिर आप स्थापित सिस्टम की सूडो फाइल को संपादित कर सकते हैं sudo nano -w /mnt/etc/sudoers। या, इससे भी बेहतर, आप इसे संपादित कर सकते हैं

sudo visudo -f /mnt/etc/sudoers

(जो आपको गलत वाक्यविन्यास के साथ एक सूडो फाइल को सहेजने से रोक देगा)।


318
2017-10-30 19:45



pkexec / usr / sbin / visudo डेबियन 7 पर काम किया - marinara
क्या वे रिकवरी मोड में भी बूट नहीं हो सका? - Seth♦
पवित्र गाय! आपका बहुत बहुत धन्यवाद! मेरे बेकन बचाया। एक नियमित पाठ संपादक (डी-ओ-एन-टी__डी-ओ__टी-एच-ए-टी !!!) का उपयोग करते हुए आदि / sudoers.d / निर्देशिका में सुझाए गए एक फ़ाइल को जोड़ा गया है। अपमानजनक विशेषाधिकारों को शामिल करने की सभी क्षमता खो दी, जिसमें अपमानजनक फ़ाइल शामिल है। इससे फ़ाइल को संपादित करने में मदद मिली। अजीब हालांकि, मुझे पहले / etc / sudoers को संपादित करना था, फिर उसे दूसरी फ़ाइल में त्रुटियां मिलीं और मेरे लिए यह खोला। यहां तक ​​कि वाइडर, / etc / sudoers फ़ाइल 'inlcudedir /etc/sudoers.d' में निर्देश टिप्पणी की गई थी, और इसमें अभी भी शामिल है। - Dennis
@ डेनिस कुछ हद तक भ्रमित, #include में निर्देश sudoers फाइलों का विशेष रूप से इलाज किया जाता है; सबसे आगे वाला # उस स्थिति में बाकी पंक्ति को एक टिप्पणी के रूप में व्याख्या नहीं किया जाता है। जैसा man sudoers कहता है: "पाउंड साइन ('#') का प्रयोग किसी टिप्पणी को इंगित करने के लिए किया जाता है (जब तक कि यह # अंतर्निहित निर्देश का हिस्सा न हो या जब तक ..." यह भी देखें visudo: #includedir sudoers.d (से संग्रहीत lzone.de/blog)। - Eliah Kagan
मेरा उपयोगकर्ता सुडौयर है लेकिन मुझे यह त्रुटि मिली है: कमांड को अन्य उपयोगकर्ता के रूप में निष्पादित करने में त्रुटि: अधिकृत नहीं है - SuB


हमेशा उपयोग करें visudo अपनी सूडो फाइल को संपादित करने के लिए, इसे सीधे अपने आप संपादित न करें। यह आपको डिस्क पर सहेजने से रोक देगा जब तक कि यह मान्य न हो।


45
2017-11-20 17:08



हिंडसाइट 20/20 है - code_monk
यह आपदा को रोका नहीं जाएगा। अपने आप को अस्वीकार करने के लिए पर्याप्त आसान है। - Joshua
क्या scudps द्वारा visudo इस्तेमाल किया जा सकता है? यदि हां, तो कैसे? - Lukas
मेरे पास visudo स्थापित नहीं है। तो मैंने pkexec vim किया था। फिर यह उपयोगकर्ताओं की सूची दिखाता है और पासवर्ड मांगता है। जब मैं पासवर्ड प्रदान करता हूं, तो यह त्रुटि को "अन्य उपयोगकर्ता के रूप में आदेश निष्पादित करने में त्रुटि: अधिकृत नहीं है" के रूप में त्रुटि देता है। कृपया सहायता कीजिए - Shyamkkhadka


में टाइप करें:

pkexec visudo

फिर अंतिम पंक्ति बदलें

#includedir /etc/sudoers

सेवा मेरे:

#includedir /etc/sudoers.d

यह आपकी समस्या का समाधान करना चाहिए।


20
2018-02-21 18:23



मैंने देखा है कि अग्रणी को हटा रहा है # से #includedir वाक्यविन्यास त्रुटियों का कारण बनता है, # कम से कम उबंटू 12.10 पर निर्देश का हिस्सा है। - SAFX
उसने मुझे बहुत सिरदर्द बचाया। अनेक अनेक धन्यवाद :) - Nitroware
मेरे पास visudo स्थापित नहीं है। तो मैंने pkexec vim किया था। फिर यह उपयोगकर्ताओं की सूची दिखाता है और पासवर्ड मांगता है। जब मैं पासवर्ड प्रदान करता हूं, तो यह त्रुटि को "अन्य उपयोगकर्ता के रूप में आदेश निष्पादित करने में त्रुटि: अधिकृत नहीं है" के रूप में त्रुटि देता है। कृपया सहायता कीजिए - Shyamkkhadka


अगर मेरे जैसे किसी और के पास नहीं था pkexec स्थापित, या sudoers फ़ाइल को बदलने के लिए vi, visudo, nano या किसी अन्य संपादक को चलाने में सक्षम नहीं था, आप इस प्रक्रिया के साथ सुनिश्चित हो सकते हैं .. मुझे इसके साथ सहेजा गया था:

  • रिबूट
  • पुनर्प्राप्ति मोड के विकल्प के लिए बूट करने के दौरान बूट कुंजी दबाएं (इसे दर्ज करें)
  • रूट के रूप में कमांड लाइन दर्ज करें (मेरे ग्रब मेनू पर दूसरा अंतिम विकल्प)
  • आरडब्ल्यू के लिए बूट डिवाइस को पुनर्स्थापित करें, और उपयोगकर्ता के लिए निष्पादन सही लागू करें, और फ़ाइल संपादित करें

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

उस गलती को ठीक करें और खुश रहें :)


10
2017-10-20 21:40



जबकि @ eliah-kagan द्वारा सुझाए गए pkexec समाधान को आसान लगता है, यह एक और अधिक सार्वभौमिक है। मेरी मशीन पर यह पता चला कि कोई pkexec स्थापित नहीं है और निश्चित रूप से मैं इसे इंस्टॉल नहीं कर सका क्योंकि sudo apt-get pkexec इंस्टॉल करें किसी भी तरह से काम नहीं किया है। - running.t


कुछ भी गलत नहीं है # sudoer.d शामिल करें #include sudoer.d को हटाने से कोई फर्क नहीं पड़ता।

लेकिन कृपया सुनिश्चित करें कि आपके पास कोई वाक्यविन्यास त्रुटियां नहीं हैं। मुझे एक ही समस्या थी लेकिन उन्होंने ठीक करने के लिए घंटों बिताए और बस यह पता लगाया कि वे वाक्यविन्यास त्रुटियां हैं। मैनुअल का संदर्भ लें और उन्हें सही बनाएं।

उदाहरण के लिए कहें आपका उपयोगकर्ता नाम है: डॉली मैंने निम्नलिखित का प्रयोग किया जो गलत है

 dolly ALL = (ALL) ALL NO PASSWD: ALL

सही वाक्यविन्यास है

dolly ALL = (ALL) ALL //give permission to everything, not good

या

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

उम्मीद है की यह मदद करेगा


6
2017-07-02 23:15



यह सुनिश्चित करने से बेहतर तरीका है कि आपके पास वाक्यविन्यास त्रुटियां नहीं हैं हमेशा उपयोग करना है visudo इन फ़ाइलों को संपादित करते समय, यह सुनिश्चित करता है कि आपके पास फ़ाइल को संशोधित करने से पहले आपके लिए सिंटैक्स त्रुटियां नहीं हैं। visudo सिर्फ संपादन के लिए नहीं है /etc/sudoers--it भी फाइलें बना और संपादित करेगा /etc/sudoers.d। यह आपके इच्छित पाठ संपादक के साथ भी काम करेगा। देख मैनपेज ब्योरा हेतु। - Eliah Kagan
विशिष्ट अनुमति देने के लिए, कृपया ध्यान दें कि यह केवल बहुत ही सरल कमांड / ऐप्स के लिए उपयोगी है, क्योंकि कोई भी पर्याप्त जटिल ऐप (सहित thunderbird, जिसे किसी भी तरह रूट के रूप में कभी नहीं चलाया जाना चाहिए) रूट के रूप में चलाने पर प्रभावी ढंग से उपयोगकर्ता को पूर्ण सिस्टम पहुंच प्रदान करेगा। यहां तक ​​कि प्रतीत होता है कि सरल कार्यक्षमता पूर्ण रूट पहुंच का दरवाजा खुलती है। उदाहरण के लिए, एक ऐसा उपयोगकर्ता जो प्रोग्राम चला सकता है जो किसी फ़ाइल को रूट के रूप में मनमाने ढंग से स्थान पर सहेज सकता है, पूर्ण रूट पहुंच प्राप्त कर सकता है (वे स्वयं को इंस्टॉल कर सकते हैं /etc/sudoers, या अगर वाक्यविन्यास सीमाएं इसे रोकती हैं, तो वे स्वयं स्थापित कर सकते हैं /etc/crontab)। - Eliah Kagan


यदि आप अपना गड़बड़ कर चुके हैं sudoers फ़ाइल, आपको यह करना होगा:

  • रिकवरी मोड में रीबूट करें (बूट के दौरान हिट से बचें, ग्रब स्क्रीन पर रिकवरी मोड विकल्प चुनें)
  • 'नेटवर्किंग सक्षम करें' विकल्प चुनें (यदि आप नहीं चाहते हैं कि आपके फाइल सिस्टम को केवल पढ़ने के लिए रखा जाएगा। कौन जानता था)
  • Chosee 'ड्रॉप टू रूट खोल' विकल्प
  • रन visudo, अपनी फाइल को ठीक करें
  • सामान्य ग्रब विकल्प के साथ रीबूट करें

स्रोत: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204


6
2017-12-14 10:59



हाय, क्या यह iptables, मौजूदा सिस्टम की फ़ाइलों को हटा देता है? - Shyamkkhadka


रन रिकवरी मोड फिर टाइप करें

chown -R रूट: root /etc/sudoers.d
chmod u = rwx, g = rx, o = rx /etc/sudoers.d/
chmod u = r, g = r, o = /etc/sudoers.d/*

केवल समूह और उपयोगकर्ता रूट को privelege पढ़ना चाहिए था


3
2017-11-20 17:11