ファイルアクセス監視

多くの場合、ユーザーとシステム管理者は、アプリケーションがアクセスしているファイルを追跡する必要があります。 Linuxにはすでにこのためのすべてのツールがありますが、さらに驚くべきことに、フォーラムでSysinternal Filemonの類似物があるかどうかを絶えず聞いているのです。 この記事では、 straceユーティリティの使用について説明し、アプリケーションが読み取り権限を制限する必要があると考えるユーザーを排除するいくつかのポイントを検討します。たとえば、 表示されるムービーのみにmplayerアクセスを制限します。



straceは、システムコールとシグナルのトレーサーです。 ファイルを操作するには、 「open」システムコールが使用されるため、追跡する必要があるだけです。 コマンド例:

$ strace -xf -eopen -o /path/to/log /path/to/program







ここでは、すべての子プロセスを追跡し、印刷できない文字を16進表現に置き換え、呼び出しログをファイル/パス/ to / logに保存するよう指示します。 次に、受信したログを適切なツールで処理できます。 以下は、ログから必要な情報をすべて抽出する方法の例です。



Nanoテキストエディターの監視



まず、最も単純なnanoテキストエディターがアクセスするファイルを見てみましょう。

$ strace -xf -eopen -o out.log nano temp.txt

$ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' out.log | sort







sedでは、ログを読みやすいように短い形式に変換し、行を並べ替えます。 その結果、次のようなものが表示されるはずです。

"/etc/ld.so.cache", O_RDONLY

"/etc/nanorc", O_RDONLY

"/home/nuald/.nano_history", O_RDONLY

"/home/nuald/.nano_history", O_WRONLY|O_CREAT|O_TRUNC, 0666

"/home/nuald/.nanorc", O_RDONLY

"/lib/libc.so.6", O_RDONLY

"/lib/libdl.so.2", O_RDONLY

"/lib/libncursesw.so.5", O_RDONLY

"/lib/terminfo/x/xterm", O_RDONLY

"temp.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666

"/usr/lib/gconv/gconv-modules.cache", O_RDONLY

"/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY

...

"/usr/lib/locale/locale-archive", O_RDONLY

"/usr/share/locale/en/LC_MESSAGES/nano.mo", O_RDONLY

...

"/usr/share/locale/locale.alias", O_RDONLY







プログラムがアクセスするファイルの次のカテゴリを区別できます。



つまり その過程で、プログラムは十分な数のファイルにアクセスする必要があり、読み取りアクセスを制限するとプログラムのパフォーマンスに悪影響が及びます。



Mplayerビデオプレーヤーの監視



次に、mplayerを実行して、書き込みのみを行うファイルを確認してください。 おそらくこれにより、プログラムの安全なプロファイルを作成する機会が得られます。



$ strace -xf -eopen -o out.log mplayer test.mp4

$ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' out.log | grep -v O_RDONLY | sort



"/dev/3dfx", O_RDWR

"/dev/fb0", O_RDWR

"/dev/mga_vid", O_RDWR

"/dev/mga_vid", O_RDWR

"/dev/shm/pulse-shm-3056117003", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0400

"/home/nuald/.mplayer/config", O_WRONLY|O_CREAT|O_EXCL, 0666

"/home/nuald/.pulse-cookie", O_RDWR|O_CREAT|O_NOCTTY, 0600







ここでは、 grepコマンドで出力を制限し、O_RDONLYフラグ(読み取り専用)で開かれたファイルを含めませんでした。 ご覧のとおり、ここではすべてがスムーズではありません。mplayerは他のファイルに書き込む必要があり、アクセスを制限すると完全に破損し、ビデオを再生できなくなります。 したがって、アクセスを制限するという上記のアイデアは、実装するのがそれほど簡単ではなく、元の意味で実装することは確かではありません。



おわりに



この短いエッセイでは、 straceの適用分野は1つだけでした。 このプログラムには多くの優れた機能があり、デバッガーを使用しなくても、アプリケーションの動作不能の理由を探して眠れぬ夜を取り除くのに役立ちます。 これは、Linux開発者が知っておくべきツールであり、多くのバグとの戦いであなたに利益をもたらし、開発中のソフトウェアの品質を向上させることを願っています。



PSファイルアクセスの監視に役立つ他のツールのリストを次に示します。




All Articles