4.2.6. ファイル属性の変更の監視
このセクションでは、プロセスがターゲットファイルの属性を変更したかどうかをリアルタイムで監視する方法を説明します。
例4.19 inodewatch2-simple.stp
global ATTR_MODE = 1 probe kernel.function("inode_setattr") { dev_nr = $inode->i_sb->s_dev inode_nr = $inode->i_ino if (dev_nr == ($1 << 20 | $2) # major/minor device && inode_nr == $3 && $attr->ia_valid & ATTR_MODE) printf ("%s(%d) %s 0x%x/%u %o %d\n", execname(), pid(), probefunc(), dev_nr, inode_nr, $attr->ia_mode, uid()) }
「ファイルの読み取りおよび書き込みの監視」 の 例4.17「inodewatch.stp」 のように、例4.19「inodewatch2-simple.stp」 はターゲットファイルのデバイス番号 (整数形式) と
inode
番号を引数として取ります。この情報の取得方法は、「ファイルの読み取りおよび書き込みの監視」 を参照してください。
例4.19「inodewatch2-simple.stp」 の出力は 例4.17「inodewatch.stp」 の出力に似ていますが、例4.19「inodewatch2-simple.stp」 には監視対象ファイルの属性変更と、変更を行ったユーザー ID (
uid()
) が含まれている点で異なります。例4.20「例4.19「inodewatch2-simple.stp」 出力サンプル」 は 例4.19「inodewatch2-simple.stp」 の出力になります。/home/joe/bigfile
の監視中に、ユーザー joe
が chmod 777 /home/joe/bigfile と chmod 666 /home/joe/bigfile を実行しています。
例4.20 例4.19「inodewatch2-simple.stp」 出力サンプル
chmod(17448) inode_setattr 0x800005/6011835 100777 500 chmod(17449) inode_setattr 0x800005/6011835 100666 500