2011-08-03 77 views
8

我正在尋找關於如何找出哪個用戶修改了特定文件的指導。雖然inotify非常適合在接觸特定文件時收到通知,但我如何確定哪個用戶修改了該文件?我可以考慮使用lsof,但是恐怕它可能不像我想要的那樣「實時」,並且/或者它可能對資源徵稅太多。通過實時,我的意思是,如果用戶只是在文件上執行touch命令,那麼在我運行lsof時,它可能不會被lsof拾取。inotify - 如何找出哪個用戶有修改過的文件?

回答

11

您可以使用audit deamon

sudo apt-get install auditd 

選擇一個文件監控

touch /tmp/myfile 

添加審計寫入和屬性變化(-p wa):

sudo auditctl -w /tmp/myfile -p wa -k my-file-changed 

該文件被觸摸部分用戶:

touch /tmp/myfile 

檢查審計日誌:

sudo ausearch -k my-file-changed | tail -1 

你可以看到用戶的UID誰在輸出運行命令

類型= SYSCALL味精=審計(1313055675.066:57):弓= c000003e系統調用= 2次 成功=是出口= 3 A0 = 7ffffb6744dd A1 = 941 A2 = A3 1B6 = 7ffffb673bb0 項= 1 PPID = 3428 PID = 4793 AUID = 4294967295 UID = 1000 GID = 1000 EUID = 1000 SUID = 1000的fsuid = 1000 EGID = 1000 SGID = 1000 FSGID = 1000 TTY = PTS1 SES = 4294967295 COMM = 「觸摸」 EXE = 「/ bin中/觸摸」 鍵= 「我的文件,改變」

有關用法詳情,請參閱man pagessample guide

+0

太棒了!非常感謝。 – user837208

2

如果在前面的命令中添加-i選項,則會以更易讀的格式獲得輸出。您將在服務器中將uid轉換爲真正的用戶名。

ausearch -k my-file-changed -i |尾巴-1

相關問題