リモートコマンドの実行

アクションでリモートコマンドを実行する場合の条件について教えていただけないでしょうか。

私が認識しているのは以下の2点です。
1./etc/zabbix/zabbix_agentd.confのEnableRemoteCommandsを「1」にする
2.実行するコマンドをZabbixユーザで実行できるようにする。

上記の内、「2」について確認です。
参考書やサイトを検索するとvisudoコマンドで設定を行うとありますが、
できるだけ実行するコマンドを制限したい場合、どのような設定を行えばよいでしょうか。
→zabbix ALL=(ALL) NOPASSWD:ALLというすべて許可する設定を実施したくないのです。

何回か設定を変更して試したのですが、
・sudo を実行するにはttyがなければいけません。というメッセージが出ました。
 →Defaults requirettyを「Defaults !requiretty」に変更
・上記対応後、以下のメッセージが出ました。
 「端末(tty)が存在せず、パスワードを尋ねる(askpass)プログラムが指定されていません
↓↓
この対応後、「zabbix ALL=(ALL) NOPASSWD:ALLの設定を行った後は想定通りに動作するようになりました。

できれば、zabbix ALL=(ALL) NOPASSWD:ALLではなく、
必要なコマンドのみをsudoで設定するようにしたいのですが、何か情報があれば教えていただけますでしょうか。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー fripper の写真

visudo コマンドで編集されるファイルは、 /etc/sudoers ファイルです

/etc/sudoers ファイルは直接 vi 等のエディタで編集すると、何かと問題を起こしやすいため、
編集後の書式チェック等も行なってくれる visudo コマンドを利用して編集します

http://masahir0y.blogspot.jp/2012/05/sudoers.html

丁寧な解説のある記事を見つけましたので、リンクを共有します

>>hoge fugahost=(piyo) /bin/cp
のような例が書かれています

特定コマンドに対して、zabbix ユーザが、root権限にてコマンドを実行するのを
許可したければ、以下のように書くと良いはずです
>>zabbix ALL=(root) NOPASSWD:/path/to/command1

command1 と command2 の実行を許可したい場合には、以下のように複数行書けば良いです
>>zabbix ALL=(root) NOPASSWD:/path/to/command1
>>zabbix ALL=(root) NOPASSWD:/path/to/command2

さらには、 command3 に、「-x hogehoge」のようなオプション付きでの実行を許可したい場合は
>>zabbix ALL=(root) NOPASSWD:/path/to/command3 -x hogehoge
と書くと、引数まで指定した状態で、実行許可・拒否を指定できます

>>zabbix ALL=(root) NOPASSWD:/path/to/command4 -x *
のように、アスタリスクを使うことで、「-x オプションをつけた場合のみ許可」かつ、「-x オプションに続ける文字列は任意」
のような許可設定をすることも可能です

「sudoers 設定」等のキーワードで google 等で検索すれば、より色んな設定例が見つかるかと思います

ユーザー tomi12120321 の写真

連絡が遅れてすいません。
ご回答ありがとうございます。
リンクを参考にさせていただきます。

今回いくつか対応した時にエラーが出ており、そのエラーを出なくするにはどのような設定を
したらいいかご存知でしょうか。
①sudo を実行するにはttyがなければいけません。というメッセージ
②端末(tty)が存在せず、パスワードを尋ねる(askpass)プログラムが指定されていません

①はDefaults requirettyを「Defaults !requiretty」で対応
②をどうすればわかれば、Zabbixユーザに対して特定のコマンドのみ実行させればリモートコマンドを
 実行することができるようになると考えています。

ユーザー fripper の写真

>1 sudo を実行するにはttyがなければいけません。というメッセージ
1.については、先のコメントにあるように、
>Defaults !requiretty
と書かれたことで、対応できたのですよね?

ちなみに、セキュリティ面をかなり気になさっているようですので、1番についての対応も、「もっと限定的に」
設定する方法があります
>Defaults requiretty
となっている設定はそのままにしておいて(全体・全アカウントに対する設定として、tty を要求する設定)
それよりも後ろの行に、
>Defaults:zabbix !requiretty
と書くことで、「zabbix ユーザにだけ、tty が無い状況下の sudoを許可する」といった限定的な設定にしておくことができます

>2 端末(tty)が存在せず、パスワードを尋ねる(askpass)プログラムが指定されていません
2.について
先の私のコメントに全部書いてありますが‥。
>>zabbix ALL=(root) NOPASSWD:/path/to/command1

このような形で記述すれば
・zabbix ユーザアカウントに対して、/path/to/command1 を、root 権限にて実行することを許可する。
・その際、パスワードは問い合わせしない
といった扱いになるはずですが、これでも動作しませんでしたか?

>>「sudoers 設定」等のキーワードで google 等で検索すれば、より色んな設定例が見つかるかと思います