Mac OSXディレクトリの下に/audit
ユーザーがアクセスできる特定のファイルとchmod
があります。
時間、ユーザー、ファイルがchmod
であること、特に後者を記録することにより、ファイルに対して行われたchmod
を監査する必要があります。
dtrace -n 'syscall::chmod:entry'
してイベントを検出できますが、chmod
の最初の引数を読み取るにはどうすればよいですか?
man 2 chmod
は、パスが最初の引数にあることを示しています。
chmod(const char *path, mode_t mode);
しかし、どうすればargs[0]
を読むことができますか?私はこれを間違った方法で行っていると思います..おそらくエントリは実際のシステムコールに対応していませんか?
監視できるプローブがある場合、アクセス用に提供されているパラメータとそのタイプを確認するにはどうすればよいですか?一部のポインターは、データレイアウトに基づいて逆参照する必要があると想定しています。
引数は_arg0
_にありますが、これは実際の文字列ではなく、呼び出し元のユーザースペースアドレスです。 copyinstr()
でラップする必要もあります。
_dtrace -n 'syscall::chmod:entry { printf("%d %s", uid, copyinstr(arg0)); }'
_