如何使用shred Linux命令?
Linux中的shred命令是一个强大的工具,它允许用户永久删除文件并使它们不可恢复。当您想要确保从系统中完全删除敏感数据时,此命令特别有用。在本文中,我们将探讨如何使用 shred 命令,并提供示例和输出。
了解 shred 命令
在深入研究示例之前,了解 shred 命令的作用非常重要。当您在 Linux 中使用 rm 命令删除文件时,该文件实际上并未从磁盘中删除。相反,文件占用的空间被标记为可重用,但数据会保留下来,直到被新数据覆盖。这意味着使用正确的工具,可以恢复已删除的文件。
另一方面,shred 命令会在删除文件之前覆盖文件的数据,从而使恢复变得更加困难(如果不是不可能的话)。默认情况下,shred 会覆盖文件 3 次,但可以使用 -n 选项进行调整。
shred的基本用法
shred 命令的基本语法如下 -
shred [options] file_name
这是一个简单的 -
shred document.txt
在此示例中,shred 命令将覆盖 document.txt 3 次。该命令执行后,document.txt 中的数据将被随机位数据替换。
切碎命令选项
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 3 次。除非发生错误,否则终端不会有任何输出。
示例 2:指定覆盖次数
命令-
shred −n 10 file2.txt
此命令将使用随机数据覆盖 file2.txt 十次。同样,除非发生错误,否则不会有任何输出。
示例 3:覆盖和删除文件
命令-
shred −u file3.txt
该命令将覆盖 file3.txt 3 次,然后将其删除。除非发生错误,否则不会有任何输出。
示例 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 3 次并显示操作进度。
示例 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 3 次,并显示操作进度。
示例 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中的所有文件3次,删除文件,并显示操作进度。请注意,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 命令是确保永久删除敏感数据的强大工具。但是,请务必注意,粉碎对于某些文件系统可能无效,包括某些类型的日志文件系统、基于 RAID 的文件系统以及在临时位置缓存的文件系统。始终确保您了解所使用工具的局限性,并考虑多层安全性来保护敏感数据。