如何确定目录或文件确实被删除?

如何确定目录或文件确实被删除?

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

如何确保我删除的目录实际上会从磁盘中删除?有实用程序吗?

我正在使用 Debian Linux。

答案1

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

如果你已经以明文形式写入了数据,那么再用简单的方式擦除它就太晚了。数据的多个副本可能分布在不同的地方:

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

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

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

存储介质可以将数据保留在不再使用的块中。在硬盘上,这意味着已重新分配的坏块;在磁盘开始磨损之前,这种情况很少发生。在 SSD 上,由于磨损均衡,这种情况很常见。在这两种情况下,威胁都很低,因为访问这些数据需要有一定经验的攻击者和一些相当昂贵的硬件,并且需要浪费时间。如果您关心这些威胁,请加密您的数据,并且不要将密钥随意放置。

请注意,您可能会看到有关通过多次传递或使用随机数据而不是零(“Gutmann 擦除”)来擦除数据的建议。算了:这仅适用于 20 世纪 80 年代的硬盘(即使如此,重建数据也不是那么便宜,而且重建相当不可靠)。用零覆盖就足够了;进行多次随机传递是过时的建议或万金油。看为什么在硬盘驱动器上多次写入零(或随机数据)比只写入一次更好?

答案2

有一个非常流行的工具,叫做shred.它会覆盖每个文件 25 次,然后才会被删除。这可能就是你正在寻找的东西。

shred的使用非常简单

$ shred secret_archive.tar.gz

但请注意,在现代系统上shred可能是效率低下或者无用如果:

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

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

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

答案3

bcwipe 仍然有其用途。不是隐私。还有谁对我的 ProxMox kvm 机器上的可用空间进行零填充?对于具有大量可用空间的 kvm 计算机,vzdump 大小减少了 20 倍。它具有与以前相同数量的可用空间,只是它只是零,并且这些空间以高压缩率进行存档。

相关内容