为用户提供只读的 cronjobs

为用户提供只读的 cronjobs

这是一个奇怪的问题。我想为某个用户创建 crontab,该 crontab 对于该特定用户而言是只读的,并且只能通过 root 进行管理。听起来很简单?但问题在于:

$ ls -alh /var/spool/cron/my_user
-r-------- 1 root root 386 5月 8日 15:13 /var/spool/cron/my_user

因此,该文件由 root 拥有/分组,并且仅对 root 具有读取权限 (0400)。

问题在于:

$ su-我的用户
我的用户〜$ crontab -e
(向 crontab 写入一些内容)
crontab:安装新的 crontab
$ ls -alh /var/spool/cron/my_user
-rw------- 1 my_user my_user 386 5月 8日 15:13 /var/spool/cron/my_user

因此,root 所拥有的文件(具有 root 的只读权限)可由非特权用户读取,然后被修改为 0600 (rw) 并由该用户拥有?

我忽略了什么明显的问题?

答案1

crontab 是 setuid。因此用户可以更新自己的 crontab。

你运行的是哪个版本的 cron。如果你运行的是支持放入片段的版本,/etc/cron.d那么你应该这样做。

答案2

使用系统 /etc/crontab 文件,而不是用户 contab。

答案3

/var/spool/cron/my_user在安装您想要防止更改的修改后,您可以使其不可变。

sudo chattr +i /var/spool/cron/my_user

答案4

您可以将用户添加到/etc/cron.deny。这将拒绝用户访问命令crontab,并且她无法再编辑她的 crontab。

AFAICT 中的一个/etc/cron.deny条目不是禁用定义的 cronjobs。

相关内容