Linux 中用户修改文件的历史记录

History of users modifying a file in Linux

我想知道是否可以列出随着时间的推移所有修改文件的人。我知道 stat or ls -lrt 会给出修改文件的最后一个用户。但是我想看看是否可以找到修改文件的N-1用户

注意:我认为找到这样的用户的机会很小。在宣布这是死胡同之前,只想与专家确认。

示例:

在 1:00 AM ABC 修改了文件
在 2:00 AM XYZ 修改了同一个文件。

我知道 XYZ 已经修改了文件,如何找到谁在 XYZ 之前修改了文件(在本例中为 ABC)?

I am aware that stat or ls -lrt will give the last user who modified the file.

没有。修改文件不会改变其所有者。

一般文件系统不跟踪修改历史。如果此信息至关重要,则方法是

  1. 对于完整的文件层次结构:VCS(版本控制系统),例如 Git、Subversion、Mercurial、CVS,...
  2. 对于单个文件,RCS 或 SCCS,...

可以配置审核以跟踪对特定文件的更改。有一些限制:

  • 必须先配置然后感兴趣的更改
  • 审计守护进程往往会拒绝如果被告知监视一个已被删除的文件。

不过,它还是很有用的。寻找 auditctl。以下是讨论该主题的一些有用链接:

无法跟踪用户详细信息,例如通过特定命令修改文件的用户名。只有我们可以通过 ls -l.

查看分配给文件的用户名

一个可以使用的技巧是(这只适用于最近的修改)你可以检查文件的最后修改时间,并与用户的登录时间交叉检查。您也许可以缩小列表范围。

  1. 使用 stat 命令(例如:stat,See this
  2. 找到 Modify 时间
  3. 使用last命令查看登录历史(see this)
  4. 将 log-in/log-out 时间与文件的 Modify 时间戳进行比较

这不会一直有效,但您可以缩小结果范围。