RHCE8学习过程 特别篇(五)进入centos7紧急模式恢复root密码
进入centos7紧急模式恢复root密码
公司一台centos7系统,忘记root密码了,需要你快速把 root 密码修改为rhce2020,找回root 身份。
实验环境:开启一台 centos7系统
首先重启,按↑↓键,进入如下界面,选择第一项,按下e键进行编辑
#开机时按任意键,即可进入此界面,光标选择第一条,‘e’表示进入编辑模式
#进入编辑模式后会看到这些信息。
找到“Linux16”开头的行,在Linux16的行尾空格后添加 “rd.break”
改完之后,按下 Ctrl+X进入紧急模式
原理:打断系统正常启动,然后进一个 bash 环境,系统并没有真正的启动
emergency : 紧急
查看系统根挂载情况:
发现是只读的。需要重新以rw方式挂载/sysroot
mount -o remount,rw /sysroot #重新挂载,使其拥有读写权限
换根,修改密码
chroot 命令用来在指定的根目录下运行指定
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置
在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件。
输入:
LANG=en #修改语言环境为英文,这样避免显示乱码
passwd #开始修改密码
注:如果系统的 selinux开启着,则需要执行命令: touch /.autorelabel 以更新系统信息,否则重启之后密码修改不会生效,先退出当前根,reboot 重启系统。
我们已经关闭 selinux,不需要创建 /.autorelabel 。
扩展:
创建此文件:开启 selinux的情况下需要创建此文件,因为在 rd.break环境下SELinux是不生效的。在不生效的情况下我们修改了用户的密码,也就是修改了/etc/shadow 文件,所以密码文件的安全上下文的特性会被取消。如果没有让系统在启动时自动恢复 SELinux的安全上下文,系统会报错“无法登录”,所以 SELinux在Enforcing模式下的时候(如在 disabled模式下则不用),在根目录下touch隐藏文件 autorelabel会让系统在重启时以SELinux默认类型重新写入SELinux安全上下文。