这是一个奇怪的问题。我想为特定用户创建只读的 crontab,并且只能通过 root 进行管理。听起来容易吗?这是问题所在:
$ ls -alh /var/spool/cron/my_user -r-------- 1 root root 386 May 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) 并为该用户所有?
我错过了什么明显的收获?
crontab 是 setuid。因此用户可以更新他们的 crontab。
你运行的是什么版本的cron。如果您正在运行支持放入碎片的版本,
/etc/cron.d
那么您应该这样做。使用系统 /etc/crontab 文件而不是用户 contab。
您可以
/var/spool/cron/my_user
在安装您希望防止更改的修改后使不可变。sudo chattr +i /var/spool/cron/my_user
您可以将用户添加到
/etc/cron.deny
. 这将拒绝用户访问该命令crontab
,并且她不能再编辑她的 crontab。AFAICT 中的条目
/etc/cron.deny
不会禁用定义的 cronjobs 。