मैंने "/ etc / passwd" फ़ाइल को हटा दिया और लॉग इन नहीं कर सकता


22

मैं अपना उपयोगकर्ता नाम बदलने की कोशिश कर रहा था और मेरे घर की निर्देशिका ( /home/username) और मेरा सिस्टम क्रैश होने लगा। मैंने passwdफ़ाइल को हटा दिया लेकिन मेरे पास एक बैकअप था जिसका नाम था passwd_bkp। मैं इस नाम बदलने की कोशिश की passwd_bkpके रूप में passwdहै और यह काम नहीं किया। कोई आदेश निष्पादित नहीं किया जा रहा था ... मैं एक टर्मिनल विंडो में था।

मैंने अपने सिस्टम को पुनः आरंभ किया और अब मैं लॉग इन नहीं कर सकता। GRUB दो विकल्प देता है: लिनक्स और रिकवरी मोड।

मैंने रूट के रूप में एक सत्र खोलने की कोशिश की, लेकिन यह कहता है कि फाइल सिस्टम दूषित है। मैं अपनी फ़ाइलों तक नहीं पहुँच सकता

क्या मैंने अपनी सभी फाइलें खो दीं?


1
आपके अनुवर्ती प्रश्न के लिए: पुनर्प्राप्ति तकनीक का उपयोग करके, अपना पासवर्ड बदलें। देखें: askubuntu.com/questions/24006/…
david6

1
@ david6 जब कोई उपयोगकर्ता लॉगिन नहीं कर सकता है क्योंकि कोई /etc/passwdफ़ाइल नहीं है , तो पासवर्ड रीसेट करना भी संभव नहीं है। आपको passwdफ़ाइल को पुनर्स्थापित (या फिर से करना) करना होगा । और एक बार जब यह हो जाता है, तो आमतौर पर पासवर्ड रीसेट करने की कोई आवश्यकता नहीं होती है।
एलियाह कगन

@ अली कगन: सहमत, लेकिन मैं अनुवर्ती प्रश्न का उत्तर दे रहा था, के बाद / etc / passwd था (माना जाता है) बैकअप प्रतिलिपि से पुनर्स्थापित किया गया था।
दाविद

आपको त्रुटि के बारे में अधिक विशिष्ट होने की आवश्यकता होगी।
Psusi

जवाबों:


32

नहीं, अपना विवरण देते हुए, आपने अपनी कोई भी फाइल नहीं खोई (इसके अलावा /etc/passwd, जिसे आपने हटा दिया था, लेकिन जिसे आपने बैकअप लिया था)।

बूट एक उबंटू लाइव सीडी / डीवीडी या यूएसबी फ्लैश ड्राइव। चयन करें Try Ubuntu(नहीं Install Ubuntu)। जब डेस्कटॉप लोड होता है, तो एक Nautilus (फ़ाइल ब्राउज़र) विंडो खोलें। आप अपने Ubuntu सिस्टम के तहत विभाजन पा सकते हैं Devices। इसे माउंट करने के लिए उस पर क्लिक करें।

अब आप बैकअप को पुनर्स्थापित कर सकते हैं। आपको इसे रूट के रूप में करना होगा। यहाँ यह करने के लिए एक बहुत आसान तरीका है।

  1. एक टर्मिनल विंडो खोलें ( Ctrl+ Alt+ T)। टर्मिनल में, कुंजी टाइप करें cdऔर टाइप करें Space, लेकिन Enterअभी तक दबाएं नहीं।

  2. नॉटिलस में, etcस्थापित उबंटू प्रणाली के अंदर निर्देशिका खोजें । (यह etcलाइव सीडी के लिए निर्देशिका के समान नहीं है । etcस्थापित उबंटू प्रणाली के अंदर निर्देशिका उस विभाजन में है जिसे आपने अभी माउंट किया है।)

  3. इस etcडायरेक्टरी को टर्मिनल में खींचें , जो cd ...कमांड को पूरा करते हुए टर्मिनल में अपना पूरा रास्ता पेस्ट कर देगा ।

  4. Enterकमांड चलाने के लिए दबाएं । अब आप उस निर्देशिका में हैं जिसमें आपकी passwdफ़ाइल सम्‍मिलित है । मैं मान रहा हूँ कि आपकी बैकअप फ़ाइल, passwd_bkpयहाँ भी स्थित है।

  5. यह आदेश चलाएँ:

    sudo cp passwd_bkp passwd
    

यह passwdआपके बैकअप से फ़ाइल को पुनर्स्थापित करता है , इसलिए अब आपको रीबूट करने में सक्षम होना चाहिए, सीडी / डीवीडी या यूएसबी फ्लैश ड्राइव को हटा दें, और अपने इंस्टॉल किए गए उबंटू सिस्टम में वापस बूट करें। आपका स्थापित Ubuntu सिस्टम फिर से काम करना चाहिए।


भविष्य के लिए, आप पता होना चाहिए कि यह मैन्युअल रूप से संपादित करने के लिए अनुशंसित नहीं है /etc/passwd, /etc/group, /etc/shadow, या /etc/gshadow। इसके बजाय, आपको अपने सिस्टम पर उपयोगकर्ताओं और समूहों को कोई भी परिवर्तन करने के लिए उबंटू के हिस्से के रूप में दी गई उपयोगिताओं का उपयोग करना चाहिए। आप शायद जानते हैं कि आप इसे सिस्टम सेटिंग्स में या साथ संपादित कर सकते हैं users-admin। लेकिन इसके लिए बहुत शक्तिशाली कमांड-लाइन यूटिलिटीज भी हैं, जो अभी भी स्वयं कॉन्फ़िगरेशन फ़ाइलों को संपादित करने की तुलना में बहुत सुरक्षित और आसान हैं। यहाँ उबंटू में सबसे अधिक प्रासंगिक ऐसी उपयोगिताओं का प्रलेखन है:

  • adduser / addgroup
  • deluser / delgroup
  • usermod
  • groupmod
  • useradd(निम्न-स्तर की तुलना में adduser, आपको आमतौर पर adduserइसके बजाय उपयोग करना चाहिए )
  • userdel(निम्न-स्तर की तुलना में deluser, आपको आमतौर पर deluserइसके बजाय उपयोग करना चाहिए )
  • groupadd(निम्न-स्तर की तुलना में addgroup, आपको आमतौर पर addgroupइसके बजाय उपयोग करना चाहिए )
  • groupdel(निम्न-स्तर की तुलना में delgroup, आपको आमतौर पर delgroupइसके बजाय उपयोग करना चाहिए )
  • passwd
  • gpasswd
  • pwck
  • grpck

आप कुछ उपयोगिताओं के साथ अपना उपयोगकर्ता नाम बदल सकते हैंयह उत्तर एक तरह से विस्तार से बताता है। हालाँकि, आपको जागरूक होना चाहिए (जैसा कि वर्तमान में वहाँ पर एक टिप्पणी द्वारा छुआ गया है) कि कुछ एप्लिकेशन मान लेते हैं कि आपका उपयोगकर्ता नाम समान है। इसलिए आपका उपयोगकर्ता नाम बदलने से कुछ समस्याएं हो सकती हैं।


बहुत बहुत धन्यवाद। दक्षिण ब्राजील में सुबह चार बजे की घड़ी है ... मैं इतना बिगड़ गया था कि सो नहीं पाया। मैं कोशिश करूंगा कि ...
जोआओ रोड्रिगो लीओ

2
यदि आपने बैकअप नहीं बनाया है, तो प्रयोग करके देखें /etc/passwd-या /var/backups/passwd.bak। सही अनुमतियाँ सेट करना सुनिश्चित करें। उदाहरण:sudo install -m644 /etc/passwd- /etc/passwd
लेकेनस्टाइन

4

लाइव एलसीडी को बूट करने के विकल्प के रूप में, आप eरेस्क्यू मोड प्रविष्टि को संपादित करने के लिए ग्रब मेनू पर प्रेस कर सकते हैं , और init=/bin/shkub तर्क को जोड़ सकते हैं । यह आपको एक रूट शेल पर दाईं ओर छोड़ देगा जहां आप फाइल-सिस्टम को पढ़ने-लिखने के बाद बैकअप फाइल को मूल में कॉपी कर सकते हैं mount -o remount,rw /


1
क्या आपको यकीन है कि यह काम करेगा? इसके बिना /etc/passwd, रूट नाम का कोई उपयोगकर्ता नहीं है, और यूआईडी = 0 वाला कोई उपयोगकर्ता नहीं है । क्या आवश्यक उपयोगिताओं आवश्यक रूप से उन असामान्य परिस्थितियों में काम करेंगे?
एलियाह कगन

1
@EliahKagan, uid = 0 के साथ हमेशा एक उपयोगकर्ता होता है क्योंकि यह वह uid है जिसके साथ कर्नेल पहली प्रक्रिया शुरू करता है। cpया mvजरूरत नहीं है / etc / passwd।
Psusi

इसने मेरे गूंगे बट को बचा लिया! मैं crontab सामान के संबंध में / etc / छाया पर संपादित करता हूं। मुझे नहीं पता था कि कोई 'छाया' के साथ खिलवाड़ नहीं करता है .... मैंने सोचा था कि मैं एफ ** सीकेडी था, लेकिन @psusi के लिए भगवान का शुक्र है .... मैंने रिकवरी के लिए ग्रब मेनू को संपादित किया / बिन / श के रूप में उसने कहा। , उसके माउंट का पीछा किया और / भ्रष्ट / एक से अधिक में / var / बैकअप से शॉव्डो की नकल की ... आदि नए के रूप में अच्छा है .. धन्यवाद
rowntreerob

2

इस उत्तर को पढ़ने से पहले आपको एलियाह कगन के उत्तर को पढ़ना चाहिए। वह बताता है कि स्थिति से कैसे निपटना है और आम तौर पर मैन्युअल रूप से बदलने / आदि / पास करने के लिए क्यों आवश्यक नहीं है।

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

vipw

आदमी पृष्ठों से:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

उदाहरण के लिए यदि आप एक यूआईडी को बदलना चाहते हैं, जहां तक ​​मुझे पता है, फ़ाइलों को मैन्युअल रूप से संपादित करने का एकमात्र तरीका है। इसके अलावा, यदि आप एक उपयोगकर्ता पासवर्ड बदलना चाहते हैं और फिर अपने पिछले पर वापस जाए बिना यह जाने कि उसके पास कोई रास्ता नहीं usermodहै। लेकिन अगर आप हैशेड पासवर्ड सेव करते हैं तो शैडो फाइल को फॉर्म में रखें, इसके बाद यूजर का पासवर्ड बदल दें जिससे आप हैशेड पासवर्ड को फिर से शेडो एडिट कर सकते हैं vipw -s


1

@ EliahKagan के उत्तर का अनुसरण करने के बाद, मैं लॉगिन नहीं कर सका lightdmऔर मेरा खाता सूचीबद्ध नहीं किया गया। मुझे पता चला कि passwdफ़ाइल की अनुमति ठीक से स्थापित नहीं की गई थी; lightdm उपयोगकर्ता के पास इसकी पहुँच नहीं थी। यहाँ मैंने इसे कैसे तय किया:।

पर लॉग इन करें एक tty Ctrl+ Alt+F1

/etcनिर्देशिका में परिवर्तन

cd /etc

फिर अनुमतियों को इसमें बदलें 644

sudo chmod 644 passwd

फिर करो ls -la

अनुमति स्ट्रिंग इस तरह दिखना चाहिए

-rw-r--r--

-1

यदि आप बस खुले टर्मिनल में लॉगिन कर सकते हैं और यह कोशिश कर सकते हैं:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

अन्य

पुनर्प्राप्ति मोड में या Ubuntu लाइव सीडी से बूट करें। फिर, अपनी पुरानी ड्राइव माउंट करें:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

फिर रिबूट। यह रूट के लिए कोई पासवड सेट नहीं करेगा।

फिर, आप लॉगिन कर सकते हैं, अपने सभी खातों को फिर से बना सकते हैं, आदि।

आप बैक अप का उपयोग भी कर सकते हैं जिसे कहा जाता है (मुझे लगता है) /etc/passwd-

संपादित करें : (एक और तरीका जिसे मैंने पहले आजमाया नहीं है लेकिन मुझे लगता है कि इसे भी काम करना चाहिए)

  • बूट पर GRUB प्रारंभ करें (बूट Escकरते समय दबाएं )
  • प्रेस e(वसूली मोड)
  • eकर्नेल से शुरू होने वाली लाइन पर दबाएँ
  • प्रेस Spaceऔर दर्ज करेंinit=/bin/bash
  • दबाएँ Enter
  • दबाएँ b
  • कमांड प्रॉम्प्ट पर: cp /etc/passwd- /etc/passwd
  • फिर से GRUB के लिए रिबूट
  • प्रेस e(वसूली मोड)
  • eकर्नेल से शुरू होने वाली लाइन पर दबाएँ
  • प्रेस Spaceऔर दर्ज करेंinit=/bin/bash
  • दबाएँ Enter
  • दबाएँ b
  • कमांड प्रॉम्प्ट पर mount -o remount,rw /
  • प्रकार passwd YOURUSERNAMEHERE(यदि आप अपने उपयोगकर्ता नाम को नहीं जानते हैं ls /home(जो कि उपयोगकर्ताओं की सूची के लिए लोअर केस और लोअर केस S है)
  • प्रॉम्प्ट पर नया पासवर्ड डालें
  • सामान्य बूट पर रीबूट करें।

स्रोत

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