1. 背景說明
macOS 為了保護系統安全,內置了多個安全機制:
機制 | 作用 | 是否影響第三方 App |
---|---|---|
SIP (System Integrity Protection) | 保護系統關鍵文件/目錄不被篡改 | 高風險 App/驅動可能受限 |
Gatekeeper | 限制未簽名/未認證 App 運行 | 阻止“未知開發者” App |
文件隔離屬性 (Quarantine) | 下載文件打標,防止直接運行 | 下載的 App、壓縮包、DMG |
安全啟動 / 外部啟動限制 | 防止外部系統或驅動加載 | 僅 Apple Silicon 或 T2 芯片 |
關閉這些機制存在安全風險,僅在明確需求下操作,操作完成后建議恢復。
2. 檢查與關閉 SIP(System Integrity Protection)
2.1 檢查 SIP 狀態
在終端執行:
csrutil status
輸出示例:
System Integrity Protection status: enabled.
→ 已開啟System Integrity Protection status: disabled.
→ 已關閉System Integrity Protection status: partially disabled
→ 部分禁用
2.2 關閉 SIP(僅在 Recovery 模式操作)
重啟 Mac 并進入 Recovery 模式
Intel:開機時按
Command + R
Apple Silicon(M1/M2/M3):按住電源鍵直到出現啟動選項 → 選擇“選項” → 點擊“繼續”
打開 終端(頂部菜單 → 實用工具 → 終端)
執行命令:
csrutil disable
重啟系統
恢復 SIP:在 Recovery 模式下執行
csrutil enable
3. 關閉 Gatekeeper(允許任何來源 App 運行)
3.1 終端命令關閉 Gatekeeper
sudo spctl --master-disable
spctl --status # 應顯示:assessments disabled
3.2 系統設置驗證
系統設置 → 隱私與安全性
查看“允許從以下位置下載的 App”,應出現“任何來源”
3.3 右鍵打開繞過驗證
右鍵 App → “打開” → 會出現允許打開的提示
適用于單次啟動或測試
4. 清除文件隔離屬性(Quarantine)
查看文件屬性:
xattr /路徑/到/你的App.app
刪除 quarantine 屬性:
xattr -d com.apple.quarantine /路徑/到/你的App.app
清除所有拓展屬性(遞歸清理,適用于 App 包含子文件):
sudo xattr -cr "/Applications/Navicat Premium.app"
5. 重新簽名 App(繞過簽名驗證)
如果 App 被篡改或簽名損壞:
sudo codesign --force --deep --sign - "/Applications/Navicat Premium.app"
--force
:覆蓋原簽名--deep
:遞歸子文件-
:空簽名,跳過開發者驗證
6. 手動啟動查看報錯信息
在終端執行:
open -a "/Applications/Navicat Premium.app"
能在終端看到詳細報錯
用于判斷是否是權限、簽名、架構不兼容等問題
7. 檢查 App 包完整性
確認下載來源可靠,文件完整
.dmg
:重新掛載.zip
:用系統自帶 Archive Utility 解壓,確保完整查看 App 目錄結構:
ls -l "/Applications/Navicat Premium.app/Contents/MacOS/"
8. 處理 Apple Silicon / M 系列芯片兼容性問題
某些 Intel-only App 需通過 Rosetta 2 運行
安裝 Rosetta 2:
softwareupdate --install-rosetta
在 App → “顯示簡介” → 勾選“使用 Rosetta 打開”
9. 建議操作流程(排查 Navicat 示例)
# 1. 關閉 Gatekeeper
sudo spctl --master-disable
# 2. 清除 App 拓展屬性
sudo xattr -cr "/Applications/Navicat Premium.app"
# 3. 重新簽名 App
sudo codesign --force --deep --sign - "/Applications/Navicat Premium.app"
# 4. 用終端啟動
open -a "/Applications/Navicat Premium.app"
如果仍提示“文件已損壞”,可嘗試重新下載 App 或確認 Rosetta 兼容性。
10. 恢復安全機制(推薦)
操作完成后,盡量恢復安全機制:
# 恢復 Gatekeeper sudo spctl --master-enable
# 恢復 SIP(需要 Recovery 模式) csrutil enable
11. 總結
“文件已損壞”并不總是文件真的損壞,多數情況是 簽名或安全機制阻止
SIP 與 Gatekeeper 是兩個不同層次的保護
xattr 清除與 codesign 重新簽名是繞過驗證的常用方法
Apple Silicon 需考慮 Rosetta 兼容
安全機制關閉僅用于開發、調試或特定軟件需求,完成后建議恢復