在工作中,我们可能经常会遇到 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 即可,全部的配置如下:
[root@qq-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 [root@qq-5201351 ~]#
最后使用root用户再测试,可以发现,crontab 中的任务有正常运行了,于是记录于此

5925

被折叠的 条评论
为什么被折叠?



