不可能的修改日期

不可能的修改日期

我在根目录中列出了最后修改的文件,并发现了一些关于某些日期的有趣内容,所以我想知道其背后的原因。我知道你可以轻松修改文件中的“最后修改”日期,但是,我想了解为什么我从 Brave Snap 应用程序中找到了这些文件,其日期我什至没有打开计算机:

...
/snap/brave/172/opt/brave.com/brave/product_logo_64.png
/snap/brave/172/usr/share/mime/x-content/video-vcd.xml
/snap/brave/172/usr/share/mime/x-content/win32-software.xml
/snap/brave/172/usr/share/mime/x-epoc/x-sisx-app.xml
...

基本上,整个 Brave App(顺便说一句,我甚至不记得下载过)文件夹中的文件的最后修改日期是我电脑完全关闭的日期。这可能是什么原因造成的,背后的原因又是什么?

答案1

文件的“修改日期”只是信息元数据。它可以被简单地改变,例如:

touch item
ls -l item
-rw-r--r-- 1 roaima roaima 0 Aug  8 17:27 item

touch -t 2012040445 item    # 2020 Dec 4, 04:45
ls -l item
-rw-r--r-- 1 roaima roaima 0 Dec  4  2020 item

touch -t 2303011933 item    # 2023 Mar 1, 19:33
-rw-r--r-- 1 roaima roaima 0 Mar  1  2023 item

但请注意,每当您更改mtime元数据时,ctime(inode 更改时间)都会更新,因此不可能在仔细检查中隐藏故意更改(2022-08-08 17:29:35与最后一个touch命令完全对应):

stat item
  File: item
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 4980781     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  roaima)   Gid: ( 1000/  roaima)
Access: 2023-03-01 19:33:00.000000000 +0000
Modify: 2023-03-01 19:33:00.000000000 +0000
Change: 2022-08-08 17:29:35.080989340 +0100
 Birth: -

在您的情况下,mtime元数据存储在 snap 存档中,并与文件名和内容一起恢复。

请参阅man touchman stat了解更多详细信息,以及如何更改文件的“更改”日期?

答案2

正如您已经描述的,修改日期只是文件所有者可以更改的一段元数据。

在本例中,snap 应用了打包该勇敢应用程序的人的文件日期。这本质上与解压 tar 存档时发生的情况相同!

解包程序应用存档中保存的原始文件日期。这里的语义是文件与应用程序打包者的计算机上的文件完全相同,因此时间戳就像他将勇敢的快照放在一起时一样。不是您的计算机解压快照存档的时间。

答案3

为什么 Brave 应用程序文件的日期显示您的计算机未开机的时间?

很可能是因为您没有下载各个文件。相反,您下载了一个软件包或包含它们的单个存档文件。当您运行命令来安装包(或解压存档)时,该命令会读取各个文件的原始时间戳并进行设置。在处理打包或归档在一起的文件时,这种情况很常见。

相关内容