在 BSD 系统上使用“shred”

在 BSD 系统上使用“shred”

Linux 具有shred来自 GNU coreutils 软件包的 功能,可以在删除文件时安全地就地覆盖数据。 BSD 系统(特别是 macOS)上的等效项是什么?

答案1

qorg11给出的答案是对您问题的技术上准确的答案(所以去投票吧!)。

现实是那shred是没用的。所有 BSD 以及 Linux 都具有现代文件系统,其中“覆盖文件以实际覆盖存储介质上的字节”根本不会发生,因为这不是文件系统的结构以及存储设备的工作方式。

shred 的作用是获取一个文件并用零覆盖其内容。很好,但是许多现代文件系统都是“写时复制”(即,当您更改文件中的某些内容时,您不会修改存储设备上的相同块,而是会制作受影响块的修改副本)。 Apple的APFS绝对是这些文件系统之一。

某些文件系统具有“稀疏检测”:您写入全零,因此文件系统不会将这些零写入磁盘,而只是表示文件中的一个漏洞。

所有 SSD 都具有写入磨损平衡:您实际上无法防止攻击者访问存储在内存芯片上的原始数据,因为全部对系统的写入本质上是写入时复制,以在介质上均匀分布写入数据的负载(写入同一单元通常会导致老化并增加错误概率;由于 SSD 具有统一的访问延迟,因此将逻辑块广泛分布在整个介质上)物理介质没有缺点)。另一方面,现代文件系统驱动程序支持 TRIM 操作(通常称为“丢弃”),该操作向 SSD 发出信号,表明数据可以清零,如果被要求,SSD 很可能甚至不会读取零逻辑块。

因此,正如 qorg11 所说,即使在非 GNU 系统上,如果您安装了 GNU coreutils, 也shred相当于,但实际上, an 也同样有效。shredrm

答案2

brew install coreutils您可以在 macOS(使用 Homebrew)、pkg install coreutilsFreeBSD 或OpenBSD 中安装 GNU coreutils pkg_add coreutils,然后运行​​,其行为与 Linux 中gshred完全相同。shred

答案3

rm本身有 -P 标志。

OS X 手册页将其记录为:

-P   Overwrite regular files before deleting them.  Files are
     overwritten three times, first with the byte pattern 0xff,
     then 0x00, and then 0xff again, before they are deleted.

OpenBSD 手册页:

-P    Attempt to overwrite regular writable files before deleting them. Files 
      are overwritten once with a random pattern. Files with multiple links will 
      be unlinked but not overwritten.`

然而在 FreeBSD 上它什么也不做,但为了兼容性而保留了该标志。

OpenBSD 手册页的 BUGS 部分警告了其局限性:http://man.openbsd.org/rm#BUGS

-P 选项假定底层文件系统和存储介质都就地写入。对于 FFS 和 MS-DOS 文件系统以及磁性硬盘来说是这样,但对于大多数闪存存储来说并非如此。

这些也适用于切碎。

相关内容