Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 の監視中に、ユーザー joechmod 777 /home/joe/bigfilechmod 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