类似wipe和shred旨在覆盖文件数据的程序使用与任何其他程序相同的接口工作。他们使用通常的 OS 函数将例如零写入文件,并希望文件系统将新数据存储在与旧数据相同的磁盘块上,从而覆盖旧数据。除了通过unlink().
因此,在文件被覆盖后保留文件就是这样,文件仍然存在,不会被删除。只是内容变了。
带有 的示例shred,默认情况下不会取消链接文件:
$ cat somefile
some secret data
$ shred somefile
$ ls -l somefile
-rw-r--r-- 1 username username 4096 Jun 27 19:28 somefile
$ od -tx1 somefile |head -2
0000000 2b d7 fe 76 a0 4c 79 4e b6 bc 26 7d 6c b0 4e ed
0000020 81 a2 bf 3f ce af ce f0 07 2b fe 80 50 39 e3 c9
手册页是这样描述的
-k
:的主要用例
-k
是这将覆盖驱动器的所有内容,而不删除设备节点。
如果您在“标准”文件上使用它,它会擦除文件的内容,但不保留文件本身(它的名称,以及它在父目录中的存在)。
类似
wipe
和shred
旨在覆盖文件数据的程序使用与任何其他程序相同的接口工作。他们使用通常的 OS 函数将例如零写入文件,并希望文件系统将新数据存储在与旧数据相同的磁盘块上,从而覆盖旧数据。除了通过unlink()
.因此,在文件被覆盖后保留文件就是这样,文件仍然存在,不会被删除。只是内容变了。
带有 的示例
shred
,默认情况下不会取消链接文件:之后
shred
,文件仍然存在,充满随机字节。该文件不会被截断或删除。它的大小实际上已经增加,因为shred
在覆盖时会向上舍入文件大小(以完全覆盖最后一个数据块)。当然我们可以用
rm somefile
.请注意,覆盖所依赖的假设甚至可能不适用于所有文件系统。至少文件数据的日志记录(可能在 ext4 上)和写时复制文件系统 (btrfs) 将通过本质上存储数据的多个副本而使覆盖无效。