Lsof
如何檢測現在或過去哪個程序使用了文件
這是一個假設性問題,而不是我目前遇到的問題。
您如何檢測現在或過去哪個程序使用了文件?
找出哪個程序正在訪問
filename
,lsof 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 發行版執行此操作的資訊,因為詳細資訊會有所不同。