---
author: Aaron Kili
category: 技术
comments_data:
- date: '2017-01-18 12:54:04'
  message: SWAP 还可以不启用，或者设置为文件，这样就可以按照一般安全删除文件方式进行，就不需要专门的 SWAP 清除工具，当然删除时禁用 SWAP
    还是必须的。
  postip: 118.122.120.11
  username: 来自四川成都的 Chrome 55.0|GNU/Linux 用户
- date: '2017-01-18 17:27:46'
  message: "RSS里打开文章变样了？<br />\r\n干净，赞！"
  postip: 116.209.165.239
  username: 来自湖北黄冈的 Chrome 55.0|Windows 10 用户
- date: '2017-01-18 20:44:10'
  message: 嗯，因为考虑到 RSS 过来的用户有可能是在 RSS 阅读器，或者屏幕受限，因此采用了打印版式。当然，可以随时在这个页面里面按 ESC 或点击右上角关闭按钮，返回完整页面。
  postip: 111.201.11.221
  username: linux [Chrome 55.0|Mac 10.11]
count:
  commentnum: 3
  favtimes: 7
  likes: 0
  sharetimes: 0
  viewnum: 22980
date: '2017-01-18 12:06:43'
editorchoice: false
excerpt: 在大多数情况下，我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件，但这不是永久安全地从硬盘中（或任何存储介质）删除文件的方法。
fromurl: http://www.tecmint.com/permanently-and-securely-delete-files-directories-linux/
id: 8123
islctt: true
largepic: /images/p/201701/18/120608tzv6n2w5zxfvc6zt.jpg
permalink: /article-8123-1.html
pic: /images/p/201701/18/120608tzv6n2w5zxfvc6zt.jpg.thumb.jpg
related:
- displayorder: 0
  raid: 7974
- displayorder: 1
  raid: 8024
- displayorder: 2
  raid: 8122
reviewer: ''
selector: ''
summary: 在大多数情况下，我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件，但这不是永久安全地从硬盘中（或任何存储介质）删除文件的方法。
tags:
- 删除
- 恢复
thumb: false
title: 3 个在 Linux 中永久并安全删除文件和目录的方法
titlepic: true
translator: geekpi
updated: '2017-01-18 12:06:43'
---

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


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


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


![](/images/p/201701/18/120608tzv6n2w5zxfvc6zt.jpg)


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


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


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



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

```

在下面的命令中，选项有：


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


![shred - overwrite a file to hide its contents](/images/p/201701/18/120646jie3i566n55ze9x5.png)


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


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



```
$ man shred

```

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


`wipe` 命令可以安全地擦除磁盘中的文件，从而不可能[恢复删除的文件或目录内容](/article-7974-1.html)。


首先，你需要安装 `wipe` 工具，运行以下适当的命令：



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

```

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



```
$ wipe -rfi private/*

```

当使用下面的标志时：


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


![Wipe - Securely Erase Files in Linux](/images/p/201701/18/120646e9lw7uwtazwu7u9e.png)


*wipe – 在 Linux 中安全擦除文件*


注意：`wipe` 仅可以在磁性存储上可以可靠地工作，因此对固态磁盘（内存）请使用其他方法。


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



```
$ man wipe

```

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


secure-delete 是一个安全文件删除工具的集合，它包含用于安全删除文件的 `srm`（secure\_deletion）工具。


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



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

```

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



```
$ srm -vz private/*

```

下面是使用的选项：


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


![srm - Securely Delete Files in Linux ](/images/p/201701/18/120647yxpx7t72uao3dd32.png)


*srm – 在 Linux 中安全删除文件*


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



```
$ man srm

```

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


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


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



```
$ sudo sfill -v /home/aaronkilik/tmp/

```

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



```
$ sudo sfill -v /home/username

```

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



```
$ man sfill

```

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


### 5、 sswap – 安全 swap 擦除器


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


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


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


然后在（关闭的） swap 分区上运行 `sswap` 命令：



```
$ cat /proc/swaps 
$ swapon
$ sudo swapoff /dev/sda6
$ sudo sswap /dev/sda6    #这个命令要花费一些时间，默认要进行 38 遍擦除

```

![sswap - Secure Swap Wiper](/images/p/201701/18/120647sklgbrpicbt22iy5.png)


*sswap – 安全 swap 擦除器*


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



```
$ man sswap

```

### 6、 sdmem – 安全内存擦除器


`sdmem` 是一个安全的内存擦除器，其设计目的是以安全的方式删除存储器（RAM）中的数据。


它最初命名为 [smem](/article-7681-1.html)，但是因为在 Debain 系统上存在另一个包 [smem - 报告每个进程和每个用户的内存消耗](/article-7681-1.html)，开发人员决定将它重命名为 `sdmem`。



```
$ sudo sdmem -f -v

```

关于更多的使用信息，阅读 `sdmen` 的手册：



```
$ man sdmem 

```

**推荐阅读：** [在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件](/article-8122-1.html)。


就是这样了！在本文中，我们查看了一系列可以永久安全地删除 Linux 中的文件的工具。像往常一样，通过下面的评论栏发表你对本篇文章的想法或建议。




---


作者简介：


![](/images/p/201701/18/120648xxd22kik1xmkxttk.jpg)


Aaron Kili 是一个 Linux 系统及 F.O.S.S 爱好者，即将成为一名系统管理员及 Web 开发人员，他现在是 TecMint 网站的内容创建者，他喜欢使用电脑来工作，并且他坚信分享知识是一种美德。


 




---


via: <http://www.tecmint.com/permanently-and-securely-delete-files-directories-linux/>


作者：[Aaron Kili](http://www.tecmint.com/author/admin/) 译者：[geekpi](https://github.com/geekpi) 校对：[jasminepeng](https://github.com/jasminepeng)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出