原文链接:https://wjw465150.github.io/blog/Linux/my_data/%E7%A3%81%E7%9B%98/%E5%A6%82%E4%BD%95%E5%9C%A8Linux%E4%B8%8A%E5%80%9F%E5%8A%A9eCryptFS%E5%8A%A0%E5%AF%86%E6%96%87%E4%BB%B6%E5%92%8C%E7%9B%AE%E5%BD%95.htm

转载备注:购买VPS后不放心数据安全,可对文件系统进行加密,能保证关机或者卸载后别人无法获取数据。但如果拷贝运行时快照,依然能看到解密后的内容。

eCryptFS的基础知识简介

eCryptFS是一种堆叠加密文件系统,自2.6.19以来,它就得到Linux内核的支持(作为ecryptfs模块)。用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完全形成一种特定的预配置安装。所以万一默认安装不适合你的要求,你就需要执行手动安装。我在本教程中将介绍如何将eCryptFS手动安装到主要的Linux发行版上。

安装eCryptFS

安装到Debian、Ubuntu或衍生版本上:

$ sudo apt-get install ecryptfs-utils

注意:如果你决定在Ubuntu安装过程中加密你的主目录,就要确保eCryptFS应该已经安装。

安装到CentOS、RHEL或Fedora上:

# yum install ecryptfs-utils

安装到Arch Linux上:

$ sudo pacman -S ecryptfs-utils

为了稳妥起见,安装程序包后,装入eCryptFS内核模块是个好的做法:

$ sudo modprobe ecryptfs

配置eCryptFS

现在不妨运行eCryptFS配置工具,开始加密某个目录:

$ 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目录了。

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

你可以运行下面这个命令,确认.Private文件已挂载:

$ mount

现在我们可以开始将任何敏感文件放入到~/Private文件夹里面,我们退出后,它们会自动加密,并在~/.Private文件夹里面严加保护起来。

这一切似乎相当神奇。从根本上来说,ecryptfs-setup-private工具让一切易于安装。如果你想多尝试一下,安装eCryptFS的特定部分,可以参阅官方说明文档:http://ecryptfs.org/documentation.html。

结束语

总之,如果你非常在意自己的隐私,我推荐的最佳方案就是将基于eCryptFS的文件系统级加密与全磁盘加密结合起来。不过总是要记住一点,光靠文件加密无法为你保证隐私