用户只读cronjobs

这是一个奇怪的问题。 我想为一个只读的特定用户的用户创buildcrontab,只能通过root进行pipe理。 听起来很容易? 这里有一个问题:

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

所以,该文件是拥有/分组为根,只有根的读取权限(0400)。

问题:

  $ su  -  my_user
 my_user〜$ 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权限的文件可以被非特权用户读取,然后被修改为0600(rw)并为该用户所有?

我错过了什么明显的错误?

crontab是setuid。 所以用户可以更新他们的crontab。

你正在运行什么版本的cron。 如果你正在运行一个支持/etc/cron.d的版本,那么你应该这样做。

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

您可以将用户添加到/etc/cron.deny 。 这将拒绝用户访问命令crontab ,她不能编辑她的crontab了。

AFAICT /etc/cron.deny中的条目不会禁用定义的cronjob。

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

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