以 root 身份运行我的 crontab 作业是否存在安全风险?

以 root 身份运行我的 crontab 作业是否存在安全风险?

我正在运行一些 cron 作业 - 主要是备份相关的东西。

我必须备份 /etc/apache2/sites/available 等,这些都需要 root 访问权限。

我有一些问题:

在无头服务器上运行时:

  1. 脚本在哪个用户下运行(假设我没有在 cron 作业条目中指定用户)?
  2. 以 root 身份运行备份脚本可以吗 - 或者这是否会带来安全问题?

顺便说一句,我的服务器运行的是 Ubuntu 10.0.4 LTS

答案1

如果您已经充分保护了对脚本的访问并采取了合理的预防措施,那么从根 crontab 运行某些操作通常不会带来安全风险。

但不要以 root 身份运行非 root 用户可以编辑或覆盖的脚本。这适用于从 cron 运行的作业以及以交互方式运行的作业。

如果该脚本包含其他文件,同样也适用于它们。

如果有疑问,请始终使用最小权限原则。如果您仍然不确定,您可以随时在论坛和 IRC 上询问具体问题。


几乎总有办法以非 root 用户身份运行某些命令。如果其他方法都失败,使用 sudo 限制用户只能执行特定命令也可以限制造成危害的可能性。

因此,以您提供的备份 /etc/apache2/sites-available 的示例来说,该文件默认可供任何人读取,这意味着只有 root 才能访问可写入的目标。

你可以通过以下方式修复它

  • 创建一个名为 backupadmins 的组(例如)
  • 将目标目录上的组设置为 backupadmins
  • 添加一个名为 backupuser 的用户(例如)
  • 将用户 backupuser 添加到组 backupadmins。
  • 使目录可由 backupadmins 组写入
  • 从备份用户的 crontab 运行 cron 作业。

答案2

这取决于脚本在做什么。如果他们正在备份内容,那么他​​们作为 root 可能没问题 - 如果恶意用户覆盖这些脚本,那么你可能遇到更大的问题。

如果他们做了一些愚蠢的事情,例如执行目录中的文件,或者任何可能受到网络目录内容影响的事情,那么您可能需要寻找替代方案。

答案3

每天(或者无论设置运行的时间),全世界都有数以百万计的 cron 作业以 root 身份运行。

重要的是设置适当的权限。如果你正在运行某个任何人都可以写入的程序,那么恶意用户或进程可能会更改它正在做的事情。

一般来说,Cron 作业由 crontab 的所有者运行。例如,用户 crontab 可能位于。/var/spool/cron/crontabs/username位于 或 (每日、每周、每月)的 Cron 作业/etc/crontab将由root 运行。这些 crontab 文件的所有权和权限正确也很重要。/etc/cron.d//etc/cron.hourly

相关内容