如何使用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的文件系统以及在临时位置缓存的文件系统。始终确保您了解所用工具的局限性,并考虑多层安全性以保护敏感数据。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP