如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Debian 8 上使用 eCryptfs 加密目录/分区 (Jessie)

本教程适用于这些操作系统版本

  • Debian 8(杰西)
  • Debian 6(挤压)

在此页

  1. 1 条初步说明
  2. 2 安装 eCryptfs
  3. 3 加密目录
  4. 4 如何在开机时自动挂载加密分区
  5. 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/

©2015-2025 艾丽卡 support@alaica.com