这个功能被苹果称为“透明度、同意和控制”(TCC),访问控制和隐私偏好策略控制(PPPC)。它旨在让用户对应用程序拥有控制权,以保护他们的隐私。在某些情况下,应用程序可能会请求访问一些实际上并不需要的内容,用户可以阻止应用程序访问该数据或文件系统路径。虽然这很烦人,但通常每个应用程序只会发生一次。所以,除非您经常进行干净安装macOS,否则不会特别烦人。
苹果提供了一种构建配置文件负载的方法,以免出现用户批准提示。最佳部署方式是使用移动设备管理(MDM)服务器来部署负载。
您可能能够构建自定义的XML Plist配置文件,并在没有MDM的情况下手动加载到macOS Catalina上,以实现您指定的应用程序白名单。但这需要很多工作,并且从macOS 11(10.16)Big Sur开始将无法正常工作。Big Sur只会信任来自可信任MDM的配置文件。
如果您想尝试将应用程序加入白名单并手动安装自定义配置文件,您可以在此处查看示例:
https://support.apple.com/guide/mdm/privacy-preferences-policy-control-custom-mdm9ddb7e0b5/1/web/1 您可以使用Apple Configurator创建具有此有效载荷的配置文件,并双击.mobileconfig文件来安装配置文件。还有一个命令行的profiles命令可供使用。
那些使用 MDM 的人通常会部署一系列的应用程序和配置,并通过配置文件来允许内核扩展和 PPPC/TCC 条目。他们可以在 macOS/iPadOS/iOS 上锁定很多东西。管理员会将应用程序添加到白名单中,以便用户不会被一大堆用户批准提示所困扰,但是看到更少的提示会帮助用户在看到一个提示时感到惊讶,并希望能够做出适当的选择,或者至少拨打帮助台电话。你不希望用户在没有考虑到问题的情况下频繁点击提示。大多数由 MDM 管理的 Mac 甚至不会授予用户管理员权限,并提供一个公司特定的应用商店,其中提供预打包和准备好的应用程序。这些应用程序都将被添加到 PPPC/TCC 批准的白名单中。Mac App Store 可能对用户进行了阻止。这些应用程序可以通过与公司采购部门的 VPP(量购价格)集成来由 MDM 部署。
因此,除非您设置自己的 MDM 服务器并手动创建一个配置文件来允许所有应用程序,并随时间更新该列表,然后部署它。否则,这里实际上没有一个好的答案。手动指定 XML 文件中的每个应用程序仍然需要很多工作,并且只在您要跨多台 Mac 进行操作时才真正有用。
在Github上有一个名为Python tccutil.py的实用程序,可以将单个应用程序添加到tcc.db的白名单中,但自从Sierra以来,由于SIP(系统完整性保护),无法访问tcc.db。自从Mojave以来,TCC已更新,添加了对桌面、文档、下载等的用户批准。除非禁用SIP,否则此工具将无法使用。不推荐禁用SIP。自Catalina以来,系统卷是只读的。因此,您不仅需要禁用SIP,还需要绕过可行的只读系统APFS卷。再次强调,不推荐这样做。这是一项相当繁琐的工作,而且实际上并不值得为了避免每个应用程序的一次提示而付出努力。
有一个已公开的漏洞,恶意应用程序可以冒充受信任的应用程序标识和签名,绕过PPPC/TCC保护。
可能的解决方案:
基于X11的应用程序,如Fontforge、Gimp、Inkscape等,并不是真正的macOS应用程序。它们在一个命令行二进制文件的包装器中运行,然后将X11资源加载到该包装器中。因此,您必须授予Terminal应用程序权限,因为这些应用程序实际上是在其中运行的。
尝试进入“系统偏好设置”->“安全性与隐私”->“隐私”->“完全磁盘访问权限”->解锁面板并点击+号,添加终端应用程序。这样做相当危险,并且存在安全风险,但根据Github上关于Gimp、Fontforge等的问题,这可能是一个解决方法。不过,这些应用程序很可能无法完全解决此问题。他们最近进行了一些更改,以帮助缓解macOS上的问题。