从命令行使用`shred`


44

我需要安全地删除一些文件。我以前shred在linux系统上使用过,因此环顾四周,发现它shredcoreutilsmacports软件包的一部分。我确实port install coreutils安装了coreutils,但是shred在命令行中仍然找不到。

如何shred在Mac的命令行上工作?如果有问题,我正在使用Mac OS X 10.7.5(Lion)


注意的安全性shred取决于所使用的文件系统,我不知道它在HFS上的有效性。
Flimm

1
shred在日记文件系统上无效,这就是为什么它不可用的原因。还发现SRM无效。只需正常删除,然后祈祷似乎是hfs +带日志文件系统的唯一希望
Kevin Johnson

真?!您能否谈谈为什么它无效?
inspectorG4dget

1
日记文件系统记录将写入磁盘之前所做的更改。它可用于从文件损坏中恢复,或恢复您希望粉碎的数据。参见en.wikipedia.org/wiki/Journaling_file_system
Alex Mooney,

Answers:


27

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


9
brew install coreutilsgshred适用于使用自制的。
davidjb

59

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

1
可以,但是切丝允许我设置覆盖次数。这些工具没有。关于如何获得该功能的任何想法?
inspectorG4dget

2
+1出色的答案。我不知道该srm命令存在。在删除文件之前,它将覆盖,重命名和截断文件。这样,再加上7种符合美国国防部规定的传递(0xF6、0x00、0xFF,随机,0x00、0xFF,随机)(-m选项),确保文件不可恢复。
TulainsCórdova2014年

3
从macOS Sierra开始,srm不再包含。
y3sh

1
macOS用户可以srm使用brew命令安装brew install homebrew/dupes/srm
hd.deman '16

1
homebrew/dupes现在已弃用。 似乎srm被删除,而不是迁移到homebrew-core
davidjb

18

@ user495470的答案对提出的问题是正确的。问题既不是srmshred真正意义的现代系统。

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

SSD还可以执行损耗均衡。这使得试图“覆盖”文件既徒劳(您将写到另一个物理位置)又是不希望的(不必要地导致磁盘磨损)。

所有带有SSD的Mac都启用了TRIM。

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

即使在磁性介质上,这也可能导致以下两个问题srm

所有用户[..]应该注意srm仅在覆盖适当块的文件系统上工作。特别是,它会工作在[..]绝大多数的日志文件系统。

shred

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

自Mac OS X v10.3起,默认情况下会记录HFS Plus卷。

如今,安全地“删除”文件的最佳方法是启用FileVault(这样一来,它们就永远不会写未加密的磁盘),然后删除它们并让TRIM对其进行分类即可。

如果由于不幸而在磁介质上,禁用了日志功能,并且由于某种原因无法加密磁盘,则可以选择以下选项:

  • 使用rm -P它覆盖文件有0xff,然后0x00,然后0xff
  • 安装coreutilsgshred(即brew install coreutils && gshred secrets.txt
  • srm已从中移除homebrew-dupeshomebrew-core但是有人 在这里发布了有效的水龙头(例如brew install khell/homebrew-srm/srm && srm secrets.txt
  • 介质的物理破坏 :)

但是我想如果您切碎整个分区或整个磁盘,切碎仍然可以。
康斯坦丁

你是说喜欢shred /dev/hda吗?我猜就是这样。操作系统所寻址的块仍然从物理内存中提取出来,并且有可能切碎过程中被重新映射。我不知道任何损耗均衡和后备空间的实现可能会导致这并不总是工作..
Molomby

+1解释为何在SSD上无意义地进行粉碎,以及使用FileVault的建议。APFS是否已记录日志,或者我们知道它如何处理文件删除?(应该是一个单独的线程!)
Stuart H

1
这里似乎有一个假设,即仅对于“内部”驱动器才需要安全删除。附带的驱动器有各种形式,srm适用于其中的某些形式。
朗多
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.