可以简单地取消链接文件并在相关分区上运行,而不是使用srm
,wipe
或:shred
zerofree
mount /dev/sda1 /mnt
rm /mnt/confidential_file
umount /mnt
zerofree /dev/sda1
srm
与、wipe
和相比,此方法的安全性如何shred
?
PS:我也在寻找使文件取消链接并安排文件粉碎的方法。
答案1
shred
只要您能保证没有创建该文件的其他副本,单个文件的安全性才有希望。这可能适用于真正的大文件(电影)——假设您不重新编码这些文件,而对于小文件、文档和您实际使用的所有内容则根本不适用。
每次您单击“保存”时,您就会得到另一个副本。因为保存会将文件截断为 0 字节并写入新文件 — 通常位于不同的物理位置。甚至文件系统也不再知道旧副本所在的位置,因此无法使用shred
或任何其他实用程序删除它。
所以你最终会覆盖所有可用空间。这比粉碎单个文件要好得多,但也有其自身的陷阱……您需要成为 root 才能覆盖根保留,并且文件系统根本不喜欢满载——任何其他写入同时进行时间会失败,因此您最终会在此过程中丢失实际数据。
所以像这个方法:
truncate -s 1E sparsefile
shred -v -n 1 sparsefile
sync # other programs will lose data at this point
rm sparsefile
使用SSD,您可以将zerofree作为内置功能,fstrim/discard正是这样做的,可以快速轻松地消除可用空间。基本上,使用 SSD,在修剪发生后,您将无法恢复任何已删除的文件。
安全吗?这取决于文件系统以及您想要删除的文件的大小。有些文件系统有角落和缝隙,比如多个小文件共享一个块,并且在创建一个充满随机数据的巨大文件时,该空间不会被覆盖。此外,可能还存在其他痕迹,例如目录条目中剩余的文件名......
您无法一次覆盖整个设备。
# backup everything
blkdiscard /dev/sda # SSD
shred -v -n 1 /dev/sda # HDD
# create partitions, filesystems, restore backup