如何让两个本地用户访问加密的主文件夹?

如何让两个本地用户访问加密的主文件夹?

我和我的妻子共用一台运行 Ubuntu 12.04 LTS 的笔记本电脑,我想加密我们每个人的主文件夹,同时仍保持对方的访问权限。

使用 eCryptfs 的加密部分非常简单,但添加第二个用户显然没有很好的记录。共享加密文件夹是可能的,但我认为共享整个主文件夹会更简单,并且会得到整个社区的更好支持。

我读到过一些提示,说你可以将密钥添加到 ecryptfs 内核密钥环中,但是我发现的方向还不够明确即使我将自己描述为高级用户。

答案1

我以为这会类似于LUKS 与pam_mount为所有用户使用一个主分区(我不知道是否可以这样做,或者使用 LUKS 是否是个好主意)或为每个用户使用单独的分区,如果使用 LUKS 会更麻烦。阅读 FAQ 让两个用户都登录应该就足够了,至少看起来是这样:

一旦一个用户可以访问 eCryptfs 文件,任何有权限的用户都可以访问该文件。eCryptfs 是否应该要求所有用户都拥有密钥才能访问文件?

eCryptfs 刻意不尝试重新实现 Linux 内核中已经存在的自主和强制访问控制机制。eCryptfs 仅要求将文件加密密钥 (FEK) 与任何给定的 inode 相关联,以便解密磁盘上的文件内容。这可防止攻击者在受信任的主机环境之外访问文件内容;例如,通过移除存储设备或启动实时 CD。这是 eCryptfs 旨在阻止的唯一类型的未经授权的访问。

一旦 eCryptfs 将该 FEK 与 inode 关联,它就不会对谁或什么可以访问文件施加任何额外的限制,而是遵从标准用户/组/其他权限、功能、SE Linux 类型强制执行等来规范对文件的访问。eCryptfs 不保留有关 FEK 如何找到 inode 的谱系,因此它无法知道任何特定的 UID 是否应该能够打开文件,eCryptfs 也不应该做这样的事情。

让 eCryptfs 在受信任的主机环境中对解密文件内容施加额外的访问控制不会提供额外的安全性,同时会引入意想不到的可用性问题。例如,用户可能希望与系统上的某些其他用户共享他的解密文件,而不必与他们共享他的密钥或将他们的密钥添加到包装 inode 的 FEK 的密钥集中。用户希望能够通过用户、组、功能和类型来完成这样的任务,而 eCryptfs 将受信任的主机环境中的访问控制决策推迟到这些现有的访问控制机制。

您可以在/usr/share/doc/ecryptfs-utils/ecryptfs-faq.html或中找到完整的常见问题解答在线的


另一种解决方法是在用户主文件夹之外使用一个可以共享的 eCrypfs 文件夹,该文件夹具有一个用户可以共享的密码(解决方法是两个用户都必须登录到他们的帐户)。

答案2

使用 Samba 可以轻松完成此操作。配置大约需要五到十分钟。但是,请注意,两个用户都需要登录才能使用他们的加密密钥供 Samba 使用。如果您希望一个用户在未登录的情况下能够访问另一个用户的文件,则此方法不起作用。

  1. 安装 Samba(如果你还没有安装)

    sudo apt-get install samba

  2. 为两个 Linux 用户添加 Samba 用户(本例中他们是 tom 和 sally)

    sudo smbpasswd -a tom sudo smbpasswd -a sally

  3. 在文本编辑器中打开 Samba 配置文件 /etc/samba/smb.conf

    sudo nano /etc/samba/smb.conf

  4. 在文件底部附近添加共享定义。(不要使用文件中已有的 [home] 共享定义,因为它不允许您使用必要的“强制用户”设置。请参阅下面关于为什么需要“强制用户”的说明。)

    [tom] comment = Tom's home folder path = /home/tom guest ok = no browseable = yes read only = no valid users = tom, sally force user = tom

    [sally] comment = Sally's home folder path = /home/sally guest ok = no browseable = yes read only = no valid users = tom, sally force user = sally

  5. 保存更改,然后重新启动 Samba 服务器以确保新设置已应用。我使用这三个命令,但可能比必要的命令还多。

    sudo samba restart sudo service smbd restart sudo service nmbd restart

  6. (可选)默认情况下,Samba 会在网络上宣传您的共享文件夹。您可以通过多种不同的方式阻止这种情况。在上面编辑的 smb.conf 文件中,您可以将允许的接口设置为仅允许 127.0.0.1(表示“此计算机”)。这可以全局设置(在 smb.conf 的网络部分),也可以在要限制的每个共享上单独设置。

    interfaces = 127.0.0.1

如果一切正常,您应该能够在文件浏览器的网络部分看到您的主文件夹(您的计算机将显示为网络设备,或者您将在“Windows 网络”文件夹中找到文件夹)。首次连接到共享文件夹时,系统将提示您输入 Samba 用户名和密码,但您可以通过让文件浏览器为您记住这些信息来避免以后出现这种情况。

笔记:“强制用户”会导致文件操作以指定的 Linux 用户身份执行,而不管登录的 Samba 用户是谁。这意味着当 Sally 将文件写入 Tom 的共享主目录时,她实际上是以 Linux 用户 tom 的身份写入的。如果您不使用“强制用户”,Sally 会收到“NT_STATUS_ACCESS_DENIED”错误(因为 Sally 的 Linux 用户无法访问 Tom 的加密主目录)。

相关内容