macos通过gatekeeper限制非app store和未公证应用,可用终端命令精准管理:启用“任何来源”用sudo spctl --master-disable,对单个应用放行用xattr -d com.apple.quarantine,检查签名用codesign,验证gatekeeper用spctl --assess。

MacOS 默认限制非App Store和未公证应用的运行,核心控制机制是 Gatekeeper。终端命令可精准管理软件授权策略,不依赖图形界面,适合批量操作或脚本化部署。
启用“任何来源”全局授权
该命令恢复被系统隐藏的“任何来源”选项,允许所有已下载应用运行:
- 打开终端,输入:sudo spctl --master-disable
- 输入管理员密码(输入时无显示,凭记忆完成)
- 执行后前往「系统设置 → 隐私与安全性 → 安全性」,即可看到并勾选“任何来源”
- 如需关闭此策略,改用:sudo spctl --master-enable
对单个应用临时放行(推荐日常使用)
无需降低系统整体防护等级,仅针对特定.app文件解除拦截:
- 在终端中执行:xattr -d com.apple.quarantine /Applications/YourApp.app
- 将 YourApp.app 替换为实际路径,例如:/Downloads/Notion.app
- 路径含空格时需用引号包裹,如:"~/Downloads/My Tool.app"
- 执行后双击该应用即可直接启动,系统会记住信任状态
查看与重置应用的公证与签名状态
确认某个App是否通过Apple公证,或清除其权限缓存:
- 检查签名有效性:codesign --display --verbose=4 /Applications/AppName.app
- 验证Gatekeeper评估结果:spctl --assess --type execute /Applications/AppName.app
- 若返回“rejected”,说明被拦截;返回“accepted”表示已通过验证
- 重置某App的评估记录(强制重新检测):spctl --remove /Applications/AppName.app
批量管理多个应用的隔离属性
适用于从网页批量下载工具后统一放行的场景:
- 移除整个文件夹下所有.app的隔离标记:xattr -rd com.apple.quarantine ~/Downloads/Tools/
- 仅处理当前目录下所有.app:for app in *.app; do xattr -d com.apple.quarantine "$app"; done
- 执行前建议先用 ls *.app 确认目标范围,避免误操作











