在工作中我们可能经常会遇到 crontab中的任务没有去正常的执行原因可能有很多其中笔者最近遇到的一种是因为账号的密码过期了具体情况如下操作系统Red Hat Enterprise Linux release 8.1 (Ootpa)执行crond任务的账号root密码状态已经过期通过去查询 /var/log/cron 日志文件发现有如下两行报错Jul 8 16:28:01 qq-5201351 crond[30174]: (root) PAM ERROR (Authentication token is no longer valid; new one required) Jul 8 16:28:01 qq-5201351 crond[30174]: (root) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required)可以看出来是认证相关的问题于是查询 root 账号的密码是过期了解决方法1、保证能正常的及时地在密码过期前去重新设置一个新的密码也可以通过第三方密码管理平台实现2、设置密码永不过期但这种从安全的角度来说不是很推荐的3、设置允许密码过期后正常地去执行crontab中的任务从安全的角度也不是很推荐虽然第3种解决方案不是很推荐但这里主要记录一下实现的过程及原理这个是需要通过修改pam配置文件实现的在 /etc/pam.d/crond 配置文件原内容的基础上插入一行account sufficient pam_permit.so即可全部的配置如下[rootqq-5201351 ~]# cat /etc/pam.d/crond # # The PAM configuration file for the cron daemon # # # Although no PAM authentication is called, auth modules # are used for credential setting auth include password-auth account sufficient pam_permit.so account required pam_access.so account include password-auth session required pam_loginuid.so session include password-auth [rootqq-5201351 ~]#最后使用root用户再测试可以发现crontab 中的任务有正常运行了于是记录于此