最近在折腾开发工具的时候,碰到个挺让人抓狂的情况:明明前几天还用得好好的软件,今天一点开,系统直接弹窗提示“已损坏”或者“恶意软件”,然后手起刀落直接给扔进了废纸篓。这其实不是软件真的有毒,而是 macOS 自带的安全机制在“作祟”。

为什么会发生这种情况?

macOS 安全机制示意图

macOS 安全机制 Gatekeeper 和 Xprotect 示意图

咱们用的 Mac 系统里有两个核心的保安,一个叫 Gatekeeper(门卫),一个叫 Xprotect(X 保护)。

  • Gatekeeper:它的主要工作是检查你下载的 App 是不是来自认证的开发者,有没有被篡改过。如果是一个刚发布或者没有 Apple 开发者签名的工具,它就会特别敏感。
  • Xprotect:这是一个默默运行的杀毒引擎,它会根据后台更新的病毒特征库来扫描文件。有时候,某些开发工具因为包含了网络请求或者特殊权限的操作,很容易触碰到系统的“红线”,导致误判。

尤其是现在很多好用的工具都是小团队或者个人开发的,还没来得及去弄那个昂贵的企业证书,被系统“误杀”简直是家常便饭。

终端解除隔离属性命令操作

使用终端命令移除 App 扩展属性

别慌,教你几招救回来

既然知道不是真的病毒,那我们就得想办法告诉系统:“这货我认识,让他进。”

方法一:最常用的“任何来源”大招(适用于大多数情况)

如果系统直接把文件删了,先去废纸篓把文件救回来,放到“应用程序”文件夹或者桌面上。

  1. 打开终端(快捷键:Command + 空格,输入“终端”回车)。
  2. 复制粘贴以下命令并回车(需要输入开机密码): sudo spctl --master-disable
  3. 这条命令的意思是开启“任何来源”选项。这时候你再去系统设置 -> 隐私与安全性,就会发现多了一个“任何来源”的选项,勾选上它。
  4. 再次右键点击那个被报毒的 App,选择“打开”,然后再点一次“打开”,通常就能正常运行了。

方法二:移除扩展属性(针对“已损坏”提示)

有时候 Gatekeeper 记录了你是从浏览器下载的,所以一直不放过你。我们可以手动抹掉这个标记。

  1. 同样打开终端
  2. 输入 xattr -cr (注意后面有个空格)。
  3. 直接把那个报毒的 App 图标拖进终端窗口里,终端会自动填入路径。
  4. 回车执行。
  5. 执行完后再双击打开 App,应该就能搞定了。

方法三:白名单放行(最稳妥)

如果你不想关闭 Gatekeeper 的整体保护,只想放行这一个软件,可以用这条命令。

  1. 终端输入:sudo xattr -rd com.apple.metadata:kMDItemWhereFroms (注意空格)
  2. 拖入 App 路径,回车。
  3. 接着输入:sudo spctl --add --label "Approved" (注意空格)
  4. 再次拖入 App 路径,回车。

这样就把这个软件加入到了信任列表里,以后更新的话可能需要重复操作,但安全性最高。

最后的安全提示

虽然这些方法能解决误报,但在执行“允许”操作时,心里要有底。前提是你确定这个软件是从官方渠道或者可信的社区下载的。如果是来源不明的可疑软件,系统报毒那就是真的在救你了。

为了安全起见,解压后的软件最好先在 VirusTotal 这类网站上查杀一下,确信无误了再运行。毕竟在这个工具满天飞的年代,数据安全还是第一位的。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭