非 root 用户无法运行 crontab

非 root 用户无法运行 crontab

我已将用户添加到组中crontab并使用crontab -e(作为用户)编辑文件。我已确保文件以空白行结尾,并将文件添加/etc/cron.allow为 root 和用户各自一行。我的 cron 作业从 运行良好/etc/crontab。每次更改后我都会重新启动 cron。

我还可能错过什么?

PS,正如我回复下面的评论一样:

/var/log/cron不存在。grep /var/log/messages | grep cron什么都不输出。为了测试作业执行情况,我添加了* * * * * user touch /home/user/wtf

grep CRON /var/log/syslog(这是最近的两个条目,在第一个之后,看到“孙子”位,我想也许 crontab -e 不会接受绝对路径,所以我尝试了touch wtf

Dec 13 16:37:01 COMPUTER CRON[21855]: (username) CMD (username touch /home/username/wtf) 
Dec 13 16:37:01 COMPUTER CRON[21854]: (CRON) error (grandchild #21855 failed with exit status 127) 
Dec 13 16:37:01 COMPUTER CRON[21854]: (CRON) info (No MTA installed, discarding output) 
Dec 13 16:38:01 COMPUTER CRON[21871]: (username) CMD (username touch wtf)
Dec 13 16:38:01 COMPUTER CRON[21870]: (CRON) error (grandchild #21871 failed with exit status 127) 
Dec 13 16:38:01 COMPUTER CRON[21870]: (CRON) info (No MTA installed, discarding output)

解决了

当使用时crontab -e,无需指定用户,事实上,它无法被理解并成为执行命令的一部分,因此会出现错误。

答案1

在典型的系统中,您不必 (a) 将任何人添加到 crontab 组或 (b) 编辑 cron.allow。默认行为是,如果没有相反的明确配置,则允许每个人运行 cron 作业。也就是说,您所做的配置更改虽然没有必要,但不应妨碍工作。

您在系统日志中看到了什么?根据系统的配置方式,您可能会在中找到 cron 输出/var/log/cron。您能给我们举一个未运行的 cron 作业的例子吗?您如何区分“cron 未运行此作业”和“cron 正在运行此作业但作业运行不正确”?

答案2

在 RHEL4 中,允许非 root 用户 crontab 的默认行为已更改,我认为这是不可取的。我使用以下方法恢复了以前的行为:

sed -i 's%account    required   pam_access.so%account    required   /lib/security/pam_access.so accessfile=/etc/security/access-cron.conf%g' /etc/pam.d/crond
touch /etc/security/access-cron.conf

如果您想保持性能但允许特定用户,那么在日志中生成错误可能会有所帮助。

当时,我发现这是最适合我需求的方法。cron.deny在 /etc 中创建一个空文件可能会复制相同的性能。

相关内容