系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

xattr

查看、写入和删除 macOS 扩展属性,处理隔离标记与来源元数据。

补充说明

扩展属性(EA)是挂在文件上的键值元数据,和权限位、时间戳相互独立。macOS 常见属性包括 com.apple.quarantine(下载隔离标记)、com.apple.metadata:kMDItemWhereFroms(来源 URL)、com.apple.FinderInfo(Finder 标志,固定 32 字节)和 com.apple.ResourceFork(资源分支)。Finder 的“显示简介”和 ls -l@ 都能看到这些属性的存在。Linux 使用 getfattr/setfattr 管理扩展属性,GNU 没有同名命令,属性命名和命名空间也不同。

基本形式:不带模式参数时列出属性名,-p 属性名 打印值,-w 属性名 值 写入字符串,-d 属性名 删除,-c 清空全部属性;-l 同时显示名称和值,-x 用十六进制显示或写入二进制值,-r 递归处理目录,-s 作用于符号链接本身。-w 默认把值当字符串,二进制数据要先转成十六进制。

删除 com.apple.quarantine 会让应用跳过首次打开的 Gatekeeper 提示,这是安全边界,只对确认可信的文件操作。清空全部属性还可能删掉 FinderInfo、来源信息和资源分支,导致应用签名校验或行为异常。ExFAT、FAT、SMB 不支持原生扩展属性,复制时可能生成 ._ 开头的 AppleDouble 文件。

常用示例

# 列出下载文件的所有扩展属性名
% xattr ~/Downloads/tool.zip

# 显示名称和值,查看隔离标记与来源
% xattr -l ~/Downloads/tool.zip

# 只读取 quarantine 的值
% xattr -p com.apple.quarantine ~/Downloads/tool.zip

# 确认文件可信后,递归移除应用的 quarantine 标记
% xattr -dr com.apple.quarantine ~/Applications/Trusted.app

# 写入自定义字符串属性
% xattr -w com.example.review draft ~/Documents/report.md

# 写入二进制值:先转成十六进制,再用 -x
% xattr -wx com.example.blob "$(xxd -p icon.bin | tr -d '\n')" ~/Documents/report.md

# 删除单个自定义属性
% xattr -d com.example.review ~/Documents/report.md

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. xattr -w 与 xattr -wx 写值的方式有何区别?
  2. 为什么不应随意执行 xattr -c 文件?
  3. 移除 com.apple.quarantine 会带来什么安全影响?
答案
  1. -w 按字符串写入,-wx 按十六进制解析二进制值。
  2. 它会删除全部属性,包括 FinderInfo、来源和 quarantine,可能改变应用行为。
  3. 文件首次打开时不再触发 Gatekeeper 隔离提示,降低了对未知来源文件的保护。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令