DTrace捕获应用于某些文件的任何chmod

Modified on: Sat, 30 Jun 2018 08:33:00 +0800

在Mac OS X目录/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)); }'
作者:,Scott Lamb

相关问答

添加新评论