为什么在我以 root 身份填满磁盘可用空间后 photorec 继续查找文件?

Mep*_*sto 7 data-recovery forensics

在我将我的笔记本电脑借给我年轻且精通 linux 的侄子之前,我想确保他无法在驱动器的空白空间中刻入我的个人数据。我已经多次饱和驱动器中的空白空间

sudo cat /dev/urandom > some-file
Run Code Online (Sandbox Code Playgroud)

注意 sudo 的使用,这样保留的 5% 空白空间会被忽略,文件会一直增长,直到出现错误。

但是,我在该分区中执行 photorec,然后会弹出数百个旧文件。那么,至少出于好奇,这些文件存储在哪里,为什么随机噪声没有覆盖它们?

(到目前为止,我唯一的解释是,它们可能位于文件末尾和包含它的扇区末尾之间的空白处。可能是这样吗?)

fro*_*utz 16

这里可能存在一些误解,因此该命令没有按照您的预期执行。

sudo是多余的,因为您不需要sudo/dev/urandom. 该> some-file部分是一个 shell 重定向,因此根本没有被覆盖sudo。所以你sudo是超级无效的。(注意:在这种特殊情况下,无论如何都sudo可能按预期工作,请参阅评论。但是,不使用sudo这种方式是一种模式,因为它在其他情况下会咬你。)

然后,您正在写入常规文件。这确实填满了文件恰好驻留的文件系统的可用空间。如果您有多个文件系统(一个用于/,一个用于/home,引导和交换分区等),那么这些也不受影响。

充其量这只会覆盖可用空间。不能保证它会覆盖所有内容(取决于文件系统内部结构、根保留、日志、其他打包/保留/等扇区),并且它不会覆盖任何仍然定期存在的文件(这些文件可能包括隐藏的文件)在垃圾桶/缩略图/缓存文件夹或您忘记的某些子目录中)。

所有这些仍然会被拾取,photorec因为它永远不会被覆盖。

此外,必须首先完成写入此文件。因此,不是事后直接删除它,而是必须sync首先确保所有随机数据实际上都命中了磁盘,而不仅仅是一些 RAM 写入缓冲区并且永远不会被写入。

因此,使用这种方法,无法保证任何事情。同时它也很危险,因为文件系统会耗尽可用空间,这反过来又会导致所有其他程序的写入失败,从而导致数据意外丢失。

  • sudo 是为了确保写入 5%(或一些类似数量)的保留空间,否则它会在普通用户文件浏览器报告 0 字节的同时停止写入。使用 sudo,它确实多写了 50 GB,别问我为什么。 (4认同)
  • 我确认,我们对未填满的保留空间是错误的:重要的是进行写入的文件的 EUID,而不是文件的所有权。回想起来这是有道理的——限制的工作方式是内核在 `write` 调用时返回 ENOSPC,并且异常是基于谁调用了 `write`。 (4认同)

sud*_*dus 9

如何删除您侄子不应该看到的所有数据

我认为只有一种方法可能会覆盖所有可能保留“已删除”数据的位置。

  • 备份您的系统(完整备份)。一种替代方法是使用 Clonezilla 制作克隆图像。

  • 擦拭整个驱动器(假设一个驱动器)。如果HDD或SSD,有专门的工具/方法,在低级别的工作(改变逻辑和物理存储位置之间的映射),他们是比例如让快dd用零覆盖。您通常可以通过hdparm.

  • 重新安装并将计算机交给年轻且精通 linux 的侄子。

简单的方法

但是,如果您负担得起,请拔下内部驱动器并更换为新驱动器。让你的侄子安装他最喜欢的 linux 发行版 :-)


L. *_*son 4

尝试在安全删除中使用sfill(安全填充)工具。

sudo apt-get install secure-delete
Run Code Online (Sandbox Code Playgroud)

(来自https://superuser.com/questions/19326/how-to-wipe-free-disk-space-in-linux

  • 这并没有回答问题,而是问“为什么”。 (2认同)
  • 好吧,我会说它覆盖了您打算覆盖但没有完全成功覆盖的区域。 (2认同)