设置:
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
我的问题:
有没有办法来防止这种情况发生?
为什么身份validation令牌对于已删除密码的用户已过期?
这听起来像你的系统删除了密码,但没有清除密码过期的要求。
如果是这种情况,您可以使用vipw
手动清除这些文件 – 受影响的字段将根据您的操作系统位于passwd
文件或shadow
文件中(有关文件格式的详细信息,请参阅man 5 passwd
和man 5 shadow
您需要清除哪些字段)
我在使用“用户数据”(web-form-posted安装脚本(bash或cloud-init))选项创build的Debian 8 DigitalOcean液滴上遇到了这个问题。
检查systemd日志以获取相关的错误消息:
journalctl | grep -B 1 -i“cron。*validation令牌”| 尾巴-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
查看哪个帐户已过期状态
cut -d:-f 1 / etc / passwd | 同时阅读U; 做chage -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”工具来更新到期字段,首先尝试
chage -I -1 -m 0 -M 999999 -W 31根
注意:直到我还添加了“最后更改”选项(-d)
使用“chage”工具更新到期字段,第二次尝试
chage -d`date“+%F”`-E 2999-01-01 -I -1 -m 0 -M 999999 -W 31 root
检查字段到期
chage -l根
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
在Ubuntu上,我的/ etc / shadow文件丢失(虽然有一个/ etc / shadow-),所以我所做的就是运行…
sudo pwconv
…它通过重新创build/ etc / shadow文件为我解决了这个问题。
(虽然我还不能确认这是一个长期的修复,但它可能会持续到密码更改/过期时间或直到其他因素发生) – 有人支持我或纠正我