我的 HDD 上有一个 500GB 的原始磁盘映像文件,我称之为该文件,这是对外部单个 NTFS 分区驱动器的内容进行处理dysk.img
的结果。dd
其目的是尝试使用该ntfsundelete
程序恢复数据(并且初始扫描的结果很有希望)。
不过,在此之前,我想检查一下其当前的、未删除的内容。因此我想安装它。出于显而易见的原因,我想确保安装此文件不会导致向其中写入任何一位。
mount --read-only
可悲的是,这似乎不是解决方案。因为,根据man mount
:
请注意,根据文件系统类型、状态和内核行为,系统仍可能写入设备。例如,如果文件系统脏了,ext3 和 ext4 将重播日志。为了防止这种写访问,您可能需要使用 ro,noload 挂载选项挂载 ext3 或 ext4 文件系统,或者将块设备本身设置为只读模式,请参阅 blockdev(8) 命令。
上述内容也适用于 NTFS 吗?遗憾的是mount
不支持该noload
选项...
不幸的是,我不小心编写了一些与 Windows 不兼容的名称的文件(?
例如包含该字符),这使得 Windows 将此文件系统标记为计划检查 - 因此,我从现在开始不断收到警告,并且如果没有该选项ntfsundelete
就无法运行。这会进一步增加一些意外写入的风险吗?ntfsundelete
--force
截至目前,只有 root 拥有对此文件的写入权限。我不确定这是否足够,因为 IIUC 在安装时总会有一些权限提升。
指定root
该文件的所有者并拒绝任何人(甚至所有者)的写访问权限会有帮助吗?
尝试使用此文件blockdev
建议的命令会有帮助吗?或者,与实际设备相比,man mount
发布到图像文件会存在风险或有害吗?blockdev --setro
答案1
您正在寻找的部分答案在您引用的引文中给出:
将块设备本身设置为只读模式
就您而言,这是一个简单的文件。所以你可以:
chmod a-w disk.img
即使所有者也不需要写信给它。
指定
root
该文件的所有者并拒绝任何人(甚至所有者)的写访问权限会有帮助吗?
基本上,是的,但请记住,这root
可以绕过大多数权限“限制”。因此,您应该以不同于 的用户身份运行数据恢复程序root
。
如果你想挂载该文件,你不能简单地这样做。但是,如果图像文件保存在支持的文件系统内chattr
(基本上是EXT4和其他常见的Linux文件系统)您可以使文件不可变:
chattr +i disk.img
现在却无能为力root
。无法写入或删除。chattr -i
完成后用于恢复标志。
替代方法
如果您想从(可能损坏的)NTFS 驱动器中提取数据,您可能需要考虑使用恢复比特,这是我开发的一个用于执行文件系统重建的软件。目前它仅支持 NTFS,但它有几个优点:
它不会在图像文件上写入任何内容。简单的说,它不支持书写在驱动器上,因为它面向数字取证。因此,您不会冒意外这样做的风险。
即使目录树损坏,它也可以读取它。您将获得每个分区的最准确描述,至少从可用的元数据中是如此。
我在以下答案中讨论了它的用法: