引言
三周前,我曾发表过一篇关于加密工具的抱怨文章,特别针对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等工具形成鲜明对比。
安装指南
当前安装过程包含四个步骤,未来将优化为一步式安装:
-
安装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
-
安装OSXFuse
从https://sourceforge.net/projects/osxfuse/files/下载最新版.dmg文件,运行安装包完成安装。 -
安装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
-
安装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
文件后添加至管理列表 - 卷编辑:已挂载卷可更新钥匙串密码和挂载选项;未挂载卷可修改卷名和挂载路径
- 快速访问:通过"浏览"按钮或双击表格项打开挂载卷
常见问题
- 密码安全性:密码通过expect脚本传递,若需更高安全性建议手动使用encfs命令行
- 卸载失败:因依赖umount命令,可能存在已知卸载问题(参考OSXFuse挂载选项)
- 功能扩展:未来版本将增加OSXFuse挂载选项支持
- 技术反馈:欢迎通过GitHub参与项目改进
参与贡献
项目仓库包含完整开发环境设置说明。提交PR时请创建新分支,勿包含dmg文件。