我想使用 ecryptfs 加密一个随机目录(即不是我的主目录或其子目录,主要是由于我的主分区上的磁盘空间限制)并在登录我的帐户时挂载该目录。我不知道如何做到这一点,甚至不知道使用现有软件是否真的可以做到这一点。我见过提供模糊建议的帖子(例如,mount.ecryptfs_private
与 ALIAS 选项一起使用),但我还没有找到有关如何执行此操作的简单分步说明。有人可以提供这些说明或告诉我在哪里可以找到它们吗?
答案1
您只查看了超级简单的脚本,例如ecryptsfs-setup-private
和ecryptsfs-mount-private
,它们使用了您似乎正在寻找的更“通用”的工具:mount.ecryptfs
和ecryptfs-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
抱歉。不过,你可能需要安装一个新程序