在Linux系统中,如果忘记用户密码(包括root密码),无法正常登录系统时,可通过进入单用户模式或救援模式来重置密码。以下为专业且通用的恢复方法,适用于绝大多数主流Linux发行版(如CentOS、Ubuntu、Debian等)。

首先,对于root密码遗忘的情况,需要在系统启动时进入GRUB引导菜单。重启服务器或电脑,在开机自检后、内核启动前,反复按Shift键(某些系统按Esc或F2)以进入GRUB界面。选择当前使用的内核条目,按e键编辑启动参数。
在编辑界面中,找到以linux或linux16开头的行(内核引导行),在其末尾添加一个空格,然后输入rd.break(针对RHEL/CentOS 7/8)或single、init=/bin/bash(针对不同发行版)。对于较老的SysVinit系统,可直接在引导行末尾追加single。修改完成后,按Ctrl+X或F10启动进入该模式。
如果使用rd.break模式,系统会进入一个initramfs环境的shell提示符。此时需要重新挂载根文件系统为可读写状态。执行mount -o remount,rw /sysroot,然后使用chroot /sysroot切换至真正的系统根目录。对于使用single或init=/bin/bash的方式,系统会直接给出root shell(有时需先执行mount -o remount,rw /)。
进入root shell后,使用passwd命令重置遗忘的用户密码。例如,若要修改用户username的密码,执行passwd username,根据提示输入两次新密码。若重置root密码,直接执行passwd即可。密码重置成功后,对于rd.break环境,需先按exit退出chroot,再执行exit继续启动系统;若为单用户模式,直接输入reboot或exit重启系统,然后使用新密码登录。
对于Ubuntu系统,若使用recovery mode(恢复模式),在GRUB菜单中选择高级选项,进入recovery模式,选择root提示符,执行mount -o remount,rw /后,同样可使用passwd username重置密码。若系统启用了SELinux,在重置密码后可能需要运行touch /.autorelabel(适用于支持SELinux的发行版),以防下次启动时因安全上下文问题导致启动失败。
此外,如果系统安装时使用了LUKS磁盘加密,在进入单用户或救援模式前,需要先输入解密密码以解锁根分区。如果连LUKS解密密码也遗忘,则无法直接恢复数据,需依赖备份或重新安装系统。
另一种方法是使用Live CD/USB启动系统,挂载原有根分区,然后使用chroot进入原系统环境,再执行passwd命令。具体步骤为:使用光盘或U盘启动进入Live环境,执行fdisk -l或lsblk确定根分区设备(如/dev/sda2),将其挂载到/mnt目录,如果分区有独立的/boot或/home分区也一并挂载对应位置(可省略),对于UEFI系统还需挂载/dev/efi分区到/mnt/boot/efi。然后执行chroot /mnt,进入后执行passwd username重置密码,之后退出chroot并重启系统。
重置密码后,建议立即运行systemctl daemon-reload(如果存在)并检查/etc/shadow文件权限,确保只有root用户可读写。同时,由于密码重置过程可能使现有会话失效,应通知相关用户。为防止再次遗忘,建议使用密码管理器或设置SSH密钥登录作为备用登录方式。
总结而言,Linux忘记密码的核心解决思路是绕过正常登录流程,通过单用户模式或Live环境获得root权限,然后使用passwd重新设置用户密码。操作过程中务必谨慎修改系统分区挂载属性,避免数据损坏。若系统为云服务器,通常可在云控制台使用VNC连接进入救援模式,具体操作可参考云服务商的官方文档。

查看详情

查看详情