在我把笔记本电脑借给我精通 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)