2012-05-10 29 views
2

NRPEを使用するnagiosプラグイン(check_aacraid.py)をデバッグしようとしています。問題のシステムは、新しいセットアップCentOS 6.2ファイルサーバーです。私に迷惑を与えているように見えるpython:Popenを使ってsudoを呼び出せませんか?

コマンドは次のとおりです。

for line in Popen(["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "LD"], 
        stdin=PIPE, stdout=PIPE, close_fds=True).stdout: 

私は「Nagiosのユーザーとしてスクリプトを実行した場合、それが正常に動作します。 NRPE/XINETDから呼び出されると失敗します(NRPEは "出力を読み取ることができません" - usuはエラーを示しています)。

私はxinetdの出力を見るためにstraceのを使用し、これを見つけた:

7706 execve("/usr/bin/sudo", ["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "AD"], [/* 15 vars */]) = -1 EACCES (Permission denied) 

イムとの問題かどうかを把握しよう:

-sudo
-python -nagios
- xinetd
-other

私はsudoに関する問題を抱えていましたが、 retty '、パスを設定、' NOPASSWD 'でnagiosユーザーを追加する)。問題はまだ見つかりませんでした。

その他のコマンドは、NRPE( 'check_user'など)で正常に実行されます。

注:これは、公開され、確立されたnagios用のプラグインです。私はこのシステムで何か間違ったことをしてしまい、それが機能していない。

提案?

答え:
1)「nagios」としてログインするとアプリを実行できます。
2) 'visudo'を使用すると、次のエントリがあります。 'nagios ALL =(ALL)NOPASSWD:ALL'
- はい、セキュリティホールです。私はこのことが働くと、私はそれを締め付けるでしょう。
3)/ usr/bin/sudoのアクセス権は--- s-x-xです。 2 root root 215144 May 9 23:59/usr/bin/sudo

SELinuxが問題になっているようです。私が '0>/selinux/enforce'をエコーすると、アプリは正しく実行されます。今では代わりにそれを使って作業する方法を理解する。 @ジョシュ - 答えとしてこれを投稿し、私はそれを喜んで受け入れるよ!

+1

シェルでsudoを使用できますか? – jimw

+1

はパスワードなしでrootとしてこのコマンドを実行できる_nagios_ユーザです。 '/ etc/sudoers'には' nagios ALL = NOPASSWD:/ usr/bin/arcconf'のような規則があるべきですユーザーはスクリプトを実行していますか?) – mata

+1

execの呼び出しから*アクセス権が拒否された*エラーが発生しています。つまり、PythonやNagios、Xinetdには問題ありません。 'sudo'の権限が間違っている可能性があります。 'ls -l/usr/bin/sudo'は何を表示しますか? – larsks

答えて

1

SELinuxが問題であるように思えます。 xinetdからsudoを実行してパーミッション拒否エラーが発生し、xinetdの外部で実行している場合、SELinuxのようなものが拒否するポリシーを実行しているようです。

関連する問題