博客园  :: 首页  :: 管理

在工作中,我们可能经常会遇到 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 中的任务有正常运行了,于是记录于此

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/18973450