我已经安装并配置监控在 Debian 服务器上,打开 http 服务到 localhost,并向组“monit”授予 rw 权限。我创建了这个组,并将自己添加到这个组中。
monit 守护进程本身运行良好,如果我使用 sudo,我可以控制守护进程。例如,这有效:
sudo monit stop <my-service>
但是当我这样做时:
monit status
我收到此错误:
Cannot open the control file '/etc/monit/monitrc' -- Permission denied
该monitrc
文件已正确设置为700
,但它的所有者是 root。因此我自然无法打开此文件。
我接下来尝试.monitrc
在主文件夹中创建一个空文件。在这种情况下,monit 无法找到正在运行的 monit 守护程序。我想,也许我应该将 monit 指向正在运行的 monit 实例的 ID 文件,但此文件(在 中/var/lib/monit/
)也设置为700
。
那么,如何从允许组中的用户执行 monit 命令?我不想发送纯文本用户名/密码,更愿意依赖我的 linux 凭据。
具体来说,我想在接收后 git 钩子中重新启动正在运行的进程(由 monit 监控),这是一种快速而粗略的方法,可以对我的一个非关键开发服务器进行持续部署。我不想以提升的权限运行这个 git 钩子,也不想在磁盘上存储任何凭据,尤其是纯文本。服务器本身正在运行一些 AWS 自动化脚本,这些脚本可能会被滥用。
答案1
只需以 root 身份输入:
sudo -s
这将进入 shell,当你看到
yourname@yourhost:/path/~#
或类似方法,你可以这样做
monit status
以及所有 monit 命令。