使用EncFS加密文件,以便特定用户或进程可以访问它们,但root无法访问

Jom*_*asi 5 filesystems security root encryption encfs

我有一个进程想要访问加密的文件系统。使用EncFS 可以很容易地做到这一点,但这需要用户安装加密的文件系统,因此向任何有权访问安装用户的用户提供对数据的访问权限,例如root。

是否可以让进程挂载文件系统,以便只有它才能访问数据?如果没有,是否有其他方法可以防止那些不知道密码的人访问数据?

phe*_*mer 4

Gilles说的是正确的,你无法阻止root访问挂载点。它可能无法直接访问安装(没有熔丝allow_other选项),但它始终可以切换到该用户。

但是,您可以做的是在进程将其当前工作目录更改为安装点后延迟卸载安装。一旦进程位于挂载点内,您就可以执行延迟卸载。这将阻止任何新进程访问安装点,但在其中运行的进程将继续具有访问权限。


例子

encfs /enc/source /enc/target
( cd /enc/target && some_long_running_process) &
fusermount -uz /enc/target
Run Code Online (Sandbox Code Playgroud)

some_long_running_process,并且它产生的任何子进程都将具有对挂载点的完全访问权限。但是,如果不是该进程的子进程的任何东西尝试访问挂载,它只会得到一个空目录。


请注意,有一个简短的窗口,其中安装点可用,其中其他内容可以将目录更改为该窗口,但如果编写脚本,则该窗口非常小。

另请注意,root 仍有几种方法可以访问挂载点,但它们并不简单,而且非常黑客化。