2.4 KiB
2.4 KiB
Gatekeeper
macOS 的安全机制,用于验证应用程序是否来自已识别的开发者可信来源。
Overview
Gatekeeper 是 macOS 的应用安全验证系统,旨在保护用户免受恶意软件的侵害。它会检查应用程序的来源和签名状态,拒绝运行未授权的软件。
How It Works
Gatekeeper 会在用户尝试运行从互联网下载的应用程序时触发验证流程:
- 检查应用是否来自 App Store
- 检查是否有有效的 Developer ID 签名
- 检查是否被标记为已隔离(quarantined)
Quarantine Attribute
macOS 使用扩展属性(Extended Attributes)来标记从互联网下载的文件:
com.apple.quarantine:标记文件来自互联网下载com.apple.metadata:包含下载来源 URL 等元数据
Removing Quarantine
# 递归移除 quarantine 属性(适用于目录)
xattr -rd com.apple.quarantine /path/to/application/
# 验证(无输出表示解除成功)
xattr /path/to/application/binary
# 查看 quarantine 状态
xattr -l /path/to/application/binary
Gatekeeper Modes
# 查看当前 Gatekeeper 状态
spctl --status
# 允许所有来源(不推荐,存在安全风险)
sudo spctl --master-disable
# 查看应用状态
spctl --assess --verbose /path/to/application
Use Cases
- Homebrew:安装后需解除 quarantine 才能运行
- FRP:从 GitHub 下载的二进制文件需解除限制
- 第三方工具:任何未签名的可执行文件
Security Considerations
| 方法 | 安全性 | 适用场景 |
|---|---|---|
| Developer ID 签名 | 最高 | 正式发布的软件 |
| App Store | 高 | 仅限 App Store 应用 |
| 解除 quarantine | 低 | 自托管工具/开发环境 |
Best Practices
- 仅对可信来源解除限制:如 GitHub Release 官方二进制文件
- 使用 -r 递归参数:确保目录内所有文件解除限制
- 验证文件完整性:下载后检查 SHA256 校验和
- 保持 Gatekeeper 开启:除非完全了解风险,否则不要禁用
Related Concepts
- launchd — macOS 服务管理器
- frp — 需要解除 Gatekeeper 才能运行
- Mac Mini M4 — 需要处理 Gatekeeper 问题
References
- Apple Support: Safely open apps on your Mac
man xattrman spctl