eCryptfs

来自 ArchWiki

本文介绍了 eCryptfs 的基本用法。它将指导您完成在您的家目录中创建一个私有且安全的加密目录的过程,以存储敏感文件和私人数据。

在实现上,eCryptfs 与 dm-crypt 不同,后者提供块设备加密层,而 eCryptfs 实际上是一个文件系统 – 一个 堆叠式加密文件系统。 要比较两者,您可以参考 Data-at-rest encryption#块设备与堆叠式文件系统加密。一个显著的特点是加密堆叠在现有文件系统之上;eCryptfs 可以挂载到任何单个现有目录,并且不需要单独的分区(或预先分配大小)。

基础知识

正如摘要中提到的,eCryptfs 不需要特殊的磁盘存储分配工作,例如单独的分区或预先分配的空间。相反,您可以将 eCryptfs 挂载在任何单个目录之上以保护它。这包括,例如,用户的整个家目录或其中的单个专用目录。所有加密元数据都存储在文件的标头中,因此加密数据可以轻松移动、存储备份和恢复。还有其他优点,但也有缺点,例如 eCryptfs 不适合加密完整分区,这也意味着您无法使用它来保护交换空间(但您当然可以将其与 Dm-crypt/Swap encryption 结合使用)。如果您刚开始设置磁盘加密,交换空间加密以及其他需要考虑的点,请参阅 Data-at-rest encryption#准备工作

要熟悉 eCryptfs,需要了解以下几点

  • 作为堆叠式文件系统,挂载 eCryptfs 目录是指在 Linux 内核运行时将(堆叠式)加密目录挂载到另一个加密的挂载点(目录)。
  • 可以在用户之间共享加密目录。但是,加密链接到一个密码,因此也必须共享该密码。也可以共享具有不同加密文件(不同密码)的目录。
  • 在整个文档中使用了几个 eCryptfs 术语
    • 加密目录在整个 eCryptfs 文档和本文中被称为较低目录,未加密目录被称为较高目录。虽然与本文无关,但 Linux 3.18 引入的 Overlay 文件系统 对文件系统的堆叠使用了 相同的较高/较低命名法
    • 挂载密码(或密钥)是访问加密文件的凭证,即解锁加密。eCryptfs 使用术语 wrapped 密码来指代加密保护的挂载密码。
    • FEKEK 指的是文件加密密钥加密密钥(参见 内核文档)。
    • FNEK 指的是文件名称加密密钥,用于(可选地)加密存储在加密目录中的文件名的密钥。

在使用 eCryptfs 之前,应检查以下缺点是否适用。

缺陷

  • 易用性
ecryptfs-utils 软件包提供了几种不同的设置 eCryptfs 的方法。#Ubuntu 工具 高级工具最易于使用,但它们硬编码了较低目录路径和其他设置,限制了它们的实用性。该软件包还包括完全可配置的低级工具,但与 EncFS 等替代方案相比,它们使用起来有些困难。
  • 文件名长度
当堆叠在最大文件名长度为 255 字节的文件系统上时,长度超过 143 字节的文件名无法加密(使用 FNEK 选项)。[1] 这可能会破坏您家目录中的某些程序(例如 Symfony 缓存)。
  • 网络存储挂载
当在 NFS 和可能其他网络文件系统之上使用时,eCryptfs 存在长期存在的 bug,例如,#通过 Mosh 连接时,远程主机上的挂载可能会失败。始终可以在本地目录上使用 eCryptfs,然后将加密文件从本地目录复制到网络主机。但是,如果您想直接在 NFS 挂载之上设置 eCryptfs,而没有文件的本地副本,则 eCryptfs 可能会崩溃或行为不正确。如有疑问,EncFS 在这种情况下可能是更好的选择。
  • 稀疏文件
写入 eCryptfs 的 稀疏文件 将在较低目录中生成更大的非稀疏加密文件。例如,在运行 truncate -s 1G file.img 的 eCryptfs 目录中,会在底层文件系统上创建一个 1GB 的加密文件,并产生相应的资源(磁盘空间、数据吞吐量)需求。如果相同的文件是在未加密的文件系统或使用 块设备加密 的文件系统上创建的,则它只会占用几 KB。
在加密目录结构的大部分内容之前,应考虑这一点,尽管在大多数情况下,缺点将是次要的。如果您需要使用大型稀疏文件,您可以通过将稀疏文件放在未加密的目录中或对它们使用块设备加密来解决此问题。

设置和挂载

在开始设置之前,请查看 eCryptfs 文档。该软件随附一套非常全面的 手册页

eCryptfs 自 2.6.19 版本以来已包含在 Linux 中。首先加载 ecryptfs 模块

# modprobe ecryptfs

要实际挂载 eCryptfs 文件系统,您需要使用 ecryptfs-utils 软件包提供的用户空间工具。不幸的是,由于这些工具的设计不佳,您必须在三种设置 eCryptfs 的方式之间做出选择,每种方式都有不同的权衡

  1. 使用高级 #Ubuntu 工具,它会自动设置,但要求较低目录为 ~/.Private/,并且每个用户只允许一个加密文件系统。
  2. 使用 ecryptfs-simple,这是一种使用任何较低目录和较高目录挂载 eCryptfs 文件系统的简便方法。
  3. #手动设置,它涉及加载密码和挂载 eCryptfs 的单独步骤,但允许完全控制目录和加密设置。

Ubuntu 工具

ecryptfs-utils 软件包安装的大多数用户友好的便捷工具都假定正在使用非常特定的 eCryptfs 设置,即 Ubuntu 官方使用的设置(在安装期间可以选择它作为选项)。不幸的是,这些选择不仅仅是默认选项,而是实际硬编码在工具中。如果此设置不适合您的需求,那么您将无法使用便捷工具,而必须按照 #手动设置 中的步骤进行操作。

这些工具使用的设置如下

  • 每个用户只能有一个加密目录,由这些工具管理
    • 完整的 $HOME 目录加密,或
    • 单个加密数据目录(默认情况下为 ~/Private/,但可以自定义)。
  • 每个用户的较低目录始终为 ~/.Private/
    提示: 对于完整的家目录加密,这将是指向 /home/.ecryptfs/username/.Private/ 中实际位置的符号链接。
  • 使用的加密选项
    • cipher: AES
    • key length: 16 字节(128 位)
    • key management scheme: 密码
    • plaintext passthrough: 已启用
  • 加密目录的配置/控制信息存储在 ~/.ecryptfs/ 中的一堆文件中
    提示: 对于完整的家目录加密,这将是指向 /home/.ecryptfs/username/.ecryptfs/ 中实际位置的符号链接。
    • Private.mnt [纯文本文件] - 包含较高目录应挂载的路径(例如 /home/lucy/home/lucy/Private
    • Private.sig [纯文本文件] - 包含用于标识内核密钥环中挂载密码的签名
    • wrapped-passphrase [二进制文件] - 挂载密码,使用登录密码加密
    • auto-mount, auto-umount [空文件] - 如果它们存在,pam_ecryptfs.so 模块将(假设已加载)在用户登录/注销时自动挂载/卸载此加密目录

加密数据目录

有关完整的 $HOME 目录加密,请参阅 #加密家目录

在设置数据目录加密之前,请决定稍后应手动挂载还是在用户登录时自动挂载。

要以用户身份加密单个数据目录并在以后手动挂载它,请运行

$ ecryptfs-setup-private --nopwcheck --noautomount

并按照说明进行操作。--nopwcheck 选项使您可以选择与用户登录密码不同的密码,而 --noautomount 选项是不言自明的。因此,如果您希望稍后在登录时自动设置加密目录,只需立即省略这两个选项即可。

该脚本将自动创建如上框中所述的 ~/.Private/~/.ecryptfs/ 目录结构。它还会询问两个密码

登录密码
这是您每次要挂载加密目录时都必须输入的密码。如果您希望登录时自动挂载工作,则它必须与您用于登录用户帐户的密码相同。
挂载密码
这用于派生实际的文件加密主密钥。因此,除非您知道自己在做什么,否则不应输入自定义密码 - 而是按 Enter 键让它自动生成安全随机密码。它将使用登录密码加密,并以加密形式存储在 ~/.ecryptfs/wrapped-passphrase 中。稍后,它将在需要时在 RAM 中自动解密(“解包”),因此您永远不必手动输入它。确保此文件不会丢失,否则您将永远无法再次访问您的加密文件夹!您可能需要运行 ecryptfs-unwrap-passphrase 以查看未加密形式的挂载密码,将其写在一张纸上,并将其保存在保险箱中(或类似的地方),这样您就可以在 wrapped-passphrase 文件意外丢失、损坏或您忘记登录密码的情况下使用它来恢复您的加密数据。

加密文件夹的挂载点(“较高目录”)默认情况下位于 ~/Private/。但是,您可以在设置命令运行完成后立即手动更改它,方法是执行

$ mv ~/Private /path/to/new/folder
$ echo /path/to/new/folder > ~/.ecryptfs/Private.mnt

要实际使用您的加密文件夹,您必须挂载它 - 请参阅下面的 #挂载

加密家目录

包装器脚本 ecryptfs-migrate-home 将为用户设置加密的家目录,并负责迁移他们尚未加密的家目录中的任何现有文件。

要运行它,用户必须注销并且不拥有任何进程。实现此目的的最佳方法是注销用户,以 root 用户身份登录到控制台,并检查 ps -U username 是否没有返回输出。您还需要确保已安装 rsynclsofwhich。满足先决条件后,运行

# modprobe ecryptfs
# ecryptfs-migrate-home -u username

并按照说明进行操作。包装器脚本完成后,请按照自动挂载的说明进行操作 - 请参阅下面的 #自动挂载。要完成此过程,用户必须在下次重启之前登录。

一切正常后,应删除用户家目录的未加密备份,该备份保存到 /home/username.random_characters

挂载

手动

执行包装器

$ ecryptfs-mount-private

并输入密码是挂载加密目录到 #Ubuntu 工具 中描述的较高目录 ~/Private/ 所需的全部操作。

同样,执行

$ ecryptfs-umount-private

将再次卸载它。

提示: 如果在用户会话期间不需要永久访问私有数据,则可以定义一个 别名 以加快手动步骤。

这些工具包括另一个脚本,可用于访问加密的 .Private 数据或家目录。以 root 身份执行 ecryptfs-recover-private 将搜索系统(或可选的特定路径)以查找目录,交互式查询其密码,并挂载目录。例如,它可以从 live-CD 或不同的系统中使用,以便在恢复情况下访问加密数据。请注意,如果从 Arch Linux ISO 启动,您必须首先安装 ecryptfs-utils。此外,它只能挂载使用 Ubuntu 工具创建的 .Private 目录。

自动挂载

自动挂载加密目录的默认方法是通过 PAM。请参阅 pam_ecryptfs(8) 以及 - 更多详细信息 - 'PAM MODULE' in

/usr/share/doc/ecryptfs-utils/README

对于自动挂载,加密目录密码必须与用户的登录密码相同。

使用以下步骤设置自动挂载

1. 检查 ~/.ecryptfs/auto-mount~/.ecryptfs/auto-umount~/.ecryptfs/wrapped-passphrase 是否存在(这些是由 ecryptfs-setup-private 自动创建的)。

2. 将 ecryptfs 添加到 pam-stack 中,完全按照以下方式操作,以允许在登录时透明地解包密码

打开 /etc/pam.d/system-auth 并在包含 auth required pam_unix.so 的行之后(如果存在 auth [default=die] pam_faillock.so authfail )添加

auth [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
auth    required    pam_ecryptfs.so unwrap

接下来,在包含 password required pam_unix.so 的行之上(如果存在 -password [success=1 default=ignore] pam_systemd_home.so )插入

password    optional    pam_ecryptfs.so

最后,在 session required pam_unix.so之后添加

session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
session    optional    pam_ecryptfs.so unwrap
注意: pam_succeed_if.so 指令告诉进程,如果请求身份验证的服务是 systemd-user,则跳过下一行systemd-user 与您的用户会话并行运行,并且也通过 PAM 进行身份验证。如果家目录被挂载第二次,PAM 将无法卸载它。这被称为与 systemd 的 break,并且针对它提出了错误 : [2] [3] [4]。此处公开的方法是一种解决方法。

3. 重新登录并检查 mount 的输出,现在应该包含一个挂载点,例如

/home/username/.Private on /home/username/Private type ecryptfs (...)

对于用户的加密目录。它应该在 ~/Private/ 中完全可读。

注意: 上述对 system-auth 的更改启用了正常登录的自动挂载。如果您改为使用 su -l 切换用户,则还需要对 /etc/pam.d/su-l 应用类似的更改。

后者应在用户注销时自动卸载并变得不可用。

注意: 如果您使用 systemd-user lingering 服务或其他在您注销后仍然存在的单独进程,则您的家目录将不会卸载,直到它们退出。这是故意的,因为用户进程应始终能够保存其状态。

ecryptfs-simple

如果您只想使用 eCryptfs 以 EncFS 的方式挂载任意目录,请使用 ecryptfs-simple。ecryptfs-simple 不需要 root 权限或 /etc/fstab 中的条目,也不限于硬编码目录,例如 ~/.Private/。该软件包可以 安装ecryptfs-simpleAUR,也可以从 Xyne 的存储库 中获取。

顾名思义,用法很简单

简单挂载

$ ecryptfs-simple /path/to/foo /path/to/bar

自动挂载:在首次挂载目录时提示选项,然后在下次重新加载它们

$ ecryptfs-simple -a /path/to/foo /path/to/bar

按源目录卸载

$ ecryptfs-simple -u /path/to/foo

按挂载点卸载

$ ecryptfs-simple -u /path/to/bar

手动设置

以下详细说明了如何手动设置 eCryptfs 加密目录。这涉及两个步骤。首先,处理密码并将其加载到内核密钥环中。其次,使用密钥环中的密钥实际挂载文件系统。

在第一步中,有两种方法可以将密码添加到内核密钥环。更简单的选项是 ecryptfs-add-passphrase,它使用单个密码来加密文件。缺点是您以后无法更改密码。它的工作方式如下

$ ecryptfs-add-passphrase
Passphrase:
Inserted auth tok with sig [78c6f0645fe62da0] into the user session keyring

您也可以将密码管道传输到 ecryptfs-add-passphrase -。请记住,如果您将密码留在文件中,通常会破坏使用加密的目的。

作为纯密码的替代方案,您可以使用“wrapped passphrase”,其中文件使用随机生成的密钥加密,该密钥本身使用您的密码加密并存储在文件中。在这种情况下,您可以通过使用旧密码解包密钥文件并使用新密码重新包装它来更改您的密码。

在下面,我们 提示 输入包装密码,并执行类似于 source 的生成,然后使用 ecryptfs-wrap-passphrase 使用给定的密码将其包装到 ~/.ecryptfs/wrapped-passphrase

$ mkdir ~/.ecryptfs
$ ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo 1>&2; head -c 48 /dev/random | base64; echo "$PASSWORD"; ) \
  | ecryptfs-wrap-passphrase ~/.ecryptfs/wrapped-passphrase >/dev/null

不要使用超过 64 个字符的密码,因为这会在以后使用 ecryptfs-insert-wrapped-passphrase-into-keyring 时导致错误。

接下来,我们可以输入密码以将密钥加载到密钥环中

$ ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo $PASSWORD; ) | ecryptfs-insert-wrapped-passphrase-into-keyring ~/.ecryptfs/wrapped-passphrase -
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring

在任何一种情况下,当您成功将密码添加到内核密钥环时,您都将获得一个“密钥签名”,例如 78c6f0645fe62da0,您将在下一步中需要它。

有两种不同的手动挂载 eCryptfs 的方法,在以下部分中描述。第一种方法,使用 mount.ecryptfs_private,可以作为普通用户运行,并且涉及设置一些配置文件。此方法不允许您更改加密设置,例如密钥大小。第二种方法是使用原始 mount 命令,它使您可以完全控制所有设置,但需要您以 root 身份运行它,或者向 /etc/fstab 添加一个条目,以允许用户挂载 eCryptfs。

提示: 以下示例使用与 Ubuntu 工具中默认的硬编码 .Private 不同的加密目录 (.secret)。这样做是为了避免在系统为它设置了 PAM 时出现错误的 #自动挂载 问题,以及其他工具使用硬编码默认值的问题。

使用配置文件

此方法涉及在首先加载密码后,从 ecryptfs-utils 软件包运行 mount.ecryptfs_private。默认情况下,此二进制文件不需要 root 权限即可工作。

首先在 ~/.ecryptfs/ 中为您的配置文件选择一个名称,并确定较低目录和较高目录。在此示例中,我们使用 secret 作为配置文件,将加密数据放在 ~/.secret/ 中,并将解密的文件挂载到 ~/secret/。创建所需的目录

$ mkdir ~/.secret ~/secret ~/.ecryptfs

现在在 ~/.ecryptfs/secret.conf 中指定目录,使用完整路径。它的格式看起来像 /etc/fstab 中的格式,没有挂载选项

$ echo "$HOME/.secret $HOME/secret ecryptfs" > ~/.ecryptfs/secret.conf

将您从 ecryptfs-add-passphraseecryptfs-insert-wrapped-passphrase-into-keyring 获取的密钥签名(见上文)写入 ~/.ecryptfs/secret.sig

$ echo 78c6f0645fe62da0 > ~/.ecryptfs/secret.sig

如果您还想启用文件名加密,请向密钥环添加第二个密码(或重用第一个密码),并将密钥签名附加~/.ecryptfs/secret.sig

 $ echo 326a6d3e2a5d444a >> ~/.ecryptfs/secret.sig

最后,将 ~/.secret/ 挂载到 ~/secret/

$ mount.ecryptfs_private secret

完成后,卸载它

$ umount.ecryptfs_private secret

原始挂载命令

通过手动运行实际的 mount 命令,您可以完全控制加密选项。缺点是您需要以 root 身份运行 mount,或者为每个 eCryptfs 目录向 /etc/fstab 添加一个条目,以便用户可以挂载它们。

首先创建您的私有目录。在此示例中,我们使用与上一节相同的目录

$ mkdir -m 700 ~/.secret
$ mkdir -m 500 ~/secret

总结一下

  • 实际的加密数据将存储在较低的 ~/.secret/ 目录中
  • 挂载时,解密的数据将在 ~/secret/ 目录中可用
    • 未挂载时,任何内容都无法写入此目录
    • 挂载时,它具有与较低目录相同的权限

现在,假设您已创建上面的 wrapped keyphrase,您需要将加密密钥插入 root 用户的密钥环一次

# ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo $PASSWORD; ) | ecryptfs-insert-wrapped-passphrase-into-keyring /home/username/.ecryptfs/wrapped-passphrase -
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring

以便以下挂载命令成功

# mount -i -t ecryptfs /home/username/.secret /home/username/secret -o ecryptfs_sig=7c5d3dd8a1b49db0,ecryptfs_fnek_sig=7c5d3dd8a1b49db0,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs
注意: 截至 2022 年,由于 systemd 中的一个 bug,此命令不起作用(请参阅 FS#55943)。一个 workaround 是在挂载之前运行 keyctl link @u @s
  • ecryptfs_sig 设置数据密码密钥签名。
  • ecryptfs_fnek_sig 设置文件名密码密钥签名;如果您不想加密文件名,可以省略此选项。
  • ecryptfs_key_bytes 可以是 16、24 或 32,以更改加密密钥大小。
  • ecryptfs_unlink_sigs 将在您卸载时从密钥环中删除密码,因此您必须再次添加密码才能重新挂载文件系统。
  • ecryptfs(7) § OPTIONS 中列出了一些其他选项。
提示: 有一个 mount.ecryptfs 工具,您可以以 root 身份运行它以交互式输入挂载设置。一旦您使用它来挂载 eCryptfs,您可以检查 /etc/mtab 以找出它使用了哪些选项。

选择正确的挂载选项后,您可以向 /etc/fstab 添加一个条目,以便普通用户可以在这些目录上挂载 eCryptfs。将挂载选项复制到新的 /etc/fstab 条目,并添加选项 usernoauto。完整条目将类似于(粗体条目已添加)

/etc/fstab
/home/username/.secret /home/username/secret ecryptfs noauto,user,ecryptfs_sig=7c5d3dd8a1b49db0,ecryptfs_fnek_sig=7c5d3dd8a1b49db0,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs 0 0
  • noauto 选项很重要,因为否则 systemd 将在启动时尝试直接挂载条目时出错。
  • user 选项允许用户挂载目录。
    • 用户挂载将默认为选项 noexec。如果您希望在您的私有目录中至少有可执行文件,您可以将 exec 添加到 fstab 选项。

设置现已完成,目录应可由用户挂载。

挂载

要以用户身份挂载加密目录,必须解包密码并使其在用户的密钥环中可用。按照上面的部分示例

$ ecryptfs-insert-wrapped-passphrase-into-keyring ~/.ecryptfs/wrapped-passphrase
Passphrase:
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring

现在可以挂载目录,而无需挂载助手问题

$ mount -i ~/secret

并将文件放入 secret 目录中。以上两个步骤是每次手动挂载目录所必需的。

要再次卸载它

$ umount ~/secret

最后,可以更改用于包装加密密码的初步密码

$ ecryptfs-rewrap-passphrase ~/.ecryptfs/wrapped-passphrase
Old wrapping passphrase:
New wrapping passphrase:
New wrapping passphrase (again):

卸载也应清除密钥环,以检查用户的密钥环或手动清除它

$ keyctl list @u
$ keyctl clear @u
注意: 应该记住,/etc/fstab 仅用于系统范围的分区,通常不应用于用户特定的挂载。
自动挂载

可以采用不同的方法在登录时自动挂载先前在 /etc/fstab 中定义的用户挂载。作为第一个一般步骤,请按照 #自动挂载 的 (1) 和 (2) 点进行操作。

然后,如果您通过控制台登录,一个简单的方法是在用户的 shell 配置文件中指定 用户交互式 mountumount,例如 Bash#配置文件

本文或章节的准确性存在争议。

原因
- 本节应比现在更通用
- 所描述的方法不适用于用户,对于遇到的问题:(在 Talk:ECryptfs#Automounting 中讨论)

另一种方法是在用户登录时使用 pam_mount 自动挂载 eCryptfs 目录。要配置此方法,请将以下行添加到 /etc/security/pam_mount.conf.xml

<luserconf name=".pam_mount.conf.xml" />
<mntoptions require="" /> 
<lclmount>mount -i %(VOLUME) "%(before=\"-o\" OPTIONS)"</lclmount> 

请优先手动编写这些行,而不是简单地复制/粘贴它们(尤其是 lclmount 行)。否则,您可能会得到一些损坏的字符。说明

  • 第一行指示用户配置文件的位置(此处为 ~/.pam_mount.conf.xml
  • 第二行覆盖了默认的必需挂载选项,这些选项是不必要的 ("nosuid,nodev")
  • 最后一行指示要运行的挂载命令(eCryptfs 需要 -i 开关)。

然后设置卷定义,最好设置为 ~/.pam_mount.conf.xml

<pam_mount>
    <volume noroot="1" fstype="ecryptfs" path="/home/username/.secret/" mountpoint="/home/username/secret/" />
</pam_mount>

“noroot”是必需的,因为加密密钥将添加到用户的密钥环中。

最后,按照 pam_mount 文章中的描述编辑 /etc/pam.d/system-login

可选步骤

为了避免不必要地浪费时间解包密码,您可以创建一个脚本,该脚本将检查 pmvarrun 以查看打开会话的数量

/usr/local/bin/doecryptfs
#!/bin/sh
exit $(/usr/sbin/pmvarrun -u$PAM_USER -o0)

在 PAM 堆栈中的 eCryptfs 解包模块之前添加以下行

auth    [success=ignore default=1]    pam_exec.so     quiet /usr/local/bin/doecryptfs
auth    required                      pam_ecryptfs.so unwrap

本文建议将这些添加到 /etc/pam.d/login,但更改需要添加到所有其他您登录的地方,例如 /etc/pam.d/kde

用法

本文或章节需要扩充。

原因: 仍可能涵盖的内容

- 指向上面的“设置和挂载”部分,了解如何挂载和卸载 [此部分将涵盖所有其他(即独立于设置的)用法信息]
- 参考先前部分中未使用/提及的 ecryptfs 工具(例如,提供指向在线手册页的简短链接,并提及其他工具的用法,因为它似乎有用(尚未涵盖的是,例如 ecryptfs-stat、ecryptfs-find、ecryptfs-rewrite-file。)
- 提及在用户之间共享加密文件夹以及在加密容器中放置未加密文件或文件夹(“pass-through”)的选项(这些点的参考:[5] 和(可能)[6]

(在 Talk:ECryptfs#Major_restructuring/rewrite 中讨论)

符号链接到加密目录

除了将您的私有目录用作敏感文件和私人数据的存储之外,您还可以使用它来保护应用程序数据。Firefox 例如有一个内部密码管理器,但浏览历史记录和缓存也可能很敏感。保护它很容易

$ mv ~/.mozilla ~/Private/mozilla
$ ln -s ~/Private/mozilla ~/.mozilla

移除加密

如果您想删除您的私有目录,则无需执行特殊步骤。确保它已卸载并删除相应的较低目录(例如 ~/.Private/),以及所有加密文件。在删除 ~/.ecryptfs/ 中的相关加密签名和配置后,一切都消失了。

如果您使用的是 #Ubuntu 工具 来设置单个目录加密,您可以直接按照详细说明的步骤进行操作

$ ecryptfs-setup-private --undo

并按照说明进行操作。

备份

如果您想将文件移出私有目录,只需在 ~/Private/ 挂载时将其移动到新目标即可。

使用 eCryptfs 时,加密元数据存储在文件头中。本文中解释的设置变体将加密数据目录与挂载点分开。未加密的挂载点是完全透明的,可用于备份。显然,如果需要避免将敏感的未加密数据泄露到备份中,则必须考虑自动化备份。

您可以像处理任何其他目录一样,对加密目录(例如 ~/.Private/)进行备份或增量备份。

需要注意的其他要点

  • 如果您使用 Ubuntu 工具进行 #Encrypting a home directory,请注意包含加密文件的较低级目录的位置在常规用户的 $HOME 之外,位于 /home/.ecryptfs/username/.Private/
  • 应确保将 eCryptfs 设置文件(通常位于 ~/.ecryptfs/ 中)包含在常规备份或单独备份中。
  • 如果您使用特殊的文件系统挂载选项,例如 ecryptfs_xattr,请在恢复完整性时进行额外的检查。

已知问题

通过 Mosh 连接时,远程主机上的挂载可能会失败

这是 已知问题 of Mosh 服务器的一个已知问题,该服务器不会保持 eCryptfs /home 目录的挂载状态。

参见

  • eCryptfs - 手册页和项目主页
  • Security audit of eCryptfs by Taylor Hornby (2014 年 1 月 22 日)。
  • eCryptfs and $HOME by Adrian C. (anrxc) - 包含安装说明和 eCryptfs 用法讨论的文章
  • Chromium 数据保护 (2009 年 11 月) - 详细介绍 Chromium OS 加密选项的设计文档,包括对其 eCryptfs 用法的解释
  • eCryptfs design by Michael Halcrow (2005 年 5 月) - 详细介绍和讨论 eCryptfs 的原始设计文档