macOS「应用已损坏」警告:原因及修复方法

macOS「应用已损坏」警告:原因及修复方法

Apple macOS Gatekeeper4 分钟阅读

为什么会出现这个警告?

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 上遇到这个警告。