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


8

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

我必须备份卡住的如/ etc / apache2 / sites / available等,这需要root访问权限。

我有一些问题:

在无头服务器上运行时:

  1. 脚本在哪个用户下运行(假设我未在cron作业条目中指定用户)?
  2. 以root用户身份运行备份脚本是否可以-还是存在安全问题?

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

Answers:


15

如果您已足够安全地访问脚本并采取了明智的预防措施,则从根目录crontab运行某些操作通常不会带来安全风险。

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

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

如有疑问,请始终使用最小特权原则。如果仍然不确定,可以随时在论坛和IRC中提出特定问题。


总有(几乎)一种非root用户身份运行某种方式的方法。如果所有其他方法均失败,则使用sudo将用户限制为特定命令,这也限制了潜在的危害。

因此,以您给出的备份/ etc / apache2 / sites-available的示例为例,该文件默认情况下任何人都可以读取,这意味着该文件只能由root用户访问。

你可以通过解决

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

+1是有用的逐步说明。您的回答非常有帮助。无论如何,我都打算沿着这条路走,但是由于这是我第一次这样做,因此可以放心地看到它在这里被推荐(很多人似乎都同意您的建议)。
user35402

顺便说一句,如果我按照您的建议创建用户组和用户,我是否能够访问/ etc / apache / sites-available以及其他(相当正确)仅限于root用户访问权限的文件夹?我如何解决这个问题?
user35402

3

这取决于脚本在做什么。如果他们正在备份内容,则可以以root用户身份为好-如果恶意用户覆盖了这些脚本,则无论如何您可能会遇到更大的问题。

如果它们执行诸如执行目录中的文件之类的愚蠢操作,或者可能受Web目录内容影响的任何事物,那么您可能需要研究替代方法。


2

全世界每天都有数以百万计的Cron作业(或设定的运行期限)以root身份运行。

重要的是要设置适当的权限。如果您正在运行每个人都可写的内容,那么恶意用户或进程可能会更改其行为。

一般来说,Cron作业由crontab的所有者运行。例如,用户crontab可能在其中/var/spool/cron/crontabs/username。Cronjobs是在/etc/crontab/etc/cron.d//etc/cron.hourly(每日,每周,每月)将被root身份运行。同样重要的是,这些crontab文件的所有权和权限也必须正确。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.