Apple安全机制TCC
Apple安全机制TCC

Apple安全机制TCC

TCC 是 Apple macOS 系统中的一个安全机制,全称为:Transparency, Consent, and Control,中文常翻译为“透明性、同意与控制”。

TCC作用

TCC 是 macOS 用来管理隐私权限的系统框架,控制哪些 App 可以访问哪些系统资源或用户数据。

受 TCC 控制的权限包括

1、辅助功能(Accessibility);

2、屏幕录制(Screen Recording);

3、照片库(Photos);

4、麦克风(Microphone);

5、摄像头(Camera);

6、文件与文件夹访问(Documents, Downloads, Desktop, Removable volumes, etc.);

7、通讯录、日历、提醒事项等;

工作原理

当应用首次尝试访问某个受保护的资源时,macOS 会通过 TCC 拦截并弹出授权对话框,用户可以“允许”或者“拒绝”:

TCC 会将用户的选择保存在数据库中(即使之后删除 App,它也记得)。

数据存储位置

TCC 权限记录被保存在 SQLite 数据库中:

/Library/Application Support/com.apple.TCC/TCC.db   (系统级)
~/Library/Application Support/com.apple.TCC/TCC.db  (用户级)

可以用命令行工具 tccutil 或 sqlite3 来查看或重置权限(不推荐直接修改数据库)。

TCC 常见问题

1、辅助功能勾选不到 App

App 必须被“触发”一次(如调用 AXIsProcessTrusted()),系统才会识别它。

如果是通过 Xcode 运行的,需要在辅助功能中勾选 Xcode 和目标 App。

2、无法触发授权弹窗

某些权限不会主动弹窗(如辅助功能),必须提示用户去“系统设置”中勾选。

或者,使用检测代码弹出响应提示,例如检测“辅助功能”:

// 检测“辅助功能”的代码
let options = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as String: true] as CFDictionary
let isTrusted = AXIsProcessTrustedWithOptions(options)

但是,如果开启了App SandBox,则无法使用检测代码弹出提示

NSAppleEventsUsageDescription、NSCameraUsageDescription 等 Info.plist key 也需要填写,否则系统可能不会授权(根据Xcode版本而定)。

3、修改权限无效

权限被拒后,即使卸载重装 App,TCC 仍记得之前的选择。

需要 tccutil reset 或手动进入“系统设置”重置权限。

常用命令

1、重置某个权限(例如麦克风):

tccutil reset Microphone

2、重置某个 App 的所有权限(指定 bundle id):

tccutil reset All com.example.MyApp

总结

TCC 是 macOS 用来保护用户隐私的权限管理系统,控制 App 是否能访问敏感资源(如屏幕、麦克风、辅助功能等)。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注