EncFSGui:macOS上的加密文件系统GUI工具

EncFSGui是基于encfs和OSXFuse的macOS图形界面加密工具,支持创建和管理加密文件夹,通过GUI简化encfs操作流程,提供密钥链集成和自动挂载功能,实现文件级透明加密。

引言

三周前,我曾发表过一篇关于加密工具的抱怨文章,特别针对macOS平台缺乏用户友好的点击式文件加密工具。我列出了个人对这类工具的功能和技术标准,但行业似乎对此有不同看法。过去唯一符合我所有标准的工具BoxCryptor Classic已不再支持新版操作系统,取而代之的工具基于不同技术,移除了我认为值得付费的核心功能。

尽管多次在推特上讨论此问题,但未获得有效解决方案。鉴于整体反馈匮乏,我不确定这是否意味着什么。

2015年12月我决定重新学习C++,认为编写一个易于使用、功能完备且兼容现有系统(主要是OSX Yosemite和El Capitan)的工具将是个有趣的挑战。现在,我正式推出EncFSGui项目,项目仓库位于https://github.com/corelan/EncFSGui,包含源代码、Makefile和编译后的二进制文件。本项目为开源项目,但非免费软件。

工具介绍

EncFSGui是基于C++开发的macOS应用程序,使用wxWidgets框架构建GUI界面。该工具本质上是封装器,依赖系统上的特定二进制工具(默认未预装),通过传递参数调用这些工具并处理输出结果。核心依赖工具包括encfs和OSXFuse,同时使用mount、umount和expect等标准工具。为减少依赖,EncFSGui静态链接了wxWidgets和libcurl。

  • encfs:基于Fuse的免费加密文件系统,支持文件级透明加密/解密。仅同步修改的文件至云端,通过OSXFuse将加密文件夹挂载为明文卷使用。
  • OSXFuse:用户空间文件系统(Filesystem in Userspace)的macOS实现,允许非特权用户创建自定义文件系统,被encfs用于提供解密版文件系统功能。

EncFSGui作为封装器的优势在于:无需持续运行应用即可保持卷挂载状态,这与BoxCryptor Classic和EncFSMP等工具形成鲜明对比。

安装指南

当前安装过程包含四个步骤,未来将优化为一步式安装:

  1. 安装Homebrew
    需先安装gcc编译器(通过Xcode命令行工具)。终端执行以下命令:

    1
    2
    3
    
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    sudo chown -R $(whoami) /usr/local/lib
    brew doctor
    
  2. 安装OSXFuse
    从https://sourceforge.net/projects/osxfuse/files/下载最新版.dmg文件,运行安装包完成安装。

  3. 安装encfs
    通过Homebrew安装:

    1
    2
    3
    4
    5
    6
    
    brew update
    sudo chown -R $USER:admin /usr/local/include
    sudo chown -R $USER:admin /usr/local/lib/pkgconfig
    brew link xz libtool boost rlog
    brew doctor
    brew install homebrew/fuse/encfs
    

    验证安装:encfs --version

  4. 安装EncFSGui
    从https://github.com/corelan/EncFSGui/raw/master/release/EncFSGUI.dmg下载镜像,将应用拖入Applications文件夹。由于未经过Apple公证,需在系统偏好设置的"安全性与隐私"中手动授权运行。

技术细节

  • 配置存储于~/Library/Preferences/encfsgui Preferences的INI格式文件。
  • 临时脚本Tcreateencfs.exp生成于/var/folders/目录,用于处理encfs交互。
  • 不支持含引号的密码,卷名自动过滤空格和引号。
  • 启动时通过mount命令检测已挂载卷,运行时通过对象数组管理挂载状态。
  • 支持登录启动(通过~/Library/LaunchAgents/org.corelan.encfsgui.LaunchAtLogin.plist实现)。

使用指南

图形界面

首次启动显示主窗口和任务栏图标。底部状态栏显示配置卷数量,右侧显示encfs状态。若未检测到encfs,仅"设置"和"退出"按钮可用。

设置选项

  • 二进制路径配置(encfs、mount、umount)
  • 启动选项:登录启动、任务栏图标启动、退出时自动卸载卷、禁用退出确认、自动更新检查

创建加密文件夹

需指定:

  • 加密文件夹路径
  • 挂载点路径(明文卷位置)
  • 唯一卷名(禁用特殊字符)
  • EncFS配置文件(决定加密强度和性能)
  • 密码(可存储至登录钥匙串)
  • 挂载选项:启动时自动挂载、退出时防止卸载

创建过程通过expect脚本自动化,生成.encfs6.xml配置文件。

管理功能

  • 信息查看:通过encfsctl显示加密文件夹详情
  • 挂载/卸载:支持图形按钮和任务栏菜单操作,最多5次密码重试
  • 现有文件夹导入:验证.encfs6.xml文件后添加至管理列表
  • 卷编辑:已挂载卷可更新钥匙串密码和挂载选项;未挂载卷可修改卷名和挂载路径
  • 快速访问:通过"浏览"按钮或双击表格项打开挂载卷

常见问题

  1. 密码安全性:密码通过expect脚本传递,若需更高安全性建议手动使用encfs命令行
  2. 卸载失败:因依赖umount命令,可能存在已知卸载问题(参考OSXFuse挂载选项)
  3. 功能扩展:未来版本将增加OSXFuse挂载选项支持
  4. 技术反馈:欢迎通过GitHub参与项目改进

参与贡献

项目仓库包含完整开发环境设置说明。提交PR时请创建新分支,勿包含dmg文件。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计