644 /etc/cron.allow 需要权限,解决方法?

644 /etc/cron.allow 需要权限,解决方法?

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)。

  1. 有没有办法更改 CRONTAB 设置以在 cron.allow 上使用 600 或 640 权限,并使其真正发挥作用?

  2. 除了 cron.allow 之外,还有其他方法可以将用户列入 CRONTAB 白名单吗?

  3. 知道为什么 Ubuntu 和 Rocky 有如此大的不同吗?

答案1

我们发现的解决方案是将 cron.allow 文件的组更改为 crontab 组,然后将相关用户添加到该组:

  1. 确保该crontab组存在
grep crontab /etc/group)  # should return crontab:x:105 and possibly a list of users
  1. 更改 cron 允许的组并设置读取权限:
sudo chgrp crontab /etc/cron.allow
sudo chmod 0640 /etc/cron.allow
  1. 将用户添加到 crontab 组
sudo usermod -aG crontab *username*  # replace *username* with the relevant username

并对所有所需用户重复此操作

最终结果是 /etc/cron.allow 文件可由 crontab 组中的所有用户读取,这在使用 cron.allow 将 cron 限制为特定用户时是必要的。

相关内容