我的服务器上的 Nagios 无法正常工作。它无法在没有“sudo”的情况下执行命令 lftp。有没有办法允许 nagios 不使用“sudo”运行命令?
我的/etc/group
:nagios:x:107:www-data,nagios
使用lftp的脚本:-rwxr-xr-x 1 root nagios 3667 říj 20 12:20 check_ftp_fully
/usr/bin/lftp
:-rwxr-xr-x 1 root root 924936 srp 7 2013 lftp
顺便说一句我试过了这个答案没有成功。仍然不起作用。
编辑:Nagios 调用该脚本为$USER5$/check_ftp_fully.sh <username> <password> <port>
。检查脚本为这里. 无法列出目录 ( FTP check failed when trying to list the contents of a directory.
)
编辑2:Nagios 的问题并不像知识那么重要,如果我可以不使用“sudo”来运行命令,以及如何运行命令。mkdir
例如/etc
答案1
Nagios 将该脚本调用为 ./check_ftp_fully.sh
这里的开头./
表明您正在从脚本所在的目录中运行脚本。我推测您没有对此目录的写权限(事实上您不应该有)。更改调用脚本,使其在您的主目录(或,例如)中运行,/tmp
并使用脚本的完整路径check_ftp_fully.sh
。更好的是,甚至另外,更改测试脚本,使其创建一个临时目录,并在完成后将其删除(即使在语法错误的情况下也是如此;请参阅trap
)
答案2
可能会有几种解决方案
在 sudoers 文件中启用 nagios 以运行无需密码确认的 sudo,然后从 check_ftp_fully 运行“sudo lftp”
在 lftp 上设置 uid
两者都可能存在安全漏洞,这取决于你想打开哪扇门:)