在 Linux 上使用 eCryptFS 加密文件和目录

在 Linux 上使用 eCryptFS 加密文件和目录

作为罪犯,你需要为自己的身份保密;而作为中情局成员,你同样也需要为自己的身份保密。但是,你却不是他们其中的任何一员,你只是不想其他人查探到你的金融数据、家庭照片、尚未出版的手稿,或者记录着你能发家致富的最初想法的私密笔记。

我时常听到有人告诉我“我只是个微不足道的人,没人会查探我”或者“我没有什么东西要隐藏的。”好吧,告诉你我的想法,即便我没有什么要隐藏的,或者我也可以公开我带着狗的孩子的照片,那我也有权利不这么去做,也有权利来保护我的隐私。

加密类型

我们主要有两种加密文件和目录的方法。一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice)。对我而言,这是个十分不错的方法,你不需要为了启用或者测试加密而把所有一切重新安装一遍。然而,文件系统级别的加密也有一些缺点。例如,许多现代应用程序会缓存(部分)文件你硬盘中未加密的部分中,比如交换分区、/tmp和/var文件夹,而这会导致隐私泄漏。

另外一种方式,就是所谓的全盘加密,这意味着整个磁盘都会被加密(可能除了主引导记录外)。全盘加密工作在物理磁盘级别,写入到磁盘的每个比特都会被加密,而从磁盘中读取的任何东西都会在运行中解密。这会阻止任何潜在的对未加密数据的未经授权的访问,并且确保整个文件系统中的所有东西都被加密,包括交换分区或任何临时缓存数据。

可用的加密工具

在Linux中要实施加密,有几个可供选择的工具。在本教程中,我打算介绍其中一个:eCryptFS,一个用户空间文件系统加密工具。下面提供了一个Linux上可用的加密工具摘要供您参考。

文件系统级别加密

  • EncFS:尝试加密的最简单方式之一。EncFS工作在基于FUSE的伪文件系统上,所以你只需要创建一个加密文件夹并将它挂载到某个文件夹就可以工作了。
  • eCryptFS:一个POSIX兼容的加密文件系统,eCryptFS工作方式和EncFS相同,所以你必须挂载它。

磁盘级别加密

  • Loop-AES:最古老的磁盘加密方法。它真的很快,并且适用于旧系统(如,2.0内核分支)。
  • DMCrypt:最常见的磁盘加密方案,支持现代Linux内核。
  • CipherShed:已停止的TrueCrypt磁盘加密程序的一个开源分支。

eCryptFS基础

eCrypFS是一个基于FUSE的用户空间加密文件系统,在Linux内核2.6.19及更高版本中可用(作为encryptfs模块)。eCryptFS加密的伪文件系统是挂载到当前文件系统顶部的。它可以很好地工作在EXT文件系统家族和其它文件系统如JFS、XFS、ReiserFS、Btrfs,甚至是NFS/CIFS共享文件系统上。Ubuntu使用eCryptFS作为加密其家目录的默认方法,ChromeOS也是。在eCryptFS底层,默认使用的是AES算法,但是它也支持其它算法,如blowfish、des3、cast5、cast6。如果你是通过手工创建eCryptFS设置,你可以选择其中一种算法。

就像我所的,Ubuntu让我们在安装过程中选择是否加密/home目录。好吧,这是使用eCryptFS的最简单的一种方法。

Ubuntu提供了一个用户友好的工具集,通过eCryptFS可以让我们的生活更轻松,但是在Ubuntu安装过程中启用eCryptFS只创建了一个指定的预配置的设置。所以,如果默认的设置不适合你的需求,你需要进行手工设置。在本教程中,我将介绍如何在主流Linux发行版上手工设置eCryptFS。

eCryptFS的安装

Debian,Ubuntu或其衍生版:


  1. $ sudo apt-get install ecryptfs-utils

注意,如果你在Ubuntu安装过程中选择加密家目录,eCryptFS应该已经安装了。

CentOS, RHEL or Fedora:


  1. # yum install ecryptfs-utils

Arch Linux:


  1. $ sudo pacman -S ecryptfs-utils

在安装完包后,加载eCryptFS内核模块当然会是一个很好的实践:


  1. $ sudo modprobe ecryptfs

配置eCryptFS

现在,让我们开始加密一些目录,运行eCryptFS配置工具:


  1. $ ecryptfs-setup-private

它会要求你输入登录密码和挂载密码。登录密码和你常规登录的密码一样,而挂载密码用于派生一个文件加密主密钥。这里留空可以生成一个(复杂的),这样会更安全。登出然后重新登录。

你会注意到,eCryptFS默认在你的家目录中创建了两个目录:Private和.Private。~/.Private目录包含有加密的数据,而你可以在~/Private目录中访问到相应的解密后的数据。在你登录时,~/.Private目录会自动解密并映射到~/Private目录,因此你可以访问它。当你登出时,~/Private目录会自动卸载,而~/Private目录中的内容会加密回到~/.Private目录。

eCryptFS怎么会知道你拥有~/.Private目录,并自动将其解密到~/Private目录而不需要我们输入密码呢?这就是eCryptFS的PAM模块捣的鬼,它为我们提供了这项便利服务。

如果你不想让~/Private目录在登录时自动挂载,只需要在运行ecryptfs-setup-private工具时添加“--noautomount”选项。同样,如果你不想要~/Private目录在登出后自动卸载,也可以自动“--noautoumount”选项。但是,那样后,你需要自己手工挂载或卸载~/Private目录:


  1. $ ecryptfs-mount-private ~/.Private ~/Private
  2. $ ecryptfs-umount-private ~/Private

你可以来验证一下.Private文件夹是否被挂载,运行:


  1. $ mount

现在,我们可以开始把任何敏感文件放进~/Private文件夹里头了,它们会在我们登出时自动被加密并锁在~/.Private文件内。

所有这一切看起来是那么得神奇。这主要是ecryptfs-setup-private工具让一切设置变得简单。如果你想要深究一点,对eCryptFS指定的方面进行设置,那么请转到官方文档

结尾

综上所述,如果你十分关注你的隐私,最好是将基于eCryptFS文件系统级别的加密和全盘加密相结合。切记,只进行文件加密并不能保证你的隐私不受侵犯。

原文发布时间:2014-12-18

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-29 13:26:39

在 Linux 上使用 eCryptFS 加密文件和目录的相关文章

如何在Linux系统上加密文件和目录

  加密类型 我们主要有两种加密文件和目录的方法.一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice).对我而言,这是个十分不错的方法,你不需要为了启用或者测试加密而把所有一切重新安装一遍.然而,文件系统级别的加密也有一些缺点.例如,许多现代应用程序会缓存(部分)文件你硬盘中未加密的部分中,比如交换分区./tmp和/var文件夹,而这会导致隐私泄漏. 另外一种方式,就是所谓的全盘加密,这意味着整个磁盘都会被加密(可能除了主引导记录外).全盘加密

Linux有问必答:如何在Linux上安装内核头文件

Linux有问必答:如何在Linux上安装内核头文件 提问:我在安装一个设备驱动前先要安装内核头文件.怎样安装合适的内核头文件? 当你在编译一个设备驱动模块时,你需要在系统中安装内核头文件.内核头文件同样在你编译与内核直接链接的用户空间程序时需要.当你在这些情况下安装内核头文件时,你必须确保内核头文件精确地与你当前内核版本匹配(比如:3.13.0-24-generic). 如果你的内核是发行版自带的内核版本,或者使用默认的包管理器的基础仓库升级的(比如:apt-ger.aptitude或者yum

Linux有问必答:Linux上如何查看种子文件的内容

问题: 我从网站上下载了一个torrent(种子)文件.Linux上有没有工具让我查看torrent文件的内容?例如,我想知道torrent里面都包含什么文件. torrent文件(也就是扩展名为.torrent的文件)是BitTorrent元数据文件,里面存储了BitTorrent客户端用来从BitTorrent点对点网络下载共享文件的信息(如,追踪器URL.文件列表.大小.校验和.创建日期等).在单个torrent文件里面,可以列出一个或多个文件用于共享. torrent文件内容由BEnco

LINUX学习(一)文件与目录操作

        用户的数据和程序大多以文件的形式保存.用户使用Linux系统的过程中,需要经常对文件和目录进行操作.本章讲述了文件与目录的基本概念,有关文件和目录操作的命令以及如何在Linux环境下运行DOS命令. 文件与目录的基本概念 文件与文件名 在多数操作系统中都有文件的概念.文件是Linux用来存储信息的基本结构,它是被命名(称为文件名)的存储在某种介质(如磁盘.光盘和磁带等)上的一组信息的集合.Linux文件均为无结构的字符流形式.文件名是文件的标识,它由字母.数字.下划线和圆点组成的

对Linux上使用LUKS加密的部分进行备份

  我们中有些人出于安全原因,在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长到数十或数百GB.因此,虽然我们享受着LUKS设备带来的安全感,但是我们也该开始考虑一个可能的远程备份方案了.对于安全的非现场备份,我们将需要能在LUKS加密的设备上以块级别操作的东西.因此,最后我们发现这么个状况,我们每次都需要传输想要做备份的整个LUKS设备(比如说200GB大).很明显,这是不可行的.我们该怎么来处理这个问题呢? 一个解决方案: Bdsync

如何在Linux上使用Meld比较文件夹

我们已经从一个新手的角度了解了 Meld (包括 Meld 的安装),我们也提及了一些 Meld 中级用户常用的小技巧.如果你有印象,在新手教程中,我们说过 Meld 可以比较文件和文件夹.已经讨论过怎么比较文件,今天,我们来看看 Meld 怎么比较文件夹. 需要指出的是,本教程中的所有命令和例子都是在 Ubuntu 14.04 上测试的,使用的 Meld 版本为 3.14.2. 用 Meld 比较文件夹 打开 Meld 工具,然后选择 比较文件夹Directory comparison 选项来

在 Linux 上使用 Meld 比较文件夹

我们已经从一个新手的角度了解了 Meld (包括 Meld 的安装),我们也提及了一些 Meld 中级用户常用的小技巧.如果你有印象,在新手教程中,我们说过 Meld 可以比较文件和文件夹.已经讨论过怎么比较文件,今天,我们来看看 Meld 怎么比较文件夹. 需要指出的是,本教程中的所有命令和例子都是在 Ubuntu 14.04 上测试的,使用的 Meld 版本为 3.14.2. 用 Meld 比较文件夹 打开 Meld 工具,然后选择 比较文件夹Directory comparison 选项来

Linux上设置用户通过SFTP访问目录的权限的方法

  sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. 1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上 代码如下: [root@localhost ftp]# rpm -qa | grep openssh openssh-server-5.3p1-81.el6_3.x86_64 openssh-5.3p1-81.el6_3.x86_64 openssh-clients-5

服务器-从图片上找出指向地址下载加密文件找潜在密钥

问题描述 从图片上找出指向地址下载加密文件找潜在密钥 分析一个文件服务器上的数据,但所有数据都是加密的,密钥无从获知.服务器上唯一没有被加密的文件是一张jpg图片,这是获取密钥的唯一途径.现在只知道记录密钥的方法是"KEY="这个前缀,等号后面即是这个密钥,要从图片中找出指向地址并从指向地址上下载的加密文件中找出潜藏的密钥.(整个文件只有一个KEY=开头的字符串,因此不会造成混淆:只要这一个办法,破解加密文件意义不大) 图片地址:http://range.jsxajs.cn:8080/