如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)
本教程适用于这些操作系统版本
- Debian 8(杰西)
- Debian 6(挤压)
在此页
- 1 条初步说明
- 2 安装 eCryptfs
- 3 加密目录
- 4 如何在开机时自动挂载加密分区
- 5 个链接
eCryptfs 是适用于 Linux 的符合 POSIX 标准的企业级堆栈加密文件系统。您可以使用它来加密分区以及不使用自己分区的目录,无论底层文件系统、分区类型等如何。本教程展示了如何使用 eCryptfs 来加密 Debian Jessie 上的目录。
1 初步说明
在本教程中,我将加密我的主目录 /home/falko/,它位于/分区(即 /home/falko/ 是一个普通目录,不使用自己的分区)。
2 安装 eCryptfs
eCryptfs 可以很容易地安装如下:
apt-get -y install ecryptfs-utils
3 加密目录
我现在将加密我的主目录 /home/falko/。由于该目录中已经有(未加密的)文件,我必须对它们进行备份,以便稍后我可以将它们恢复到当时加密的 /home/falko/ 目录(否则在目录被删除时无法访问/读取这些文件)加密):
cp -pfr /home/falko/ /tmp/
我现在可以通过使用文件系统类型 ecryptfs 挂载目录 /home/falko/ 来加密它:
mount -t ecryptfs /home/falko /home/falko
当您第一次这样做时,您必须回答几个问题:
:/tmp# mount -t ecryptfs /home/falko /home/falko
Select key type to use for newly created files:
1) tspi
2) passphrase
Selection: <-- 2
Passphrase: <-- Enter a secure password
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32
2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: <-- Press ENTER
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: <-- Press ENTER
Enable plaintext passthrough (y/n) [n]: <-- Press ENTER
Enable filename encryption (y/n) [n]: <-- Press ENTER
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? : <-- yes
Would you like to append sig [bd28c38da9fc938b] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : <-- yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
:/home/administrator#
看一下输出
mount
您应该看到 /home/falko/ 现在已加密:

让我们将备份恢复到现在加密的目录 /home/falko/,然后删除备份:
cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/
出于测试目的,让我们复制一些其他文件,例如/etc/hosts,到 /home/falko/ 检查它是否真的被加密:
cp /etc/hosts /home/falko
当 /home/falko/ 挂载了 ecryptfs 文件系统类型时,应该可以读取 /home/falko/hosts 的内容:
cat /home/falko/hosts

现在卸载/home/falko/...
umount /home/falko
... 并再次尝试阅读 /home/falko/hosts,你应该会得到一些神秘的东西:
cat /home/falko/hosts

4 如何在开机时自动挂载加密分区
当然,我们不想每次都手动挂载 /home/falko/ - 如果可以在启动时自动挂载会更好。为此,我们需要一个密码文件,出于安全原因,我希望将此密码文件放在 USB 密钥上。
插入 USB 密钥并运行
fdisk -l
找出它的设备名称和文件系统类型:
:~#
在我的例子中,设备名称是 /dev/sdb1,它使用 FAT32 文件系统。
让我们将 U 盘挂载到 /mnt/usb:
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
看一下输出
mount
...你应该看到它挂载了文件系统类型 vfat (FAT32) - 我们稍后将需要此信息用于我们的 /etc/fstab 文件:
:~#
现在看一下 /root/.ecryptfs/sig-cache.txt 的内容:
cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b
我们需要为我们创建的文件 /root/.ecryptfsrc 签名,如下所示:
nano /root/.ecryptfsrc
请确保在 ecryptfs_sig 行中使用 /root/.ecryptfs/sig-cache.txt 文件中的签名:
key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt
ecryptfs_sig=bd28c38da9fc938b
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=n
现在我们在 USB 密钥上创建密码文件:
nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase
确保使用正确的密码,即手动安装目录时将使用的密码。
接下来打开/etc/fstab...
nano /etc/fstab
...并添加以下两行(确保您为 USB 密钥使用正确的文件系统类型 - 在我的例子中为 vfat):
[...]
/dev/sdb1 /mnt/usb vfat ro 0 0
/home/falko /home/falko ecryptfs defaults 0 0
(重要的是 USB 密钥行位于加密分区行之前,因为 USB 密钥需要在安装加密分区之前安装!)
然后重启系统:
reboot
如果一切顺利,你的加密分区应该会在重启后自动挂载。但是,您的系统可能无法在启动期间挂载您的 USB 密钥,这意味着您的加密分区也无法挂载。如果发生这种情况,请编辑 /etc/rc.local(此脚本在引导过程结束时执行)...
nano /etc/rc.local
...并在 exit 0 行之前添加 /bin/mount -a 行:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/bin/mount -a
exit 0
这将在引导过程结束时(重新)挂载所有分区(包括您的 USB 密钥和加密分区)。
5个链接
- eCryptfs:https://launchpad.net/ecryptfs
- Debian:http://www.debian.org/