2

Nagios 是一个 IT 基础设施监控系统。我正在为它编写一个简单的插件脚本。已为其创建了一个特殊帐户 nagios,该脚本由 Nagios 在该帐户下运行。

出于调试目的,脚本非常简单:

#!/bin/bash
echo "OK - Running okay" ~ `id`

它回显 的值~,即主目录,以及id命令的结果。

我登录到 nagios 帐户 ( su -l nagios),并从命令行对其进行测试:

OK - Running okay /home/nagios uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd)

这正是我所期望的。

我从 Nagios 系统中运行它,报告的结果是:

OK - Running okay /home/julian uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd)

等等,/home/julian帐户的主目录;但它已登录到 nagios 帐户。这种矛盾对我来说毫无意义;我显然不明白这是如何工作的。

有什么建议会发生这种情况吗?

4

2 回答 2

2

您的脚本是否sudo被偶然运行?

rpinson@rpinson:~$ echo ~; id
/home/rpinson
uid=61367(rpinson) gid=100(users) groupes=24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),119(admin)
rpinson@rpinson:~$ sudo -u toto -s
toto@rpinson:~$ echo ~; id
/home/rpinson
uid=1001(toto) gid=1001(toto) groupes=1001(toto)

在某些情况下(例如sudo -u),环境被导出,因此$HOME不会为执行命令的用户重置。

在 的情况下sudo,有使用用户环境的方法:

rpinson@rpinson:~$ sudo -u toto -i
toto@rpinson:~$ echo ~; id
/home/toto
uid=1001(toto) gid=1001(toto) groupes=1001(toto)

或者

rpinson@rpinson:~$ sudo -u toto -H -s
toto@rpinson:/home/rpinson$ echo ~; id
/home/toto
uid=1001(toto) gid=1001(toto) groupes=1001(toto)
于 2011-02-11T14:31:56.440 回答
0

Nagios 正在调用远程系统,因此您可能正在通过 ssh julian@remote 运行脚本。

于 2011-02-11T03:58:27.350 回答