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

问题描述 投票:0回答:2

我正在寻找有关如何找出哪个用户修改了特定文件的指导。虽然 inotify 非常适合在触摸特定文件时收到通知,但我如何确定哪个用户修改了该文件?我可以考虑使用 lsof,但我担心它可能不像我想要的那样“实时”和/或可能对资源造成太大的负担。所谓实时,我的意思是,如果用户只是对文件执行

touch
命令,那么当我在文件上运行
lsof
时,
lsof
可能不会拾取该命令。

linux filesystems filestream inotify
2个回答
16
投票

您可以使用审计守护进程

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 成功=是退出=3 a0=7ffffb6744dd a1=941 a2=1b6 a3=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="touch" exe="/bin/touch" key="my-file-changed"

有关使用的详细信息,请参阅手册页或此示例指南


4
投票

如果您在前面的命令中添加

-i
选项,您将以更易于阅读的格式获得输出。您将在服务器中将 uid 转换为真实用户名。

ausearch -k my-file-changed -i | tail -1
© www.soinside.com 2019 - 2024. All rights reserved.