如何在伪只读模式下在 Linux 上挂载映像?

如何在伪只读模式下在 Linux 上挂载映像?

我有一个图像,我想以只读方式安装。

我知道该怎么做:losetup -r /dev/loop0 /path/to/image

但问题是,任何试图写入此设备的行为都会产生错误,提示该设备是只读的。我想要的是许多取证写入阻止程序所做的行为,即设备会“谎称”驱动器是可写的,并错误地确认任何写入命令(告诉写入过程它已成功),即使写入命令从未到达驱动器或映像文件。

如何实现这一点?

例如,目前的结果是:

root@server-desktop:~# losetup /dev/loop1 imagefile
root@server-desktop:~# echo haha > /dev/loop1
root@server-desktop:~# losetup -d /dev/loop1
root@server-desktop:~# cat imagefile
haha
root@server-desktop:~# losetup -r /dev/loop1 imagefile
root@server-desktop:~# echo whatnow > /dev/loop1
-bash: echo: write error: Operation not permitted
root@server-desktop:~# losetup -d /dev/loop1
root@server-desktop:~# cat imagefile
haha
root@server-desktop:~#

想要的结果:

root@server-desktop:~# losetup /dev/loop1 imagefile
root@server-desktop:~# echo haha > /dev/loop1
root@server-desktop:~# losetup -d /dev/loop1
root@server-desktop:~# cat imagefile
haha
root@server-desktop:~# losetup -r /dev/loop1 imagefile
root@server-desktop:~# echo whatnow > /dev/loop1
root@server-desktop:~# losetup -d /dev/loop1
root@server-desktop:~# cat imagefile
haha
root@server-desktop:~#

请注意,第二个“echo whatnow”命令即使处于只读状态也应返回成功。如何实现这一点?注意:这并非是为了抑制任何错误消息!它实际上应该向写入过程返回“成功”,因为我将与 ietd(iSCSI Enterprise 目标)一起使用此循环设备。

请注意,命令 (losetup -r) 不一定是 losetup -r,它可以是另一个命令或过程。主要目的是它应该从映像文件中生成一个只读块设备,它将接受并忽略任何写入。(而不是拒绝写入)

相关内容