使用 ecryptfs 为 Ubuntu One 和一个已经加密的主目录

spi*_*spi 9 encryption ubuntu-one ecryptfs

我想要在 Ubuntu One 上有一个加密文件夹的想法。互联网上有当前的howtos 如何使用EncFS 或ecryptfs 设置它。我想使用 ecryptfs - 不是因为速度,因为如果您将数据存储在云中,速度并不那么重要 - 但由于我已经在使用 ecryptfs,因此习惯了它,因此不要我也很喜欢使用另一种解决方案。

Ubuntu One 文件夹的问题在于,它是用户主文件夹的一部分。在许多情况下,使用最新的 Ubuntu 版本,用户的主文件夹已经使用 ecryptfs 加密,并且您不能在 ecryptfs(用户主目录的)之上使用 ecryptfs(对于 Ubuntu One 文件夹)。

那么一个人能做什么呢?当然,请改用 EncFS。或者将 Ubuntu One 文件夹移出用户的主文件夹。

任何其他想法或建议?

spi*_*spi 4

如前所述,ecryptfs 不是我的问题的解决方案,因为我的主文件夹已由 ecryptfs 加密。将“Ubuntu One”文件夹移出主树也不是解决方案,因为“Ubuntu One”内容的其余部分不再加密。

我决定改用 EncFS。设置加密文件夹非常简单。但是如何让它自动安装以便应用程序可以使用它来存储配置文件呢?有一些解决方案:

  1. pam_mount
  2. gnome-encfs
  3. 自动文件系统
  4. 保险丝

我不喜欢想法 1,因为我不想使用与我的登录密码相同的 EncFS 密码。

解决方案 2 我不喜欢,一方面是因为 Ubuntu 没有可用的 apt 软件包,另一方面我不想只在登录后安装 EncFS 文件夹。如果出现故障或者文件夹每次都会被卸载后续访问将会失败。

解决方案 3 根本不起作用。我已经使用 autofs 相当一段时间了,通过 sshfs 挂载 CIFS 共享和文件夹,但不支持 EncFS。我尝试过几个脚本来通过 autofs 挂载 EncFS,但这变得太复杂且容易出错。

所以我目前使用的是解决方案 4。Afuse 作为 apt 包提供。一旦访问 EncFS 文件夹,Afuse 就会自动挂载该文件夹,并在空闲一段时间后再次卸载它。

以下是如何设置所有内容的快速步骤(也许我将来会添加一些细节):

  • 安装保险丝
  • 创建“Ubuntu One”文件夹来存储加密内容

例子:

〜/Ubuntu\ One/.加密

  • 创建一个文件夹作为顶级文件夹,以便在其中安装文件夹

例子:

〜/.fuse

  • 创建一些帮助脚本
  • 在 Gnome 中创建一个自动启动条目来启动 afuse

未加密的 EncFS 文件夹安装在 ~/.fuse 下。在我的例子中,包含未加密内容的文件夹名为 U1Enc,因此所有数据都保留在 ~/.fuse/U1Enc 中。为了方便起见,我创建了从 ~/U1Enc 到 ~/.fuse/U1Enc 的链接,以便更轻松地到达那里。

我在几个网站上找到的想法和帮助脚本。这里是链接:

自动挂载 FUSE 文件系统
autofs:encfs 优于 sshfs

我使用以下脚本:

~/.afuse-fstab

U1Enc  encfs --ondemand --idle=5 --extpass="/home/xxx/.creds/U1.encfs.sh" /home/xxx/Ubuntu\ One/.encrypted %m
Run Code Online (Sandbox Code Playgroud)

~/.creds/U1.encfs.sh(标记为可执行文件,只能由用户自己访问)

#!/bin/sh
echo PASSWORD_FOR_ENCFS_IN_CLEARTEXT
Run Code Online (Sandbox Code Playgroud)

~/bin/afuse-handler.pl(标记为可执行文件并在 $PATH 中带有 ~/bin)

#!/usr/bin/perl -w

$fstab="$ENV{HOME}/.afuse-fstab";
$afusedir=$ARGV[0];
$afuse_mountpoint=$ARGV[1];

print "afusedir:$afusedir\n";
print "afuse_mountpoint:$afuse_mountpoint\n";

system("logger -t afuse 1:$ARGV[0] 2:$ARGV[1]");

open(FSTAB, $fstab ) or die("Can not open afuse-fstab at $fstab\n");
while( <FSTAB> ) {
        if( /^$afusedir/ ) {
                s/[^\s\/]+[\s]*//;
                s/%r/$afusedir/g;
                s/%m/$afuse_mountpoint/g;
                chomp;
                $cmd = $_;
                print "$cmd\n";
                system($_) == 0
                        or die "execution of FUSE filesystem failed!\n"
                             . "command:$cmd\n"
                             . "reason:$?\n";
        }
}
Run Code Online (Sandbox Code Playgroud)

最后~/bin/afuse.start.sh(再次标记为可执行文件),我在 Gnome/System/Settings 中注册以在登录后启动 afuse

#!/bin/sh
afuse -o mount_template="/home/xxx/bin/afuse-handler.pl %r %m" -o unmount_template="fusermount -u -z %m" ~/.fuse
Run Code Online (Sandbox Code Playgroud)

最后一个脚本启动 afuse,一旦访问它,它就会启动 afuse-handler 将 EncFS 文件夹挂载到 ~/.fuse 下。afuse.handler 本身会检查 .afuse-fstab 如何挂载文件夹。EncFS 密码由 U1.encfs.sh 回显,因此不需要用户干预(因为该文件存储在我的主文件夹中,它由 ecryptfs 加密,所以我不认为存在大的安全问题)。

处理不同的 EncFS 版本。目前 Natty 上安装了 EncFS 版本 1.7.4。这在 Maverick 上旧的 1.6 版本上表现不佳。我还必须将 Maverick 上的 EncFS 更新到 1.7.4(通过固定 apt/preferences 来完成此操作)。


Jo-*_*tad 0

一种可能的方法是使用两个不同的目录:

~/my_secret_data 不会同步,但会加密添加到其中的所有文件,然后将加密的文件从 ~/my_secret_data/ 文件夹移动到 ~/Ubuntu One/ 文件夹。如果您已将 GPG 密钥添加到所有计算机,那么您将能够自动打开加密文件,但其他人则不能。

我认为这不是很优雅,但应该可以。