Muninプラグインの実行ユーザ

Muninプラグインの実行ユーザはnobodyになる。プラグインのスクリプトからファイルを操作したい場合など、nobodyユーザでは権限がないことがある。

Systemdを使用している場合で、プラグインからファイルを出力するような場合は特に困ることになる。

SystemdとPrivateTmp

CentOS7になってmunin nodeの起動管理がinitスクリプトからSystemdになったため、Systemdのserviceの設定(PrivateTmp=true)により、tmpディレクトリに出力しようとするファイルは、/tmpではなく、munin nodeプロセス専用のtmpディレクトリに出力される。

参考: 落とし穴2: アクセス出来ない/tmp

Muninプラグインで出力したファイルを別のプロセスでも操作しようとしても、tmpディレクトリに出力している場合はアクセスできなくなる。PrivateTmp=falseにSystemdのservice設定を変更する手もあるが、Systemdを使うのであればそのデフォルトの流儀に従った方がいい。そのため、別プロセスからも参照するファイルの出力は、tmp以外のディレクトリにしたい。

tmp以外でnobodyユーザが書き込み権限をもっているディレクトリはないため、別のユーザ権限でプラグインを実行したい。

Muninプラグインの実行ユーザの変更

/etc/munin/plugin-conf.d/munin-nodeでプラグインの変数設定等を行えるが、そこで実行ユーザも設定できる。

sampleプラグインの実行ユーザを変えるのであれば、以下のように設定する。

[sample*]
user root

*を書いているので、sampleで始まるプラグイン全部がrootユーザで動くことになる。これで、たとえば/var/log/munin-nodeの下にファイルを出力することもできるようになる。