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
2
3
4
5
6
cd /Applications 

# app存在特殊空格则"xx"
xattr -dr com.apple.quarantine "Fiddler Everywhere.app"

xattr -dr com.apple.quarantine Camoufox.app

参数:

参数 含义
-d 删除属性
-r 递归处理 bundle 内全部文件

因为 .app 本质是目录:

1
2
3
4
Camoufox.app/
├── Contents/
├── MacOS/
├── Frameworks/

如果不递归:

  • 内部 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