当您尝试使用passwd
命令修改Linux系统的ECS实例密码时,出现passwd: Module is unknown
和passwd: password unchanged
的错误提示,这通常意味着系统中与密码管理相关的PAM(Pluggable Authentication Modules)配置出现了问题,或者某些必要的PAM模块缺失或配置不正确。PAM是Linux系统中用于管理用户认证的模块。
问题现象
现象一:使用passwd
命令修改Linux系统的ECS实例密码失败,提示如下信息:
passwd: Module is unknown
passwd: password unchanged
现象二:通过云助手在线重置实例密码执行失败,提示如下信息:
可能原因
PAM模块未安装或丢失:系统中缺少必要的PAM模块(如
pam_unix.so
或pam_pwquality.so
);或模块文件被误删除或损坏。PAM配置文件错误:
/etc/pam.d/
目录下的配置文件(如common-password
或system-auth
)引用了不存在的模块;或配置文件中的模块路径或参数错误。密码策略配置问题:
/etc/security/pwquality.conf
文件未正确配置,导致pam_pwquality.so
模块无法正常工作。
解决方案
步骤一:检查pam_unix.so
是否存在
远程连接Linux实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
运行以下命令检查
pam_unix.so
模块是否存在。sudo find / -name "pam_unix.so"
如果
pam_unix.so
存在,请检查pam_pwquality.so模块配置。如果
pam_unix.so
不存在,可能是系统库文件损坏或PAM相关包未安装,请重新安装PAM包。pam_unix.so
是PAM的核心模块,负责基本的用户认证和密码管理功能。
重新安装PAM相关包。
Ubuntu/Debian
sudo apt-get update sudo apt-get install --reinstall libpam-modules
CentOS/RHEL/Alibaba Cloud Linux
sudo yum reinstall pam
再次运行以下命令检查
pam_unix.so
是否存在。sudo find / -name "pam_unix.so"
步骤二:检查pam_pwquality.so
模块配置
pam_pwquality.so
模块用于增强密码复杂性检查,包括最小长度、字符类型等。如果系统中启用了pam_pwquality.so
,用户在修改密码时必须满足其定义的复杂性规则。
查看系统日志中是否有与
pam_pwquality.so
相关的错误信息。例如Module is unknown
或pam_chauthtok() failed
。Ubuntu/Debian:
sudo tail -f /var/log/auth.log
CentOS/RHEL/Alibaba Cloud Linux:
sudo tail -f /var/log/secure
例如返回如下错误信息:
PAM unable to dlopen(pam_puquality.so): /lib/security/pam_puquality.so: cannot open shared object file: No such file or directory PAM adding faulty module: pam_puquality.so
日志显示系统无法加载
pam_pwquality.so
模块,可能是pam_pwquality.so
模块未安装,或者安装路径不正确。
运行以下命令,检查
pam_pwquality.so
是否安装。sudo find / -name "pam_pwquality.so"
如果输出类似以下内容,说明模块已安装。
/usr/lib/x86_64-linux-gnu/security/pam_pwquality.so
-
-
步骤三:验证配置是否生效
尝试修改密码,检查是否生效。
passwd
如果密码修改仍然失败,或者出现其他错误提示,请提交工单联系阿里云技术支持。