encfs 预期访问被拒绝

encfs 预期访问被拒绝

如果我执行脚本

#!/usr/bin/expect 
set pass [lindex $argv 0] 
spawn encfs -v  {CRIPT_DIR}  {MNT_DIR} -o nonempty 
expect "*EncFS Password:*"
send "$pass\r"
expect eof

期望脚本输出:

zz@zz-com:/media/truecrypt5/mmm$./e.sh 1
spawn encfs -v /media/truecrypt5/mmm/cr /media/truecrypt5/mmm/mn -o nonempty
10:25:11 (main.cpp:523) Root directory: /media/truecrypt5/mmm/cr/
10:25:11 (main.cpp:524) Fuse arguments: (daemon) (threaded) (keyCheck) encfs /media/truecrypt5/mmm/mn -o nonempty -s -o use_ino -o default_permissions 
10:25:11 (FileUtils.cpp:177) version = 20
10:25:11 (FileUtils.cpp:181) found new serialization format
10:25:11 (FileUtils.cpp:199) subVersion = 20100713
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:11 (FileUtils.cpp:1620) useStdin: 0
EncFS Password: 
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:12 (FileUtils.cpp:1628) cipher key size = 44
10:25:12 (Interface.cpp:165) checking if nameio/block(3:0:1) implements nameio/block(3:0:0)

ls 命令:

zz@zz-com:/media/truecrypt5/mmm$sudo ls -la
[sudo] password for zz: 
ls: cannot access mn: Permission denied
total 24
drwx------  4 zz zz 4096 2012-08-31 14:40 .
drwx------ 10 zz zz 4096 1970-01-01 03:00 ..
drwx------  2 zz zz 4096 2012-08-30 18:56 cr
-rwx------  1 zz zz   73 2012-08-30 18:54 e2.sh
-rwx------  1 zz zz  178 2012-08-30 19:10 e.sh
d?????????  ? ?  ?     ?                ? mn
-rwx------  1 zz zz   40 2012-08-30 18:52 u.sh

我无权访问 {MNT_DIR}。 Sodo 用户无权访问。但是命令或 shell scipt

#!/bin/sh
encfs -v  {CRIPT_DIR}  {MNT_DIR} -o nonempty

工作正确。

操作系统:Ubuntu 11.10

我的期望脚本有什么问题?

答案1

您的预期脚本没有任何问题。但看起来您使用普通用户来挂载加密目录,然后您尝试使用 root 使用 sudo 查看挂载的文件。那是行不通的,而这正是 encfs 的全部意义所在。

在您的示例中,目录crencfs.这里面的内容不是什么大秘密,都是加密数据。您正在将这些数据装载到 上mn,以便您可以以人类可读的方式查看其内容,作为 下的文件mn

只有安装的用户cr才能读取里面的内容mn。连root都不能。如果您想root查看内容,那么您应该将./e.sh 1示例中的 更改为sudo ./e.sh 1

答案2

encfs在执行命令时,在expect脚本中使用是不同的,因为encfsfork了一个后台进程,但是当expect脚本退出时,encfs守护进程就会失效。迟早它会被 init 回收。

因此,您可能想尝试使用encfs -f保持encfs在前台运行并且不退出脚本。

相关内容