3 个在 Linux 中永久并安全删除文件和目录的方法

简介:

在大多数情况下,我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。

该文件只是对用户隐藏,它驻留在硬盘上的某个地方。它有可能被数据窃贼、执法取证或其它方式来恢复。

假设文件包含密级或机密内容,例如安全系统的用户名和密码,具有必要知识和技能的攻击者可以轻松地恢复删除文件的副本并访问这些用户凭证(你可以猜测到这种情况的后果)。

在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件。

1、 shred – 覆盖文件来隐藏内容

shred 会覆盖文件来隐藏它的内容,并且也可以选择删除它。

 
 
  1. $ shred -zvu -n 5 passwords.list

在下面的命令中,选项有:

  1. -z - 用零覆盖以隐藏碎片
  2. -v - 显示操作进度
  3. -u - 在覆盖后截断并删除文件
  4. -n - 指定覆盖文件内容的次数(默认值为3)

shred - 覆盖文件来隐藏它的内容

shred - 覆盖文件来隐藏它的内容

你可以在 shred 的帮助页中找到更多的用法选项和信息:

 
 
  1. $ man shred

2、 wipe – 在 Linux 中安全删除文件

wipe 命令可以安全地擦除磁盘中的文件,从而不可能恢复删除的文件或目录内容

首先,你需要安装 wipe 工具,运行以下适当的命令:

 
 
  1. $ sudo apt-get install wipe [Debian 及其衍生版]
  2. $ sudo yum install wipe [基于 RedHat 的系统]

下面的命令会销毁 private 目录下的所有文件。

 
 
  1. $ wipe -rfi private/*

当使用下面的标志时:

  1. -r - 告诉 wipe 递归地擦除子目录
  2. -f - 启用强制删除并禁用确认查询
  3. -i - 显示擦除进度

wipe – 在 Linux 中安全擦除文件

wipe – 在 Linux 中安全擦除文件

注意:wipe 仅可以在磁性存储上可以可靠地工作,因此对固态磁盘(内存)请使用其他方法。

阅读 wipe 手册以获取其他使用选项和说明:

 
 
  1. $ man wipe

3、 Linux 中的安全删除工具集

secure-delete 是一个安全文件删除工具的集合,它包含用于安全删除文件的 srm(secure_deletion)工具。

首先,你需要使用以下相关命令安装它:

 
 
  1. $ sudo apt-get install secure-delete [Debian 及其衍生版]
  2. $ sudo yum install secure-delete [基于 RedHat 的系统]

安装完成后,你可以使用 srm 工具在 Linux 中安全地删除文件和目录。

 
 
  1. $ srm -vz private/*

下面是使用的选项:

  1. -v – 启用 verbose 模式
  2. -z – 用0而不是随机数据来擦除最后的写入

srm – 在 Linux 中安全删除文件

srm – 在 Linux 中安全删除文件

阅读 srm 手册来获取更多的使用选项和信息:

 
 
  1. $ man srm

4、 sfill -安全免费的磁盘 / inode 空间擦除器

sfill 是 secure-deletetion 工具包的一部分,是一个安全免费的磁盘和 inode 空间擦除器,它以安全的方法删除可用磁盘空间中的文件。 sfill 会检查指定分区上的可用空间,并使用来自/dev/urandom 的随机数据填充它。

以下命令将在我的根分区上执行 sfill,使用 `-v' 选项启用 verbose 模式:

 
 
  1. $ sudo sfill -v /home/aaronkilik/tmp/

假设你创建了一个单独的分区 /home 来存储正常的系统用户主目录,你可以在该分区上指定一个目录,以便在其上应用 sfill

 
 
  1. $ sudo sfill -v /home/username

你可以在 sfill 的手册上看到一些限制,你也可以看到额外的使用标志和命令:

 
 
  1. $ man sfill

注意:secure-deletetion 工具包中的另外两个工具(sswap 和 sdmem)与本指南的范围不直接相关,但是,为了将来的使用和传播知识的目的,我们会在下面介绍它们。

5、 sswap – 安全 swap 擦除器

它是一个安全的分区擦除器,sswap 以安全的方式删除 swap 分区上存在的数据。

警告:请记住在使用 sswap 之前卸载 swap 分区! 否则你的系统可能会崩溃!

要找到交换分区(并检查分页和交换设备/文件是否已经使用,请使用 swapon 命令),接下来,使用swapoff 命令禁用分页和交换设备/文件(使 swap 分区不可用)。

然后在(关闭的) swap 分区上运行 sswap 命令:

 
 
  1. $ cat /proc/swaps
  2. $ swapon
  3. $ sudo swapoff /dev/sda6
  4. $ sudo sswap /dev/sda6 #这个命令要花费一些时间,默认要进行 38 遍擦除

sswap – 安全 swap 擦除器

sswap – 安全 swap 擦除器

阅读 sswap 的手册来获取更多的选项和信息:

 
 
  1. $ man sswap

6、 sdmem – 安全内存擦除器

sdmem 是一个安全的内存擦除器,其设计目的是以安全的方式删除存储器(RAM)中的数据。

它最初命名为 smem,但是因为在 Debain 系统上存在另一个包 smem - 报告每个进程和每个用户的内存消耗,开发人员决定将它重命名为 sdmem

 
 
  1. $ sudo sdmem -f -v

关于更多的使用信息,阅读 sdmen 的手册:

 
 
  1. $ man sdmem

原文发布时间为:2017-01-18

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
11天前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
37 5
Linux 常用文件查看命令
|
24天前
|
存储 Linux Shell
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
33 2
Linux|Transfer.sh 轻松实现文件共享
|
1月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
60 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
1月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
86 34
|
11天前
|
Linux
Linux目录删除指南:彻底解决“Is a directory”错误
在 Linux 系统中遇到 `cannot remove 'xxx': Is a directory` 错误,是因为删除目录时未使用正确参数。解决方法包括:1) 使用 `rmdir` 删除空目录或 `rm -r` 删除非空目录;2) 检查并调整目录权限(如通过 `sudo` 提权);3) 处理特殊场景,例如文件属性异常、特殊字符或进程占用;4) 替代方法如 `find -delete` 或文件系统修复。操作前建议备份数据,并启用防误删功能(如 `alias rm='rm -i'`)。掌握 `rm` 和 `rmdir` 的区别是关键。
47 1
|
1月前
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
154 26
|
17天前
|
Linux 网络安全 虚拟化
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
108 1
|
1月前
|
Linux
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
43 14
|
1月前
|
Linux Shell
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
31 3
|
3月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
423 14