我需要安全地删除一些文件。我shred
以前在 Linux 系统上使用过,所以我四处寻找,发现这是macports 软件包的shred
一部分。我确实安装了 coreutils,但在命令行中仍然找不到。coreutils
port install coreutils
shred
我该如何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 的回答对于提出的问题是正确的。这个问题对于现代系统来说既不合理srm
也shred
不合理。
这主要归功于 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
即)gshred
brew install coreutils && gshred secrets.txt
srm
已被移除homebrew-dupes
,homebrew-core
但某人的 在这里发布了一个水龙头有效(即brew install khell/homebrew-srm/srm && srm secrets.txt
)- 介质的物理破坏:)