【问题标题】:inotify - how to find out which user has modified file?inotify - 如何找出哪个用户修改了文件?
【发布时间】:2011-08-03 01:49:48
【问题描述】:

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

【问题讨论】:

    标签: linux filesystems filestream inotify


    【解决方案1】:

    你可以使用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 成功=是 退出=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"

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        相关资源
        最近更新 更多