toolguard-daemon-control

🚀 macOS 服务常驻,一行命令搞定

将任意可执行程序封装为 macOS launchd 用户级常驻服务,提供自动启停、崩溃重启和日志管理能力,无需 root 权限

收藏
3.4k
安装
1.4k
版本
0.0.1
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

toolguard-daemon-control 是一套面向 macOS 的 launchd 服务管理工具集,用于将任意可执行程序转化为持久运行的后台服务。全套工具包含 5 个 Bash 脚本,覆盖从服务创建到生命周期管理的完整流程:

| 脚本 | 功能 |
|------|------|
| `install.sh` | 创建 plist 配置并启动服务,支持自定义工作目录和环境变量 |
| `uninstall.sh` | 停止并移除服务,保留日志供审计 |
| `status.sh` | 查询服务状态,无参数时列出所有 managed 服务 |
| `logs.sh` | 查看 stdout/stderr 日志,支持 tail -f 实时追踪 |
| `list.sh` | 列出所有已安装服务及其运行状态 |

服务安装为 ~/Library/LaunchAgents/ai.toolguard.<name>.plist,以当前用户身份运行,日志写入 ~/Library/Logs/toolguard/<name>/。

显著优点

1. 零权限门槛:纯用户级操作,无需 sudo 或系统完整性保护 (SIP) 例外
2. 原生集成:直接调用 launchd,享受 macOS 标准的进程监控、资源管理和自动重启机制

3. 隔离命名空间:强制 ai.toolguard. 前缀,避免与系统服务或其他用户服务冲突

4. 运维友好:结构化日志目录、支持环境变量注入和工作目录定制,适配复杂应用部署

潜在局限

  • 平台锁定:仅适用于 macOS,Linux 用户需改用 systemd,Windows 需改用 Windows Service
  • Go 开发限制:launchd 无法直接执行 go run,必须预编译二进制或包装 shell 脚本
  • 非特权约束:用户级 launchd 无法绑定 1024 以下端口或执行需要 root 的操作
  • 日志轮转缺失:工具未内置日志切割,长期运行需依赖外部方案(如 newsyslog)

适合人群

  • macOS 开发者需要将开发服务器、代理工具或后台 worker 常驻运行
  • 追求"自托管"工具链的用户,希望用原生机制替代 Docker Desktop 或第三方守护进程管理器
  • 安全敏感场景,要求服务以最小权限(非 root)运行

常规风险

1. 命令注入:install.sh 直接将参数拼入 plist XML,若 service-name 或 command 包含特殊字符可能导致配置损坏或意外行为
2. 持久化后门风险:攻击者若获得用户 shell,可利用此工具建立隐蔽常驻服务

3. 资源泄漏:uninstall 不清理日志,长期累积可能占用磁盘;KeepAlive=true 的崩溃循环若未配置退避策略,可能引发 CPU/IO 风暴

4. 环境漂移:环境变量在 plist 中静态固化,后续 shell 配置变更不会同步到服务

toolguard-daemon-control 内容

scripts文件夹
手动下载zip · 6.0 kB
install.shtext/x-shellscript
请选择文件