Osx
DTrace 擷取應用於某些文件的任何 chmod
在 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]
?我想我這樣做是錯誤的..也許條目與實際的系統呼叫不對應?如果我有一個可以監控的探針,我如何檢查它為訪問提供了哪些參數以及它們是什麼類型?我假設一些指針需要根據它們的數據佈局取消引用..
參數是 in
arg0
,但這是呼叫者的使用者空間地址,而不是實際的字元串。您還需要用 a 包裝它copyinstr()
:dtrace -n 'syscall::chmod:entry { printf("%d %s", uid, copyinstr(arg0)); }'