如何在没有 root 访问权限的情况下从 shell 脚本执行 monit 命令?

如何在没有 root 访问权限的情况下从 shell 脚本执行 monit 命令?

我已经安装并配置监控在 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 命令。

相关内容