FreeBSD: いつのまにか lsof の仕様が変わってた

FreeBSD 12.3 と 13.1 を使っています。

FreeBSD や Linux のような Unix系OSの場合は、開かれているファイルを観察するためのコマンド lsof をオプションインストールすることが出来ます。これは、まさに今アクセスされているファイルの情報を見たり、侵入が行われていないかチェックするのに非常に有効なコマンドです。
標準でインストールされないので、pkg コマンドでインストールして使う必要があります。

実際、Webサーバー のHDDランプが連続点灯している時とか、ルーターの通信ランプが「長時間」連続して点灯している場合などは、lsof コマンドを使って、サーバーステータスを確認することがあります。

ところが最近、アクセスランプが長時間/連続 点灯・点滅しているときに lsof コマンドでファイルを観察しても、何も情報表示されないことに気づきました。確かにファイルにアクセスが発生しているはずなのに、表示されない。

なぜ?

と、思っていたのですが、よくよくみてみると lsof コマンドの仕様変更なのか、管理者以外の一般ユーザーでは、(wheelグループに属していたとしても)自分のプロセスが使用しているファイルしか表示されなくなっているようです。Webサーバー、httpd がアクセスしているファイルが何かを見ようとすると、わざわざ su でスーパーユーザーにならないといけない仕様に変わっている。(動作から推測するに、そう思う。)

いつからなの?

lsof の仕様が変わった可能性と、OS 側の /dev/kmem あたりのパーミッションが変わった可能性がありますが、一般ユーザーでアクセスできていた頃のパーミッションを厳密に記録していないので、よくわかりません。

lsof のオプションで以前のような表示に戻せないかな~?

セキュリティー強化の一環だと思うので、やむを得ないところもあるのですが、lsof を root 権限でしか期待通りに使えないのはちょっと不便。個人サーバーのように、すべてのパーミッションを持っている人が運用している場合はいいのですが、root権限を持てないサーバーの場合、サーバー動作がおかしくても自分では細かく調べることが出来ず、管理者にコンタクトするしかありません。管理者がすぐに動いてくれればいいのですが、原因を特定するための調査をすぐにしてもらえることは、まずない。いろいろ細かい説明をして、条件を特定して伝えないと、管理者だって、サーバーなんてその上で誰がどんな使い方するか知りませんからね。結果的に異常に気付いても対策を取るまで遅延が発生してしまいます。

先日、ファイルオーナーがらみでWordPress を更新しようとして失敗してしまいました

こういう、ちょっとずつパーミッションがらみの仕様が変わってゆくのは、管理者としてはつらい。

コメントを残す