C 在Linux中,如何获取最后修改目录中特定文件的用户的用户名?

C 在Linux中,如何获取最后修改目录中特定文件的用户的用户名?,c,linux,linux-kernel,audit,inotify,C,Linux,Linux Kernel,Audit,Inotify,我想得到在LINUX操作系统(UBUNTU)中修改了被监视目录中文件的用户名 我通过inotify收到监视目录中修改文件的通知,但我没有收到修改的用户名 我使用auditctl添加相同的监视目录路径,该路径添加在inotify中,并使用ausearch获取信息 但我得到了有关文件的全部信息,该文件在监视目录中被修改,这完全不是我的用途 我想要用户名,特别是最近修改了监视目录中的文件的用户名 有关安装和使用auditctl的信息,请参阅此文档 我的主要任务是获取上次修改某个特定文件的用户名,我如何

我想得到在LINUX操作系统(UBUNTU)中修改了被监视目录中文件的用户名

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

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

但我得到了有关文件的全部信息,该文件在监视目录中被修改,这完全不是我的用途

我想要用户名,特别是最近修改了监视目录中的文件的用户名

有关安装和使用
auditctl
的信息,请参阅此文档


我的主要任务是获取上次修改某个特定文件的用户名,我如何才能做到这一点?

在C语言中无法实现您的要求。有关文件的所有信息都可以通过系统调用检索。这不包括关于哪个用户或组最后修改了该文件的任何信息,因为系统根本无法跟踪该文件,即使启用了SELinux也无法跟踪。

在C中无法实现您的要求。可以通过系统调用检索您所知的有关该文件的所有信息。这不包括关于最后修改文件的用户或组的任何信息,因为即使启用SELinux,系统也不会跟踪该文件。

存在竞争条件,但您可以在从
inotify
收到文件被打开/修改的消息后立即
lsof thefile
。但若文件由多个用户打开,您将不知道他们中的谁对其进行了修改。根据注释,这是链接问题的重复。存在竞争条件,但您可以在从
inotify
收到文件被打开/修改的消息后立即打开文件。但是,如果文件由多个用户打开,您将不知道他们中的谁对其进行了修改。根据注释,这是链接问题的副本。如果配置正确,审核肯定会记录文件的打开和修改,包括用户。但是,它不会实时执行这些操作,只有特权用户才能访问审计数据。是的,你是对的。但它使用“ausearch”命令提供额外的非必需信息。如果您修改了一个文件,那么它会给出该文件的信息以及该文件的.swp、.swx。所以,我无法获得包含特定文件的特定部分info@AndrewHenleOP将这个问题标记为C,并且正在讨论特定的系统调用。“用一个简单的C程序无法实现OP的要求,这就是我的意思。”马可博内利:这是对这个问题的公正评估。我想知道OP从审核数据中提取用户名到底有什么问题。@AndrewHenle inotify–如何找出哪个用户修改了文件审核-如果配置正确-肯定会记录文件的打开和修改,包括用户。但是,它不会实时执行这些操作,只有特权用户才能访问审计数据。是的,你是对的。但它使用“ausearch”命令提供额外的非必需信息。如果您修改了一个文件,那么它会给出该文件的信息以及该文件的.swp、.swx。所以,我无法获得包含特定文件的特定部分info@AndrewHenleOP将这个问题标记为C,并且正在讨论特定的系统调用。“用一个简单的C程序无法实现OP的要求,这就是我的意思。”马可博内利:这是对这个问题的公正评估。我想知道OP从审计数据中提取用户名到底有什么问题。@AndrewHenle inotify–如何找出哪个用户修改了文件