Lsof

如何檢測現在或過去哪個程序使用了文件

  • December 6, 2019

這是一個假設性問題,而不是我目前遇到的問題。

您如何檢測現在或過去哪個程序使用了文件?

找出哪個程序正在訪問filenamelsof filename或者fuser filename將完成工作。但是,如果想知道filename 過去 24 小時內訪問了哪些程序怎麼辦?

一個人可以逃脫這個醜陋的(*)黑客

while true; do fuser filename; sleep 1; done

並讓它在另一個學期執行 24 小時。但實際上有沒有更好的系統,而不建立一個完整的審計框架?

(*) 更不用說fuser如果不到 1 秒可能無法檢測到訪問…

如果您的系統啟用了審核,您可以使用該子系統審核對特定文件的訪問。

例如,要審核打開(或嘗試打開)文件的/etc/shadow文件,您可以使用以下規則:

auditctl -a exit,always -S open -F path=/etc/shadow

稍後,您可以使用此命令列出與訪問此文件相對應的審計事件:

ausearch -f /etc/shadow

請注意,您需要是 root 才能配置和查詢審計系統。

有關如何設置規則的更多詳細資訊,請參見auditctl(8)手冊頁,有關如何查詢審計日誌的詳細資訊,請參見ausearch(8)手冊頁。

如果您沒有啟用審核,您應該查找有關如何針對您的 Linux 發行版執行此操作的資訊,因為詳細資訊會有所不同。

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