在管理Linux服务器时,忘记root密码是一件棘手的事情,但幸运的是,CentOS提供了救援模式来帮助我们重置root密码。本文将详细介绍如何通过GRUB引导菜单进入紧急模式(或称为救援模式),进而恢复root用户的密码。请注意,操作前请确保您有物理或远程访问服务器的权限,并且了解此操作对系统的影响。
准备工作
- 确保系统可重启:在进行任何操作之前,请确保可以安全地重启服务器,不会影响到关键业务运行。
- 备份数据:虽然本操作主要是修改密码,但在处理系统级操作时,良好的习惯是先做好数据备份。
步骤详解
以Red Hat Enterprise Linux 9 为例
1. 重启系统
首先,重启您的服务器。在启动过程中,您会看到GRUB引导加载器的界面。
2. 进入编辑模式
在GRUB界面,使用键盘的上、下箭头选择默认的内核启动项(通常是第一个选项),然后按键盘上的 e
键进入编辑模式。
3. 修改启动参数
找到以 linux16
或 linuxefi
(取决于您的CentOS版本和配置)开头的行,或者是quiet结尾的地方。在该行的末尾添加 rd.break
参数,这会让系统在初始化阶段暂停,允许我们进行进一步的操作。修改完毕后,按 Ctrl
+X
键继续启动过程,此时系统将进入紧急模式。
4. 重新挂载根文件系统
系统暂停后,您会进入一个简化的shell环境。首先需要重新挂载根文件系统为读写模式,执行以下命令:
mount -o remount,rw /sysroot
5.切换到系统的真实根目录环境
chroot /sysroot
6. 重置root密码
接下来,使用 passwd
命令来重置root用户的密码,或者使用明文方式修改密码均可
passwd root
echo "your password" | passwd --stdin root # 明文方式
7. 更新SELinux上下文
对于启用了SELinux的系统,为了防止文件权限问题,需要创建一个.autorelabel
文件,以便下次启动时自动重新标记文件系统的SELinux上下文:
touch /.autorelabel
7. 退出并重启
完成上述步骤后,依次执行以下命令退出紧急模式并重启系统(最好使用sync
命令同步一下,确保所有未缓冲的文件系统数据都被写入磁盘,推荐但是非必须):
sync
exit
exit
然后输入两次exit退出重启,并观察是否触发selinux-autorelabel