`mount -o loop` 更改挂载的 ISO 映像文件

23 iso mount checksum

看起来像mount -o loop更改了安装的图像文件。我下载了 ISO 映像文件并检查了它的 SHA-1 校验和。然后我挂载了那个 ISO 文件并且校验和改变了。这是我所做的确切步骤,从我的控制台 CentOS 7 x64 复制粘贴(注意,该 ISO 文件是只读的):

[mbartnicki@89-78-33-81 Downloads]$ ls -lh
total 3.1G
-r--r--r--. 1 mbartnicki mbartnicki 3.1G Mar 31 18:28 X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso 
6c9058389c1e2e5122b7c933275f963edf1c07b9  X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sudo mount -o loop X17-58997.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso 
994944df320e9e03c032263d7b9e36157a0a587c  X17-58997.iso
Run Code Online (Sandbox Code Playgroud)

我很惊讶,我在另一台机器(Ubuntu 14.04 x64)上重复了上述步骤,只是为了得到相同的结果:文件校验和在mount -o loop. 卸载 ISO 映像不会将其校验和返回到原始值;文件更改是持久的。此外,下一次挂载再次将校验和更改为某个新值。如何解释?

聚苯乙烯

通过添加ro挂载选项以只读方式挂载可防止文件被更改,因此如果我使用:

sudo mount -o ro,loop X17-58997.iso /mnt/iso

然后一切正常,ISO镜像文件挂载后保持不变。错误行为仅在ro未指定选项时发生,即使 ISO 映像文件在文件系统级别为只读。我尝试了三种不同的 ISO 映像:Windows 7 安装 DVD(官方)、SystemRescueCD(小型救援 Linux)和genisoimage工具创建的手工 ISO 。

我使用file实用程序检查了所有 ISO 文件,并file说它们都是ISO 9660 CD-ROM 文件系统数据。ISO 映像中的文件没有更改 - 我也检查过 - 看起来错误的安装场景添加了一些元数据或只是垃圾。

Arc*_*mar 1

Iso 不是只读的同义词,在某些情况下,您可能希望挂载 iso 读/写(创建启动介质时)。

如果您想只读,请使用选项

 mount -o ro,iso
Run Code Online (Sandbox Code Playgroud)

  • 我的 ISO 文件通过文件系统权限是只读的,并且按照挂载输出中的说明以只读方式挂载。 (3认同)