4.2.6. ファイル属性の変更の監視
このセクションでは、プロセスがターゲットファイルの属性を変更したかどうかをリアルタイムで監視する方法を説明します。
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()) }
「ファイルの読み取りおよび書き込みの監視」 の inodewatch.stp のように、inodewatch2-simple.stp はターゲットファイルのデバイス番号 (整数形式) と
inode
番号を引数として取ります。この情報の取得方法は、「ファイルの読み取りおよび書き込みの監視」 を参照してください。
inodewatch2-simple.stp の出力は inodewatch.stp の出力に似ていますが、inodewatch2-simple.stp には監視対象ファイルの属性変更と、変更を行ったユーザー ID (
uid()
) が含まれている点で異なります。例4.10「inodewatch2-simple.stp のサンプル出力」 は inodewatch2-simple.stp の出力になります。/home/joe/bigfile
の監視中に、ユーザー joe
が chmod 777 /home/joe/bigfile
と chmod 666 /home/joe/bigfile
を実行しています。
例4.10 inodewatch2-simple.stp のサンプル出力
chmod(17448) inode_setattr 0x800005/6011835 100777 500 chmod(17449) inode_setattr 0x800005/6011835 100666 500