ใน Linux regular users และ superusers ได้รับอนุญาตให้เข้าถึงบริการผ่าน password authentication หาก regular user ไม่จำรหัสผ่านได้ superuser สามารถรีเซ็ตรหัสผ่านของ regular user ได้จากเทอร์มินัลทันที อย่างไรก็ceso ถ้า superuser (หรือ root user) สูญเสียรหัสผ่านของตัวเอง? พวกเขาจะต้องกู้คืนรหัสผ่านที่สูญหายก่อนบูทเข้าสู่หน้าจอ login วิธีนี้ทำให้ผู้ใช้ร้ายที่มี physical access เข้าถึง Linux host ได้สามารถครอบครองสิทธิ์เต็มรูปแบบ บทความนี้ดูวิธีกู้คืน lost root password ใน Linux ด้วยสองวิธีที่แตกต่างกัน
หมายเหตุ: วิธีการรีเซ็ต root password คล้ายกันสำหรับส่วนใหญ่ของ distros ที่นี่สาธิตด้วย Ubuntu เรายังใช้ "root password" ทั่วทั้ง tutorial เพื่อความง่าย แต่สามารถตีความได้แทนกันได้กับ superuser password
1. รีเซ็ต Lost Linux Root Password จาก Grub Menu
1. ก่อนอื่น เพื่อกู้คืน lost root password ต้อง restart Linux host โดยสมมติว่าคุณลืมรหัสผ่านสำหรับ root
2. เมื่อหน้า GRUB ปรากฏ ให้เลือก "*Advanced options for GNU/Linux" ด่วนๆ โดยกดลูกศรลงและ Enter
3. กด e เพื่อแก้ไขคำสั่ง
ต้อง modify หรือเปลี่ยนจากโหมด "read-only" เป็น "read-write" หาบรรทัดที่ขึ้นต้นด้วย "Linux" หา ro เปลี่ยนเป็น rw เพิ่ม init=/bin/bash ท้ายบรรทัด
4. กด F10 จะแสดงหน้าจอพร้อม prompt
5. Mount root file system ในโหมด read-write:
mount -n -o remount,rw /
6. ตอนนี้สามารถรีเซ็ต lost root password ได้ด้วยคำสั่ง:
passwd root
เมื่อเสร็จ พิมพ์:
exec /sbin/init
จะออกจาก prompt และ reboot คอมพิวเตอร์
2. รีเซ็ต Lost Root Password ด้วย Live CD
หากมี Linux Live CD/USB สามารถบูตเข้าไปและใช้รีเซ็ต root password
1. ดาวน์โหลด Ubuntu เวอร์ชันล่าสุด สร้าง bootable Live CD/USB จากมัน บูทระบบจาก removable drive แทน hard drive
2. บนหน้าจอแสดงผล เลือก "Try Ubuntu" จะเข้าสู่ Live CD desktop
3. เปิดเทอร์มินัลพิมพ์คำสั่งต่อไปนี้เพื่อกลายเป็น root:
sudo su
4. หาตำแหน่ง hard disk partition ด้วยคำสั่ง:
fdisk -l
ในส่วนใหญ่จะเป็น "/dev/sda1" แต่อาจแตกต่างขึ้นอยู่กับการ partition ฮาร์ดดิสก์
5. Mount hard disk partition ของระบบที่ต้องการกู้คืน:
mkdir /mnt/recover mount /dev/sda1 /mnt/recover
6. ตอนนี้ต้อง jail ตัวเองในไดเรกทอรี "mnt/recovery" หมายถึงเราทำเป็นว่าอยู่บน Linux filesystem ปกติ เรียกว่า chrooting
chroot /mnt/recover
7. ใช้คำสั่งต่อไปนี้เพื่อรีเซ็ต Linux root password:
passwd root
8. เมื่อเสร็จ ออกจาก chroot shell:
exit
9. Unmount root partition:
umount /mnt/recover
และออกจาก root:
exit
10. สุดท้าย ถอด Live CD และ reboot เข้าสู่ Linux system
การเปลี่ยน root password ใน Linux ง่ายเมื่อผ่านอารมณ์ข่มขบจากขั้นตอนเพิ่มเติมที่ต้องทำ โปรดทราบว่าใครก็ตามที่เข้าถึงคอมพิวเตอร์ของคุณได้ สามารถใช้วิธีนี้รีเซ็ต superuser หรือ root password ของคุณ หากต้องการระมัดระวังมากขึ้นกับผู้ที่เข้าถึงสิทธิ์เหล่านี้ ควร encrypt ฮาร์ดดิสก์ เพื่อไม่ให้บูทหรือ mount ได้ง่าย
คำถามที่พบบ่อย
1. Full disk encryption ส่งผลต่อการเปลี่ยน root password อย่างไร?
แม้ encryption จะทำให้ซับซ้อนเมื่อพยายามซ่อมปัญหาบน Linux แต่กรณีเปลี่ยน root password ไม่ใช่กรณีนั้น คุณยังทำได้ง่ายจาก grub ตามที่อธิบายข้างต้น ตราบใดที่เข้าถึงดิสก์ได้
ความแตกต่างคือ outsiders ไม่สามารถสลิ้งเข้าไปทำอย่างเดียวกันได้
2. Root และ superuser password ต่างกันยังไง?
ในกรณีส่วนใหญ่ root user เหมือน superuser การเปลี่ยน root password ควรเปลี่ยน superuser password ด้วย ใน Ubuntu superuser คือ user ที่มี User ID 0 หากคุณ config อีก user ให้ UID 0 ในกรณีนี้ root และ superuser passwords จะไม่เหมือนกัน
3. สร้าง expiration date ให้ password ได้ไหม?
ได้! ใช้ฟลาก -x กำหนดอายุการใช้งาน password ของ user เฉพาะตัว ตัวอย่าง พิมพ์ passwd -x 30 root จะทำให้ root password ใช้ได้แค่ 30 วัน เมื่อหมดอายุ ต้องเปลี่ยน password
เพิ่มเติม ใช้ฟลาก -w กำหนดจำนวนวันล่วงหน้าสำหรับ warning เรื่องต้องเปลี่ยน password พิมพ์ passwd -w 7 root จะส่ง warning เรื่องเปลี่ยน root password หนึ่งสัปดาห์ก่อน deadline ที่ตั้งไว้ด้วย -x
อยากขุดลึก Linux อีก? เรามี คู่มือตั้งค่า Bluetooth บน Linux และ รายการเครื่องมือสร้าง Linux distro ของตัวเอง!