मैंने गलती से प्रवेश कर लिया
chsh -s /usr/bin
के बजाय
chsh -s /bin/bash
और अब मैं रूट शेल में लॉग इन नहीं कर सकता, मैं मैन्युअल रूप से रूट के रूप में बैश शेल कैसे शुरू करूं?
sudo vipw
काम करता है ?
मैंने गलती से प्रवेश कर लिया
chsh -s /usr/bin
के बजाय
chsh -s /bin/bash
और अब मैं रूट शेल में लॉग इन नहीं कर सकता, मैं मैन्युअल रूप से रूट के रूप में बैश शेल कैसे शुरू करूं?
sudo vipw
काम करता है ?
जवाबों:
जबकि जड़ तक पहुंच नहीं है, सुडो समूह में एक उपयोगकर्ता अभी भी विशेषाधिकार प्राप्त कमांड चला सकता है - ऐसा लगता है कि त्रुटि 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 के छाया संस्करणों को संपादित करेंगे। कार्यक्रम भ्रष्टाचार को रोकने के लिए उचित ताले लगाएंगे।
vipw
और vigr
, धन्यवाद! मैंने हमेशा इस्तेमाल कियाsudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html में भी रुचि हो सकती है, @tac
sudo -e
, जो किसी भी संपादन के लिए इस लॉकिंग-संपादन सुविधा को निष्पादित करता है।
एक अन्य विकल्प, यह मानते हुए कि आपके पास किसी अन्य खाते तक पहुंच है, का उपयोग करके डिफ़ॉल्ट शेल को मैन्युअल रूप से ओवरराइड करना है su --shell=/bin/bash
:
-s, --shell = SHELL
रन शेल अगर / etc / गोले इसे अनुमति देता है
इसका प्राथमिक लाभ यह है कि इसे केवल किसी अन्य खाते तक पहुंच की आवश्यकता होती है, दूसरे विशेषाधिकार प्राप्त व्यक्ति को नहीं।
सुरक्षा कारणों से, लॉगिन के लिए कि क्या शाब्दिक या चित्रमय और उपयोगिताओं की तरह su
और sudo
है कि के रूप में किसी दूसरे उपयोगकर्ता के सभी लक्ष्य उपयोगकर्ता के खोल के माध्यम से उन आदेश चला आप आदेशों को चलाने के लिए अनुमति देते हैं। यदि लक्ष्य उपयोगकर्ता का शेल गैर-कार्यात्मक है, तो ठीक है, आपने परिणाम देखे हैं :-(
जब तक आपके पास अभी भी एक कार्यात्मक फंक्शनल शेल है, जो कहीं न कहीं चल रहा है या एक सेट्यूइड-रूट बाइनरी या ऐसा कुछ है जो आपको इसे बायपास करने की अनुमति देता है, तो एक बचाव प्रणाली या लाइव छवि का उपयोग करके समस्या को रीबूट करना और सही करना संभवतः आपका सबसे अच्छा दांव है।
बचाव प्रणाली को बूट करें, अपने वास्तविक सिस्टम के रूट फाइल सिस्टम को कहीं माउंट करें, कहें /mnt/foo
और /mnt/foo/etc/passwd
शेल को ठीक करने के लिए संपादित करें । सहेजें, अनमाउंट करें, और आप कर रहे हैं।
/etc/passwd
सादे नहीं है? मैंने यह नहीं देखा है कि कम से कम, जैसे, एक दशक। यह अभी भी कुछ प्रणालियों पर एक बात है? वैसे भी, मुझे लगता chroot /mnt/foo chsh -s /bin/bash
है कि उस मामले में चाल हो सकती है?
init=/bin/bash
अपनी कर्नेल कमांड लाइन में जोड़ें (यदि ग्रब के साथ बूटिंग, e
बूट प्रविष्टि को संपादित करने के लिए दबाएं ), और आपके पास पासवर्ड सप्लाई करने के बिना रूट के रूप में बैश शेल होगा। आपके रूट फाइल सिस्टम की संभावना अभी भी केवल माउंट की गई है, इसलिए आपको पहले इसे रिमूव करना होगा, फिर आप शेल को वापस बदल सकते हैं chsh
।
sudo usermod -s /bin/bash jdoe
के खोल बदल जाएगा jdoe लिए bash
। फिर आप sudo egrep jdoe /etc/passwd
सत्यापित कर सकते हैं।