我正在开发一个自定义 Nagios 插件来监控一些正在运行的进程的绝对路径。
作为 root 用户,我一直使用命令 'ls -l /proc/$pid/exe 来查找路径,但是当我让 Nagios 运行此命令(作为用户 nagios)时,它没有访问文件的权限/proc/.
作为一种解决方法,我向用户 nagios 授予了 sudo 访问权限以运行命令 pwdx,这似乎工作正常,但在我们所有的服务器上执行此操作很痛苦。如果没有此 sudo 访问,插件将失败。
我想知道是否有更清洁的方法来做到这一点?我基本上需要一种方法来为用户 nagios 提供对 /proc 下所有内容的读取访问权限。
如何与“中央 nagios 服务器中的 sudo 设置”和“私钥授权”结合使用?
假设您正在通过 ssh 访问目标服务器,
在您的中央 nagios 服务器中将带有 NO Passwd 选项的 sudo 访问权限设置为 nagios 用户到 nagios 用户
使用 root 用户生成私钥和公钥,并将 pub 密钥复制到您的目标服务器。
在 root 用户中执行以下操作
ssh-key-gen -t dsa -b 1024 ssh-copy-id -i [.pub 文件的路径] root@[dest server]
下面是示例结果。
[nagios@dev 插件]$ sudo ./check_by_ssh -H localhost -l root "ls -l /proc/2027/exe"; 回声$?lrwxrwxrwx。1 根根 0 Mar 30 19:29 /proc/2027/exe -> /usr/libexec/postfix/master 0
我们最终继续使用带有 sudo 访问权限的 pwdx,因为其他选项或多或少像这个选项一样“复杂”。