如何在Linux上安全删除文件

粉碎旧数据文件的原因与粉碎旧纸质文档的原因相同。我们将告诉您有关安全删除Linux文件需要了解的内容。本教程将介绍shred命令和安全删除实用程序套件。

删除的文件通常是可恢复的

删除文件实际上并不会将其从硬盘中删除。这完全取决于您的文件系统使用inode的方式。这些是文件系统中保存有关文件的元数据的数据结构。文件的名称、它在硬盘上的位置、它拥有的属性和权限等等都存储在一个inode中。目录只不过是一个文件本身。一个保存目录包含的文件的名称和信息节点号的节点。

使用RM删除文件时,文件系统会释放相应的信息节点并调整目录文件。这会将硬盘上过去文件占用的空间标记为未使用。想象一下,您走进图书馆,查看卡片索引,找到一本书的目录卡,然后将其撕毁。这本书还在书架上。只是更难找到。

换句话说,该文件使用的空间现在可以由其他文件自由使用。但是旧文件的内容仍然留在那个空间里。在覆盖该空间之前,很可能会检索到文件。

但是,完全删除文件并不像简单地覆盖它们那样简单。正如我们将看到的。

不要对固态硬盘执行此操作

这些技术适用于传统的机电硬盘驱动器(HDD),不应与固态驱动器(SSD)一起使用。它不会工作,并且会导致额外的写入和对SSD的不必要磨损。要安全地擦除SSD中的数据,您应该使用SSD制造商提供的实用程序。

相关:如何在Linux终端中删除文件和目录

shred命令

粉碎旨在为您执行覆盖操作,因此删除的文件将无法恢复。它包含在本文研究期间测试的所有Linux发行版中,包括Ubuntu、Fedora和Manjaro。

在本例中,我们将在一个名为~/Research的目录中工作,该目录包含许多文本文件。它还包含一些其他目录,而这些目录又包含其他文件。我们假设这些文件是敏感的,必须从硬盘上完全删除。

我们可以使用tree命令查看目录树结构,如下所示。-d(目录)选项使tree只列出目录,而不列出所有文件。目录树结构如下:

tree -d

粉碎单个文件

要分解单个文件,我们可以使用以下命令。我们使用的选项包括:

u:覆盖后取消分配并删除文件。 v:详细选项,这样shred就可以告诉我们它在做什么。 z:使用零执行最终覆盖。

shred -uvz Preliminary_Notes.txt_01.txt

默认情况下,碎片会覆盖文件四次。按照我们的要求,前三次传递使用随机数据,最后一次传递使用零。然后,它将删除该文件并覆盖信息节点中的一些元数据

设置覆盖遍的次数

我们可以使用-n(Number)选项要求shred使用更多或更少的覆盖遍。切碎将始终使用至少一次传递。我们在这里提供的数字是我们需要shred执行的额外传递次数。所以施雷德总是会比我们要求的数字多做一次传球。要获得总共三个通行证,我们需要额外的两个通行证:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

不出所料,Shred进行了三次传球。

更少的传球-如果你愿意,更少的粉碎-显然更快。但它是不是不那么安全了?有趣的是,这三次传球可能已经足够了。

相关:您只需擦除磁盘一次即可将其安全擦除

粉碎多个文件

通配符可以与shred一起使用,以选择要擦除的文件组。“*”表示多个字符,“?”表示单个字符。*此命令将删除当前工作目录中所有剩余的“PRIONAL_NOTES”文件。

shred -uvz -n 2 Preliminary_Notes_*.*

剩下的每个文件都由碎片器依次处理。

shred没有递归选项,因此不能用于擦除嵌套目录的目录树。

安全删除文件的麻烦

不管碎屑有多好,都有一个问题。现代日志文件系统(如ext3和ext4)竭尽全力确保它们不会损坏、损坏或丢失数据。对于日志记录文件系统,不能保证在已删除文件使用的硬盘空间上确实会发生覆盖。

如果您希望文件被删除得比RM更彻底一些,那么shred可能没问题。但不要犯这样的错误,认为数据肯定已经消失,完全无法恢复。情况很可能并非如此。

相关:为什么不能“安全删除”文件,以及如何取而代之

安全删除套件

secure-delete命令试图克服日志记录文件系统的最大努力,并成功安全地覆盖文件。但同样的警告也同样适用。仍然不能保证覆盖确实发生在您需要它来擦除感兴趣的文件的硬盘区域上。有更多的机会,但不能保证。

安全删除命令使用以下覆盖和操作序列:

1用0xFF值字节覆盖。 5用随机数据覆盖。 27用Peter Gutmann定义的特殊值覆盖。 使用随机数据再覆盖5个。 将文件重命名为随机值。 截断文件。

如果你觉得这一切都太过分了,那你就有了一个很好的伙伴。奥克兰大学(University Of Aukland)教授彼得·古特曼(Peter Gutmann)也认为这一比例过高。他在1996年发表了一篇讨论这些技术的论文,由此引发了一种都市神话,即你需要同时使用论文中讨论的所有技术。

自那以后,彼得·古特曼(Peter Gutmann)试图把精灵重新放回瓶子里,他说:“用随机数据进行一次很好的清理,会做得和预期的一样好。”

但是我们现在所处的位置,这些是安全删除命令使用的一系列技术。但首先,我们需要安装它们。

安装安全删除

如果您使用的是Ubuntu或其他基于Debian的发行版,请使用aapt-get命令将此软件包安装到您的系统上。在其他Linux发行版上,请改用您的Linux发行版的包管理工具。

sudo apt-get install secure-delete

安全删除捆绑包中包括四个命令。

SRM是一种安全RM,用于通过删除文件并覆盖其硬盘空间来擦除文件。 sFill是一款覆盖硬盘上所有可用空间的工具。 sexchange用于覆盖和清理您的交换空间。 sdmem用于清理内存。

SRM命令

您可以像使用rm命令一样使用srm命令。要删除单个文件,请使用以下命令。z(零)选项导致SMR对最终擦除使用零,而不是随机数据。v(详细)选项使SRM通知我们其进度。

srm -vz Chapter_One_01.txt

您会注意到的第一件事是SRM很慢。它在工作时确实提供了一些视觉反馈,但是当您再次看到命令提示符时,它会让您松一口气。

您可以使用-l(降低安全性)选项将通过次数减少到两次,这将大大加快速度。

srm -lvz Chapter_One_02.txt

SRM告诉我们,在它看来,这不太安全,但它仍然会为我们删除和覆盖该文件。

您可以使用-l(降低安全性)选项两次,以将传递次数减少到一次。

srm -llvz Chapter_One_03.txt

将SRM用于多个文件

我们还可以对SRM使用通配符。此命令将擦除和擦除第一章的其余部分:

srm -vc Chapter_One_0?.txt

文件由SRM依次处理。

使用SRM删除目录及其内容

r(递归)选项将使SRM删除所有子目录及其内容。您可以将第一个目录的路径传递给SRM。

在本例中,我们将删除当前目录~/Research中的所有内容。这意味着~/Research中的所有文件和所有子目录都被安全删除。

srm -vz *

SRM开始处理目录和文件。

它最终会使您返回到命令提示符。在本文研究的测试机器上,删除分布在当前目录和三个嵌套目录之间的大约200个文件大约需要一个小时。

所有文件和子目录都已按预期删除。

sFill命令

如果您担心已使用RM删除的文件,如何才能重新检查并确保它已被覆盖?*sill命令将覆盖您硬盘上的所有可用空间。

在执行此操作时,您会注意到硬盘上的可用空间越来越少,直到完全没有可用的空间。当sFill完成时,它会将所有空闲空间释放回给您。如果您管理的是多用户系统,这将非常具有破坏性,因此这是一项应该在非工作时间执行的维护任务。

即使在单用户计算机上,硬盘空间的损失也意味着一旦填充用完了大部分空间,它就无法使用。这是你一开始就会做的事,然后就会离开。

要尝试提高速度,可以使用-l(降低安全性)选项。其他选项是我们之前看到的-v(详细)和-z选项(零)。在这里,我们要求sill安全地覆盖/home目录中的所有空闲空间。

sudo sfill -lvz /home

请不要拘束。在只有10 GB硬盘的测试计算机上,这是在下午三点左右开始的,并在一夜之间完成。

它会搅拌好几个小时。这是通过-l(降低安全性)选项实现的。但是,最终您将返回到命令提示符。

sexchange命令

sswap命令将覆盖交换分区中的存储。我们需要做的第一件事是识别您的交换分区。我们可以使用blKID命令来实现这一点,该命令列出了块设备。

sudo blkid

您需要找到单词“交换”,并记下它所连接的块设备。

我们可以看到交换分区连接到/dev/sda5。

我们需要在覆盖期间关闭对交换分区的磁盘写入。我们将使用swapoff命令:

sudo swapoff /dev/sda5

现在,我们可以使用sexchange命令。

我们将使用/dev/sda5作为sexchange命令的命令行的一部分。我们还将使用前面使用的-v(详细)选项和-ll(降低安全性)选项。

sudo sswap -llv /dev/sda5

sexchange开始在您的交换分区中工作,覆盖其中的所有内容。它不会花像斯菲尔那样长的时间。感觉就是这样。

一旦完成,我们需要将交换分区恢复为活动交换空间。我们使用swapon命令执行此操作:

sudo swapon /dev/sda5

sdmem命令

安全删除包甚至包含一个工具来擦除计算机中的随机存取存储器(RAM)芯片。

冷启动攻击需要在计算机关闭后不久对其进行物理访问。这种类型的攻击可能允许从您的RAM芯片检索数据。

如果您认为您需要保护自己免受这种类型的攻击-大多数人认为他们需要这样做可能有点夸张-您可以在关闭计算机之前擦除RAM。我们将再次使用-v(详细)和-ll(降低安全性)选项。

sudo sdmem -vll

终端窗口将充满星号,表示sdmem正在您的RAM中工作。

简单的选择:只需加密您的硬盘

与其安全地删除文件,为什么不使用加密来保护您的硬盘或主文件夹呢?

如果这样做,任何人都无法访问任何内容,无论是活动文件还是已删除文件。而且,您不必保持警惕,记住要安全地擦除敏感文件,因为您的所有文件都已受到保护。

大多数Linux发行版都会问你是否想在安装时使用加密,回答“是”会省去很多将来的麻烦。您不能处理秘密或敏感信息。但是,如果你认为当你用完电脑后,你可能会把它送给或卖给别人,加密也会简化这一点。

相关文章