以普通用户身份访问 /proc/$pid/exe

以普通用户身份访问 /proc/$pid/exe

我正在开发自定义 Nagios 插件来监控一些正在运行的进程的绝对路径。

作为 root 用户,我一直使用命令“ls -l /proc/$pid/exe”来查找路径,但是当我让 Nagios 运行此命令(作为用户 nagios)时,它没有权限访问 /proc/ 中的文件。

作为一种解决方法,我授予用户 nagios sudo 权限来运行命令 pwdx,这似乎运行良好,但在我们所有的服务器上执行此操作很麻烦。如果没有此 sudo 访问权限,插件将失败。

我想知道是否有更干净的方法来做到这一点?我基本上需要一种方法来为用户 nagios 提供对 /proc 下所有内容的读取访问权限。

答案1

与“中央nagios服务器中的sudo设置”和“私钥授权”结合如何?

假设你通过 ssh 访问目标服务器,

  1. 在中央 nagios 服务器中,为 nagios 用户设置 sudo 访问权限,无需密码

  2. 使用 root 用户生成私钥和公钥,并将公钥复制到目标服务器。

以 root 用户身份执行下列操作

ssh-key-gen -t dsa -b 1024 ssh-copy-id -i [.pub 文件的路径] root@[目标服务器]

  1. 使用 sudo 执行 chec_by_ssh。sudo [path-to-nagiosplugin]/check_by_ssh -l root -C "ls -l /proc/[pid]/exe"

以下是示例结果。

[nagios@dev 插件]$ sudo ./check_by_ssh -H localhost -l root "ls -l /proc/2027/exe"; echo $? lrwxrwxrwx. 1 root root 0 Mar 30 19:29 /proc/2027/exe -> /usr/libexec/postfix/master 0

答案2

我们最终继续使用具有 sudo 访问权限的 pwdx,因为其他选项或多或少都和这个一样“复杂”。

相关内容