本篇文章更新時間:2026/04/11
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
macOS 隱私權設定其實不可靠?深入解析一場讓人意外的 TCC 真相
編輯前言:這篇來自《Why you can’t trust Privacy & Security》的文章,點破了 macOS 上一個多年來被理所當然接受的迷思:系統顯示的資料夾權限,不等於應用程式真正受到的限制。
核心觀點 (Key Takeaways)
- macOS「隱私權與安全性」中的 Files & Folders 權限顯示可能不反映實際狀態。
- 只要使用者透過 Open/Save Panel 表達「意圖」,TCC 就可能給予持久性存取權限,即使介面上顯示已被關閉。
- 唯一能真正收回權限的方法是使用
tccutil reset All [appID]並重新開機。
深入解析
這篇文章透過作者自製的測試工具 Insent,清楚展示了 macOS 中 TCC(Transparency, Consent, and Control)系統在處理權限時的矛盾。看似嚴密的設計,其實存在一個「介面顯示 ≠ 實際權限」的斷層。
1. 權限的取得方式不同,結果也不同
Insent 的兩個功能揭露了關鍵差異:
- Open by consent:直接存取 Documents 時,系統會彈出 TCC 同意提示。
- Open from folder:透過 Open/Save Panel 由使用者選取資料夾,TCC 視為「使用者意圖」,直接放行而不需任何額外確認。
這裡的關鍵是:
使用者在 Open/Save Panel 中選取資料夾,被視為足夠的授權行為。
也就是說,只要你曾經從一個受保護的資料夾中「開啟」某個檔案,TCC 就會放寬 sandbox 限制,讓該 app 對該資料夾擁有完全存取。
2. 最驚人之處:權限會永久有效
作者證實:
- 即使在「隱私權與安全性」設定中手動關閉存取權限,Insent 仍然能完整讀取 Documents。
- TCC 記錄中顯示該 app 的權限已經移除,但 sandbox 行為卻不會跟著更新。
某段操作流程尤其關鍵:
- 使用者先同意一次存取。
- 手動撤銷權限。
- 再透過 Open/Save Panel 表達「意圖」。
結果是:
介面顯示拒絕,但 app 已永久取得該資料夾的存取能力。
這是一個典型的「設定畫面讓你以為權限被關閉,實際上並沒有」的案例。
3. 為什麼會這樣?
文章指出問題出在 sandbox 與 TCC 的整合方式。
- TCC 控制「是否允許存取」。
- sandbox 控制「是否攔截檔案系統操作」。
然而:
- 一旦使用者透過 Open Panel 表達意圖,sandbox 不再攔截相關資料夾。
- TCC 的介面並不會顯示 sandbox 的實際狀態。
簡單說:
sandbox 的解除比 TCC 的顯示更優先。
筆者心得與啟發
這篇文章讓我重新思考一件事:我們對 macOS 安全模型的信任,很多時候是建立在「介面看起來很安全」的幻覺上,而不是實際邏輯。
我認為最值得警惕的是:
- 使用者只需一次在 Open/Save Panel 裡選到某個受保護資料夾,該 app 就可能取得長期、持久的權限。
- 介面顯示的權限狀態甚至可能是錯的。
從實際應用面來看,我會建議:
- 不要讓任何不熟悉或不信任的 app 呼叫 Open/Save Panel 開啟受保護的資料夾。
- 若懷疑 app 權限異常,務必使用
tccutil reset並重新開機。 - 對 Files & Folders 列表保持懷疑,它不一定反映真實權限狀態。
這篇文章最後提到,這個機制或許不是惡意設計,但無意間造成了非常微妙的「權限陷阱」。對於以為自己鎖死文稿、桌面或下載資料夾的人來說,這確實是一個需要警覺的現象。
