如何使用Linux shred命令?


Linux中的shred命令是一个强大的工具,允许用户永久删除文件并使其无法恢复。当您想要确保敏感数据完全从系统中删除时,此命令特别有用。在本文中,我们将探讨如何使用shred命令,包括示例和输出。

理解shred命令

在深入研究示例之前,了解shred命令的作用非常重要。当您使用rm命令在Linux中删除文件时,文件实际上并没有从磁盘中删除。相反,文件占据的空间被标记为可重用,但数据仍然保留,直到被新数据覆盖。这意味着使用合适的工具可以恢复已删除的文件。

另一方面,shred命令在删除文件之前会覆盖文件数据,使其难以(如果不是不可能)恢复。默认情况下,shred会覆盖文件三次,但这可以使用-n选项进行调整。

shred的基本用法

shred命令的基本语法如下:

shred [options] file_name

这是一个简单的例子:

shred document.txt

在这个例子中,shred命令将覆盖document.txt三次。命令执行后,document.txt中的数据将被随机数据位替换。

shred命令选项

shred命令附带几个选项,允许您自定义其行为:

  • -n - 此选项允许您指定应覆盖数据的次数。例如,shred -n 5 document.txt将覆盖document.txt五次。

  • -u - 此选项告诉shred在覆盖文件后将其删除。默认情况下,shred不会删除文件,它只会覆盖数据。要覆盖然后删除文件,可以使用shred -u document.txt。

  • -z - 此选项添加最后一次用零覆盖来隐藏粉碎过程。如果您不想让别人知道文件已被粉碎,这将非常有用。例如,shred -z document.txt将覆盖document.txt三次,然后用零进行最后一次覆盖。

  • -v - 此选项启用详细模式,显示操作进度。例如,shred -v document.txt将显示粉碎过程的进度。

这是一个使用所有这些选项的示例:

shred −n 5 −u −z −v document.txt

此命令将覆盖document.txt五次,删除文件,最后一次用零覆盖,并显示操作进度。

让我们深入研究一些包含各自输出的更多示例

示例1:基本的shred命令

命令 -

shred file1.txt

此命令将用随机数据三次覆盖file1.txt。除非发生错误,否则终端不会有任何输出。

示例2:指定覆盖次数

命令 -

shred −n 10 file2.txt

此命令将用随机数据十次覆盖file2.txt。同样,除非发生错误,否则不会有任何输出。

示例3:覆盖并删除文件

命令 -

shred −u file3.txt

此命令将三次覆盖file3.txt,然后将其删除。除非发生错误,否则不会有任何输出。

示例4:用零覆盖

命令 -

shred −z file4.txt

此命令将用随机数据三次覆盖file4.txt,然后用零进行最后一次覆盖。除非发生错误,否则不会有任何输出。

示例5:详细模式

命令 -

shred −v file5.txt

输出 -

shred: file5.txt: pass 1/3 (random)...
shred: file5.txt: pass 2/3 (random)...
shred: file5.txt: pass 3/3 (random)...

此命令将用随机数据三次覆盖file5.txt,并显示操作进度。

示例6:使用所有选项

命令 -

shred −n 5 −u −z −v file6.txt

输出 -

shred: file6.txt: pass 1/6 (random)...
shred: file6.txt: pass 2/6 (random)...
shred: file6.txt: pass 3/6 (random)...
shred: file6.txt: pass 4/6 (random)...
shred: file6.txt: pass 5/6 (random)...
shred: file6.txt: pass 6/6 (000000)...
shred: file6.txt: removing
shred: file6.txt: renamed to 00000000000000
shred: 00000000000000: removed

此命令将用随机数据五次覆盖file6.txt,删除文件,最后一次用零覆盖,并显示操作进度。

示例7:粉碎多个文件

命令 -

shred −v file1.txt file2.txt file3.txt

输出 -

shred: file1.txt: pass 1/3 (random)...
shred: file1.txt: pass 2/3 (random)...
shred: file1.txt: pass 3/3 (random)...
shred: file2.txt: pass 1/3 (random)...
shred: file2.txt: pass 2/3 (random)...
shred: file2.txt: pass 3/3 (random)...
shred: file3.txt: pass 1/3 (random)...
shred: file3.txt: pass 2/3 (random)...
shred: file3.txt: pass 3/3 (random)...

此命令将分别用随机数据三次覆盖file1.txt、file2.txt和file3.txt,并显示操作进度。

示例8:粉碎目录(不推荐)

命令 -

shred −v −u directory_name/*

输出 -

shred: directory_name/file1.txt: pass 1/3 (random)...
shred: directory_name/file1.txt: pass 2/3 (random)...
shred: directory_name/file1.txt: pass 3/3 (random)...
shred: directory_name/file1.txt: removing
shred: directory_name/file1.txt: renamed to 00000000000000
shred: 00000000000000: removed
...

此命令将用随机数据三次覆盖directory_name中的所有文件,删除文件,并显示操作进度。请注意,shred不能用于安全地删除目录本身,因为它设计用于普通文件。

示例9:用更多覆盖和零覆盖文件

命令 -

shred −n 10 −z −v file4.txt

输出 -

shred: file4.txt: pass 1/11 (random)...
shred: file4.txt: pass 2/11 (random)...
...
shred: file4.txt: pass 10/11 (random)...
shred: file4.txt: pass 11/11 (000000)...

此命令将用随机数据十次覆盖file4.txt,最后一次用零覆盖,并显示操作进度。

示例10:仅用随机数据覆盖文件

命令 -

shred −n 5 −v file5.txt

输出 -

shred: file5.txt: pass 1/5 (random)...
shred: file5.txt: pass 2/5 (random)...
shred: file5.txt: pass 3/5 (random)...
shred: file5.txt: pass 4/5 (random)...
shred: file5.txt: pass 5/5 (random)...

此命令将用随机数据五次覆盖file5.txt,并显示操作进度。

请注意,实际输出可能因shred命令的版本和您使用的文件系统而异。

结论

shred命令是确保永久删除敏感数据的强大工具。但是,请注意,shred可能在某些文件系统上无效,包括某些类型的日志文件系统、基于RAID的文件系统以及在临时位置缓存的文件系统。始终确保您了解所用工具的局限性,并考虑多层安全性以保护敏感数据。

更新于:2023年7月13日

458 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.