是否可以記錄對磁碟/目錄的每次存取?

是否可以記錄對磁碟/目錄的每次存取?

我需要一些腳本來記錄(僅輸出到控制台或文件)對某個磁碟或目錄的每次存取(對我有用)。我還想知道到底訪問了什麼(哪個子目錄或檔案)。我的系統是ubuntu linux。這可能嗎?

答案1

看看inotify,這正是它的建置目的。 IBM 在以下位置有一個還不錯的介紹(儘管有點過時)http://www.ibm.com/developerworks/linux/library/l-inotify.html

答案2

如果您想要使用簡單的過濾器腳本來監視單一程式 strace 的操作,那麼更一般地看看 SElinux 的「auditd」。

http://en.wikipedia.org/wiki/Strace http://linux.die.net/man/8/auditd

在 Windows 方面,請查看 SysInternals 人員的 filemon。

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

答案3

您可以使用因克朗,這是一個類似 cron 的工具,用於處理 inotify 的檔案系統事件。

您可以定義每次 IN_ACCESS 事件發生時執行的動作。

配置就像 cron 一樣簡單:

<path> <mask> <command>

在哪裡:

  • <path>是檔案系統路徑(每個空格必須以反斜線開頭)
  • <mask>是事件的符號(請參閱 inotify.h;使用逗號分隔符號)或數字掩碼
  • <command>是針對事件運行的應用程式或腳本

答案4

如果您確實想要看到這麼大的輸出,那麼您可以使用auditd。但如果您想將其列印到文件中,則可能會導致無限循環,因為對文件的任何存取都意味著將其列印到日誌文件中。列印到日誌檔案也是對檔案的訪問,因此它也應該列印到日誌檔案。所以要小心。

即使沒有無限循環,列印的資料量也應該很大。如果您將問題更改為您希望透過此監視實現什麼目的,人們可能會建議一種比記錄對所有文件的存取權更好的方法。

相關內容