设置 Bugzilla collectstats.pl cron 作业的正确方法?

设置 Bugzilla collectstats.pl cron 作业的正确方法?

要在 Bugzilla 中启用错误图表,您需要将其collectstats.pl作为夜间 cron 作业运行。手册中有关于设置的部分- 添加一个 cron 任务

5 0 * * * cd <your-bugzilla-directory> ; ./collectstats.pl

但是它没有说明以哪个用户身份运行它。为了谨慎起见,我们以 apache 用户身份运行它,而不是 root 用户,因为 Bugzilla 本身实际上是以 root 用户身份运行的。但是,现在 Bugzilla 的一些版本在checksetup.pl运行时会删除对 data/ 下文件的写入权限,甚至删除在 localconfig 中设置为 our 的 apache 组的权限$webservicegroup。然后,collectstats 作业尝试以 apache 用户身份写入 data/mining/,但由于其权限被删除而失败。

这意味着每次我们修改 Bugzilla 并运行 checksetup 时,我们都必须恢复 apache 组并在数据目录中写入权限,例如

cd data
chgrp -R apache *
chmod -R g+w bugzilla-update.xml mailer.testfile mining/ template/ webdot/ \
             duplicates/

那么我们做错了什么?我们真的应该以 root 身份运行 collectstats cron 作业吗?我想我以 root 身份运行 checksetup,所以我相信这不是恶意的,但 collectstats 使用用户提供的输入运行,所以感觉不对劲。

谢谢。在 Google 上找不到任何明显的东西。在 CentOS 5.4、httpd 2.2.3、Bugzilla 3.4.x 和 3.6.x 上运行,以防万一。

答案1

我有来自 bugzilla 的 Max Kanat-Alexander 的回复在他们的邮件列表中:

[运行] 以 root 身份运行效果最好。

出于上述安全原因,我不确定我是否真的会购买它 - 它正在处理用户提供的数据。

另一个我未考虑过的想法是不要以 root 身份运行 checksetup.pl,这样它就无法 chown/chgrp 权限。我可能会采用这种方法,或者坚持我以前的工作流程(以 root 身份运行 checksetup,然后运行我的修复权限脚本)。

后续:MKA 也对第二个想法做出了回应:

然而,这会导致不安全的权限,即 Web 服务器有能力写入它不应该有写入能力的内容。

您还可以创建一个“bugzilla”用户,让该“bugzilla”用户成为 Apache 组的成员,并以“bugzilla”用户身份运行 checksetup.pl 和 collectstats.pl。这会导致设置其他内容的权限更加复杂(例如,jobqueue.pl 也必须以“bugzilla”身份运行,email_in.pl 必须以“bugzilla”身份运行,等等),但如果您非常担心以 root 身份运行的安全性,这是另一种选择(比以 apache 身份运行 checksetup.pl 要好得多)。

相关内容