【问题标题】:History of users modifying a file in Linux用户在 Linux 中修改文件的历史
【发布时间】:2015-11-27 17:11:38
【问题描述】:

我想知道是否可以列出谁随着时间的推移修改了文件。我知道stat or ls -lrt 将提供最后一个修改文件的用户。但是我想知道是否可以找到修改文件的N-1个用户。

注意:我认为找到这样的用户的机会非常渺茫。只是想在宣布其死胡同之前与专家确认。

示例:

凌晨 1:00 ABC 修改了文件
凌晨 2:00 XYZ 修改了同一个文件。

我知道 XYZ 修改了文件,如何找到在 XYZ 之前修改文件的人(在这种情况下是 ABC)?

【问题讨论】:

  • statls 不列出谁修改了文件,他们列出谁拥有该文件。如果没有版本控制系统,您将无法获得所需的信息。
  • 我认为这不可能。这就是 SCM 系统(例如 Git)的用途。
  • 谢谢我想检查,得到我的答案。感谢您的澄清.....

标签: linux unix kernel ls stat


【解决方案1】:

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

  • 必须在感兴趣的更改之前进行配置
  • 如果被告知要监视已删除的文件,审核守护程序往往拒绝启动。

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

【讨论】:

    【解决方案2】:

    我知道 stat 或 ls -lrt 会给出最后修改文件的用户。

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

    一般文件系统不跟踪修改历史。如果此信息至关重要,那么要走的路是

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多