一、前言
作为站在系统顶端的那个人,偶尔也会发生忘记root密码这样的情况,对于老司机来说,这根本不用慌,有很多种办法搞定!当然,我在此所说的情况仅限于能看到启动界面能够编辑grub配置的情况或者能够挂载系统光盘进行修复的情况。其他场景并不是适用。想通过阅读本文,然后破解其他远程主机的小伙伴们在此可以绕道了,此文并不适用。
二、操作思路或步骤
(一)方案一思路(只介绍思路及重点命令,不详细截图演示操作步骤)
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。1.把系统盘放入光驱,设置光驱引导启动。
2.进入救急模式,把原系统根目录所在的分区挂载到当前系统的某一目录下或者直接选1的continue就行,自动挂载。
3.按照以下步骤进行操作。
在已知密码的主机上执行:
[root@ChatDevOps ~]# awk -F ":" 'NR==1{print $2}' /etc/shadow
将已知密码主机终端输出内容粘贴到忘记密码的主机上,关键命令如下(将变量$2内容替换成已知密码主机屏幕显示内容):
[root@ChatDevOps ~]# awk -F ":" '{if(NR==1){$2="$6$0gOE0PHa$FO.D";}print $0}' /etc/shadow>shadow
[root@ChatDevOps ~]# sed -i '1s/ /:/g' shadow
[root@ChatDevOps ~]# chmod 000 shadow
[root@ChatDevOps ~]# mv shadow /etc/shadow
mv:是否覆盖"/etc/shadow"? y
此种情况只适用于已经开启密码投射的情况,开启和关闭密码投射的命令分别如下:
[root@ChatDevOps ~]# pwconv
[root@ChatDevOps ~]# pwunconv
如果没有开启密码投射也不用惊慌,同样的思路,只不过密码存放的文件变成了/etc/passwd而已。大家都看懂了吗?
(二)方案二思路
1.在方案一的基础上进行操作,本来想和方案一合并的,考虑到合并之后显得很混乱,就单独写了。
2.分区挂载之后,直接把/mnt/sysimage/etc/shadow文件里面的第一个“:”后面的内容直接删除。
在这一步需要注意的是:shadow的权限,在删除文字内容之前需要对该文件加读写权限,编辑完shadow文件之后保存以后去掉新加的权限。完成之后正常启动即可,系统启动之后无需输入密码,直接登录,登录进去之后passwd命令修改密码即可。非常方便!重点命令可参考方案四。