我需要安全地删除一些文件。我以前shred
在linux系统上使用过,因此环顾四周,发现它shred
是coreutils
macports软件包的一部分。我确实port install coreutils
安装了coreutils,但是shred
在命令行中仍然找不到。
如何shred
在Mac的命令行上工作?如果有问题,我正在使用Mac OS X 10.7.5(Lion)
我需要安全地删除一些文件。我以前shred
在linux系统上使用过,因此环顾四周,发现它shred
是coreutils
macports软件包的一部分。我确实port install coreutils
安装了coreutils,但是shred
在命令行中仍然找不到。
如何shred
在Mac的命令行上工作?如果有问题,我正在使用Mac OS X 10.7.5(Lion)
Answers:
OSX具有内置命令srm
来安全地删除文件。参见https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/srm.1.html。您还可以使用rm -P
字节序列将文件覆盖3次。
使用sierra或更高版本时,macOS不再包含srm。但是用户可以使用自制软件安装它:
brew install homebrew/dupes/srm && brew link --force homebrew/dupes/srm
srm
命令存在。在删除文件之前,它将覆盖,重命名和截断文件。这样,再加上7种符合美国国防部规定的传递(0xF6、0x00、0xFF,随机,0x00、0xFF,随机)(-m选项),确保文件不可恢复。
srm
不再包含。
srm
使用brew命令安装brew install homebrew/dupes/srm
。
@ user495470的答案对提出的问题是正确的。问题既不是srm
或shred
真正意义的现代系统。
这主要是由于SSD。与磁盘不同,启用了TRIM的现代磁盘会在后台自动清除已删除的数据。
SSD还可以执行损耗均衡。这使得试图“覆盖”文件既徒劳(您将写到另一个物理位置)又是不希望的(不必要地导致磁盘磨损)。
所有带有SSD的Mac都启用了TRIM。
另一个问题是文件系统,特别是日志文件系统,该系统可以在数据写出之前在其他地方保留数据副本。
即使在磁性介质上,这也可能导致以下两个问题srm
:
所有用户[..]应该注意srm仅在覆盖适当块的文件系统上工作。特别是,它会不工作在[..]绝大多数的日志文件系统。
和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
)shred /dev/hda
吗?我猜就是这样。操作系统所寻址的块仍然从物理内存中提取出来,并且有可能在切碎过程中被重新映射。我不知道任何损耗均衡和后备空间的实现可能会导致这并不总是工作..
shred
取决于所使用的文件系统,我不知道它在HFS上的有效性。