现在不推荐使用 sandbox-exec 时如何对第三方应用程序进行沙箱处理?

How to sandbox third party applications when `sandbox-exec` is deprecated now?

我注意到在最新的 MacOS 中 sandbox-exec 命令已被弃用。根据它的手册:

The sandbox-exec command is DEPRECATED. Developers who wish to sandbox an app should instead adopt the App Sandbox feature described in the App Sandbox Design Guide. [...]

此外,删除了一些命令,例如 sandbox-simplify。此外,似乎跟踪功能不再起作用,以下配置不再产生输出(虽然它在早期版本中产生):

(version 1) 
(debug all)
(trace "/tmp/trace.sb")
(deny default)

我的问题是,"new"第三方应用沙盒化的方式是什么?我不是从开发人员的角度问这个问题。我作为高级用户询问它,希望为我不信任的应用程序添加额外的沙盒限制。

虽然 Apple 声称这种通过配置文件(有时称为 "Seatbelt")的旧式沙盒已被弃用,但截至 2020 年,Apple 和第三方开发人员仍在 macOS 中大量使用它。您可以找到沙盒配置文件在不同的地方,例如:

新方法是同名的 App Sandbox feature (more details in the design guide)。这个较新的沙盒由 "entitlements" 控制,这是应用程序开发人员在构建应用程序时可以设置为代码签名的一部分的各种标志。在内部,它通过在应用程序启动期间应用配置文件 /System/Library/Sandbox/Profiles/application.sb 来使用上面较旧的沙盒配置文件系统。 App Sandbox 比完整的配置文件系统更受限制,仅依赖于几个标志和列表,无法提供与直接使用配置文件相同的灵活性。据我所知,作为用户无法控制这个较新的系统,因为您需要重新打包并退出应用程序才能这样做。

作为用户,sandbox-exec 的沙盒配置文件仍然是您在 macOS 上的主要且唯一的选择。虽然它可能会被弃用,但看起来它们也不会很快消失,因为它仍然广泛用于配置文件形式和作为较新的 App Sandbox 功能的内部层。