未挂载时是否可以使 encfs 挂载点不可写?

未挂载时是否可以使 encfs 挂载点不可写?

我正在使用 encfs,到目前为止我对它非常满意,但有一个问题有点烦人。

假设我最喜欢的挂载点是 ~/encfsmnt。我的问题是,如果我的 encfs 尚未挂载,那么这一点就不明显了。我可能会愉快地将数据写入 ~/encfsmnt 目录,而不是将数据由 encfs 加密到 encfs 下层目录中。

解决此问题的明显方法是将 ~/encfsmnt 的文件模式设置为 400(dr--------),但显然 encfs 要求挂载点目录可写才能成功挂载(我收到“fusermount:用户没有对挂载点的写访问权限”错误消息)。

有什么办法可以让我的挂载点不可写,除非 encfs 实际挂载到它上面?

答案1

恐怕它要么可写,要么不可写。为了使它仅对某个进程 (fusermount) 可写,您可能需要一个 LSM (Apparmor、SELinux 或类似程序)。当然,这需要 root 访问权限。

更简单的解决方案可能是集成chmod u+w ~/encfsmnt到 fusermount 调用中(如果您没有 GUI,请为您执行此操作)。创建一个小脚本,在调用 fusermount 后执行此操作(并在 umount 后删除写访问权限)。

或者更改挂载点:将 ~/encfsmnt.mp 设为挂载点(如果可能的话,否则习惯于写入不同的目标)。在已挂载的 ~/encfsmnt.mp 中创建一个目录,所有(新)内容都存放在此目录中:~/encfsmnt.mp/new 在未挂载的 ~/encfsmnt.mp 中创建相同的目录。但您要对该目录进行写保护。

然后,将 ~/encfsmnt 设为 ~/encfsmnt.mp/new 的符号链接。如果卸载,则目录是写保护的;如果已安装,则目录是可写的。当然,如果您使用 cd 进入该目录,则此方法不起作用。

嗯,有趣的想法:如果 ~/encfsmnt 具有写入权但没有执行权,fusermount 是否可以工作?

答案2

正如所描述的这里,实现此目的的最直接方法是使目录不可变chattr +i /mountpoint

相关内容