Osx

DTrace 擷取應用於某些文件的任何 chmod

  • July 18, 2016

在 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)); }'

引用自:https://unix.stackexchange.com/questions/20433