在遭受黑客攻击后,我正在通过 Linux CLI 检查专用 Web 服务器中的某些文件,发现某些文件已被“touch”命令修改,更改了日期。我想获取这些特定文件的确切文件创建日期。我已经尝试过以下操作
stat
ls -ld
这些没有提供文件在磁盘上的写入日期(创建日期)
还有其他方法可以获取文件创建日期吗?(文件写入磁盘的实际日期)
答案1
你正在寻找的是 *nix 上的文件出生时间。
不幸的是,大多数 *nix 文件系统不要追踪那条信息。
如果可用,则最新版本的stat
应该会显示它。否则,最好的办法可能是与备份中的文件列表进行比较(您做有备份吧?)来查看已添加的文件。
~$ stat .bashrc
File: `.bashrc'
Size: 3539 Blocks: 9 IO Block: 3584 regular file
Device: 24h/36d Inode: 204095 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ michael) Gid: ( 1000/ michael)
Access: 2013-12-11 09:41:50.315475289 +0100
Modify: 2013-08-16 21:28:42.000000000 +0200
Change: 2013-09-14 01:55:27.167869741 +0200
Birth: -
~$
如您所见,没有“出生”时间戳,这意味着我用于主目录的文件系统(在我的情况下是 ZFS)要么不存储该信息,要么不以 stat 知道的方式通过 Linux 文件系统层公开该信息。无论哪种方式,效果大致相同:没有可用的信息。
综上所述,即使在一个跟踪文件出生时间的系统上,类似的东西cp --copy-contents --preserve=timestamps /dev/null /tmp/somefile && cat ./somefile >> /tmp/somefile
也会有效地使任何类似的东西无效,我也不会特别惊讶。因此,即使有出生时间,你也不应该依赖它们来做任何重要的事情,比如评估安全漏洞的影响。
你能得到的最接近的在大多数系统上,可能是文件修改时间或 mtime,stat 会显示该时间,大多数文件系统也会跟踪该时间。但是,正如您所注意到的,使用 可以轻松更改此时间touch
。