现在来讲一下如何按照您的要求进行操作:
您所要求的是一个只读文件系统视图,通过它读取的任何文件都会自动加密:
~/
confidential/
secret_file.txt # Stored unencrypted
.enc_confidential/ # Read-only view of files in confidential/
secret_file.txt # Encrypted view of corresponding file
标准的做法是使用 FUSE(用户空间文件系统)。
对于您的用例,已经存在一个可以实现您想要的功能的 FUSE 文件系统,即 fuseflt
。 fuseflt
为每个读取的文件应用任意用户指定的过滤器,提供只读视图。
在您的情况下,您需要的过滤器是像 gpg
这样的加密程序。
请参阅 文档 了解如何编写配置文件。基本上,使用 flt_cmd = gpg --encrypt [... 您选择的加密设置]
作为过滤器命令。
请小心;如果配置出错,可能会将明文数据暴露给您的互联网服务。我建议您查看我关于一般用途的其他答案。
由于您还需要写入支持以使同步工作,看起来您将不得不编写自己的FUSE文件系统。修改
fuseflt
源代码以添加写入支持可能不难;只需填写未实现的写入函数即可。这将与读取支持相同,调用解密过滤器而不是加密过滤器。
有几个教程可供您编写FUSE文件系统。此外,还可以查看FUSE维基百科获取更多文档。
完成后,请将您的FUSE文件系统挂载命令添加到您的.profile文件中,以便在登录时自动挂载。