CentOS或RHEL 4、5、6版本
您可以从单用户模式或救援模式更改root密码。引导进入单用户模式的方法取决于您的引导加载程序
GRUB-无密码保护
使用GRUB引导进入单用户模式可以通过编辑引导加载程序配置菜单中的kernel所在行来完成
如果你的GRUB引导菜单没有使用密码保护或者你知道引导菜单的密码,就可以通过编辑引导加载程序配置菜单中的kernel所在行来完成。
重启系统,当您看到GRUB倒计时画面,默认是5秒。按Esc来中断倒计时并进入Grub菜单。然后按照下面的操作
按 e键开始编辑
用方向键选择到 kernel 所在的行。此行告诉Grub用哪个kernel引导
再次按 e 键编辑此行
用方向键将光标移动到行尾,在空格后添加数字 1 或者添加 single
完成修改后,按 Enter 键接受修改
按 b 键启动系统,系统进入运行级别1(单用户模式)
使用passwd命令直接修改root密码即可
注意:此修改不是永久的。在下一次系统启动时,还会以默认模式启动;除非修改/etc/inittab文件
GRUB-有密码保护
如果GRUB的引导菜单被密码保护又不知道密码,则必须使用救援光盘-同样版本RHEL的启动光盘来引导系统。
选择 Rescube installed system
设置语言
设置键盘
是否需要启用网络
选择 Continue 继续
选择 shell Start shell
执行chroot /mnt/sysimage/ 命令并使用passwd命令重新设置root密码
经过以上步骤,已经重置了root密码,但是引导需要grub密码,所以还需要下面的步骤去掉grub密码
编辑/boot/grub文件
依次输入 exit 命令 和 reboot 命令 重启系统
CentOS7和RHEL7
从Red Hat Enterprise Linux 7 Beta开始,用户有两种方法可以更改忘记的root密码:
- 使用救援模式,需要启动盘
- 不使用救援模式,仅适用于GRUB2没有设置密码的情况
使用救援模式
从系统盘启动,选择Troubleshooting Rescue a CentOS system
按Enter键继续
输入 1 进入非只读模式,接着按 Enter 键,进入shell环境
执行 chroot /mnt/sysimage 命令
使用 passwd 命令修改root密码
输入两次 exit 命令重启系统
注意:
通过上面的操作,虽然修改了root用户密码,但是如果用户设置了开机引导时就需要GRUB2账户密码,在不知道GRUB2账户密码的情况下,还是无法进入系统
如要需要重新设置GRUB2账号密码还需要进行如下设置:
- 执行gru2-setpassword重新设置密码
- 编辑/boot/grub2文件以设置账号
不使用救援模式
使用 init=/bin/bash 参数启动
系统启动时,您将看到GRUB 2倒计时,默认情况下设置为5秒。按Esc,然后进入GRUB 2菜单
按 e 开始编辑。
向下滚动到 linux16 ... 或 linuxefi ... 行。该行告诉GRUB 2要引导哪个内核。
移到行尾。在空格后面添加字符串 init=/bin/bash
如果要在启动时显示输出信息,则还必须删除该行的 rhgb quiet 部分(可选但建议)
完成更改后,按 Ctrl + x 使用该内核参数启动到运行级别1(单用户模式)
Linux内核将运行/bin/bash shell而不是系统init守护程序。因此,某些功能可能受限或缺失。
运行load_policy加载SELinux策略(可选)
/usr/sbin/load_policy -i
以读写模式重新挂载根文件系统:
mount -o remount,rw /
设置新密码:
passwd root
重启系统
exec /sbin/init 3
说明:
- 此模式下是无法直接使用reboot以及systemctl命令去重启系统的。需要使用exec命令替换shell环境
- 如果要重新引导系统,请运行 exec /sbin/reboot 或者 exec /sbin/init [引导级别]
- 建议使用exec /sbin/init [引导级别] 命令重启,exec /sbin/reboot 命令实际在实验中发现并没有重启