我有一个非常简单的系统 crontab,以特定用户身份运行。对于可以登录 Gnome 会话的用户,它运行良好。对于我仅用于系统任务的其他用户,它不会运行。
这是一个显示正在运行的 CentOS 7 框systemctl status crond
。
为了调试这种情况,我将文件缩减/etc/cron.d/test
为:
SHELL=/bin/bash
* * * * * etluser /bin/echo "-- trying" >> /tmp/auto_services.txt
与用户埃特鲁斯什么都没运行。tmp 文件没有出现。没有输出journalctl -xe
,没有/var/log/cron
条目,也没有发给 root 的电子邮件。
$ getent group etluser
etluser:x:499:otheruser
$ getent passwd etluser
etluser:x:600:499::/home/etluser:/bin/bash
$ getent shadow
etluser:$6$mw...../:18429:0:90:7:::
也是/etc/cron.deny
空的并且/etc/cron.allow
不存在。
如果我将 cron.d 文件中的用户更改为我的标准登录用户其他用户那么工作就顺利进行。
SHELL=/bin/bash
* * * * * otheruser /bin/echo "-- trying" >> /tmp/auto_services.txt
/etc/pam.d/crond
节目
account include system-auth
session required pam_loginuid.so
session include system-auth
auth include system-auth
知道我错过了什么吗?
答案1
如果用户的密码已过期,作业似乎将无法运行。我通常不知道发生了这种情况,因为我只是sudo -u etluser -i
以该用户的身份工作,而且这不会失败。
重置密码成功了。现在我只需要设置一个虚拟密码,并将有效期设置为永久。