打不开的 app 先查隔离标记与签名

**从网络/聊天工具下载来的 `.app` 带着 `com.apple.quarantine` 扩展属性,若它又只有 ad-hoc 签名(严格签名校验不通过),就会被 Gatekeeper 拦下,表现为「无法打开 / 来源不明 / 已损坏」。** 解除隔离标记即可启动:

```bash

xattr -dr com.apple.quarantine "/path/to/App.app" open "/path/to/App.app"


## 那四行命令里,真正起作用的是第三步

```bash
mkdir -p "$HOME/Applications"                              # 1 保证目标目录存在
ditto "/Applications/X.app" "$HOME/Applications/X.app"     # 2 复制一份到用户目录
xattr -dr com.apple.quarantine "$HOME/Applications/X.app"  # 3 解除隔离 ← 关键
open "$HOME/Applications/X.app"                            # 4 启动
  • 复制不是必须的,直接对 /Applications 里的原件执行 xattr -dr + open 也行。复制只是为了避开系统目录权限、并保留一份原件。
  • 用 ditto 而不是 cp,是因为 .app 本质是 App Bundle 目录,ditto 能保留权限、符号链接与扩展属性。
  • 所以「只执行后两步打不开」的原因很简单:如果副本还没被创建,第 3、4 步操作的就是一个不存在的路径。

风险与边界

  • 解除隔离绕过了一部分 macOS 安全检查,只对来源可信、确定没被篡改的 app 做。
  • 它修不了真正损坏、架构不兼容或签名有严重问题的 app —— 只是移除了「下载隔离」这一个障碍。
  • 用 xattr -l <app> 能看到隔离属性及其来源(例如 WeChat);对比两个副本的隔离状态可以直接定位差异。

相关