रूट शेल गलती से बदल गया। मैं इसे एक वैध शेल में कैसे बदल सकता हूं?


19

मैंने गलती से प्रवेश कर लिया

chsh -s /usr/bin 

के बजाय

chsh -s /bin/bash 

और अब मैं रूट शेल में लॉग इन नहीं कर सकता, मैं मैन्युअल रूप से रूट के रूप में बैश शेल कैसे शुरू करूं?


आपने यह किस संदर्भ में किया। एक मौजूदा टर्मिनल में, उपयोगकर्ताओं के लिए डिफ़ॉल्ट शेल?
jgr208

क्या आपके पास sudo समूह में उपयोगकर्ता नहीं हैं?
रुई एफ रिबेरो

3
sudo vipwकाम करता है ?
रुई एफ रिबेरो

1
@ RuiFRibeiro हाँ यह धन्यवाद किया, मुझे पता नहीं था कि मैं उस फ़ाइल में डिफ़ॉल्ट रूट शेल को बदल सकता हूं
ChiseledAbs

1
इस मामले में आवश्यक नहीं है, लेकिन जब आप अनजाने में जड़ से जुड़ी तबाही पैदा करते हैं, तो आप आमतौर पर मशीन को एकल उपयोगकर्ता मोड में ले जा सकते हैं, समस्या को ठीक कर सकते हैं, और फिर बहु-उपयोगकर्ता मोड पर लौट सकते हैं।
बोर्डराइडर

जवाबों:


29

जबकि जड़ तक पहुंच नहीं है, सुडो समूह में एक उपयोगकर्ता अभी भी विशेषाधिकार प्राप्त कमांड चला सकता है - ऐसा लगता है कि त्रुटि sudo में नहीं है, लेकिन sudo chshकमांड में कहीं और है (जैसे chsh त्रुटि)।

जैसा कि आपका सुडोल जाहिर तौर पर काम कर रहा है।

पासवार्ड फ़ाइल को इसके साथ संपादित किया जा सकता है:

sudo vipw

और रूट शेल मैन्युअल रूप से बदल गया।

( /etc/passwdआम तौर पर पहली पंक्ति )

root:x:0:0:root:/root:/bin/bash

फोम मैन विप्र

Vipw और vigr कमांड फाइल्स / etc / passwd और / etc / group को क्रमशः एडिट करता है। -S ध्वज के साथ, वे क्रमशः उन फ़ाइलों, / etc / छाया और / etc / gshadow के छाया संस्करणों को संपादित करेंगे। कार्यक्रम भ्रष्टाचार को रोकने के लिए उचित ताले लगाएंगे।


3
मैं के बारे में पता नहीं था vipwऔर vigr, धन्यवाद! मैंने हमेशा इस्तेमाल कियाsudo vim /etc/passwd
बिल्ली

3
आपको visudo sudo.ws/man/1.8.15/visudo.man.html में भी रुचि हो सकती है, @tac
रुई एफ रिबेरो

3
या sudo -e, जो किसी भी संपादन के लिए इस लॉकिंग-संपादन सुविधा को निष्पादित करता है।
कोजिरो

16

एक अन्य विकल्प, यह मानते हुए कि आपके पास किसी अन्य खाते तक पहुंच है, का उपयोग करके डिफ़ॉल्ट शेल को मैन्युअल रूप से ओवरराइड करना है su --shell=/bin/bash:

-s, --shell = SHELL
रन शेल अगर / etc / गोले इसे अनुमति देता है

इसका प्राथमिक लाभ यह है कि इसे केवल किसी अन्य खाते तक पहुंच की आवश्यकता होती है, दूसरे विशेषाधिकार प्राप्त व्यक्ति को नहीं।


8

सुरक्षा कारणों से, लॉगिन के लिए कि क्या शाब्दिक या चित्रमय और उपयोगिताओं की तरह suऔर sudoहै कि के रूप में किसी दूसरे उपयोगकर्ता के सभी लक्ष्य उपयोगकर्ता के खोल के माध्यम से उन आदेश चला आप आदेशों को चलाने के लिए अनुमति देते हैं। यदि लक्ष्य उपयोगकर्ता का शेल गैर-कार्यात्मक है, तो ठीक है, आपने परिणाम देखे हैं :-(

जब तक आपके पास अभी भी एक कार्यात्मक फंक्शनल शेल है, जो कहीं न कहीं चल रहा है या एक सेट्यूइड-रूट बाइनरी या ऐसा कुछ है जो आपको इसे बायपास करने की अनुमति देता है, तो एक बचाव प्रणाली या लाइव छवि का उपयोग करके समस्या को रीबूट करना और सही करना संभवतः आपका सबसे अच्छा दांव है।

बचाव प्रणाली को बूट करें, अपने वास्तविक सिस्टम के रूट फाइल सिस्टम को कहीं माउंट करें, कहें /mnt/fooऔर /mnt/foo/etc/passwdशेल को ठीक करने के लिए संपादित करें । सहेजें, अनमाउंट करें, और आप कर रहे हैं।


जिज्ञासु, अगर आप ऐसा करते हैं और / etc / passwd फ़ाइल सादे पाठ के बजाय हैश में है तो क्या होगा?
jgr208

1
/etc/passwdसादे नहीं है? मैंने यह नहीं देखा है कि कम से कम, जैसे, एक दशक। यह अभी भी कुछ प्रणालियों पर एक बात है? वैसे भी, मुझे लगता chroot /mnt/foo chsh -s /bin/bashहै कि उस मामले में चाल हो सकती है?
सेलदा

मुझे कभी भी समस्या का वर्णन नहीं किया गया है, हालांकि मैं उन लॉक डाउन सिस्टम के साथ काम करता हूं जो हैकर्स से बचने के लिए सादे टेक्स्ट में / etc / passwd की आवश्यकता होती है और इस तरह की समझौता करने की प्रणाली से और भी अधिक अगर वे एक्सेस हासिल करते हैं। हम्म जो काम कर सकता है, मैं सिर्फ यह कहता हूं कि मुझे आशा है कि मुझे कभी कोशिश नहीं करनी पड़ेगी और देखना होगा कि क्या यह वास्तव में काम करता है।
jgr208

मैं उपयोगकर्ता खाते से sudo के साथ संपादन / आदि / पासवार्ड करने में सक्षम था, मुझे पता नहीं था कि शेल इस फ़ाइल में परिभाषित किया गया था, धन्यवाद
ChiseledAbs

@CeleledAbs ओह, तुम थे? आपके लिए अच्छा है, खुशी है कि आपने अपनी समस्या हल कर ली। मुझे नहीं लगता था कि यह आपको जाने देगा।
सेलदा

6

init=/bin/bashअपनी कर्नेल कमांड लाइन में जोड़ें (यदि ग्रब के साथ बूटिंग, eबूट प्रविष्टि को संपादित करने के लिए दबाएं ), और आपके पास पासवर्ड सप्लाई करने के बिना रूट के रूप में बैश शेल होगा। आपके रूट फाइल सिस्टम की संभावना अभी भी केवल माउंट की गई है, इसलिए आपको पहले इसे रिमूव करना होगा, फिर आप शेल को वापस बदल सकते हैं chsh


4

sudo usermod -s /bin/bash jdoe

के खोल बदल जाएगा jdoe लिए bash। फिर आप sudo egrep jdoe /etc/passwdसत्यापित कर सकते हैं।

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