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

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

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

sudo cat /dev/urandom > some-file

请注意 sudo 的使用,这样保留的 5% 空白将被忽略,并且文件会不断增长,直到出现错误。

然而,我在该分区中执行 photorec,然后数百个旧文件突然出现。所以,至少出于好奇,这些文件存储在哪里以及为什么随机噪声不会覆盖它们?

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

答案1

这里可能存在一些误解,因此该命令不会执行您可能期望的操作。

sudo是多余的,因为您不需要sudo读取/dev/urandom.该> some-file部分是 shell 重定向,因此sudo根本不包含在内。所以你的sudo效率非常低。 (笔记:在这种特殊情况下,sudo无论如何都可能按预期工作,请参阅评论。然而,不使用sudo这种方式是一种模式,因为在其他情况下它会咬你。)

然后,您将写入常规文件。这确实会填满文件所在文件系统的可用空间。如果您有多个文件系统(一个用于/,一个用于/home启动和交换分区等),那么这些也不会受到影响。

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

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

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

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

答案2

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

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

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

  • 擦除整个驱动器(假设一个驱动器)。如果是 HDD 或 SSD,则有一些特殊的工具/方法可以在较低级别上工作(更改逻辑和物理内存位置之间的映射),并且它们是很多比例如用dd零覆盖更快。您通常可以通过 访问此类工具(内置驱动器)hdparm

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

最简单的方法

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

答案3

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

sudo apt-get install secure-delete

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

相关内容