# Gatekeeper > macOS 的安全机制,用于验证应用程序是否来自已识别的开发者可信来源。 ## Overview Gatekeeper 是 macOS 的应用安全验证系统,旨在保护用户免受恶意软件的侵害。它会检查应用程序的来源和签名状态,拒绝运行未授权的软件。 ## How It Works Gatekeeper 会在用户尝试运行从互联网下载的应用程序时触发验证流程: 1. 检查应用是否来自 App Store 2. 检查是否有有效的 Developer ID 签名 3. 检查是否被标记为已隔离(quarantined) ## Quarantine Attribute macOS 使用扩展属性(Extended Attributes)来标记从互联网下载的文件: - `com.apple.quarantine`:标记文件来自互联网下载 - `com.apple.metadata`:包含下载来源 URL 等元数据 ## Removing Quarantine ```bash # 递归移除 quarantine 属性(适用于目录) xattr -rd com.apple.quarantine /path/to/application/ # 验证(无输出表示解除成功) xattr /path/to/application/binary # 查看 quarantine 状态 xattr -l /path/to/application/binary ``` ## Gatekeeper Modes ```bash # 查看当前 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 1. **仅对可信来源解除限制**:如 GitHub Release 官方二进制文件 2. **使用 -r 递归参数**:确保目录内所有文件解除限制 3. **验证文件完整性**:下载后检查 SHA256 校验和 4. **保持 Gatekeeper 开启**:除非完全了解风险,否则不要禁用 ## Related Concepts - [[launchd]] — macOS 服务管理器 - [[frp]] — 需要解除 Gatekeeper 才能运行 - [[Mac Mini M4]] — 需要处理 Gatekeeper 问题 ## References - Apple Support: Safely open apps on your Mac - `man xattr` - `man spctl`