一次linux root密码错修改历程

在虚拟机上安装denyhost 做测试,结果把root密码改得自己都忘记了。于是:

  1. 1.        进入单用户模式

   开机的时候按e 进入grub  编辑页面选择第二行,在最后面加入single,回车b引导进入单用户

spacer.gif

spacer.gif

spacer.gif

  1. 2.       passwd root修改密码

  这个时候提示:authentication token manipulation error

<1>怀疑是权限不够的问题,于是ls �Calh  /etc/passwdls �Calh  /etc/shadow

发现两个都是600 排除这个原因。

<2>怀疑是shadow的第四个字段加入了限制修改天数,于是cat /etc/shadow发现root第四个字段为0,排除

<3>怀疑是磁盘满导致,df �Ch df  -I touch xxx测试了一下,排除

<4>怀疑是特殊属性i导致, lsattr  /etc/passwd  lsattr /etc/shadow 发现并无-I 属性,排除。

<5>考虑用已有用户的密码覆盖,于是把/etc/shadow里面的linzb用户密码覆盖给root,失败。(后来发现修改相同的用户密码,shadow里面第二字段的输出是不一样的。具体原因有待研究)

<6>尝试清空shadow记录,并用pwconv同步/etc/passwd/etc/shadow。失败

  1. 3.       尝试救援模式修复

多次失败后,脑子短路把passwd也删了,于是单用户模式也起不来了。于是:

<1>进入救援模式

 开机的时候快速摁f2,切换到boot ,把cdrom调到第一位,f10保存重启

spacer.gif

根据提示一路enter

spacer.gif

这是最后的界面,系统默认挂载在/mnt/sysimage下用chroot /mnt/sysimage可以切换到系统

把救援镜像的passwdshadow复制给系统

 Cp /etc/passwd  /mnt/sysimage/etc/passwd

Cp /etc/shadow  /mnt/sysimage/etc/shadow

重启后仍失败

<2>尝试重装相对应的rpm

首先查找passwd 属于那个包

spacer.gif

Rpm  -e  spacer.gif  --nodeps强制卸载

挂载救援镜像到对应路径,并复制对应的包安装

spacer.gif

Rpm �Civh spacer.gif安装

此时passwd root已经不再报错

<3>修改密码后登陆发现闪退,重复几次,确认即使密码正确也会如此

查看secure日志发现:

spacer.gif

怀疑是pam出现问题。于是按照第<2>步的方法重装pam,发现问题仍在

Ls  /lib/security 发现没有pam_stack.so这个模块

于是开启相同环境的centos3  ,发现centos3也没有这个模块

怀疑是pam配置文件有问题

于是逐一对比,终于在/etc/pam.d/login里面找到了pam_stack.so字样,发现centos3并没有这个配置,于是del后重置密码,reboot  成功。至此问题解决


你可能感兴趣的:(修改系统root密码)