我注意到在我的 debian 机器上 crontab 用户对 /var/spool/cron/crontabs 目录没有读取权限。
drwx-wx--T 2 root crontab 4096 Jun 20 21:34 crontabs
此外,实际的 crontab 文件仅具有其所属用户的读/写权限。
我有两个问题。
- 有什么原因导致用户 crontab 没有对 crontabs 目录的读取权限?
- 授予该用户对各个 crontab 文件的读取权限是不是一个坏主意?
我之所以提出这些问题,是因为我有几位开发人员需要编辑每个 crontab 的权限。理想情况下,我希望将它们全部放在 svn 或类似程序中,这样我们就可以在发布之前查看更改,然后再使用某种形式的部署脚本。svn 和部署没有问题,但我正在寻找一个无需 root 身份即可编辑所有 crontab 的普通用户。
答案1
唯一的原因是安全。这是 SGID 位的一个相当流行的用例。
那边有一个组“crontab”。这个组是空的,所以没有成员。组“crontab”有一个非常特殊的用途。crontab 二进制文件归“crontab”组所有,并有一个 SGID(设置组 ID)位
# ls -l /usr/bin/crontab
-rwxr-sr-x 1 root crontab 34784 Jun 14 2012 /usr/bin/crontab
因此,设置了 SGID 位的文件(crontab 命令)将被视为属于该组,而不是仅属于该用户。只要文件是在具有 SGID 的目录中创建的(crontab 用户的文件),它也会继承其组。
1)用户只能在 crontab 命令中编辑或读取其 crontab 文件
2)用户没有权限读取 /var/spool/cron/crontabs 中的任何列表文件