这是一个奇怪的问题。 我想为一个只读的特定用户的用户创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