我正在寻找有关如何找出哪个用户修改了特定文件的指导。虽然 inotify 非常适合在触摸特定文件时收到通知,但我如何确定哪个用户修改了该文件?我可以考虑使用 lsof 但我担心它可能不像我想要的那样“实时”和/或它可能对资源征税过多。实时,我的意思是如果用户只是在文件上执行touch
命令,当我lsof
在文件上运行时,它可能不会被lsof
.
问问题
11586 次
2 回答
15
您可以使用审计守护进程:
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 成功=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"
于 2011-08-11T09:55:48.227 回答
3
如果您在前面的命令中添加 -i 选项,您将获得更易于阅读的格式的输出。您将在服务器中将 uid 转换为真实用户名。
ausearch -k my-file-changed -i | 尾-1
于 2013-10-18T11:08:42.453 回答