如何在非主目录中使用 ecryptfs

如何在非主目录中使用 ecryptfs

我想使用 ecryptfs 加密一个随机目录(即不是我的主目录或其子目录,主要是由于我的主分区上的磁盘空间限制)并在登录我的帐户时挂载该目录。我不知道如何做到这一点,甚至不知道使用现有软件是否真的可以做到这一点。我见过提供模糊建议的帖子(例如,mount.ecryptfs_private与 ALIAS 选项一起使用),但我还没有找到有关如何执行此操作的简单分步说明。有人可以提供这些说明或告诉我在哪里可以找到它们吗?

答案1

您只查看了超级简单的脚本,例如ecryptsfs-setup-privateecryptsfs-mount-private,它们使用了您似乎正在寻找的更“通用”的工具:mount.ecryptfsecryptfs-add-passphrase。请参阅其man页面以获取更多信息。

Rinzwind 发布的链接包含您需要的所有信息,位于页面下方手动设置。它们很长,但是非常非常短的版本将会:


“手动设置”方式(archlinux wiki)

首先选择一个你喜欢的 ALIAS。通过此部分,ALIAS 将是秘密的。创建所需的目录/文件:

$ mkdir ~/.secret ~/secret ~/.ecryptfs
$ touch ~/.ecryptfs/secret.conf ~/.ecryptfs/secret.sig

~/.secret目录将保存加密数据。该目录是将作为 ecryptfs 文件系统挂载的~/secret挂载点。~/.secret

[现在创建实际挂载密码(简单脚本将从中随机挑选 32 个字符/dev/urandom),使其成为一个好的字符]

$ echo "$HOME/.secret $HOME/secret ecryptfs" > ~/.ecryptfs/secret.conf
$ ecryptfs-add-passphrase
Passphrase: 
Inserted auth tok with sig [78c6f0645fe62da0] into the user session keyring

将上一个命令的输出签名(ecryptfs_sig)写入~/.ecryptfs/secret.sig:

$ echo 78c6f0645fe62da0 > ~/.ecryptfs/secret.sig
  • 可以使用第二个密码来加密文件名。如果您选择这样做,请将其添加到密钥环中:

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

    如果您运行上述命令,请将其输出签名(ecryptfs_fnek_sig)附加到~/.ecryptfs/secret.sig:

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

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

$ mount.ecryptfs_private secret

要卸载 ~/.secret:

$ umount.ecryptfs_private secret

  • 或者你可以亲自去实践并遵循没有 ecryptfs-utils方向。

  • 或者如果您已经看过简单的脚本ecryptsfs-setup-private& ecryptsfs-mount-private,您可能能够复制这些脚本并编辑它们以指向您喜欢的目录,只需一点技巧和耐心。

  • 或者只需以某种方式(最好是安全的)自行存储密码并按照man ecryptfs页面示例进行操作(必须阅读手册页):

    The following command will layover mount eCryptfs on /secret with a passphrase
    contained in a file stored on secure media mounted at /mnt/usb/.
    
    mount  -t  ecryptfs -o key=passphrase:passphrase_passwd_file=/mnt/usb/file.txt /secret /secret
    
    Where file.txt contains the contents "passphrase_passwd=[passphrase]".
    

除了加密的主文件夹和主文件夹内的加密文件夹外 - 嵌套的 eCryptfs 文件夹

而且,加密的主文件夹通常将文件存储在 中/home/.ecryptfs/user/,而加密的私人文件夹则将文件存储在您自己的主文件夹中。您可以不是同时使用两者,eCryptfs 不会进行嵌套加密文件夹。但有一个加密主目录和主目录外的加密文件夹是可以的。

  • 我刚刚尝试创建一个具有加密主页的新用户sudo adduser --encrypt-home jack

    它创建了一个/home/.ecryptfs/文件夹,其中包含:

    • /home/.ecryptfs/jack/.ecryptfs/- 包装密码和配置文件,以便在登录时自动挂载 jack 的主页
    • /home/.ecryptfs/jack/.Private//home/jack/- 实际加密的主文件,登录时安装。

      还有/home/jack/文件夹,但里面有一个链接停留无论是否登录:

      /home/jack/.ecryptfs/ -> /home/.ecryptfs/jack/.ecryptfs

    • 接下来我以 jack 身份登录,但链接仍然存在,因此尝试运行ecryptfs-setup-private导致它查看/home/jack/.ecryptfs/但实际上看到的是现有文件,/home/.ecryptfs/jack/.ecryptfs因此无法创建另一个密码文件并失败ERROR: wrapped-passphrase file already exists, use --force to overwrite.

      尝试上面的“ALIAS”步骤,使用 .secret 文件夹在加密的家里失败,出现以下错误:
      Mount on filesystem of type eCryptfs explicitly disallowed due to known incompatibilities
      Reading sb failed; rc = [-22]

      “eCryptfs 不支持在加密目录中嵌套加密目录。抱歉。”- eCryptfs 作者和维护者

    • 更改 jack 家外的 ALIAS 文件夹,尝试/tmp/.secret/& /tmp/secret/ 作品。但如果 jack log 退出,新的加密文件夹将保持安装状态,因此您必须将其卸载(umount.ecryptfs_private secret)。

答案2

如果你想像 encfs 那样使用它,你可以使用以下条目/etc/fstab

/tmp/.geheim /tmp/geheim ecryptfs rw,no_sig_cache,ecryptfs_fnek_sig=1f7aefb9e239099f,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_enable_filename_crypto=y,ecryptfs_passthrough=n,passphrase_passwd=geheimpw,user,noauto 0 0

geheim 是德语中“秘密”的意思,但请确保它不是关键字。您必须先创建目录。第一次您应该离开ecryptfs_fnek_sig=1f7aefb9e239099f。然后mount /tmp/geheim会显示正确的值。

您可以将密码存储在其他地方并设置更复杂的选项。您可以在 中找到所有选项man ecryptfs

答案3

ecryptfs /destination/to/encrypted/storage /destination/to/seeing/unencrypted/data

例如:

ecryptfs /home/$USER/EFILES /home/$USER/Downloads/RANDOMDIRECTORY

使用上述命令创建并挂载加密系统,其中 RANDOMDIRECTORY 中保存的文件被加密并保存到 EFILES。

附加说明。开始时请确保 RANDOMDIRECTORY 为空。一旦您运行上述命令,并且系统已安装并准备就绪,则如果系统已安装,则您保存在 RANDOMDIRECTORY 中的任何文件都将被加密到 EFILES 中。为了快速安装/卸载,您可以创建一个 bash 脚本并通过应用程序快捷方式运行它,或者创建一个别名命令以进行快速安装。

我已经使用这个有一年多了。

编辑:回家确认,你的命令不是 ecryptfs。它的 encfs 即

encfs /destination/encrypted /destination/unencrypted

抱歉。不过,你可能需要安装一个新程序

相关内容