【问题标题】:How to get the username of the user who lastly modified a particular file in a directory in Linux? [duplicate]如何获取最后修改Linux目录中特定文件的用户的用户名? [复制]
【发布时间】:2020-03-22 02:15:06
【问题描述】:

我想获取 LINUX 操作系统 (UBUNTU) 中监视目录 中修改文件的用户名

我通过inotify 收到监视目录中修改文件的通知,但我没有得到用户名修改者。

我使用auditctl 添加相同的监视目录路径,该路径添加在inotify 中,并使用ausearch 获取信息

但是我得到了关于在 watched directory 中修改的文件的全部信息,这完全不是我用的。

我想要最近修改监视目录中该文件的用户名。

我推荐https://github.com/linux-audit/audit-testsuite这个来安装和使用auditctl

我的主要任务是获取上次修改特定文件的用户名,我该怎么做?

【问题讨论】:

  • 存在竞争条件,但您可以在收到来自inotify 的文件已打开/修改后立即lsof thefile。但是如果文件被多个用户打开,你就不会知道是谁修改了它。
  • 根据 cmets,这是链接问题的副本。

标签: c linux linux-kernel audit inotify


【解决方案1】:

在 C 语言中没有办法按照您的要求进行操作。您可以通过 stat 系统调用检索有关文件的所有信息。这不包括关于哪个用户或组最后修改了文件的任何信息,因为它根本不会被系统跟踪,即使启用了 SELinux。

【讨论】:

  • 审计——如果配置得当——肯定会记录文件的打开和修改,包括用户。但是,它不会实时执行此操作,并且只有特权用户才能访问审计数据。
  • 是的,你是对的。但它使用“ausearch”命令提供了额外的非必需信息。如果您修改了文件,则它会提供文件信息,并提供该文件的 .swp 、 .swx 。所以,我无法获得具有特定文件信息的特定部分
  • @AndrewHenle OP 将此问题标记为 C 并谈论特定的系统调用。没有办法用一个简单的 C 程序来做 OP 要求的事情,这就是我的意思。
  • @MarcoBonelli 这是对这个问题的公平评估。不过,我想知道 OP 从审计数据中提取用户名到底有什么问题。
  • @AndrewHenle inotify - 如何找出哪个用户修改了文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多