我从命令行发出 monit 命令,这有效
$ sudo monit reload
现在我创建一个shell脚本monitreload.sh
#!/bin/bash
monit reload
然后是命令
$ sudo ./monitreload.sh
$ sudo -u ram ./monitreload.sh
上述失败并出现权限被拒绝错误。
请注意 /etc/monit/monitrc 文件由 root 所有,并且用户“ram”是有效的 sudo 用户。 SO 中的大多数问题都讨论 monit 配置中的 gid 和 uid 使用,如 this one 或通过 monit 配置调用 shell,如 this one
这里出了什么问题?
基于您的示例命令
$ sudo ./monitreload.sh
$ sudo -u ram ./monitreload.sh
第一个应该可以工作,你切换到root。 但第二个不应该,你切换到用户“ram”,只要Monit被“root”盯着,用户“ram”就无法重新加载配置。
$ sudo -u ram sudo ./monitreload.sh
如果“ram”被授权切换到“root”,您可以在命令中额外添加一个“sudo”,以从“ram”切换到“root”。 Monit 不会自动切换到“root”用户。