从命令行使用‘shred’

从命令行使用‘shred’

我需要安全地删除一些文件。我shred以前在 Linux 系统上使用过,所以我四处寻找,发现这是macports 软件包的shred一部分。我确实安装了 coreutils,但在命令行中仍然找不到。coreutilsport install coreutilsshred

我该如何shred在 Mac 的命令行上工作?如果重要的话,我使用的是 Mac OS X 10.7.5 (Lion)

答案1

port install coreutils在二进制文件名称中添加 ag 前缀,因此 shred 是/opt/local/bin/gshred

答案2

OSX 有一个内置命令srm可以安全删除文件。请参阅https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/srm.1.html。您还可以使用rm -P字节序列三次覆盖文件。

从 sierra 或更高版本开始,macOS 不再包含 srm。但用户可以使用 homebrew 安装它:

brew install homebrew/dupes/srm && brew link --force homebrew/dupes/srm

答案3

@user495470 的回答对于提出的问题是正确的。这个问题对于现代系统来说既不合理srmshred不合理。

这主要归功于 SSD。与磁盘不同,现代启用 TRIM 的磁盘会在后台自动清除已删除的数据。

SSD 还具有磨损均衡功能。这使得“覆盖”文件的尝试既徒劳无功(您将写入不同的物理位置),又不受欢迎(它会不必要地增加磁盘磨损)。

所有配备 SSD 的 Mac 都启用了 TRIM。

另一个问题是文件系统,特别是日志文件系统,它可以在写出数据之前在其他地方保存一份数据副本。

即使在磁性介质上,这也会给两者带来问题srm

所有用户 [..] 应注意,srm 仅适用于覆盖块的文件系统。具体来说,它将不是处理 [...] 绝大多数日志文件系统。

shred

[..] Shred 依赖于一个非常重要的假设:文件系统会覆盖原地数据。[..] 许多现代文件系统设计不满足这一假设。例外包括:日志结构或日志文件系统 [..]

自 Mac OS X v10.3 起,HFS Plus 卷默认以日志形式记录。

目前,安全“删除”文件的最佳方式是启用 FileVault(这样它们就不会以未加密的形式写入磁盘),然后直接删除它们并让 TRIM 进行整理。

如果不幸遇到了麻烦,您使用的是磁性介质,并且已禁用日志功能,而且由于某种原因无法加密磁盘,那么您可以选择:

  • 使用rm -P覆盖文件0xff,然后0x00,然后0xff再次
  • 安装(coreutils即)gshredbrew install coreutils && gshred secrets.txt
  • srm已被移除homebrew-dupeshomebrew-core某人的 在这里发布了一个水龙头有效(即brew install khell/homebrew-srm/srm && srm secrets.txt
  • 介质的物理破坏:)

相关内容