如何擦除 Linux 交换分区的内容?

如何擦除 Linux 交换分区的内容?

我有一个类型为“linux-swap”的分区 /dev/sda3 (如 gparted 所示)。

该分区不再使用,也不再是 /etc/fstab 中的条目。

但我很担心,因为该分区上仍然可能存储有敏感信息。因为它可以包含正常情况下存储在 RAM 中的所有内容。例如密码或私人电子邮件。

我想擦除这个分区而不破坏文件系统。

我可以覆盖整个分区 /dev/sda3 然后重新格式化它。但我会丢失 uuid、分区标记和标签。

我想应该可以只擦除内容吧?

我想覆盖存储在该分区上的所有内容,这样它就真的消失了(用零覆盖)。

怎么做?

答案1

磁盘包含分区。标签是文件系统或分区上交换的一部分。 UUID 位于磁盘和分区上。

如果擦除,/dev/sda3则只会擦除分区,不会擦除磁盘,不会擦除分区表,也不会擦除其他分区的标签或 UUID。我不知道为什么你会担心擦除UUID和标签,它们不包含任何关键信息,你可以随时记录它们(UUID只是一个数字,标签只是一个字符串)并将它们放在返回如果/当您重新格式化 sda3 或仅使用新的 UUID(如果您未指定),它将获得。

当你说它没有使用时,我认为它不会出现在/proc/swaps.

答案2

这里的所有命令都必须以 root ( sudo -s) 身份运行。

在您的情况下,交换分区是/dev/sda3。您可以通过列出带有 的活动交换分区来确认它未被使用swapon -s。在我自己的系统之一的这个示例中,它仅列出/var/swap:包含交换数据的文件(而不是设备)。没有列出其他文件或设备。

swapon -s
Filename    Type   Size     Used   Priority
/var/swap   file   102396   880    -1

此时我可以说它/dev/sda3绝对没有用作交换分区。通过写零以通常的方式擦除它:

cat /dev/zero >/dev/sda3

绝对没有必要用随机数据覆盖。零就可以了*

(顺便说一句,与可以通过 、 等命令查看和操作单个文件和目录的文件系统不同lscat交换cp分区应被视为不透明物体。也就是说,内容及其结构不可访问,应被视为单个实体。这意味着没有可访问的机制来从交换空间中删除单个项目,因此我们必须完全删除它,然后选择重新创建它。)

如果您之前记录了 UUID 和标签,您现在可以使用这些值重新创建交换:

mkswap --uuid {uuid} --label {label} /dev/sda3

--uuid都是--label可选的,因此通过省略两者,您可以使用默认生成的值重新创建交换分区。

* 参考:
  1. 必须覆盖硬盘多少次才能完全删除数据?, 2019 年 8 月
  2. NIST 800-88,修订版 1 (PDF), 2014 年 12 月
  3. 覆盖硬盘数据:巨大的擦除争议,2008 年 12 月

相关内容