术语表/你会看到的进程

tccd

又称:隐私权限

简要回答

tccd是管理隐私权限的macOS进程:哪些App可以使用摄像头、麦克风、录屏、你的文件和文件夹、通讯录、完全磁盘访问权限和辅助功能。TCC是Transparency, Consent and Control(透明、同意与控制)的缩写,每一个“想要访问”提示背后都是这套系统。

每当App要使用受保护的内容时,macOS都会问tccd是否允许。tccd把答案存在一个数据库中,还没有答案时就显示权限提示。你在“系统设置”→“隐私与安全性”中打开和关闭的,就是tccd的数据库。

它有两个实例:一个为你自己的账户服务,一个为系统服务。两者平时都处于闲置状态,几乎没有开销。

tccd为什么占用这么多CPU

某个App在一遍又一遍地请求权限,常见原因是被拒绝后不停尝试,或者更新后签名与tccd批准时的不再一致。最常见的是录屏和辅助功能权限。

较少见的情况是,迁移或中断的更新后权限数据库出了问题,tccd一直读取失败。

如何解决

打开“系统设置”→“隐私与安全性”,找到App需要的权限,把开关关掉再打开;或者用减号按钮把App从列表中移除,让它重新请求。

要为所有App重设某一项权限,可以在“终端”中使用tccutil reset加上服务名称,例如tccutil reset ScreenCapture。App下次需要时会重新请求。

如何查看是哪个App一直在询问tccd

tccd忙的时候,真正该问的是:谁在请求什么?它自己的日志会把这两点都告诉你。

  1. 打开活动监视器,选取“显示”→“所有进程”,然后在搜索栏中输入tccd。“用户”列中,系统实例显示为root,你的实例显示为你的用户名。记下是哪一个在占用CPU。
  2. 打开“终端”并运行log stream --predicate 'process == "tccd" AND eventMessage CONTAINS "AUTHREQ"'。按下Control-C停止。
  3. 阅读反复出现的行。service=是权限名称,例如kTCCServiceScreenCapture;identifier=是App名称,例如com.example.app。
  4. 看结果行中的authValue=。0表示拒绝,2表示允许。一次又一次得到0的App,就是那个循环。
  5. 只为那个App重设那一项权限。服务名称中kTCCService之后的部分就是tccutil需要的参数,所以tccutil reset ScreenCapture com.example.app只会清除该App的这一项结果,tccutil reset All com.example.app则会清除它的所有权限。
  6. 再次打开这个App并回应它的提示,或者在“系统设置”→“隐私与安全性”中授予权限。

tccd的正常占用与异常情况

正常:接近零,每当有App请求受保护的内容时,会小小地跳一下。App请求得很频繁,但大多数回答都是瞬间从数据库中取出的。

值得检查:tccd连续几分钟出现在CPU列表中,或者你已经授予的权限仍在反复询问。常见原因有:

  • 某个App更新过或重新签过名,tccd不再把它认作你批准过的那个App。
  • 你拒绝过的App仍在不停地请求。
  • 迁移时权限数据库没有被完整地迁移过来。

为什么授予的权限不起作用

有些权限只在App启动时才会生效,常见的是“录屏”和“完全磁盘访问权限”:打开它们时,macOS会提示你退出并重新打开App。如果你选择“以后”,在你自己退出这个App之前,它会继续像没有权限一样运行。

如果开关已经打开,重新启动App后仍无法使用该功能,就把开关关掉,用减号按钮把App从列表中移除,再重新添加。这样,tccd数据库中的旧记录就会被替换为与这个App当前状态相符的新记录。

常见问题

Mac上的tccd是什么?

它是管理隐私权限(例如摄像头、麦克风、录屏和文件访问)的macOS进程。它负责显示权限提示,并记住你的回答。

tccd为什么CPU占用高?

通常是某个App在反复请求权限,多半是更新改变了它的签名。在“隐私与安全性”中重新授予权限,或者用tccutil重设它,就能终止这个循环。

用tccutil重设隐私权限安全吗?

安全。它只会清除该权限已存储的回答,让App重新请求。它不会移除任何其他东西,但你需要重新批准需要这项权限的App。

可以停用tccd吗?

不可以。它是macOS的一部分,受系统完整性保护,没有它,就无法允许或拒绝任何App访问你的摄像头、麦克风或文件。要让提示不再出现,请回应它,或者在“系统设置”→“隐私与安全性”中更改该App的权限。

Mac上的TCC数据库在哪里?

你自己的权限在~/Library/Application Support/com.apple.TCC/TCC.db中,系统范围的权限在/Library下的同一路径中。macOS会保护这两个文件,所以请在“系统设置”中或用tccutil更改权限,而不要直接编辑它们。

相关条目

想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。