Linux忘记root密码
如果忘记root密码了怎么办?
重启操作系统
重新启动或开启操作系统(这里使用的是CentOS7.5系统),在选择进入系统的Grub菜单界面如下图所示,根据提示按"e"小写字母进入编辑界面。
输入"init=/bin/bash" 加载bash解释器
然后,要按方向键向下键(否则可能看不到想要找的行),找到以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入"init=/bin/bash"
输入"enforcing=0" 关闭selinux
说明:如果不确定系统是否开启了Selinux或者刚装完没有修改过的系统,可以用下面的方法解决:即在以字符串"Linux16"开头的行,将光标移动到该行的结尾,然后输入init=/bin/bash enforcing=0
("init=/bin/bash"作用让系统登录后加载bash解释器,"enforcing=0"是关闭Selinux)
单用户模式启动Linux
配置完成后,根据界面下面的英文提示按"Ctrl-x"组合键以单用户模式启动Linux,如下图所示:
挂载目录,修改密码
图中的mount-o rw,remount /
命令是重新挂载根目录为可写状态(rw表示可写,remount是重新挂载),在单用户模式下默认根文件系统是处于只读状态。
特殊强调:如果是系统的SELinux处于开启状态,并且前面修改内核选项时,没有增加enforcing=0
,则此处需要多执行一条touch /.autorelabel
命令以便在下次系统引导前重新标记系统中的所有相关文件,因为在SELinux开启时,修改root密码时修改passwd文件会导致SELinux安全上下文报错,如果前文修改内核选项时,已增加“enforcing=0”,那么在修改密码文件时,Selinux是关闭状态,因此,这里就不需要执行touch /.autorelabel
命令了。
配置完后,执行exec /sbin/init
命令重启系统,注意,此时,无法使用其它重启命令。
验证登录
重启系统后验证修改后的密码是否能登录,出现如下图所示,表示密码修改并登录成功。