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 に答える