为什么会出现这个警告?
macOS 使用一种名为 Gatekeeper 的安全机制来保护用户免受恶意软件的侵害。Gatekeeper 要求从互联网下载的应用程序必须使用 Apple 开发者证书签名。如果应用程序未经 Apple 签名或公证,macOS 会将其标记为「已损坏」。
OpenGnothia 是一个开源且免费的项目。Apple 开发者计划的会员费用为每年 99 美元,这对于由志愿者驱动的开源项目可能不可持续。因此,该应用程序目前未使用 Apple 证书签名。
这个警告并不意味着应用程序实际上已损坏或是恶意的。它是 macOS 对从互联网下载的每个未签名应用程序给出的标准安全警告。OpenGnothia 的源代码是完全公开的,可以在 GitHub 上查看。
什么是 macOS Gatekeeper?
Gatekeeper 是 macOS 内置的安全功能之一。自 macOS Catalina(10.15)以来,安全策略进一步收紧。Gatekeeper 在三个级别上运作:从 App Store 下载的应用(最受信任)、来自已识别开发者的签名应用,以及来自未知来源的应用。
当你从互联网下载文件时,macOS 会向文件添加一个名为 com.apple.quarantine 的特殊属性(扩展属性)。当应用首次打开时,Gatekeeper 会检查这个属性并评估应用程序的可信度。
对于未签名的应用,Gatekeeper 可能显示两种不同的警告:「无法打开 [应用],因为 Apple 无法检查其是否包含恶意软件」或更严重的「[应用] 已损坏,无法打开。你应该将它移到废纸篓。」第二种警告在 macOS Ventura 及更高版本中尤为常见。
解决方案:通过终端移除隔离属性
要修复此问题,你只需移除 macOS 添加到文件上的隔离属性。此操作是安全的,仅清除下载文件上的隔离标志。
步骤一:打开终端应用程序。按 Command + Space 打开 Spotlight,输入「Terminal」,然后按回车。
步骤二:将以下命令粘贴到终端中并按回车:
xattr -cr /Applications/OpenGnothia.app
如果你还没有将应用移动到应用程序文件夹,它仍在下载文件夹中,请使用以下命令:
xattr -cr ~/Downloads/OpenGnothia.app
步骤三:运行命令后,你可以正常打开 OpenGnothia。应用程序将正常工作,不会出现任何问题。
这个命令做了什么?
xattr 命令用于管理 macOS 中文件的扩展属性。以下是我们命令中各标志的含义:
-c 标志:清除文件上的所有扩展属性(clear)。这包括 com.apple.quarantine 属性。
-r 标志:将操作也应用于子文件夹(recursive)。一个 .app 文件实际上是一个文件夹结构,所以我们需要清除所有子文件。
这个命令只修改文件属性——它不影响应用程序本身或你的系统设置。使用它是完全安全的。
替代方法:系统设置
如果你不想使用终端,也可以尝试通过 macOS 系统设置解决问题,但这种方法可能并不总是有效。
步骤一:尝试打开 OpenGnothia 并收到警告。
步骤二:前往系统设置 > 隐私与安全性。
步骤三:在页面底部附近,你会看到类似「OpenGnothia 被阻止使用,因为它不是来自已识别的开发者」的消息。点击旁边的「仍要打开」按钮。
步骤四:会出现另一个确认对话框——点击「打开」。
注意:如果你收到的是「已损坏」的警告,此方法可能不起作用。在这种情况下,你需要使用终端方法。
常见问题
我运行了 xattr 命令但仍然无法打开,怎么办?请确保你使用了正确的文件路径。通过在终端中运行 ls /Applications/ 来验证 OpenGnothia.app 存在于该位置。同时确保你已将应用从 DMG 文件拖动到应用程序文件夹。
这安全吗?是的,xattr -cr 命令只移除文件上的隔离属性。它不会修改应用程序的代码或你的系统安全设置。OpenGnothia 是开源的,所有源代码都可以在 GitHub 上查看。
每次更新后都需要这样做吗?是的,每次你从互联网下载新版本时,macOS 都会添加新的隔离属性。所以你可能需要在每次更新后再次运行 xattr 命令。
这个问题在 Windows 或 Linux 上会出现吗?不会,这个问题是 macOS Gatekeeper 机制特有的。你不会在 Windows 或 Linux 上遇到这个警告。
