如何确定目录或文件实际上已删除?


14

我知道大多数文件在删除后实际上并未从磁盘上删除,以后可以恢复。

如何确保已删除的目录实际上已从磁盘上删除?是否有实用程序?

我正在使用Debian Linux。


5
简短的答案:您不能!长答案是:物理上破坏磁盘还是改写问题:恢复数据将花费多少精力?这种尝试的成功率是多少?
Marco Marco

Answers:


11

在存储数据之前,先对其进行加密。要擦除数据,请擦除键。

如果您已经以明文形式写入数据,那么以简单的方式擦除数据为时已晚。数据可能在不同地方有多个副本:

  • 在文件系统上,如果文件被多次写入(覆盖或替换);
  • 在文件系统上,如果已将其作为碎片整理的一部分进行了重新安排;
  • 在日志中(这可能在数据最后写入后很快消失);
  • 在备份中;
  • 在禁用扇区(尤其是在SSD上)。

为了摆脱文件系统上数据的副本,一种粗略的方法是填充可用空间(cat /dev/zero >somefile并等待其停止,因为文件系统已满)。这将覆盖所有完整的块。

数据的一小部分可能保留在不完整的块中,其他文件会部分使用这些块。对于文件名尤其如此,文件名可能保留在存储目录内容的块中。要清除所有内容,请备份所有文件,完全覆盖包含文件系统的设备,然后还原文件。

存储介质可以将数据保留在不再使用的块中。在硬盘上,这意味着已经重新分配了坏块。在磁盘开始磨损之前,这种情况很少发生。在SSD上,这通常是由于磨损均衡而引起的。在这两种情况下,威胁都是非常低的,因为访问该数据需要稍微复杂的攻击者,并需要花费一些昂贵的硬件和时间。如果您担心这些威胁,请加密您的数据,不要把密钥留在身边。

请注意,您可能会看到有关通过多次处理或使用随机数据而不是零(“ Gutmann擦除”)擦除数据的建议。忘记了:这仅适用于1980年代的硬盘(即使那样,数据重建也并不便宜,而且重建也不可靠)。用零覆盖就足够了;做多次随机通过是过时的建议或蛇油。请参阅为什么在硬盘驱动器上多次写入零(或随机数据)比仅执行一次更好?


12

有一种非常流行的工具称为shred。在删除之前,它将覆盖每个文件25次。那可能是我想要的东西。

切丝的用法很简单

$ shred secret_archive.tar.gz

但是请注意,在以下情况下,现代系统shred可能效率低下无用

  • 您的程序会创建您不知道的临时文件(就像许多GUI应用程序一样)
  • 您的FS基于写时复制(如ZFS或Btrfs)
  • 您的FS基于日志(例如NILFS)
  • 您的FS使用数据日记功能(在某些配置中类似于JFS,ReiserFS,XFS,ext3或ext4)
  • 您的FS使用压缩
  • 您的FS在不同位置分配文件的新版本
  • 您有快照或备份
  • 您在网络FS上
  • 您正在使用具有损耗均衡算法的SSD

其他可能更安全的选择是:

  • 加密关键数据
  • 覆盖整个分区或存储设备
  • 设备的物理破坏

1
根据我的手册shred,当使用data = ordered(默认)和data = writeback模式时,即使使用ext3(我猜也是ext4 )也可以。此外,还有一个简单的选择:仅创建一个巨大的文件,占用文件系统所有剩余空间,以便删除的文件将被覆盖。
scai

谢谢。我刚刚修好了。journaling -> data jornaling
taffer

@scai,巨大的文件方法不一定会起作用,因为文件的块可能已经被重新分配并且尚未写入(例如,发生错误的数据,文件的最后一块或dirs ...)
StéphaneChazelas 13年

3
shred是蛇油:没有比head -c $(wc -c secret_archive.tar.gz)>!secret_archive.tar.gz`好。除非您使用的是1980年代或1990年代初期的硬盘,否则使用碎片总是没有意义的。
吉尔斯(Gilles)'所以

3
切碎/ bcwipe / etc 在文件系统级别上是蛇油。对于任何文件系统。由于您使用文件的方式:每次单击保存时,旧文件将被删除(位于可用空间中),并创建一个新文件。如果文件系统已经忘记了它,则不能粉碎它。-在设备级别或覆盖所有自由空间级别上有所不同。Shred是Linux / Unix中可用的少数快速随机数据源之一。/ dev /(u)random太慢了,以至于无法用于覆盖大量数据。-因此,对于设备或可用空间而言,单次通过即可,但对于单个文件而言则
不行
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.