密码已删除的用户的“身份验证令牌”已过期

密码已删除的用户的“身份验证令牌”已过期

设置:

1)使用“passwd -d”命令删除用户密码

2)用户正在运行 cron 任务

问题:
每 30 天(默认密码过期策略)一次 cron 失败并出现错误

Authentication token is no longer valid; new one required
ERROR: failed to open PAM security session: Success
ERROR: cannot set security context

我的问题:
有没有办法防止这种情况发生?
为什么删除密码后用户的身份验证令牌会过期?

答案1

我在使用“用户数据”(web-form-posted 安装脚本(bash 或 cloud-init))选项创建的 Debian 8 DigitalOcean droplet 上遇到了这个问题。

检查 systemd 日志中是否存在相关错误消息:

journalctl | grep -B 1 -i “cron。*身份验证令牌” | tail -n 3

May 19 13:17:01 debian-512mb-fra1-01 CRON[16714]: pam_unix(cron:account): expired password for user root (root enforced)
May 19 13:17:01 debian-512mb-fra1-01 CRON[16714]: Authentication token is no longer valid; new one required
May 19 13:17:01 debian-512mb-fra1-01 cron[470]: Authentication token is no longer valid; new one required

查看哪些帐户已过期

剪切 -d: -f 1 /etc/passwd | 读取 U 时;执行更改 -l $U | sed "s|^|$U:|";完成 | grep "必须是"

root:Last password change                   : password must be changed
root:Password expires                   : password must be changed
root:Password inactive                  : password must be changed

使用“chage”工具更新到期字段,首次尝试

更改-I -1 -m 0 -M 999999 -W 31 根

注意:直到我添加了“上次更改”选项(-d)才达到预期的效果

使用“chage”工具更新到期字段,第二次尝试

chage -d `日期 "+%F"` -E 2999-01-01 -I -1 -m 0 -M 999999 -W 31 root

检查字段过期

更改-l root

Last password change                    : May 19, 2017
Password expires                    : never
Password inactive                   : never
Account expires                     : Jan 01, 2999
Minimum number of days between password change      : 0
Maximum number of days between password change      : 999999
Number of days of warning before password expires   : 31

答案2

听起来你的系统删除了密码但没有清除密码过期要求。

如果是这种情况,您可以使用以下方式手动清除这些字段vipw——受影响的字段将位于passwd文件中或shadow文件中,具体取决于您的操作系统(有关文件格式的详细信息,请参阅man 5 passwd和,man 5 shadow以便了解需要清除哪些字段)

答案3

在 Ubuntu 上我的/etc/shadow文件丢失(尽管有一个 /etc/shadow-)所以我所做的就是跑步......

sudo pwconv

...通过重新创建 /etc/shadow 文件,它为我解决了这个问题。

(虽然我还不能确认这是一个长期的解决方案,但它可能会持续到密码更改/过期时间或直到发生其他因素)——有人支持我或纠正我

相关内容