忘记了Linux的root密码该怎么办?

忘记Linux root密码时,只需重启Linux系统,然后引导进入Linux的单用户模式(init 1),由于单用户模式不需要输入登陆密码,因此,可直接登陆系统,修改root密码即可解决问题。需要说明的是,CentOS6和CentOS7下修改root密码的方式是不同的。

一、RHEL/CentOS6.x及之前修改root密码

操作步骤如下:

1.重启系统,待系统启动到grub引导菜单时,按Esc键,找到当前系统引导项。如果有多个可用内核,则会有多个引导选项。

2.通过方向键定位到需要使用的系统引导内核选项上,然后按键盘e键,进入编辑状态。

3.然后通过上下方向键,选中带有kernel指令的一行,继续按e键,编辑该行,在行末尾价格空格,然后添加single。

4.修改完成后,按Enter键,返回到刚才的界面。

5.最后按b键,系统开始引导。

这样就切换到单用户模式下,单用户模式与Windows的安全模式类似,只启动最基本的系统,网络以及应用服务均不启动。单用户模式启动完毕,系统自动进入命令行状态下,输入passwd,系统提示输入两次新的密码,就可修改密码。

如果需要正常启动系统,只需输入init 3,切换到多用户模式下。用root登陆系统即可。

 

二、RHEL/CentOS7中修改root密码

在CentOS7.0版本之后,Linux的机制发生了变化。在系统引导方面,使用grub2代替了之前的grub的引导,init初始化程序也更换成了systemd初始化程序,随之而来,root密码重置的方法也发生了变化。

操作步骤如下:

1.重启系统,待系统启动到grub2引导菜单时,找到当前系统引导选项(如果有多个可用内核,则会有多个引导选项),按e键,进入编辑模式。

2.然后通过上下方向键将光标定位到kernel引导行所在行尾,然后添加以下内容

 init=/bin/sh

3.添加完成,按Ctrl+x组合键启动shell引导,最后进入单用户模式

4.要挂载根分区为可读写模式,执行如下命令

mount -o remount,rw /

5.这里需要注意,如果系统已开启了SELinux,还需要在根分区中创建autorelabel文件,否则系统无法正常启动。

查看SELinux是否开启

/usr/sbin/sestatus

(如果SELinux开启),创建autorelabel文件(我在操作时,检测到SELinux未开启,但也进行了下面的操作,否则最后一步可能无法重启。不知道不能重启的原因是不是这里) 

touch /.autorelabel

6.然后就可以执行passwd命令重置密码了。

passwd

提示输入两次新密码即可。

7.密码修改完后,需要重启

直接执行reboot命令已经无效,需要输入全路径命令

exec  /sbin/init
或
exec  /sbin/reboot

这样就完成了密码重置,正常登陆系统,查看密码是否修改成功。

(注意:我在输入exec /sbin/init命令后,虚拟机中centos一直没反应,等了差不多一两分钟后才有反应。)

 

参考:

《循序渐进Linux》第2版 10.1.2章节 P326

 

posted @ 2019-03-29 22:08  静水楼台/Java部落阁  阅读(635)  评论(0编辑  收藏  举报