如何从 ENCFS 加密文件系统执行程序

如何从 ENCFS 加密文件系统执行程序

我使用 ENCFS 创建了一个加密文件系统。除了在 FS 中执行程序外,其他一切都按预期运行。未加密和加密 FS 目录的权限均为“drwxrwxrwx”。

当我尝试执行一个简单的 bash 脚本或可执行文件时,我得到以下信息:

$ ./hello.sh
bash: ./hello.sh: Permission denied
$ ./hello
bash: ./hello: Permission denied

这些文件是可读的:

$ sh ./hello.sh
hello

文件权限正确:

rwxrwxr-x. 1 eager eager 18K Jan  8 10:04 hello*
-rwxrwxr-x. 1 eager eager  25 Jan  8 09:58 hello.sh*

为什么我会收到“权限被拒绝”的消息?有什么办法可以解决这个问题吗?

答案1

fuse 的默认挂载选项(显然)包括“noexec”。man mount.fuse(8) 仅提到默认设置了“nodev,nosuid”。手册页说支持其他标准挂载选项。

将 fstab 条目更改为以下内容有效:

encfs#/fs/encrypt /fs/unencrypt fuse rw,user,exec,noauto    0 0

答案2

我被迫使用

encfs -o umask=077 "/media/user/USBFLASH/" /home/user/mountdir 

因为我的加密文件夹位于 NTFS 格式的 USB 记忆棒上,并且负责实际存储文件权限的 encfs/fuse/whatever 底层文件系统忽略了设置任何权限的尝试。

encfs --no-default-flags处理时还要记住,-o fuse_option因为 encfs 默认可以覆盖您的标志。

相关内容