UrsaKit 稽核與控制 macOS Full Disk Access 的指南封面

macOS 上的每一種權限都有範圍。相機權限讓 App 看見相機;聯絡人權限讓它讀取你的聯絡人。Full Disk Access 不同:它一次移除某個應用程式的逐項保護,讓它能讀取 macOS 存在的目的就是要保護、不讓它讀取的資料。

這使它成為惡意、或只是過度積極的 AI agent 最想要的單一權限,也正是 Apple 要收緊相關規則的原因。本文說明這個權限真正的意義,以及如何在幾分鐘內完成稽核。

01Full Disk Access 實際上給了什麼

macOS 透過 TCC 系統(Transparency, Consent and Control)保護位置。沒有相關授權的 App 無法存取你的行事曆、聯絡人、照片、麥克風,以及其他 App 的容器。Full Disk Access 授予最強的一般豁免:App 可以讀取那些保護所涵蓋的檔案,包括郵件、訊息、Safari 瀏覽紀錄與 Time Machine 資料。

你可以從一般終端機看到這層保護:除非呼叫的行程本身就已有 Full Disk Access,否則連 TCC 儲存庫都無法讀取。

ls -la "$HOME/Library/Application Support/com.apple.TCC/"
# ls: Operation not permitted

那個錯誤就是重點。若某個 App 能讀取該目錄,它早已被交出了鑰匙。

FDA 不是「多一些文件夾」

它是全系統豁免,不是文件夾授權。有 FDA 的 App 通常能讀取其他應用程式的資料與你的通訊紀錄,遠遠超過它聲稱要執行的任務。

02Apple 為什麼現在要收緊

2026 年 10 月 2 日,Apple 開發者新聞發布〈Updates to Full Disk Access in macOS〉。Apple 表示,部分開發者使用 Full Disk Access 的方式會暴露系統上的一切——檔案、郵件、訊息與瀏覽紀錄——而用戶並未完全了解;對通訊類 App 而言,這也會侵害用戶交談對象的隱私。公告承諾推出額外控制,讓授予這項存取權必須經過非常明確的用戶動作,並明確以自主 AI agent 作為理由。

實際的結論是:在規則改變、App 開始要求重新批准之前,現在的授權清單值得先稽核一輪。

03稽核目前誰有存取權

  1. 打開權威清單。 系統設定 → 隱私權與安全性 → Full Disk Access。請逐項閱讀,不只是你記得加過的那些。
  2. 問每個 App 是否真的需要它。 備份、同步與磁碟工具確實需要;筆記、啟動器或聊天用戶端通常不需要。
  3. 檢查背景項目。 系統設定 → 一般 → 登入項目與擴充功能會列出自動啟動的東西,包括可能代表母 App 握有存取權的廠商 helper。
  4. 從終端機列出第三方 launch agent。
launchctl list | grep -v '^\s*-\?\s*[0-9-]*\s*com\.apple\.' | head -30
ls -la "$HOME/Library/LaunchAgents/" 2>/dev/null
  1. 每次大型 App 更新後重新檢查。 授權會在已簽章更新後保留,所以 App 可能在你當初批准較窄版本之後,取得新的能力。

記錄清單,之後比對

一張截圖或一段貼上的清單就夠。一個月後比對,會浮出你當初匆忙批准、後來忘掉的授權——廣大存取權正是這樣累積的。

04授予前先驗證 App

在打開開關前,先確認這個 App 究竟是什麼。兩個指令就能涵蓋大部分情況。

# 誰簽的?識別碼是什麼?
codesign -dv --verbose=2 /Applications/Example.app
# Identifier=com.example.app
# TeamIdentifier=ABCDE12345
# Authority=Developer ID Application: Example Inc (ABCDE12345)

# 是否已公證並通過 Gatekeeper?
spctl -a -vv /Applications/Example.app
# /Applications/Example.app: accepted

由已知開發者以穩定 Team ID 簽章的 App,與從論壇下載的未簽章 bundle,是完全不同的兩回事。若識別碼或團隊與你預期的廠商不符,就停在這裡。

05在不弄壞工具的前提下降低暴露

多數工作流一旦看清楚實際觸及的範圍,就不需要 Full Disk Access。更好的選項,大致依偏好排序:

目標優先採用原因
讀取單一項目文件夾檔案與文件夾權限,或從該目錄執行存取維持在範圍內
備份單一磁碟區專用備份工具加該磁碟區避免整顆磁碟的觸及範圍
執行 AI agent容器或獨立用戶帳號agent 無法升級到你整個家目錄
自動化指令碼逐文件夾授權,而非全系統豁免指令碼被攻陷時影響較小

對 agent 而言,隔離勝過權限管理。只能讀取正在處理之倉庫的沙箱 agent,不需要 Full Disk Access;即使它因提示注入被攻陷,影響半徑也只是一個項目,而不是你的訊息紀錄。

要撤銷存取,可在系統設定把 App 關掉,或從終端機清除它的所有隱私批准:

# 清除單一 bundle identifier 的所有隱私批准。
tccutil reset All com.example.app

06留意背景項目與 agent

當 Full Disk Access 藏在你看不見的東西後面時最危險。有兩種模式值得注意:繼承母 App 存取權的 helper 行程,以及你已解除安裝的 App 留下的 launch agent。兩者在可見的 App 關閉後都會繼續執行。

請每月檢視一次登入項目與擴充功能、檢查 ~/Library/LaunchAgents 是否有不認識的指令碼,並刪除不再使用之軟件的 agent。若你使用受管理的 Mac,IT 團隊可以用 root 權限集中稽核系統 TCC 儲存庫;但請勿在不是自己的機器上執行那些查詢——儲存庫含有敏感紀錄。

07常見錯誤與修正

錯誤為何失效修正
為了讓 App「不再詢問」而授予 FDA它會消音未來所有提示改用逐文件夾授權
批准了 helper,而非 App存取會綁到錯的 bundle檢查登入項目與確切 bundle id
以為更新會重置授權已簽章更新通常會保留大型更新後重新檢查
讓 agent 帶著 FDA 執行一次提示注入就能觸及一切沙箱化並限制掛載範圍
從不撤銷任何東西存取會無聲累積每季稽核並關掉舊 App

請記住這個心智模型:Full Disk Access 是對「用來限制 App 的系統」的豁免。只把它給那些工作本質上就是全系統的軟件,並讓你為其他一切打造的工具,跑在一個小到不必開口要它的邊界裡。

常見問題

Full Disk Access 實際上允許什麼?

它移除單一 App 的逐項隱私保護,讓它能讀取 macOS 平常守護的資料,包括郵件、訊息、Safari 瀏覽紀錄與其他 App 的資料。Apple 形容它大致繞過了標準控制。

Apple 為什麼要改 Full Disk Access?

Apple 表示,開發者正以讓用戶無法完全理解的方式使用它,暴露系統上的一切;而愈來愈有能力且自主的 AI agent 更提高了風險。要求非常明確用戶動作的額外控制即將推出。

我要怎麼看哪些 App 有 Full Disk Access?

打開系統設定 → 隱私權與安全性 → Full Disk Access。該清單是官方、面向用戶的權威紀錄;底層 TCC 資料庫受保護,一般行程無法讀取。

App 更新後還會保有 Full Disk Access 嗎?

授權綁定 App 的程式碼簽章,所以同一開發者以正確簽章發布的更新通常會保留授權。簽章身分改變的 App 會失去授權,這是提醒你重新檢查當初批准了什麼的好訊號。

我可以用命令列撤銷 Full Disk Access 嗎?

可以。`tccutil reset All <bundle-id>` 會清除該 App 的隱私批准。對單一 App 而言,在系統設定裡把開關關掉、再確認 App 停止運作通常更快。

返回文章列表

相關文章

相關工具