atd 报告权限被拒绝

atd 报告权限被拒绝

使用 安排稍后运行的作业后at,在给定时间atd将报告“权限被拒绝”而不是启动作业。 /var/spool/cron/at* 的权限是正确的:

root@server /var/spool/cron # ls -la
total 20
drwxr-xr-x 5 root   root    4096 Okt 30  2014 .
drwxr-xr-x 6 root   root    4096 Okt 30  2014 ..
drwxrwx--T 2 daemon daemon  4096 Nov  1 17:57 atjobs
drwxrwx--T 2 daemon daemon  4096 Nov  1 17:57 atspool
drwx-wx--T 2 root   crontab 4096 Nov  1 17:34 crontabs

当运行手动发送的命令时at,一切都会正常工作。

答案1

在没有看到任何操作系统规范的情况下,我怀疑 SELinux 可能在起作用。

检查它是否已启用:getenforce将返回Enforcing。如果是,则以 root 身份运行setenforce permissive,然后查看命令运行时是否出现权限被拒绝错误。

答案2

我正在寻找有关atd运行原因的答案,但作业未能执行,日志中显示以下内容:

Nov 16 05:28:00 yourserver atd[15038]: Cannot create output file: Permission denied

系统是Debian 10 buster。

我注意到的一件事是该atd进程以用户身份运行daemon,这导致我:为什么 Debian 将“atd”作为“daemon”用户运行?

好的。

事实证明,man atd文件部分中有一些有用的信息。

       /var/spool/cron/atjobs The directory for storing jobs; this should be mode 700, owner daemon.

       /var/spool/cron/atspool The directory for storing output; this should be mode 700, owner daemon.

一旦我确保这些目录具有这些权限和所有权,事情就开始按预期进行。

对于这个特定的系统,我认为at这个系统并不经常使用(所以直到现在才发现这个问题)。该系统已经从更旧的 Debian 版本升级了多年,因此当从atdroot 运行更改为守护进程时,这些目录似乎从未收到正确的(更新的)权限和所有权。

相关内容