验证homebrew cask应用签名即检查是否被gatekeeper信任,用codesign --verify无输出表示有效;xattr -l可区分隔离标记与签名问题;系统应用需查真实路径并确认authority为apple签名。
验证 homebrew cask 安装的应用签名,本质是检查它是否被 macos gatekeeper 接受——不是看“有没有签名”,而是看“签名是否有效、未被篡改、且被系统信任”。终端一条命令就能快速得出结论,无需第三方工具。
用 codesign 快速验签(推荐)
这是最直接可靠的方式,分两步判断:
-
只看结果是否正常:运行
codesign --verify --verbose "/Applications/应用名.app"
无任何输出 → 签名有效、文件完整;
报错如 code object is not signed 或 invalid signature → 未签名、签名损坏或证书不可信。 -
查看详细信息:运行
codesign -dv --verbose=4 "/Applications/应用名.app"
重点关注三项:
→ valid on disk: yes 表示文件没被修改、签名完好;
→ Authority: 显示签发者,如 Developer ID Application: XXX LLC 或 Apple Distribution;若为 unidentified developer 或为空,说明签名无效;
→ Notarized: yes 表示已通过苹果公证,macOS Ventura 及更新系统对未公证的 Intel 应用默认拦截。
先排除“只是被下载标记拦住”
很多提示“打不开”的情况,其实和签名无关,只是系统加了隔离属性。先确认这点再深入验签:
- 运行:xattr -l /Applications/应用名.app
如果输出里有 com.apple.quarantine,说明只是被标记为“从网上下载”,不是签名失效。 - 这种情况下,右键应用图标 → “打开” → 点“仍要打开”,即可绕过,后续双击就能启动。
验证系统预装应用需注意路径
Finder、Safari 这类不在 /Applications,而在 /System/Applications 或 /System/Library/CoreServices:
- 先查真实路径:ps aux | grep -i "Safari.app" | head -1 | awk '{print $11}'
- 再用完整路径验签:codesign -dv --verbose=4 "/System/Applications/Safari.app"
系统应用 Authority 应为 Apple Mac OS Application Signing,且 valid on disk 必须是 yes;否则可能 SIP 被禁用或系统异常。
批量检查几个常用应用
一次对比多个关键应用,方便发现异常:
- 运行:for app in "/Applications/Safari.app" "/Applications/TextEdit.app" "/Applications/Visual Studio Code.app"; do echo "== $(basename "$app") =="; codesign -dv --verbose=2 "$app" 2>/dev/null | grep -E "(Authority|Notarized|valid on disk)"; echo; done
- 该命令跳过无签名或路径错误的应用,只提取核心字段,清晰直观。











