使用 PAM,如何设置密码更改之间的最短天数?

使用 PAM,如何设置密码更改之间的最短天数?

在我的 Amazon Linux(RHEL 派生)系统上,在 /etc/login.defs 中,我将密码更改之间的最小天数设置为 1 天:PASS_MIN_DAYS 1

我认为我应该使用 /etc/pam.d/ 中的 PAM 配置文件来做到这一点。但是,我找不到任何这样做的文档。有没有办法控制何时可以使用 PAM 更改密码?请问是什么?

答案1

设置用户特定密码策略:

一种选择是修改用户密码策略 - 使用lchage命令。

以下命令将设置密码更改之间所需的最短天数。

lchage --mindays=<days> <username>

以下命令可用于查看当前策略

lchage --list <username>

所有用户的共同政策:

要设置系统中所有用户通用的密码策略,您需要编辑文件PASS_MIN_DAYS中的变量/etc/login.defs

root@ubuntu:~# grep PASS_MIN_DAYS /etc/login.defs 
#   PASS_MIN_DAYS   Minimum number of days allowed between password changes.
PASS_MIN_DAYS   1

上面的 grep 列表显示密码更改之间所需的最短 # 天为 1。

如果用户尝试在设置的最短 # 天之前重置密码,他/她将收到如下列出的错误。

$ passwd
Changing password for test.
(current) UNIX password: 
You must wait longer to change your password
passwd: Authentication token manipulation error
passwd: password unchanged

创建用户时,定义的策略/etc/login.defs将适用于正在创建的用户。同样 lchage --list可以使用命令查看当前策略。

答案2

你提出了一个有趣的问题。根据 login.defs 手册页,pass_min_days 参数仅在创建帐户时应用于用户,因此 /etc/pam.d 中的更改更适合保持一致性。然而,据我所知,标准 pam_unix 模块(我猜在较小程度上是 pam_cracklib.so)没有任何与日期相关的选项。还有chage,它操纵 /etc/shadow,/etc/pam.d/ 中没有任何内容。

最终,我认为答案是您无法通过 PAM 参数来管理这个值。

相关内容