दो दिनों के अनुसंधान और वेब ब्राउज़ करने के बाद मैंने आखिरकार एक समाधान ढूंढ लिया है और अपने स्वयं के रास्पबेरी पाई सिस्टम को बचाने में सक्षम हो गया (एसडी कार्ड को पुन: स्वरूपित करने और खरोंच से शुरू होने के लिए नहीं)!
ध्यान दें: यह उत्तर बहुत लंबा है। यदि आप जल्दी से वास्तविक समाधान प्राप्त करना चाहते हैं, तो मैंने एक हेडर जोड़ा है जिसे आप नीचे स्क्रॉल कर सकते हैं। मैं आपको पूरे उत्तर को पढ़ने की सलाह देता हूं, क्योंकि यह रास्पियन डिस्ट्रीब्यूशन और अन्य लिनक्स डिस्ट्रीब्यूशन के बीच अंतर के बारे में कुछ अंतर्दृष्टि ला सकता है और साथ ही स्पष्टता भी देता है कि इंटरनेट पर आपके द्वारा सुझाए गए बहुत सारे समाधान आपके पाई पर काम नहीं कर सकते हैं। ।
आम तौर पर, लिनक्स वातावरण में, रिबूट के बिना भी टूटी हुई सुडो को ठीक करने का सबसे तेज़ तरीका पॉलिसीकीट या pkexec
इस तरह से:
pkexec visudo
लेकिन पाई पर यह सबसे अधिक संभावना नहीं है, यह रूट पासवर्ड के लिए पूछेगा, लेकिन कोई पासवर्ड स्वीकार नहीं किया जाता है। (मेरा मतलब है, क्या आपको रूट पासवर्ड सेट करना भी याद है? रुको, आप करते हैं? फिर तारांकन पर छोड़ें *)।
कुछ लिनक्स वितरण, उदाहरण के लिए, उबंटू, एक रिकवरी मोड के साथ आता है जिसे बूटअप के दौरान शिफ्ट-की को दबाकर रखा जा सकता है और एक उपयोगकर्ता के अनुकूल इंटरफेस प्रदान करता है और एक को रूट शेल प्रॉम्प्ट में गिरा दिया जा सकता है जहां कोई भी पहुंच प्राप्त कर सकता है। टूटी हुई फ़ाइलों को ठीक करें। पाई का रास्पियन लिनक्स वितरण उस तरह के रिकवरी मोड के साथ नहीं आता है ताकि समाधान हमारे लिए समाधान न हो। फिर भी पाई आपको किसी प्रकार की रिकवरी मोड में प्रवेश करने के लिए शिफ्ट-की को होल्ड करने के लिए बूटअप पर संकेत देता है और पाई के रिकवरी मोड या एनओओबीएस डायल में प्रवेश करके हम निश्चित रूप से हमारे पाई पर टूटे हुए सुडो को ठीक करने की दिशा में सही रास्ते पर हैं।
सुडो की मरम्मत का एक अन्य सामान्य तरीका एकल-उपयोगकर्ता मोड में बूट करना है जो आपको रूट शेल प्रॉम्प्ट पर ले जाता है। जिस तरह से आप इस शब्द को जोड़कर करते हैं single
के अंत तक cmdline.txt
सिस्टम के बूट विभाजन पर फ़िले। अगली बार जब आपका सिस्टम बूट होगा तो यह सिंगल-यूजर मोड में बूट होगा।
हम आसानी से अपने पाई पर इस समाधान की कोशिश कर सकते हैं, क्योंकि, सुविधाजनक रूप से, पाई की पुनर्प्राप्ति मोड या NOOBS संवाद हमें संपादित करने की अनुमति देता है cmdline.txt
-file। रिकवरी मोड या एनओओबीएस डायलॉग में, "एडिट कॉन्फिगर" दबाकर -इस तरह आप एक एडिटर को खोलते हैं जो आपको दो फाइलों को एडिट करने की सुविधा देता है, जिनमें से एक है cmdline.txt
। संपादक में "ओके" दबाकर आपके परिवर्तन सहेजे जाते हैं।
दुर्भाग्यवश, जब आप पाई पर एकल-उपयोगकर्ता मोड या "बचाव मोड" में बूट करते हैं, तो आपको निम्नलिखित संदेश प्राप्त होने की संभावना होगी:
Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.
Press Enter to continue.
यह - साथ ही साथ पहले उल्लेखित रूट पासवर्ड प्रॉम्प्ट किसी भी पासवर्ड को स्वीकार क्यों नहीं किया - क्योंकि रास्पियन, डिफ़ॉल्ट रूप से, रूट खाते के लिए कोई पासवर्ड सेट नहीं है। यह एक पासवर्ड के साथ भ्रमित नहीं होना है जो कुछ भी नहीं है या यह कि कोई पासवर्ड की आवश्यकता नहीं होगी। रास्पियन, अन्य मुट्ठी भर लिनक्स वितरणों की तरह (उदाहरण के लिए डेबियन जिसे रास्पियन की व्युत्पत्ति है), उपयोगकर्ता से यह अपेक्षा करता है कि वह सुडो के माध्यम से रूट के रूप में काम करे, न कि स्वयं खाते के माध्यम से। इसलिए रूट खाता "लॉकडाउन" स्थिति में है जिसे हम अनुभव कर रहे हैं।
* यदि आप रूट पासवर्ड स्वयं सेट करते हैं, उदाहरण के लिए कमांड के माध्यम से sudo passwd root
, तो आप का उपयोग करने में सक्षम होना चाहिए pkexec
-कैंड और बूट एकल-उपयोगकर्ता मोड में। ध्यान दें कि जब आप ऐसा करते हैं, तो आपको sudo का उपयोग करने की आवश्यकता होती है, इसलिए यह स्पष्ट रूप से समाधान नहीं है एक बार sudo टूट गया है, लेकिन मैं इसे इंगित करता हूं क्योंकि शायद यही कारण है कि कुछ लोगों ने अपने पाई को ठीक करने में सफलता पाई जब समाधान लागू करने का सुझाव दिया गया pkexec
-कमांड या एकल-उपयोगकर्ता मोड। इन लोगों को कुछ बिंदु पर चला गया था और अपने सिस्टम के रूट खाते को अनलॉक करते हुए मैन्युअल रूप से एक रूट पासवर्ड सेट किया था।
समाधान
यह ब्लॉग पोस्ट यह बताता है कि हमें क्या करना है। चरण एकल-उपयोगकर्ता मोड के माध्यम से sudo को सुधारने की कोशिश करते समय उठाए गए कदमों के समान हैं। आपको संपादित करने के लिए ब्लॉग पोस्ट के सभी बोझिल सामानों को करने की जरूरत नहीं है cmdline.txt
-फिल, इसके बजाय सिर्फ नॉब डायल में करें। कुंजी जोड़ने के लिए है init=/bin/sh
के अंत तक cmdline.txt
-file। उस स्निपेट के साथ, अगली बार जब आप अपने पाई को बूट करेंगे, तो आपको रूट शेल प्रॉम्प्ट में छोड़ दिया जाएगा।
प्रारंभ में, फ़ाइल सिस्टम को रीड-ओनली मोड में लोड किया जाएगा, इसलिए कुछ भी संपादित करने में सक्षम होने से पहले, आपको निम्नलिखित कमांड निष्पादित करके मोड को पढ़ने और लिखने के मोड में बदलना होगा:
mount -o remount,rw /dev/mmcblk0p2 /
अब आपको रूट शेल प्रॉम्प्ट में होना चाहिए, जहां आप टूटी हुई सूडो फाइलों सहित किसी भी फाइल को स्वतंत्र रूप से संपादित कर सकते हैं।
visudo
अगली बार संपादन के लिए।