对于系统管理员,忘记服务器系统root账号密码是一件十分严重的事,那该如何找回密码呢?要去找回密码,就要去找到能够不使用密码还能使用root权限登录系统的方法(单用户权限登录),不妨先来回顾一下我们系统的启动流程:

1. boot引导系统启动

2. 进入grub2启动引导器,引导系统启动

3. 首先进入临时系统,获取硬件设备信息并交给真正的linux系统,并开始启动真正的liunx系统。

4. Systemd正式接管系统。

大家可以发现,在系统启动过程中,会有一个临时的系统先进行运行,并且临时系统要向linux写入计算机的硬件配置信息,所以说临时系统也是对linux具有修改权限的,也就是说我们进入这个临时系统也可以对密码进行修改,下面我们将对RHEL7.x的服务器操作系统找回root账号密码:

首先,我们要做的就是进入系统开机选择页面:



centos进程删除 centos彻底删除文件命令_linux


然后高亮选择在我们要使用的内核上按 'e'


centos进程删除 centos彻底删除文件命令_找回密码_02


然后按向下键 ↓ ,找到以“Linux16”开头的行,在该行的最后面输入“ init=/bin/sh”


centos进程删除 centos彻底删除文件命令_linux_03


接下来按“ctrl+x”组合键进入 “单用户模式"


centos进程删除 centos彻底删除文件命令_linux下用命令删除的文件能找回吗_04

成功进入单用户模式

接下来再输入“mount -o remount,rw /”(注意mount与-o之间和rw与/之间的有空格)


centos进程删除 centos彻底删除文件命令_找回密码_05


然后再输入“passwd”或者“passwd root”回车,以修改root账号密码了,重复输入一个不少于8位的密码(密码在输入的时候是不显示的,看起来就像没反应一样,只需要正确输入并回车就可以)


centos进程删除 centos彻底删除文件命令_linux_06


至此,已经完成对root用户密码的找回。但是对于RHEL7.x的系统来说,这样子还是不够的,因为我们的系统还是被selinux监控着的。SELinux监控系统的一个重要方式就是文件以及目录的上下文。对于SELinux来说,没有上下文的文件是不能够使用的,但是临时系统中是没有SELinux这个功能的。而我们修改密码所用到的passwd命令是会重新去生成新的相关配置文件,也就是说在临时系统中去使用passwd命令修改密码的时候会导致用户名密码的相关配置文件失去上下文,也就是会在SELinux的系统中失效,然后我们的系统就永远无法登陆了。为了防止这种情况出现,我们要在根目录下创建一个文件,命令如下:

输入 touch /.autorelabel ,回车


centos进程删除 centos彻底删除文件命令_linux下用命令删除的文件能找回吗_07


这个文件会在开机过程中使SELinux对系统的全部文件的上下文进行刷新。可以给没有设置上下文的文件自动设置好上下文。

输入exec /sbin/init,回车


centos进程删除 centos彻底删除文件命令_系统启动_08


回车后出现下面的界面,这里稍微等几分钟,系统会自动重启


centos进程删除 centos彻底删除文件命令_linux下用命令删除的文件能找回吗_09


输入新设置的密码登入root


centos进程删除 centos彻底删除文件命令_centos进程删除_10


至此,RHEL7.x系列系统root用户密码找回成功!