NetBSD Advent Calendar 2025 4日目の記事です。今日はファイルの変更イベントを監視する filemon について改めて解説しようと思います。
filemonとは?
NetBSD Advent Calendar 2021で filemon の機能とサンプル例を紹介していました。
- filemonでファイルの変更イベントを監視する
- filemonのファイル書き込みイベントをアプリからハンドリングしてみる
- NetBSDのfilemon機能で取得可能なファイルイベントを汎用的に取り扱えるようにしてみる
記事を書いた当時のfilemon(4)をみると、C言語のサンプルがあるのですがSEGVでクラッシュしてしまう状態になっていました。NetBSD-10のリリースノートをみるとドキュメント回りも色々と拡充されているようなので、現在の filemon がどうなっているか改めて調べてみました。
NetBSD-10においてfilemonのマニュアルページが見当たらない…?
が、NetBSD-10のfilemon(4)を参照するとマニュアルが存在していません…。ちょっとNetBSD-9とNetBSD-10の配布物を確認してみます。
$ # NetBSD-9の配布物にはfilemon関連のファイルが含まれている。
$ tar ztvf base-nbsd9.tar.xz | grep filemon
drwxr-xr-x 0 root wheel 0 4月 20 2024 ./usr/include/dev/filemon
$
$ # NetBSD-10の配布物にはfilemon関連のファイルが存在していない。
$ tar ztvf base-nbsd10.tar.xz | grep filemon | wc -l
0
どうやらNetBSD-10には filemon 関連のファイルが含まれていないようです。これは一体…?
セキュリティアドバイザリが出ていました
filemonに関してはセキュリティアドバイザリが出ていました…。
セキュリティアドバイザリの"Technical Details"では以下のような解説が行われていました。
-
filemonは実験的なモジュールという位置づけ。 - そのため、一般的な仕様には適していない。
- filemonモジュールは
/dev/filemonが開かれると自動ロードされる可能性がある。 - また、filemonモジュールは書き込みチェックが不足しており、システム内の任意のファイルを上書きすることが可能。
- くわえて、filemonによるファイルシステム監視は競合状態を生じやすく、モジュールのアンロード中にシステムコールが使用されるとランダムなクラッシュを引き起こす可能性がある。
まさか実験的なモジュールだったとは…。と思いつつ、リリースノートには記述がありませんでしたが、これらの理由により、NetBSD-10以降では filemon がまるごと除去されたということかと思います。
まとめ
セキュリティ上の理由により、 NetBSD-10以降では filemon 機能が削除されているという話をしました。個人的には filemon の機能は便利だと感じていたのですが、代替機能を探すことになりそうです。
そして、NetBSDの変更点とセキュリティアドバイザリは定期的にチェックするのが良さそうです。