Mac双击软件提示“已损坏”实为com.apple.quarantine隔离标记所致,需用xattr命令清除;可单个处理、递归清理或批量扫描下载文件夹,最后可用Control+右键打开绕过Gatekeeper。

Mac双击刚下载的软件弹出“已损坏”或“来自身份不明的开发者”提示,不是文件真坏了,而是系统在它身上加了com.apple.quarantine隔离标记——这个标记像一张隐形封条,锁住了启动权限,必须用xattr命令亲手撕掉才能正常运行。
确认文件是否带隔离属性
别急着删,先看它有没有被标记。很多报错其实是误判,比如本地生成的脚本或内部工具根本没被加过隔离属性。
打开终端 → 输入xattr -l /路径/到/目标文件(例如xattr -l ~/Downloads/Telegram.dmg)→ 回车。
如果输出里压根没出现com.apple.quarantine这一行,说明问题不在隔离属性,不用往下执行xattr删除操作——继续折腾只会白费时间。
单个应用清除隔离属性(推荐新手)
适用于你只差一个App打不开的情况,操作精准、影响面小,不会波及其他文件。
方法一:拖拽法(零输错风险)
打开终端 → 输入sudo xattr -d com.apple.quarantine(注意末尾留一个空格)→ 不回车 → 在访达中找到该App(必须已在「应用程序」文件夹里)→ 直接把它拖进终端窗口 → 回车 → 输入管理员密码(屏幕无任何显示,凭感觉敲完直接回车)。
方法二:手动指定路径
终端中输入sudo xattr -d com.apple.quarantine "/Applications/Typora.app" → 【路径必须用英文双引号包裹,且以.app结尾,不能写成.app/】 → 回车 → 输密码。
这一步做完后,立刻双击试试。如果仍弹窗,说明该App是完整.app包,内部可执行文件可能还残留隔离属性,需用递归方式处理。
递归清除整个App包的隔离属性
有些App(如VS Code、Obsidian)启动失败,是因为xattr -d只清了.app外壳,没进到Contents/MacOS/子目录里删可执行文件的隔离标记——结果外壳放行了,内核一检查发现二进制文件还是“可疑”的,直接拒启。
第一步:打开终端
第二步:输入sudo xattr -r -d com.apple.quarantine(末尾留空格)
第三步:把App图标从访达拖进终端 → 路径自动补全 → 回车
第四步:输入管理员密码(【输错三次将锁定账户】)
命令执行后不报错即成功。此时再双击,95%以上的第三方App都能顺利启动。
批量清理下载文件夹里的隔离标记
如果你习惯把安装包先扔进「下载」文件夹,解压后再拖进应用程序,那每次下载新东西都会被重新打上隔离标签——手动一个个清太累,用find命令一口气扫光。
终端中执行:
find ~/Downloads -type f -exec xattr -d com.apple.quarantine {} \;
这条命令只清理普通文件(-type f),不会碰文件夹或.app包;它对.dmg/.pkg/.zip等安装介质有效,但【不处理.app包内部结构】。清理完,下次双击下载的PDF、压缩包或安装器,就不会再弹“是否打开?”灰色对话框。
绕过验证的终极保底操作
前四步都做了还是打不开?别卸载,这是Gatekeeper最后的拦截层,系统要求你当面点头确认。
在访达中找到那个App → 按住Control键不放,同时点击图标呼出右键菜单 → 选择【打开】→ 弹窗出现后,必须点右下角的【打开】按钮(Ventura及以上系统)或【仍要打开】(Monterey及更早)→ 点完立刻启动。
这个动作会向系统注册一次永久信任,此后双击直接运行,无需重复。











