我正在尝试让 EncFS 加密主目录在启动时挂载而无需用户输入(直接挂载,而不是通过 ssh)。尝试了各种解决方案(在 pam_mount.conf.xml 中添加卷条目,对各种 pam 文件进行各种调整),但都没有成功。可以手动挂载 encfs 目录,但需要手动输入密码。可以使用 expect 脚本完成所有这些操作...
有许多关于在启动时自动挂载 encfs 的帖子,但是无法让它们中的任何一个工作(缺少预期脚本)。
有人能建议如何做到这一点吗(我正在使用 Debian Squeeze)?或者使用 expect 脚本是最好的方法吗?
谢谢!
答案1
您可以通过管道将密码传输至恩夫斯像这样:
echo password | encfs -S /crypted /uncrypted
答案2
我只是使用像下面这样的 bash 脚本:
#!/bin/bash
ENCFS6_CONFIG="/home/<user>/.keys/encfs/key_data.xml" encfs -o nonempty --extpass='/home/<user>/.keys/encfs/key_data_pw' /run/media/<user>/data /home/<user>/DATA
EncFS 文档中对ENCFS_CONFIG
和的使用有详细记录。extpass
答案3
同样在 Squeeze 上,我在 /etc/rc.local 中使用以下行:
/usr/local/sbin/mount_crypted_encfs.exp
脚本如下:
#!/usr/bin/expect -f
set timeout 1
spawn /usr/bin/encfs /crypted /uncrypted -- -o allow_other -o default_permissions
expect "EncFS Password:"
send "myPassword\r"
expect eof
但十分之一的时间,它会挂载失败,我必须手动运行期望脚本:-/
答案4
我使用 SD 卡作为密钥来打开 encfs 文件夹,但您也可以使用特定于您的系统的文件。
encfs /home/user/crypted /home/user/uncrypted -o umask='007' --public --extpass='udevadm info --query=all --name=/dev/mmcblk0p1 | grep ID_SERIAL'
将其放入你的 rc.local,或将其作为服务运行