在 OS X 10.8 中,Apple 引入了一项功能,使安装未签名的应用程序变得更加困难。通常,右键单击未签名的应用程序,选择Open
并确认出现的对话框即可。下次,此应用程序可以像任何已签名的应用程序一样启动。
我如何重置 OS X 对已确认应用程序的知识,以便它将拒绝下次启动它?
答案1
Gate Keeper 使用隔离这一功能已经存在一段时间了,在用户下载文件后会令他们感到烦恼。
您可以通过阅读文件的com.apple.quarantine
扩展属性。我在这里对一个从未启动过的.app
从下载的中复制的进行此操作.dmg
:
$ xattr -l Butler.app/
com.apple.quarantine: 0002;50697c0e;Safari;942183F8-A268-447B-AEAB-55CEA27DD911
第一个值是隔离状态(即有趣的部分)。其后是十六进制编码的 Unix 时间戳(在本例中:date -r 0x50697c0e
结果为Mo 1 Okt 2012 13:18:38 CEST
)、创建文件的应用程序的名称以及原始隔离项目的唯一标识符 (UUID)。提取的文件从其容器(在本例中为文件)继承最后一个标识符.dmg
。
扩展属性的第一部分是隔离状态。下载后从未打开过,该文件具有0002
,可能表示网络下载。
当您双击应用程序,但在要求确认时中止时,它是0022
(可能是为了记录未经批准的早期执行),而当您确认执行一次时,它是0062
。在这种情况下,之后不会再询问您。这看起来很像位字段的八进制或十六进制表示,第三个4
值位表示批准,第三个2
值位表示先前的执行。
通过在下载后将此值重置为原始状态,您可以重新启用 Gate Keeper 保护。只需在打开()后读取值xattr -p com.apple.quarantine <filename>
并将其替换为相同的值,而不包含“这已被批准”位(例如xattr -w com.apple.quarantine 0002;[rest of the previous value] <filename>
)。