Muninプラグインの実行ユーザ
Muninプラグインの実行ユーザはnobodyになる。プラグインのスクリプトからファイルを操作したい場合など、nobodyユーザでは権限がないことがある。
Systemdを使用している場合で、プラグインからファイルを出力するような場合は特に困ることになる。
SystemdとPrivateTmp
CentOS 7になってmunin nodeの起動管理がinitスクリプトからSystemdになったため、Systemdのserviceの設定(PrivateTmp=true
)により、tmpディレクトリに出力しようとするファイルは、/tmp
ではなく、munin nodeプロセス専用の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
の下にファイルを出力することもできるようになる。