🏗️ 项目结构
PasswordReset/
├── main.go # 程序入口,CLI 参数解析与分发
│
├── cmd/ # 命令行命令实现
│ ├── checker.go # 系统要求检查公共入口
│ ├── checker_linux.go # Linux root 权限检查 (build tag: linux)
│ ├── checker_windows.go # Windows 管理员权限检查 (build tag: windows)
│ ├── setup.go # 运行环境初始化
│ └── user.go # 用户添加/列出/删除命令
│
├── config/ # 配置管理与加密
│ ├── builtin_key.go # 内置私钥(编译时 -ldflags 注入)⭐
│ ├── secret_key.go # 用户安全key加密存储与加载 ⭐
│ ├── crypto.go # AES-256-GCM 加解密 + SHA256 密钥派生 ⭐
│ ├── file.go # 用户配置文件读写(确定性 SHA256 文件名)
│ ├── key.go # Master Key 生成/保存/加载
│ ├── secure_key.go # SecureKeyManager(缓存、轮换、清理)
│ ├── secure_key_linux.go # Linux 平台密钥存储 (build tag: linux)
│ └── secure_key_windows.go # Windows 平台密钥存储 (build tag: windows)
│
├── password/ # 系统密码操作
│ └── password.go # 密码生成与修改(chpasswd stdin 管道)
│
├── env/ # 环境变量配置
│ └── env.go # 统一读取环境变量配置
│
├── sudo/ # 免密sudo配置(仅 Linux)
│ ├── sudo.go # 配置器定义
│ ├── configure.go # 配置免密sudo
│ ├── revoke.go # 撤销免密sudo
│ └── sudo_stub.go # 非 Linux 平台桩代码
│
├── service/ # 服务管理与运行引擎
│ ├── runner.go # 运行器(异常恢复核心引擎)⭐
│ ├── commands.go # 服务管理命令打印
│ ├── cp.go # 自复制与文件校验
│ ├── systemd.go # Linux systemd timer + oneshot 服务
│ ├── WindowsService.go # Windows SC 服务
│ ├── manager_linux.go # Linux 服务安装/卸载
│ └── manager_windows.go # Windows 服务安装/卸载
│
├── user/ # 用户管理
│ ├── manager.go # 用户管理器(异常隔离、ENC 解密与重加密)⭐
│ ├── List.go # 系统用户列表
│ └── UserExists.go # 用户存在性检查
│
├── docs/ # VitePress 产品官网源文件
│ ├── .vitepress/ # VitePress 配置
│ ├── public/ # 静态资源
│ ├── index.md # 产品首页
│ ├── guide/ # 用户指南
│ └── security/ # 安全架构
│
├── client/ # 编译产物
├── build.py # Python 跨平台构建脚本
├── go.mod / go.sum # Go 模块依赖
└── README.md # 项目说明文档⭐ 标记的文件是 v2.0 新增或重构的核心文件
关键模块说明
config 包 — 加密与配置
v2.0 的核心安全逻辑所在。builtin_key.go 和 secret_key.go 实现了三层密钥体系的前两层;crypto.go 在已有 AES-256-GCM 基础上新增了日期派生密钥的组件加密功能。
user 包 — 密码重置引擎
manager.go 中的 processSingleUser 方法是每日密码重置的核心入口:解密 ENC → 拼接日期 → 设密码 → 重新加密 → 保存配置。
service 包 — 高可用保障
runner.go 实现了 5 层异常恢复体系,确保密码重置服务持续可用。