对于系统管理员,忘记服务器系统root账号密码是一件十分严重的事,那该如何找回密码呢?要去找回密码,就要去找到能够不使用密码还能使用root权限登录系统的方法(单用户权限登录),不妨先来回顾一下我们系统的启动流程:
1. boot引导系统启动
2. 进入grub2启动引导器,引导系统启动
3. 首先进入临时系统,获取硬件设备信息并交给真正的linux系统,并开始启动真正的liunx系统。
4. Systemd正式接管系统。
大家可以发现,在系统启动过程中,会有一个临时的系统先进行运行,并且临时系统要向linux写入计算机的硬件配置信息,所以说临时系统也是对linux具有修改权限的,也就是说我们进入这个临时系统也可以对密码进行修改,下面我们将对RHEL7.x的服务器操作系统找回root账号密码:
首先,我们要做的就是进入系统开机选择页面:
然后高亮选择在我们要使用的内核上按 'e'
然后按向下键 ↓ ,找到以“Linux16”开头的行,在该行的最后面输入“ init=/bin/sh”
接下来按“ctrl+x”组合键进入 “单用户模式"
成功进入单用户模式
接下来再输入“mount -o remount,rw /”(注意mount与-o之间和rw与/之间的有空格)
然后再输入“passwd”或者“passwd root”回车,以修改root账号密码了,重复输入一个不少于8位的密码(密码在输入的时候是不显示的,看起来就像没反应一样,只需要正确输入并回车就可以)
至此,已经完成对root用户密码的找回。但是对于RHEL7.x的系统来说,这样子还是不够的,因为我们的系统还是被selinux监控着的。SELinux监控系统的一个重要方式就是文件以及目录的上下文。对于SELinux来说,没有上下文的文件是不能够使用的,但是临时系统中是没有SELinux这个功能的。而我们修改密码所用到的passwd命令是会重新去生成新的相关配置文件,也就是说在临时系统中去使用passwd命令修改密码的时候会导致用户名密码的相关配置文件失去上下文,也就是会在SELinux的系统中失效,然后我们的系统就永远无法登陆了。为了防止这种情况出现,我们要在根目录下创建一个文件,命令如下:
输入 touch /.autorelabel ,回车
这个文件会在开机过程中使SELinux对系统的全部文件的上下文进行刷新。可以给没有设置上下文的文件自动设置好上下文。
输入exec /sbin/init,回车
回车后出现下面的界面,这里稍微等几分钟,系统会自动重启
输入新设置的密码登入root
至此,RHEL7.x系列系统root用户密码找回成功!