如何在没有“sudo”的情况下运行命令?

如何在没有“sudo”的情况下运行命令?

我的服务器上的 Nagios 无法正常工作。它无法在没有“sudo”的情况下执行命令 lftp。有没有办法允许 nagios 不使用“sudo”运行命令?

我的/etc/groupnagios: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

可能会有几种解决方案

  1. 在 sudoers 文件中启用 nagios 以运行无需密码确认的 sudo,然后从 check_ftp_fully 运行“sudo lftp”

  2. 在 lftp 上设置 uid

两者都可能存在安全漏洞,这取决于你想打开哪扇门:)

相关内容