需求:
例如: Centos7/8都可适用!当虚拟机密码忘记时,可以以重启虚拟机进入紧急模式修改配置参数,进而修改用户密码!
解决方案:
第一步:重启虚拟机进入如下界面:
[root@Centos-8-20 ~]# reboot
第二步:按e键进入紧急模式
第三步:在第五行quit后面添加rd.break后 ctrl+x重启进入如下界面
第四步:输入
mount -o remount,rw /sysroot/
第五步:输入 进入到sysroot系统中
chroot /sysroot/
第六部:
switch_root:/# chroot /sysroot/ //进入sysroot系统
sh-4.4# LANG=EN
sh-4.4# passwd //输入新密码
Changing password for user rootNew password:BAD PASSWORD: The password is a palindromeRetype new password:passud: all authentication tokens updated successfully .
sh-4.4#t touch /.autorelabel
sh-4.4# exit
exit
switch_root:/# reboot
1 如果系统的selinux开启着,则需要执行命令:touch /.autorelabel以更新系统信息,
否则重启之后密码修改不会生效。
2 扩展:创建此文件:开启 selinux 的情况下需要创建此文件,因为在rd.break 环境下 SELinux 是不生效的。
在不生效的情况下我们修改了用户的密码,也就是修改了/etc/shadow 文件,所以密码文件的安全上下文的特性会被取消。如果没有让系统在启动时自动恢复 SELinux 的安全上下文,系统会报错“无法登录”,所以SELinux 在 Enforcing 模式下的时候(如在 disabled 模式下则不用),在根目录下 touch隐藏文件autorelabel会让系统在重启时以 SELinux 默认类型重新写入 SELinux 安全上下文。