EncFS
EncFS 是一个用户空间堆叠式加密文件系统,类似于 eCryptfs,旨在以最小的麻烦保护数据。它使用 FUSE 将加密目录挂载到用户指定的另一个目录上。它不使用像 TrueCrypt 和 dm-crypt 等其他类似系统那样的环回系统。
如果您想在 Linux 上尝试磁盘加密,EncFS 绝对是最简单的软件。
EncFS 的优点:首先,它不需要任何 root 权限即可实现;任何用户都可以创建加密文件仓库。其次,不需要创建单个文件并在其中创建文件系统;它可以在现有文件系统上工作,而无需修改。
缺点:加密文件没有存储在它们自己的文件中,获得系统访问权限的人仍然可以看到底层的目录结构、文件数量、文件大小以及文件修改时间。但是,他们无法看到内容。
这种特定的数据安全方法显然不是完美的,但在某些情况下它很有用。
有关 EncFS 与其他磁盘加密解决方案的更详细比较,请参阅静态数据加密#比较表。
与 eCryptFS 的比较
eCryptFS 在内核空间中实现,因此配置起来有点困难。您必须记住各种加密选项(使用的密码、密钥类型等)。使用 EncFS 则不需要这样,因为它将加密元数据信息存储在每个目录的配置文件 (.encfs6.xml
) 中。因此,您不必记住任何东西(除了密码)。
两者的性能取决于磁盘活动的类型。虽然 eCryptFS 在某些情况下可以更快,因为内核和用户空间之间的上下文切换开销较少,但 EncFS 在其他情况下具有优势,因为加密元数据是集中式的,而不是存储在各个文件的标头中。有关更多信息,EncFS 项目提供了基准测试示例。
安装
用法
要创建安全存储库,请输入
$ encfs ~/.encrypted ~/origin
请注意,必须使用绝对路径。之后会提示您是否要使用默认选项、专家配置或偏执预设。第一个是相当安全的默认设置。第二个允许指定算法和其他选项。输入加密密钥后,将创建并挂载编码文件系统。在此示例中,编码文件存储在 ~/.encrypted
中,未加密版本存储在 ~/origin
中。
要卸载文件系统,请输入
$ fusermount -u ~/name
要重新挂载文件系统,请发出第一个命令,并输入用于编码的密钥。输入密钥后,文件系统将再次挂载。
更改密码
要更改 EncFS 加密目录的密码,可以使用以下命令
$ encfsctl passwd ~/.name
在本例中,~/.name
是包含编码文件的目录的路径。该工具将要求您输入当前密码,之后,您将能够设置新密码。
用户友好的挂载
Gnome Encfs 管理器
Gnome Encfs 管理器是一个易于使用的管理器和挂载器,用于 encfs stash,具有每个 stash 的配置、Gnome Keyring 支持、受 Cryptkeeper 启发的托盘菜单(但使用 AppIndicator API)和许多独特功能。
gnome-encfs-manager-binAUR 和稍微更新的 gnome-encfs-manager-bzrAUR 均可用。
使用 encfsui 挂载
bash 脚本 encfsui 提供了一个围绕 EncFS 命令行实用程序的简单 zenity gui,用于挂载和卸载加密目录。它包括一个桌面启动器。从 encfsuiAUR 安装它。
通过 fstab 挂载
在 /etc/fstab
中添加条目将允许您使用简单的 mount /target/path
挂载 encfs 卷,并且系统将提示您输入密码。
/etc/fstab
encfs#/path/to/encfs/data /mnt/decrypted fuse noauto,user 0 0
noauto
选项可防止在启动时尝试挂载卷,这可能会延迟启动过程,因为它会等待输入密码。如果只有 root
用户应该能够挂载卷,则可以省略 user
。
登录时使用 pam_encfs 挂载
安装 pam_encfsAUR。另请参阅
- https://web.archive.org/web/20160505055352/http://pam-encfs.googlecode.com/svn/trunk/README
- https://web.archive.org/web/20160428084352/http://pam-encfs.googlecode.com/svn/trunk/pam_encfs.conf
- https://wiki.edubuntu.org/EncryptedHomeFolder
- https://code.google.com/archive/p/pam-encfs/
单个密码
/etc/shadow
中,并且可以被破解以获取您的 encfs 密码(因为它与您的常规 unix 登录密码相同)。/etc/pam.d/
请注意,当您对 pam_unix.so 使用 try_first_pass 参数时,您将需要将 EncFS 设置为使用与您登录时使用的密码相同的密码(或反之亦然),并且您只需输入一个密码。如果不使用此参数,您将需要输入两个密码。
为所有登录方法设置 pam_encfs
将 encfs 行添加到 /etc/pam.d/system-login,如下所示
... auth sufficient pam_encfs.so ...
登录
本节介绍如何在您通过虚拟终端登录时自动挂载 encfs。
编辑文件 /etc/pam.d/login
#%PAM-1.0 auth required pam_securetty.so auth requisite pam_nologin.so auth sufficient pam_encfs.so auth required pam_unix.so nullok try_first_pass #auth required pam_unix.so nullok auth required pam_tally.so onerr=succeed file=/var/log/faillog # use this to lockout accounts for 10 minutes after 3 failed attempts #auth required pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog account required pam_access.so account required pam_time.so account required pam_unix.so #password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 #password required pam_unix.so md5 shadow use_authtok session required pam_unix.so session required pam_env.so session required pam_motd.so session required pam_limits.so session optional pam_mail.so dir=/var/spool/mail standard session optional pam_lastlog.so session optional pam_loginuid.so -session optional pam_ck_connector.so nox11 #Automatic unmount (optional): #session required pam_encfs.so
gdm
本节介绍如何在您通过 GDM 登录时自动挂载 encfs。
编辑文件 /etc/pam.d/gdm-password
。
将以下内容插入(不要覆盖)gdm-password 的底部
#%PAM-1.0 auth requisite pam_nologin.so auth required pam_env.so auth sufficient pam_encfs.so auth required pam_unix.so try_first_pass auth optional pam_gnome_keyring.so account required pam_unix.so session required pam_limits.so session required pam_unix.so session optional pam_gnome_keyring.so auto_start password required pam_unix.so session required pam_encfs.so
保存并退出。
配置
编辑 /etc/security/pam_encfs.conf
推荐:注释掉以下行
encfs_default --idle=1
此标志将在 1 分钟不活动后卸载您的加密文件夹。如果您在登录时自动挂载它,您可能希望在您登录期间保持挂载。
在底部,注释掉任何现有的演示条目并添加
#USERNAME SOURCE TARGET PATH ENCFS Options FUSE Options archie /home/archie/EncryptedFolder /home/archie/DecryptedFolder -v allow_other
pam_encfs
无法在登录时挂载多个 EncFS 文件夹。如果在 /etc/security/pam_encfs.conf
中指定了多个条目,则只会挂载第一个条目,其余条目将被忽略。要在登录时挂载多个 EncFS 文件夹,必须使用 pam_mount。有关详细信息,请参阅 #登录时使用 pam_mount 挂载。此外,如果您看到以下行,请从选项中删除 allow_root
。否则,它将与上面定义的 allow_other
冲突。
fuse_default allow_root,nonempty
接下来,编辑 /etc/fuse.conf
:取消注释
user_allow_other
要测试您的配置,请打开一个新的虚拟终端(例如 Ctrl+Alt+F4
)并登录。您应该看到 pam 成功挂载您的 EncFS 文件夹。
登录时使用 pam_mount 挂载
按照其 wiki 页面上的说明安装和配置 pam_mount。EncFS 挂载可以在 pam_mount 的配置文件中指定,如下所示
/etc/security/pam_mount.conf.xml
<volume fstype="fuse" path="encfs#/path/to/encfs/encrypted/data" mountpoint="/path/to/decrypted/data/mountpoint" options="nonempty" />
EncFS 挂载需要与您的用户帐户具有相同的密码。即使挂载点非空,nonempty
选项也允许挂载加密文件系统。如果这不是期望的行为,您可以删除此选项。
可以在配置文件中指定多个连续的 <volume>
条目,以便在登录时挂载多个 EncFS 文件夹。
加密备份
备份加密目录
加密目录可以像这样备份和恢复到另一个位置。这是可能的,因为加密选项/元数据的配置文件实际上以明文形式存储在目录本身的隐藏 .encfs6.xml
文件中。这没有直接问题,因为密码不在其中。
但是,如果您例如将备份存储在远程位置(例如在云中)或便携式设备上,您可能会感到不舒服。在这种情况下,在创建备份之前手动将文件移出目录也没有问题。您甚至可以永久移动它,并且仍然可以挂载和访问文件,如果您通过 ENCFS6_CONFIG
环境变量将其位置传递给 encfs。对于上面的 #用法 示例
$ mv ~/.name/.encfs6.xml ~/. $ ENCFS6_CONFIG=~/.encfs6.xml encfs ~/.name ~/name
备份明文目录
以下示例假设您要创建现有明文目录 ~/mythesis
的加密备份,该目录包含文件 thesis.txt
。
首先,我们创建现有明文目录的加密备份
$ encfs --reverse ~/mythesis /tmp/thesisbackup
请注意,在这种情况下,目录顺序与正常用法相反。使用 --reverse
选项有两个效果:首先,配置文件现在存储在明文目录中,而 /tmp/thesisbackup
仅包含其加密形式。其次,/tmp/thesisbackup
中的文件不是持久性的。一旦卸载,它们就会消失(不,这不是由于使用了 /tmp
挂载点)。
由于第二个原因,现在是将加密文件复制到所需备份位置的时候了,在再次卸载临时 encfs 目录之前
$ cp -R /tmp/thesisbackup/* /mnt/usbstick/ $ fusermount -u /tmp/thesisbackup
完成。
要恢复(或查看)备份,我们需要访问明文的加密选项,这必须通过环境变量 ENCFS6_CONFIG
传递给 encfs(我们使用不同的目录,以免弄乱现有的 ~/mythesis
)
$ ENCFS6_CONFIG=~/mythesis/.encfs6.xml encfs ~/mnt/usbstick/thesisbackup ~/restoremythesis
如果您现在列出恢复位置,它将包含两个文件
$ ls -la ~/restoremythesis ... -rw-r--r-- 1 student student 1078 3. Jan 12:33 .encfs6.xml -rw-r--r-- 1 student student 42 3. Jan 12:33 thesis.txt ...
参见
- EncFS - 项目主页
- EncFS 安全审计,作者:Taylor Hornby(2014 年 1 月 14 日)。
- EncFS 微型操作指南,作者:Anthony Thyssen。