如何在非主目录中使用 ecryptfs

use*_*015 14 encryption mount ecryptfs

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

Xen*_*050 10

您只查看像ecryptsfs-setup-privateand这样的超级简单脚本ecryptsfs-mount-private,它们使用您似乎正在寻找的更“通用”的工具:mount.ecryptfsand ecryptfs-add-passphrase。有关man更多信息,请参阅他们的页面。

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


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

首先根据需要选择 ALIAS。通过本节,ALIAS 将是秘密的。创建所需的目录/文件:

$ mkdir ~/.secret ~/secret ~/.ecryptfs
$ touch ~/.ecryptfs/secret.conf ~/.ecryptfs/secret.sig
Run Code Online (Sandbox Code Playgroud)

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

[现在创建实际的挂载密码(简单的脚本将从中选择一个伪随机的 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
Run Code Online (Sandbox Code Playgroud)

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

$ echo 78c6f0645fe62da0 > ~/.ecryptfs/secret.sig
Run Code Online (Sandbox Code Playgroud)
  • 可以使用用于文件名加密的第二个密码短语。如果您选择这样做,请将其添加到密钥环中:

    $ ecryptfs-add-passphrase
    Passphrase: 
    Inserted auth tok with sig [326a6d3e2a5d444a] into the user session keyring
    
    Run Code Online (Sandbox Code Playgroud)

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

    $ echo 326a6d3e2a5d444a >> ~/.ecryptfs/secret.sig
    
    Run Code Online (Sandbox Code Playgroud)

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

$ mount.ecryptfs_private secret
Run Code Online (Sandbox Code Playgroud)

要卸载 ~/.secret:

$ umount.ecryptfs_private secret
Run Code Online (Sandbox Code Playgroud)
  • 或者你真的可以亲自动手并按照没有 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]".
    
    Run Code Online (Sandbox Code Playgroud)

除了加密的主文件夹和主文件夹中的加密文件夹 - 嵌套的 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 注销,新的加密文件夹将保持挂载状态,因此您必须卸载它 ( umount.ecryptfs_private secret)。


小智 -1

ecryptfs /destination/to/encrypted/storage /destination/to/seeing/unencrypted/data
Run Code Online (Sandbox Code Playgroud)

例如:

ecryptfs /home/$USER/EFILES /home/$USER/Downloads/RANDOMDIRECTORY
Run Code Online (Sandbox Code Playgroud)

使用上面的命令创建并安装加密系统,其中保存在 RANDOMDIRECTORY 中的文件被加密并保存到 EFILES 中。

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

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

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

encfs /destination/encrypted /destination/unencrypted
Run Code Online (Sandbox Code Playgroud)

对于那个很抱歉。这样你就必须安装一个新程序(可能)