Monit 与 Source Control:权限问题

Monit 与 Source Control:权限问题

我正在努力做个好人。这是我最大的错误。

我擅长进行过程监控:我使用 monit 监视一些关键过程,如果它们失败,就重新启动它们。

我不以 root 身份运行,这是件好事:Monit 运行一个 Web 服务器,我不想让它以 root 身份运行,以防出现安全问题。因此,我有一个特殊的“monit”用户,该用户具有启动和停止某些关​​键进程所需的权限,仅此而已。

monit 进程从 ~monit/.monitrc 文件读取,并且 monit 坚持该文件只能由其运行的用户(即 monit 用户)读取。

我将所有操作脚本和配置存储在源代码控制 (mercurial) 中,这样我就可以用相同的规格重建机器。我或其他开发人员将对脚本的更改签入源代码控制,然后将结果拉到生产机器上。符号链接从 ~monit/.monitrc 指向源代码控制目录。

然而,这就是所有问题所在——当我拉取最新脚本时,Mercurial 会将源代码控制目录写入其中,但是 pull 命令并未以 monit 的身份运行,因此 monitrc 文件可由其他用户写入...monit 不喜欢这样,因此不会运行。

我可以在每次拉取之前和之后不断地 chowning 和 chmodding monitrc 文件,但这充满了疏忽。

我不知道该如何要求 monit 放宽所有权限制。我也不知道 sticky bits 能起到什么作用。

有什么建议么?

答案1

你可以编写hg一个脚本来调用hg并处理权限。例如

!#/bin/bash
/usr/bin/hg.bin $@ && chmod 400 ~monit/monitrc && chown monit ~monit/monitrc

将脚本另存为/usr/bin/hg(或hg二进制文件安装的任何位置)并

mv /usr/bin/hg /usr/bin/hg.bin
chmod 744 ~monit/monitrc

假设您的普通用户有权限运行chmodchown命令,那么应该可以工作。

相关内容