inotify - 如何找出哪个用户修改了文件?

时间:2011-08-03 01:49:48

标签: linux filesystems filestream inotify

我正在寻找有关如何找出哪个用户修改了特定文件的指导。虽然inotify非常适合在触摸特定文件时获取通知,但我如何确定哪个用户修改了该文件?我可以想到使用lsof,但我担心它可能不像我想要的那样“实时”和/或它可能对资源征税太多。实时,我的意思是,如果用户只是对文件执行touch命令,那么当我在文件上运行lsof时,lsof可能无法获取该命令。

2 个答案:

答案 0 :(得分:13)

您可以使用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
  

type = SYSCALL msg = audit(1313055675.066:57):arch = c000003e syscall = 2   success = yes exit = 3 a0 = 7ffffb6744dd a1 = 941 a2 = 1b6 a3 = 7ffffb673bb0   items = 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 =“touch”exe =“/ bin / touch”key =“my-file-changed”

有关使用详情,请参阅man pages或此sample guide

答案 1 :(得分:2)

如果在前面的命令中添加-i选项,您将获得更易读的格式的输出。您将把uid转换为服务器中的真实用户名。

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