Ubuntu 和 RHEL 衍生版本(例如 Rocky 8.x)之间存在奇怪的 CRONTAB 行为差异。并且,因为安全我需要更好地理解它。我已经在 Ubuntu 18.04 和 20.04 中测试了这个问题,两者的行为相同。
如果我使用 cron.allow 文件允许指定用户使用 CRONTAB,则该文件必须具有 644 个权限。(或者至少是全世界可读的。)如果我将 /etc/cron.allow 上的权限设置为 600,则任何非 root 用户都无法使用 CRONTAB。
在 Rocky 8.x 中,CRONTAB 可以与具有 600 权限的 cron.allow 文件一起正常工作。
我之所以问这个问题,是因为我的安全团队或多或少要求 /etc/cron.allow 的权限为 600,或者最多为 640。问题是,在 Ubuntu 中,无论具有上述哪种权限级别,CRONTAB 对允许的用户都是完全不可用的(这意味着,只有 root 可以使用 CRONTAB)。
有没有办法更改 CRONTAB 设置以在 cron.allow 上使用 600 或 640 权限,并使其真正发挥作用?
除了 cron.allow 之外,还有其他方法可以将用户列入 CRONTAB 白名单吗?
知道为什么 Ubuntu 和 Rocky 有如此大的不同吗?
答案1
我们发现的解决方案是将 cron.allow 文件的组更改为 crontab 组,然后将相关用户添加到该组:
- 确保该
crontab
组存在
grep crontab /etc/group) # should return crontab:x:105 and possibly a list of users
- 更改 cron 允许的组并设置读取权限:
sudo chgrp crontab /etc/cron.allow
sudo chmod 0640 /etc/cron.allow
- 将用户添加到 crontab 组
sudo usermod -aG crontab *username* # replace *username* with the relevant username
并对所有所需用户重复此操作
最终结果是 /etc/cron.allow 文件可由 crontab 组中的所有用户读取,这在使用 cron.allow 将 cron 限制为特定用户时是必要的。