转自:https://blog.51cto.com/meiling/2096125
RHEL7.4进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导。
重置密码主要有rd.break和init两种方法。(经过测试RHEL7.4 通过)

rd.break方法:
1、启动系统后,会出现下面这种情况,我们按(e)进入grub模式;

2、进入后,找到linux16开头这行,按“end”键到最后输入rd.break,按ctrl+x组合键继续;

3、进去后输入如下命令:
mount -o remount,rw /sysroot #挂载/sysroot
chroot /sysroot #切换至系统
passwd root #更改密码
touch /.autorelabel #更新系统信息文件(touch /.autorelabel 这句是为了使得selinux生效,否则将无法正常启动系统)

至此,密码修改完成
那我们要怎么防止被别人进入grub破解root密码呢?
就是在grub加密。gurb2密码有明文跟密文。我们一一演示一下.
进入系统后,输入 vim/etc/grub.d/10_linux
添加以下命令:
cat <

set superusers="laotang6"

password laotang6 123456

EOF

#(laotang6是用户名,123456是密码,这个大家根据自己设定)

grub2-mkpasswd-pbkdf2 #生成新的grub文件

重启电脑,按e进入grub模式,发现被加密了,要帐号密码才能进入。

密文加密就是先把自己的密码转化为一串加密的字符串
grub2-mkpasswd-pbkdf2 #生成密码加密

vim /etc/grub.d/10_linux

cat <

set superusers="laotang6"

password_pbkdf2 laotang6 生成的密码加密

EOF

以上实验演示完毕!
init方法:(此方法没有修改成功,先做记录,推荐使用上面的rd.break方法)
启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式。
在linux16所在参数行ro更改为rw rd.break init=/sysroot/bin/sh

按Ctrl+x启动到shell。
挂载文件系统为可写模式:mount –o remount,rw /sysroot (如果没有改成rw执行这一步)

换根 chroot /sysroot
运行passwd,并按提示修改root密码。
7.如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel (必须做,我未做时,密码没有修改成功)
8、exit退出
9、reboot 重启