因为自己要记的密码过多,有时候会突然想不起或者忘记密码,比如你重要的Linux密码,别担心,这就教你如何用紧急救援模式重设root密码
开启此虚拟机,进入centos7系统,稍等片刻进入下图页面
默认选中得是第一个选项(如果不是可以用方向键选择),按“e”键键入编辑模式如下图
在行尾输入rd.break如下图,进入编辑模式会看到这些信息,默认情况都是以ro自读方式引导系统进入
添加完之后,按住ctrl+x进入紧急救援模式
原理就是打断了系统的正常启动,进入了bash环境
查看根下的挂载情况 (发现是ro只读的,需要以rw方式重新挂载/sysroot)
mount -o remount,rw /sysroot # 重新挂载使其拥有读写权限
换根,修改密码
chroot 命令用来在指定的根目录下运行指令
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构
都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置
在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的
新的位置)的目录结构和文件。
回车后输入 LANG=en # 将语言改为英文,不然可能会显示乱码
passwd # 重新设置密码
如下图所示
注:如果系统的 selinux 开启着,则需要执行命令: touch /.autorelabel 以更新系统信息,否则
重启之后密码修改不会生效
扩展:创建此文件:开启 selinux 的情况下需要创建此文件,因为在 rd.break 环境下 SELinux 是不
生效的。在不生效的情况下我们修改了用户的密码,也就是修改了/etc/shadow 文件,所以密码文件的安
全上下文的特性会被取消。如果没有让系统在启动时自动恢复 SELinux 的安全上下文,系统会报错“无法
登录”,所以 SELinux 在 Enforcing 模式下的时候(如在 disabled 模式下则不用),在根目录下 touch
隐藏文件 autorelabel 会让系统在重启时以 SELinux 默认类型重新写入 SELinux 安全上下文。
设置完后退出当前根目录,reboot重启系统