use*_*444 8 linux command-line
正如标题所说,这可能吗?
假设我有一个名为 的文件myfile.dat,rm不能完成这项工作,如果我没有安装wipe或shred其他工具的能力,我可以“自己”安全地删除这个文件吗?
sch*_*ily 12
即使使用此类工具,这种安全擦除方法是否有效也取决于底层文件系统。
如果您使用的是基于写时复制的现代文件系统,这些工具将根本无法使用,因为它们不会写入文件使用的先前块。
如果您喜欢进行安全擦除,您要么需要支持内置于文件系统中的该功能,要么文件系统需要实现允许检索文件的磁盘块编号的接口。然而,后一种方法存在安全风险,只能为特权用户提供支持。
小智 6
请记住,文件级擦除在实践中的效果在很大程度上取决于底层文件系统和驱动器硬件。现代的写时复制(日志式)文件系统,例如 ext4,不会“覆盖”原始位置的文件数据,这使得大多数面向文件的擦除工具,例如shred和wipe,远不如过去几年有用。SSD 在块级别具有类似的特性,请参阅https://www.howtogeek.com/234683/why-you-cant-securely-delete-a-file-and-what-to-do-instead/
因此,我们必须假设您是在老式磁性硬盘驱动器和非日志式非 COW 文件系统上执行此操作。1990 年代的假设也许可以接受,但它们在 2020 年是否现实?
然后,“基本的 Unix/linux 命令行工具”似乎含糊不清。 shred是 coreutils 的一部分,它是一组“基本的 Unix/Linux 命令行工具”。因此,在一个级别上,使用shred并满足您的要求!
shred -zu FILENAME
Run Code Online (Sandbox Code Playgroud)
否则,您似乎在寻求一种方法来覆盖现有文件的内容(可能重复),然后“自己”删除它。您可以使用dd将零复制到文件中,但dd它也是 coreutils 的一部分,所以为什么在实践中“我自己”而不是使用shred是有争议的。
“我自己”是指仅使用 sh 或 bash 内部命令吗?