ฉันลบไฟล์“ / etc / passwd” และไม่สามารถเข้าสู่ระบบได้


22

ฉันพยายามเปลี่ยนชื่อผู้ใช้ของฉันและไดเรกทอรีภายในบ้านของฉัน ( /home/username) และระบบของฉันก็เริ่มขัดข้อง ผมลบpasswdไฟล์ passwd_bkpแต่ผมได้สำรองข้อมูลชื่อ ฉันพยายามที่จะเปลี่ยนชื่อpasswd_bkpเป็นpasswdและมันไม่ทำงาน ไม่มีคำสั่งที่ถูกดำเนินการ ... ฉันอยู่ในหน้าต่างเทอร์มินัล

ฉันรีสตาร์ทระบบของฉันและตอนนี้ฉันไม่สามารถเข้าสู่ระบบได้ GRUB มีตัวเลือกสองแบบ: Linux และโหมดการกู้คืน

ฉันพยายามเปิดเซสชันเป็น root แต่มีข้อความระบุว่าระบบไฟล์เสียหาย ฉันไม่สามารถเข้าถึงไฟล์ของฉันได้

ฉันทำไฟล์ทั้งหมดของฉันหายหรือไม่


1
สำหรับคำถามที่ติดตามของคุณ: เปลี่ยนรหัสผ่านของคุณโดยใช้เทคนิคการกู้คืน ดู: askubuntu.com/questions/24006/…
david6

1
@ david6 เมื่อผู้ใช้ไม่สามารถเข้าสู่ระบบได้เนื่องจากไม่มี/etc/passwdไฟล์จะไม่สามารถรีเซ็ตรหัสผ่านได้ คุณต้องกู้คืน (หรือสร้างใหม่) passwdไฟล์ และเมื่อเสร็จแล้วโดยทั่วไปไม่จำเป็นต้องรีเซ็ตรหัสผ่าน
Eliah Kagan

@Eliah Kagan: เห็นด้วย แต่ฉันก็ตอบคำถามติดตามหลังจาก/ etc / passwdถูกคืนค่าจากสำเนาสำรอง
david6

คุณจะต้องเฉพาะเจาะจงมากขึ้นเกี่ยวกับข้อผิดพลาด
psusi

คำตอบ:


32

ไม่ตามคำอธิบายของคุณคุณจะไม่สูญเสียไฟล์ใด ๆ ของคุณ (ยกเว้นไฟล์/etc/passwdที่คุณลบ แต่ไฟล์ที่คุณสำรองไว้)

บูตอูบุนตู CD / DVD หรือ USB แฟลชไดรฟ์สด เลือกTry Ubuntu(ไม่Install Ubuntu) เมื่อเดสก์ท็อปโหลดให้เปิดหน้าต่าง Nautilus (ไฟล์เบราว์เซอร์) คุณสามารถหาพาร์ติชันสำหรับระบบ Ubuntu ของคุณDevicesได้ คลิกที่ภาพเพื่อติดตั้ง

ตอนนี้คุณสามารถคืนค่าการสำรองข้อมูล อย่างไรก็ตามคุณต้องทำเหมือนเป็นราก ต่อไปนี้เป็นวิธีง่ายๆในการทำ

  1. เปิดหน้าต่างเทอร์มินัล ( Ctrl+ Alt+ T) ในเทอร์มิพิมพ์cdและพิมพ์Spaceที่สำคัญ แต่ไม่ได้กดEnterเลย

  2. ใน Nautilus ค้นหาetcไดเรกทอรีภายในระบบ Ubuntu ที่ติดตั้ง (นี่ไม่เหมือนกับไดetcเร็กตอรี่ของ live CD. ไดเรคทอรี่etcภายในระบบ Ubuntu ที่ติดตั้งอยู่ในพาร์ติชั่นที่คุณเพิ่งติดตั้ง)

  3. ลากetcไดเรกทอรีนี้ไปยังเทอร์มินัลซึ่งจะวางเส้นทางแบบเต็มลงในเทอร์มินัลโดยทำตามcd ...คำสั่ง

  4. กดEnterเพื่อเรียกใช้คำสั่ง ตอนนี้คุณอยู่ในไดเรกทอรีที่มีpasswdไฟล์ของคุณ ฉันสมมติว่าไฟล์สำรองของคุณpasswd_bkpอยู่ที่นี่ด้วย

  5. เรียกใช้คำสั่งนี้:

    sudo cp passwd_bkp passwd
    

ซึ่งจะกู้คืนpasswdไฟล์จากการสำรองข้อมูลของคุณดังนั้นตอนนี้คุณควรจะสามารถรีบูตลบ CD / DVD หรือ USB แฟลชไดรฟ์แล้วบูตกลับเข้าสู่ระบบ Ubuntu ที่ติดตั้งไว้ ระบบ Ubuntu ที่คุณติดตั้งไว้จะทำงานได้อีกครั้ง


สำหรับอนาคตที่คุณควรทราบว่ามันจะไม่แนะนำให้แก้ไขด้วยตนเอง/etc/passwd, /etc/group, หรือ/etc/shadow /etc/gshadowแต่คุณควรใช้โปรแกรมอรรถประโยชน์ที่ให้ไว้เป็นส่วนหนึ่งของ Ubuntu เพื่อทำการเปลี่ยนแปลงใด ๆ ที่คุณต้องการให้กับผู้ใช้และกลุ่มในระบบของคุณ users-adminคุณอาจทราบว่าคุณสามารถแก้ไขได้ในการตั้งค่าระบบหรือ แต่ก็มียูทิลิตี้บรรทัดคำสั่งที่ทรงพลังสำหรับสิ่งนี้ซึ่งยังปลอดภัยกว่าและง่ายกว่าการแก้ไขไฟล์การตั้งค่าด้วยตนเอง นี่คือเอกสารเกี่ยวกับยูทิลิตี้ที่เกี่ยวข้องมากที่สุดใน Ubuntu:

  • adduser / addgroup
  • deluser / delgroup
  • usermod
  • groupmod
  • useradd(ระดับต่ำกว่าadduserปกติคุณควรใช้adduserแทน)
  • userdel(ระดับต่ำกว่าdeluserปกติคุณควรใช้deluserแทน)
  • groupadd(ระดับต่ำกว่าaddgroupปกติคุณควรใช้addgroupแทน)
  • groupdel(ระดับต่ำกว่าdelgroupปกติคุณควรใช้delgroupแทน)
  • passwd
  • gpasswd
  • pwck
  • grpck

คุณสามารถเปลี่ยนชื่อผู้ใช้ของคุณด้วยยูทิลิตี้เหล่านี้ คำตอบนี้จะอธิบายรายละเอียดทางเดียว อย่างไรก็ตามคุณควรระวัง (ตามที่มีการสัมผัสโดยความคิดเห็นในขณะนั้น) ว่าบางแอปพลิเคชันถือว่าชื่อผู้ใช้ของคุณยังคงเหมือนเดิม ดังนั้นการเปลี่ยนชื่อผู้ใช้ของคุณอาจทำให้เกิดปัญหา


ขอบคุณมาก. เป็นเวลาสี่โมงเช้าที่นี่ทางตอนใต้ของบราซิล ... ฉันกังวลมากจนฉันนอนไม่หลับ ฉันจะลองดู ...
joao rodrigo leao

2
หากคุณไม่ได้สำรองข้อมูลให้ลองใช้หรือ/etc/passwd- /var/backups/passwd.bakตรวจสอบให้แน่ใจว่าได้ตั้งค่าการอนุญาตที่ถูกต้อง ตัวอย่าง:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn

4

เป็นอีกทางเลือกหนึ่งในการบูท livecd คุณสามารถกดeที่เมนูด้วงเพื่อแก้ไขรายการโหมดช่วยเหลือและเพิ่มinit=/bin/shไปยังอาร์กิวเมนต์ของเคอร์เนล สิ่งนี้จะทำให้คุณไปที่รูทเชลล์ซึ่งคุณสามารถคัดลอกไฟล์สำรองข้อมูลกลับไปเป็นต้นฉบับหลังจากที่ติดตั้งระบบไฟล์แบบอ่าน - เขียนmount -o remount,rw /อีกครั้ง


1
คุณแน่ใจว่าจะใช้งานได้หรือไม่ โดยไม่ต้อง/etc/passwd, มีผู้ใช้ไม่เรียกว่ารากและผู้ใช้ที่มี uid = 0 ไม่มี ยูทิลิตี้ที่จำเป็นจะต้องทำงานภายใต้เงื่อนไขที่ผิดปกติเหล่านั้นหรือไม่
Eliah Kagan

1
@EliahKagan มีผู้ใช้ที่มี uid = 0 อยู่เสมอเพราะนั่นคือ uid ที่เคอร์เนลเริ่มกระบวนการแรกด้วย cpหรือmvไม่ต้องการ / etc / passwd
psusi

สิ่งนี้ช่วยชีวิตฉันโง่! ฉันแก้ไขด้วยตนเองใน / etc / shadow เกี่ยวกับสิ่ง crontab ฉันไม่ทราบว่าจะไม่ยุ่งกับ 'เงา' .... ฉันคิดว่าฉันเป็น f ** ckd แต่ขอบคุณพระเจ้าสำหรับ @psusi .... ฉันแก้ไขเมนูด้วงสำหรับการกู้คืนเพิ่ม / bin / sh ตามที่เขาพูด ตามเมานท์ของเขาและเพิ่งคัดลอก Shawdow จาก / var / backups ที่เสียหายใน / etc ... ดีเหมือนใหม่ .. ขอบคุณ
rowntreerob

2

คุณควรอ่านคำตอบแรกของ Eliah Kagan ก่อนที่จะอ่านคำตอบนี้ต่อไป เขาอธิบายถึงวิธีจัดการกับสถานการณ์และทำไมไม่จำเป็นต้องเปลี่ยน / etc / passwd ด้วยตนเอง

อย่างไรก็ตามถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่และคุณจำเป็นต้องแก้ไข/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.

ตัวอย่างเช่นหากคุณต้องการเปลี่ยน UID ของผู้ใช้เท่าที่ฉันรู้เพื่อแก้ไขไฟล์ด้วยตนเองเป็นเพียงวิธีเดียว นอกจากนี้หากคุณต้องการที่จะเปลี่ยนรหัสผ่านผู้ใช้แล้วกลับไปก่อนหน้านี้โดยไม่ทราบว่ามันมีวิธีการใด ๆ กับ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 live Cd จากนั้นติดตั้งไดรฟ์เก่าของคุณ:

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(นั่นคือตัวพิมพ์เล็ก L และตัวพิมพ์เล็ก S) สำหรับรายการผู้ใช้)
  • ป้อนรหัสผ่านใหม่ที่พรอมต์
  • รีบูตเป็นบูตปกติ

แหล่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.