mac下dmg去掉.dmg包属性(xattr)
macOS 的 xattr 是 Extended Attributes(扩展属性)工具,用于查看、设置、删除文件的元数据,com.apple.quarantine 是 macOS Gatekeeper 使用的隔离属性。
当你从浏览器、AirDrop、IM、邮件等下载 App 时,系统会自动打com.apple.quarantine
首次运行时会触发:
- “来自未知开发者”
- “已损坏,无法打开”
- Gatekeeper 校验
- notarization 校验
xattr参数解释
-p 含义(print)
1 | xattr -p com.apple.quarantine <file> |
等价于:
print attribute
用于:
- 读取某个扩展属性值
- 打印属性内容
- 不修改文件
例如:
1 | xattr -p com.apple.quarantine Camoufox.app |
输出可能是:
1 | 0081;6821f8c5;Safari;A1B2C3D4... |
字段通常表示:
| 字段 | 含义 |
|---|---|
| 0081 | quarantine flags |
| 时间戳 | 下载时间 |
| Safari | 来源应用 |
| UUID | 下载事件ID |
-d 含义(delete)
1 | xattr -d com.apple.quarantine <file> |
等价于:
delete attribute
用于:
- 删除扩展属性
- 去除 quarantine 标记
- 绕过 Gatekeeper 首次校验
例如:
1 | xattr -d com.apple.quarantine Camoufox.app |
执行后:
1 | xattr -p com.apple.quarantine Camoufox.app |
-dr递归删除(最常用)
对于 .app 包:
1 | cd /Applications |
参数:
| 参数 | 含义 |
|---|---|
| -d | 删除属性 |
| -r | 递归处理 bundle 内全部文件 |
因为 .app 本质是目录:
1 | Camoufox.app/ |
如果不递归:
- 内部 dylib
- Framework
- executable
仍可能带 quarantine。
xattr常见配合命令
1.查看全部扩展属性
1 | xattr Camoufox.app |
2.查看详细值
1 | xattr -l Camoufox.app |
3.删除全部扩展属性(危险)
1 | xattr -c Camoufox.app |
-c:
clear all xattrs
会清空所有扩展属性。
4.推荐处理dmg属性
针对你当前的 Camoufox:
1 | sudo xattr -dr com.apple.quarantine /Applications/Camoufox.app |
然后:
1 | codesign --verify --deep --strict /Applications/Camoufox.app |
再启动:
1 | open /Applications/Camoufox.app |