我使用 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 默认可以覆盖您的标志。