MacOS 安全機制與“文件已損壞”排查完整指南

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 模式操作)

  1. 重啟 Mac 并進入 Recovery 模式

    • Intel:開機時按 Command + R

    • Apple Silicon(M1/M2/M3):按住電源鍵直到出現啟動選項 → 選擇“選項” → 點擊“繼續”

  2. 打開 終端(頂部菜單 → 實用工具 → 終端)

  3. 執行命令:

    csrutil disable
  4. 重啟系統

恢復 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 兼容

  • 安全機制關閉僅用于開發、調試或特定軟件需求,完成后建議恢復

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93769.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

package.json文件中的devDependencies和dependencies對象有什么區別?

前端項目的package.json文件中,dependencies和devDependencies對象都用于指定項目所依賴的軟件包,但它們在項目的開發和生產環境中的使用有所不同。1.dependencies:dependencies是指定項目在生產環境中運行所需要的依賴項。這些依賴項通常包括…

【最新版】CRMEB Pro版v3.4系統源碼全開源+PC端+uniapp前端+搭建教程

一.系統介紹 crmebPro版 v3.4正式發布,智能任務推送、動態標簽管理、商城AI生產力,煥然一新,不負期待!頁面DIY設計功能全面升級,組件更豐富,樣式設計更全面;移動端商家管理,讓商城管…

AI 浪潮下 IT 從業者的職業展望:替代之惑與轉型之道

一、引言1.1 科技變革的浪潮:AI 崛起與 IT 行業震蕩在當今科技飛速發展的時代,人工智能(AI)無疑是最具影響力的變革力量之一。從實驗室的前沿研究到廣泛的商業應用,AI 以驚人的速度滲透到各個領域,徹底改變…

DSP音頻算法移植優化工程師實戰

以下以音頻FIR濾波器算法為例,完整演示從MATLAB原型 → Python驗證 → TI DSP C語言移植優化的全流程,包含關鍵代碼和優化技巧:關鍵優化技術解析: 內存訪問優化使用#pragma DATA_ALIGN確保64位對齊(滿足LDDW指令要求&a…

Spark 運行流程核心組件(三)任務執行

一、啟動模式 1、standalone資源申請:Driver向Master申請Executor資源Executor啟動:Master調度Worker啟動Executor注冊通信:Executor直接向Driver注冊 2、YARNDriver向YARN ResourceManager(RM)申請AM容器RM分配NodeManager(NM)啟動AM&#x…

rabbitmq發送的延遲消息時間過長就立即消費了

RabbitMQ延遲消息在設置過長時間后被立即消費的問題,通常與以下原因有關: TTL限制問題 RabbitMQ對消息TTL(Time To Live)有32位整數限制(0-4294967295毫秒),約49.7天。超過該值的延遲時間會導致消息立即被消費解決方案:確保設置的…

kafka的pull的依據

1. 每次 pull() 是否必須在提交上一批消息的 offset 之后?絕對不需要! 提交 offset 和調用 poll() (拉取消息) 是兩個完全獨立的行為。消費者可以連續調用 poll() 多次,期間完全不提交任何 offset。 這是 Kafka 消費者的正常工作模式。提交 o…

學習嵌入式的第二十一天——數據結構——鏈表

單向鏈表特點:存儲的內存空間不連續 。為了彌補順序存儲存劣勢。優勢 插入,刪除 O(1) 動態存儲 ,在程序運行期間決定大小。劣勢: 不能隨機訪問 O(N) 節點-> 數據域指針域 順序表(數組) 只有數據域鏈表的操作代碼&#xff1…

Rust Web 全棧開發(十三):發布

Rust Web 全棧開發(十三):發布Rust Web 全棧開發(十三):發布發布 teacher_service發布 svr測試 teacher_service 和 svr發布 wasm-client測試 wasm-clientRust Web 全棧開發(十三)&a…

Zephyr 中的 bt_le_per_adv_set_data 函數的介紹和應用方法

目錄 概述 1 函數接口介紹 1.1 函數原型 1.2 功能詳解 2 使用方法 2.1 創建流程 2.1.1 創建擴展廣播實例 2.1.2 設置周期性廣播數據 2.1.3 配置周期性廣播參數 2.1.4 啟動廣播 2.2 主流程函數 2.3 關鍵配置 (prj.conf) 3 高級用法 3.1 大數據分片傳輸 3.2 動態數…

Ansible 角色管理指南

Ansible 角色管理指南 實驗環境設置 以下命令用于準備實驗環境,創建一個工作目錄并配置基本的Ansible設置: # 創建web工作目錄并進入 [azurewhiskycontroller ~]$ mkdir web && cd web# 創建Ansible配置文件 [azurewhiskycontroller web]$ cat &…

【補充】數據庫中有關系統編碼和校驗規則的簡述

一、字符集和校驗規則1.創建數據庫案例數據庫創建方法:使用CREATE DATABASE語句創建數據庫字符集指定方式:通過CHARACTER SETutf8指定數據庫編碼格式默認配置說明:未指定字符集時默認使用utf8和utf8_general_ci配置文件位置&…

計算機網絡 HTTP1.1、HTTP2、HTTP3 的核心對比及性能分析

以下是 HTTP/1.1、HTTP/2、HTTP/3 的核心對比及性能分析,重點關注 HTTP/3 的性能優勢:📊 HTTP 協議演進對比表特性HTTP/1.1 (1997)HTTP/2 (2015)HTTP/3 (2022)傳輸層協議TCPTCPQUIC (基于 UDP)連接建立TCP 三次握手 TLS 握手 (高延遲)同 HTT…

【計算機視覺與深度學習實戰】07基于Hough變換的答題卡識別技術:原理、實現與生物識別拓展(有完整代碼)

1. 引言 在人工智能和計算機視覺快速發展的今天,自動化圖像識別技術已經滲透到社會生活的各個角落。從工業質檢到醫學影像分析,從自動駕駛到教育評估,計算機視覺技術正在重塑我們與數字世界的交互方式。在這眾多應用中,答題卡識別技術作為教育信息化的重要組成部分,承載著…

《WASM驅動本地PDF與Excel預覽組件的深度實踐》

WASM為何能成為本地文件解析的核心載體,首先需要跳出“前端只能處理輕量任務”的固有認知,從“性能與兼容性平衡”的角度切入。PDF與Excel這類文件格式的解析,本質是對復雜二進制數據的解碼與重構——PDF包含嵌套的對象結構、字體渲染規則和矢量圖形描述,Excel則涉及單元格…

Oracle Free 實例重裝系統操作指南

之前申請了兩臺 x86 架構的 Oracle 機器,偶爾用來部署開源項目測試,有一臺在測試 SSH 相關功能時 “變磚”,網上看重裝系統發現很繁瑣就沒去打理,近期又想到這個機器,發現去年就有了官方重裝方法,簡單配置下…

Linux 基礎指令與權限管理

一、Linux 操作系統概述1.1 操作系統的核心價值操作系統的本質是 "使計算機更好用"。它作為用戶與硬件之間的中間層,負責內存管理、進程調度、文件系統管理和設備驅動管理等核心功能,讓用戶無需直接操作硬件即可完成復雜任務。在服務器領域&am…

深度學習-167-MCP技術之工具函數的設計及注冊到MCP服務器的兩種方式

文章目錄 1 MCP協議概述 1.1 MCP的原理 1.2 兩種主要的通信模式 2 工具函數的設計與實現 2.1 tools.py(工具函數) 2.2 工具函數的設計原則 2.3 工具函數的測試 3 MCP服務器的構建與配置 3.1 安裝mcp庫 3.2 main.py(MCP服務器) 3.2.1 方式一(add_tool方法) 3.2.2 方式二(@mcp.to…

哈希:兩數之和

問題描述:在一個整數數組中,找到兩數之和為target的兩個值,返回找到的兩個值的下標。 nums[3,3] target6 返回:[0,1] 說明:返回結果,索引無順序要求;有唯一的答案;不能使用兩次相…

PHP反序列化的CTF題目環境和做題復現第5集_POP鏈構造4

1 題目 下載yii2.0.37版本,https://github.com/yiisoft/yii2/releases/tag/2.0.37 放在phpstudy的www目錄下或ubuntu的/var/www/html的目錄下。 3 EXP <?php namespace PHPUnit\Framework\MockObject{class MockTrait {private $classCode = "system(whoami);php…