crontab 可执行文件归 root 所有,并设置了 setuid 位:
-rwxr-sr-x 1 root crontab 35984 Mar 9 2013 /usr/bin/crontab
当普通用户运行 时crontab -e
,此可执行文件会创建一个临时文件,更新它,然后将其移动到/var/spool/cron/crontabs
并以用户的名称命名。当他们运行 时crontab -l
,他们会以 root 身份读取这些文件。
普通用户不允许直接读取/写入他们的 crontab 文件:该/var/spool/cron/crontabs
目录没有为“其他”部分设置任何权限,而实际文件归用户所有并具有“所有者读/写”权限。
为什么会这样?为什么不呢?例如:
1. 为普通用户提供/var/spool/cron/crontabs
目录的读取/执行权限?
2. 将这些文件创建在用户可以直接读取和写入的其他地方?
我认为这与 cron.allow/deny 机制有关,但强制执行该机制的逻辑在 内crond
,普通用户无法触及。这些文件的权限是600
,因此用户无法修改其他用户的文件(除非他们希望他们这样做,在这种情况下他们可以修改chmod
他们的文件)。
那么周围的权限为什么要crontab
这样设计呢?