web-dev-qa-db-ja.com

特定のファイルに適用されたchmodをトラップするDTrace

Mac OSXディレクトリの下に/auditユーザーがアクセスできる特定のファイルとchmodがあります。

時間、ユーザー、ファイルがchmodであること、特に後者を記録することにより、ファイルに対して行われたchmodを監査する必要があります。

dtrace -n 'syscall::chmod:entry'してイベントを検出できますが、chmodの最初の引数を読み取るにはどうすればよいですか?

man 2 chmodは、パスが最初の引数にあることを示しています。

chmod(const char *path, mode_t mode);

しかし、どうすればargs[0]を読むことができますか?私はこれを間違った方法で行っていると思います..おそらくエントリは実際のシステムコールに対応していませんか?

監視できるプローブがある場合、アクセス用に提供されているパラメータとそのタイプを確認するにはどうすればよいですか?一部のポインターは、データレイアウトに基づいて逆参照する必要があると想定しています。

6
Robottinosino

引数は_arg0_にありますが、これは実際の文字列ではなく、呼び出し元のユーザースペースアドレスです。 copyinstr()でラップする必要もあります。

_dtrace -n 'syscall::chmod:entry { printf("%d %s", uid, copyinstr(arg0)); }'
_
6
Scott Lamb