关于macOS权限系统

众所周知macOS使用TCC来管理用户权限,但是我最近在使用的时候遇到了些问题希望得到解答


设备信息:14 Pro, M1, Ventura 13.1


  1. 如果在桌面上用文本编辑软件(如 Visual Studio Code)打开一个文件,则macOS会向用户询问是否给予桌面的访问权限,这个时候点击拒绝,文件依旧可以被正常打开,这是什么原因?
  2. 在我未授予终端任何磁盘访问权限的时候,使用终端进入桌面和文稿目录,分别使用ls命令,发现在文稿目录下,显示没有权限;而在桌面目录下,可以打印文件列表,这又是什么原因?
  3. 我有一个帮助程序,需要输入管理员密码才能安装,安装完后发现它运行在root用户下,请问该程序获得了root权限吗?该程序能够直接访问敏感权限吗?(如 摄像头、麦克风、键盘监听、屏幕录制等)

MacBook Pro

发布日期 2023年1月24日 上午12:03

回复
回复量: 16

2023年1月24日 下午5:16 回应 花簪绛树

鑒於關於 TCC 的文檔不足, 不能確定下面的回答完全正確, 只是基於個人經驗的推測.

1. 雖然你沒有授予訪問桌面目錄的權限, 但是你在選擇使用 vscode 打開這個文件時隱式的授予了 vscode 訪問這個文件的權限.

2. 無法確定原因, 建議檢查 tcc log 查看鑒權過程.

3. 是的, 進程以 root 權限執行, 理論上不能直接訪問權限, 同樣需要授權流程.

2023年1月24日 下午6:54 回应 花簪绛树

TCC的英文是Transparency, Consent, and Control,本质上说不是“权限”,而是在原来的传统操作系统的用户权限之外,为了保护特定涉及用户个人隐私的信息,提供的访问控制的一层安全机制,也就是熟知的隐私与安全性的部分。与传统的权限有类似之处,但是还是不同。比如,一个程序在用户环境下运行,按说它有这个用户的权限,来访问这个用户所拥有的的所有文件。但是有了 TCC,给了用户多一层的控制机制,这样用户没有显式准许的,也就无法访问涉及用户隐私的数据。在个人文件夹下,不是所有的文件夹都会包含有隐私数据,所以,只有特定的才会被视为隐私,为了方便,这些是 macOS 内部设定的,不用用户自己设定。


前面只是说说大致概念,至于你的前两个问题,还是持续更新 macOS 到最新的版本。另外还要全面考虑隐私设置,比如开发者攻击、自动化、输入控制、完全磁盘访问权限、文件和文件夹和辅助功能等。

后面这个问题 3,在隐私功能的控制下,即便是 root 用户,也无法完全访问受隐私机制控制的文件。


这个隐私的机制,还与 Mac 电脑本身的系统安全策略设置密切相关。参考:搭载 Apple 芯片的 Mac 的启动磁盘安全性策略控制 - 官方 Apple 支持 (中国)


还有一个方面是,如果安装了配置描述文件,或者受控于某个 MDM 系统,也可能影响到隐私机制的某些行为。


2023年1月26日 下午3:28 回应 花簪绛树

终于找回这个帖子了。


这个问题写到后面有点可能偏离了此题的本意。下面的,只是提出个人的想法供大家来讨论纠正和批判。


昨天搜索加尝试,在 12.6上的M1 中,在系统安全策略设置中设置了最高安全等级,也没有任何描述文件的相关设置后,结果是,那些非 App Store 下载的 编辑如 vscode, Sublime Text, MS Office等,即便是在隐私的桌面或文稿文件夹中禁止他们的访问,仅仅是提示第一次后,它们依然可以打开、更改、保存在这些文件夹中的文件而未受限制。


就隐私特性来说,自从 2018 年10月 3 日后,苹果要求在应用商店中的所有app都要符合最新的隐私规范, 这个规范不仅给开发者提供了一套的接口, 还要求在应用的信息中明确声明要访问哪些用户隐私资源, 要有隐私数据使用声明和说明等等。在上线之前的审核中,如果发现没有进行声明,那么会被拒绝。这个恐怕是一些应用至今依然无法上线应用商店的原因之一。

Apple Developer DocumentationApple Developer Documentation


至于这些不想依照隐私规范要求,或者是旧的应用,或者使用旧 API 的应用,是否就一律禁止它们访问这些用户隐私资源呢?至今我没有找到明确的答案,如果谁看到了,请贴上来供大家参考。 但从使用来看,并非黑白分明的禁止或放行这么简单。


就目前的使用经验来看,有些隐私资源,如摄像头和麦克风等,似乎这些要求是强制的,无论你是什么应用,没有声明没有使用接口,系统就禁止访问和使用这些设备。但是,相比较其它的一些隐私,比如文件夹,貌似不是强制执行的。这一点,不知道是应用使用 API 的原因,还是从系统级别有改进的地方,或者是为了兼容性而做的妥协。我想,苹果的技术人员,应该可以从这些应用所调用的 API 能够看出问题的所在。所以,要是可以的话,填写一个 bug 报告,看看有什么回馈,也可以了解下。


就隐私保护而言,苹果从公司自身到设备、服务和应用等等各个方面,都做出了声明和努力,就 macOS 来说,系统级别提供了隐私保护功能。正如苹果的隐私管控网页(https://www.apple.com.cn/privacy/control)中所说的,“控制权,全在你”,这个可能可以从两方面来理解,当我看到这句话的第一眼,觉得是只有第一种意思, 苹果产品提供的隐私技术功能,给了用户完全控制,对所有应用都可以做到准许或者阻止访问隐私数据。 但是细想,恐怕还有另一方面含义, 对于是否继续使用不符合隐私规范的应用程序,这也是用户自己的选择,因为至少目前为止,除了应用商店的应用, macOS 没有禁止用户使用非应用商店的软件。


不知道大家如何理解和有什么看法。

2023年1月24日 下午7:57 回应 tonyfromcalgary

感谢解答

我的系统已经是最新的了

关于第一个问题,您也可以在自己的设备上尝试一下,据我所知,这并非个例

关于第二个问题,我的电脑的行为与其他人的不同,其他人确实是不管在桌面还是文档用ls命令都是无法打印文件列表的,我不清楚我的系统哪里出现了问题,我使用tccutil reset All也无济于事

关于第三个问题,您的解答非常有用,十分感谢


顺便关于描述文件,我想请问一下它会拿到什么权限呢,或者说有什么风险呢?我并没有在mac上安装过,但是在ios上我曾经有过,安装不认识的描述文件是风险非常高的行为吗?

2023年1月24日 下午8:36 回应 花簪绛树

最新是 13.2了。


我的 M1们都还在12上,目前没法测试 13,不过明天可以看看 12 上如何。就个人经历看,这个隐私的发展已经有了好多的改进。

描述文件本身只是设定,自己不会获取权限。比如设置准许 ssh 可以完全磁盘访问等,这样的好处是,在企业环境中,可以把这个设置自动化,不用逐台设置。 如果安装不安全的描述文件,还是有较高风险的。某知上我写过一个叫详细的说明。

2023年1月26日 下午7:51 回应 tonyfromcalgary

文件夹访问的问题(问题1)确实可以在任何设备上复现,但是我的终端的访问问题在其他人设备上无法复现(问题2),我不知道是不是我的设备哪里有问题,不过我可以确定我没有折腾过系统,应该不是人为原因。


现在apple并没有向我推送13.2版本,因此我依旧保留在13.1


最后,感谢你的耐心解答


[经过版主编辑]

2023年1月28日 下午9:25 回应 花簪绛树

reset All 后重新启动过了?按说不应该了。

你把另外的那个正常的账户下面的 tcc.db 覆盖过来(之后重新启动)呢?普通方法无法复制+覆盖过来的,应该需要在恢复模式中操作,或者禁止 SIP并把安装安全策略设置为最低(之后开启 SIP 并设置最高安全策略),才能完成覆盖操作。


这个主题已被系统或社区团队关闭。 你可以为你认为有帮助的任何帖子投票,也可以在社区中搜索其他答案。

关于macOS权限系统

欢迎来到 Apple 支持社区
Apple 客户在其产品方面互相帮助的论坛。使用您的 Apple 帐户开始畅游其中吧!!