允许所有应用程序在Catalina中访问桌面、文档和下载文件夹。

如何禁用macOS Catalina的安全功能,以防止应用程序在未经允许的情况下访问桌面、文稿和下载文件夹?
理想的解决方法是只需执行一次操作,即可允许所有应用程序访问这些文件夹,而无需授予所有应用程序完全磁盘访问权限。
我的桌面和文稿文件夹存储在本地,而不是iCloud Drive中。
2个回答

这个功能被苹果称为“透明度、同意和控制”(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上的问题。

1目前,在XQuartz环境中运行的应用程序没有弹出提示,所以我暂时无法打开Font Forge中的文件,除非它们位于受保护的位置之外。如果可以的话,我会额外加50分作为回答的奖励! - benwiggy
@benwiggy - 在Linux服务器上设置X窗口系统并使用X11转发到Mac。该软件在Linux上运行,将整个桌面或单个应用程序窗口发送到Mac。这种方式已经服务多个用户数十年了。这也是Citrix的灵感来源之一。 - James Brickley
我已经可以在MacOS上运行X11应用程序,那么为什么我需要额外的硬件来做同样的事情呢?你的解决方案如何让一个X11应用程序读取和写入我的Documents文件夹? - benwiggy
对不起,你误解了。X窗口系统设计用于将窗口或桌面内容发送到其他计算机上。苹果不再提供XQuartz,因此不支持它。你可能需要使用各种解决方法。使用另一台Linux/Unix服务器来运行应用程序并将显示发送到Mac是一个选项。显然,使用共享网络文件夹来交换数据。你需要将字体复制到其他地方,以便Xforge可以访问它们。 - James Brickley
显然,我还是不明白。我已经在XQuartz环境中运行了FontForge。我只是无法打开并保存到文档文件夹中。服务器对派对有什么贡献? - benwiggy

一些评论者一直在询问如何在Catalina上使用他们的X11应用程序,所以我想跟进一下我最近在遇到FontForge使用问题时所进行的一些研究。
虽然原回答者说得没错,对于所有应用程序来说并没有一个通用方法来解决这个问题,但对于某些更容易出现问题并提示访问这些文件夹的应用程序,有一种变通方法,尽管存在安全隐患。
最近的GIMP和Inkscape版本已经修复了这个问题,所以其他遇到和我一样问题的人应该尝试更新他们的应用程序。然而,FontForge尚未更新以解决这个问题,并且似乎不太可能这么做。在这种情况下的“紧急情况下打破玻璃”的解决方案是将"/bin/sh"添加到系统偏好设置的完全磁盘访问部分。显然,这是非安全的。 除非你有备份,请不要这样操作然而,如果你确实有备份,这几乎肯定会解决你的文件夹访问问题,直到FontForge更新他们的软件。仅当你最近备份了文件后,请按照以下说明操作。
前往“系统偏好设置”>“安全性与隐私”>“隐私”>“完全磁盘访问权限”。 点击 +。 在侧栏中选择您的硬盘(默认名称为Macintosh HD,除非您已更改)。 使用键盘快捷键 ⇧⌘。 (shift+command+period) 以显示隐藏文件。 打开“bin”文件夹。 单击该文件夹内的可执行文件“sh”。 单击“打开”。 确保“sh”旁边的框已选中。
有关上下文,请参见https://gitlab.gnome.org/GNOME/gimp/-/issues/3710#note_630890https://gitlab.com/inkscape/inkscape/-/issues/459(页面是关于GIMP和Inkscape但此解决方法是在FontForge错误报告中推荐的)。

1太棒了。可以确认这对FontForge非常有效。 除了shell脚本能够访问那些特定文件夹之外,为什么会说这个“不安全”呢? - benwiggy
据我所知,这不会让你的电脑受到蠕虫或类似的威胁,但是在安装从互联网下载的Unix/X11/Linux应用程序时,你需要小心,因为任何运行shell脚本的程序(包括大多数Unix/X11/Linux应用程序)都将具有完全磁盘访问权限。具有完全磁盘访问权限的程序不仅可以访问桌面、文档和下载文件夹,还可以访问系统使用的一些文件和文件夹(尽管如果开启了系统完整性保护,它们仍然无法修改"System"文件夹)。 - pythoncoder42
我以为完全磁盘访问只允许访问用户域的受限区域。大概它不能取代Unix权限和特权吧?而且很奇怪,因为我已经给予FontForge完全磁盘访问权限,但那并没有起作用。在Mojave中,FDA是有效的,但在Catalina中,Documents/Desktop/Downloads是新的,并且是分开的。但是现在,通过授予sh完全磁盘访问权限,FF可以访问Documents文件夹了。 - benwiggy
在Catalina中,完全磁盘访问同时也授予对D/D/D的访问权限。之所以授予FontForge FDA没有起作用的原因是因为FontForge.app只是运行启动X11可执行文件的Unix shell脚本。 - pythoncoder42