shred (Unix)

shredUnix类Unix系统中的命令之一,用于安全删除英语Data remanence文件与装置数据使之难以被恢复。shred也是GNU核心工具组的组成部分之一。

shred
shred安全地删除了一个文本文件
开发者GNU
当前版本8.23(2014年7月18日 (2014-07-18)(作为Coreutils组成部分发布))
原始码库 编辑维基数据链接
编程语言C
操作系统类Unix
类型文件处理工具
许可协议GNU GPL
网站Coreutils - GNU core utilities

背景

为保证效率,删除某一文件一般只需删除其在文件系统中的对应项,实际的文件内容则仍完好无损,这一特性也多为常见的数据恢复软件所利用以恢复文件。而假使该文件内容被其他内容所覆盖,专业的数据恢复装置也能利用本有存储内容的剩余磁场来恢复原始内容。针对这些特点,shred以用能最大程度破坏原始数据的模式多次覆写文件的方式来达到安全删除的目的[1]

特点

shred可以对普通文件或装置(在Unix与类Unix系统中装置也是一类文件)调用。若使用默认设定,shred就会以多种模式覆写文件3遍,但覆写的次数也可以由用户以使用-n的方式来定义。在使用-z的情况下,shred还可以在最后一次覆写时将文件全部以0覆写,这也可借以掩盖文件曾用shred覆写过的痕迹。

默认情况下,shred也会覆写文件系统里为文件分配的空间中的空闲空间。任举一例,在一簇占用4KB的文件系统中存储一个5KB的文件,那该文件实际分配的空间就是8KB(2簇),而对该文件执行shred时就会将这8KB空间全部覆写;但若额外使用-x选项就可以避免覆写空闲空间。除此以外,shred还可搭配-u选项以在覆写完毕后自动删除文件。

局限性

shred的局限性之一是当对某一普通文件使用时,shred只会覆写该文件而不会覆写文件的其他副本,而如手动/自动备份、文件系统快照、文件系统的COW机制、闪存介质的耗损平均机制网络文件系统的缓存机制和日志文件系统的日志机制都可能导致文件副本的产生。因为文件系统本身的机制所产生的局限性都可以用一个办法解决,即是直接对包含目标数据的所有装置使用shred,但对于应用了耗损平均技术的装置来说,数据分配所得的逻辑块与实际的物理位置并不能保证是固定关联的,因而对装置进行shred也无法保证有足够的安全性。在这种情况下,SATA装置的安全擦除命令(如hdparm英语hdparm)就是更好的选择,甚至对磁性存储装置来说使用SATA安全擦除工具也更快且更可靠。除此之外,对于无法使用的硬盘等装置就可以考虑用物理破坏的方式使内容不可还原了[1]

参考资料

  1. ^ 1.0 1.1 Gutmann, Peter. Secure Deletion of Data from Magnetic and Solid-State Memory. Sixth USENIX Security Symposium. [2012-09-05]. (原始内容存档于2007-12-09). 

参见