QNAPの利点でもあり欠点でもあるのが、頻繁にアップデートされることだ。これが利点なのはきちんとメンテされていることの証左なのだが、欠点なのは変更やリブートが多くて閉口するということだ。それも合理的な変更ならばまだいいが、不可解な変更だと困る。
さて10月24日、QTS 4.5.1.1465というのがリリースされ、特に待つ理由もないのでさっそくアップデートしたのだが、これのお陰で先日紹介した
が動かなくなってしまった。Zabbixサーバで見てみると、sudoを最初に起動するときに見るメッセージ文字列がそのまま返ってきているように見える。
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
で、設定を見に行くと案の定 sudoersの設定が吹っ飛んでいた。
QNAPのアップデートではこういうことはよくある。システムのアップデートをすると、configファイルを遠慮なく上書きしてくれるので、自分が書いた設定がすべて消えてしまうのだ。なのでまあ、こうしてブログにメモがわりに設定を書き残しているわけであるが……。今回も元通りに書き戻してみたのだが、なぜか動作が期待通りに戻らない。どうもsudoの動作そのものがおかしくなってしまったようだ。8時間ほどこの問題に費やしたがどうしても解決できないので、根本の問題に向き合ってみることにした。
どうしてsudoしたいのか
本当にやりたいのは、smartctlとmdadmを実行することだ。しかしこれにはroot(QNAPではadmin)権限が必要だ。しかしzabbix-agentdはzabbixで動作している。これをお行儀よく解決するためにsudoを使ったのだった。
そしてsudoが使えないのだから、zabbix-agentdをroot(admin)で動かせばよいのではないか。
というわけで、以下がworkaroundだ。
zabbix-agentdをadminで動かす
まず/etc/ZabbixAgent/etc/zabbix-agentd.conf
を書き換える。該当箇所は以下の通り。
# AllowRoot=0
AllowRoot=1
# User=zabbix
User=admin
次に/etc/ZabbixAgent/etc/zabbix-agentd.conf.d
ディレクトリの、raid.conf
とsmart.conf
を編集し、sudo
を消しておく。
続いて/etc/ZabbixAgent/ZabbixAgent.sh
を編集する。
#sudo -u zabbix /opt/ZabbixAgent/bin/zabbix_agentd -c /opt/ZabbixAgent/etc/zabbix_agentd.conf >> ${QPKG_ROOT}/log 2>&1 &
/opt/ZabbixAgent/bin/zabbix_agentd -c /opt/ZabbixAgent/etc/zabbix_agentd.conf >> ${QPKG_ROOT}/log 2>&1 &
以上が終了したら、App CenterからZabbix Agentを停止→開始する。これでzabbix-agentdがadminで起動するはずだ。
この変更はAppCenterからアプリケーションをアップデートすると上書きされてしまうので、めげずに書き換えるようにしてほしい。
ちなみに
今回のアップデートでは、sshログインするたびにひどいメニュー画面が起動する仕様になってしまい、これを消す方法を探しているのだがまだ見つかっていない。そもそもWebコンソールがあるのにCLIにあんなひどいメニューを用意する意図が分からない。ホント何を考えているんだろう……
【2020年11月11日追記】
ダサいメニューの消し方について情報を頂いた。/etc/profile
の最終行に呼び出しがあるのでコメントアウトすればよいそうだ。
#[[ "admin" = "$USER" ]] && /sbin/qts-console-mgmt -f
ありがとうございます!