修改Linux ECS实例root密码后, 无法使用修改后的密码登录实例怎么办?

问题现象

通过ECS管理控制台修改root密码后,无法使用修改后的密码登录ECS实例。

可能原因

可能是该ECS实例账号对应的/etc/shadow/etc/passwd文件属性配置错误,例如配置了ia属性(表示不能删除、修改数据),导致修改账号密码不生效。此时,只能使用修改前的密码登录。

说明

Linux系统中的/etc/passwd文件用于存放账号信息,/etc/shadow文件用于存放密码信息。当/etc/shadow/etc/passwd文件属性配置错误,可能导致实例的部分功能无法正常工作,例如修改root账号的密码不生效。

/etc/shadow/etc/passwd文件常见属性说明如下:

属性

说明

i

  • 对文件设置i属性,不允许对文件进行删除、重命名,也不能添加和修改数据。

  • 对目录设置i属性,只能修改目录下文件中的数据,但不允许新建和删除文件。

a

  • 对文件设置a属性,只能在文件中新增数据,但是不能删除和修改数据。

  • 对目录设置a属性,只能在目录中新增和修改文件,但是不允许删除文件。

u

对文件或目录设置u属性,在删除时,其内容会被保存,以保证后期能够恢复,一般用来防止意外删除文件或目录。

s

对文件或目录设置s属性,在删除文件或目录时,会被彻底删除,不可恢复。

e

Linux中绝大多数的文件都默认拥有e属性,表示该文件是使用ext文件系统进行存储的。

解决方案

您可以参考以下步骤,根据实际需要修改/etc/shadow/etc/passwd文件属性,来解决修改root账号的密码不生效等问题。

说明

只有root用户才可以修改/etc/passwd文件和/etc/shadow文件。

  1. 使用root用户修改前的密码远程连接ECS实例。

    重要

    /etc/shadow/etc/passwd文件属性错误导致修改密码不生效,但使用修改前的密码仍然可以正常登录。

  2. 运行lsattr [文件类型]命令,查看并确认/etc/shadow/etc/passwd文件属性是否有误。

    若当前文件属性错误,请继续执行步骤3修改文件属性。

    以本文描述的故障为例,若文件存在ia属性(禁止修改数据),则有误。例如查看/etc/passwd文件:

    lsattr /etc/passwd

    发现/etc/passwd文件具有i属性(禁止修改数据),导致修改密码不生效,需移除文件i属性,请执行步骤3查看属性

  3. 使用chattr命令修改/etc/shadow/etc/passwd文件属性。

    chattr [+-=] [属性] 文件或目录名
    说明
    • +:为文件或目录添加属性。

    • -:移除文件或目录已有的某些属性。

    • =:为文件或目录设定一些属性。

    针对上述修改密码不生效无法登录实例问题,可选择移除/etc/passwdi属性来解决。

    chattr -i /etc/passwd
  4. 重新在ECS控制台重置密码。

    具体操作,请参见重置实例登录密码

  5. 使用重置后的密码登录实例,如果可以正常登录,说明问题已解决。