首页 > 解决方案 > 绕过 Mac App Store 对提权的限制

问题描述

根据Mac App Store 审查指南

2.4.5 通过 Mac App Store 分发的应用程序有一些额外的要求需要牢记:

(i) 它们必须经过适当的沙盒处理,并遵循 macOS 文件系统文档。他们还应该只使用适当的 macOS API 来修改其他应用程序存储的用户数据(例如书签、地址簿或日历条目)。

...

(iv) 他们不得下载或安装独立应用程序、kexts、附加代码或资源来添加功能或显着更改我们在审核过程中看到的应用程序。

(v) 他们不得请求升级到 root 权限或使用 setuid 属性。

沙盒已经排除了 API 的使用AuthorizationCreate(),无论如何,第 (v) 项非常清楚。

当然,像 Parallels(MAS 链接)这样的应用程序如果不诉诸特权升级就无法编码。事实上,常规(非 MAS)Parallels 应用程序至少安装了 3 个 kext,其中一个是虚拟机管理程序,如果没有这些,我相信 Parallels 绝对没用。所以他们显然违反了这些规则。

如果开发人员希望编写一个像 Parallels 一样需要提权并且没有它完全没用的应用程序,开发人员将如何绕过这些限制?还是只是一个足够大的问题,苹果会在审查过程中对此视而不见?你可以向苹果申请例外吗?

标签: macosmac-app-store

解决方案


对 App Store 政策问题没有评论(很遗憾),但我可以回答您关于 Parallels 的问题。Mac App Store 上的 Parallels 版本使用 kext,也不需要。Hypervisor 框架使编写类似 Parallels 的应用程序成为可能,而无需 root 权限,或编写和分发自定义 kext(这需要 Apple 单独批准)。Hypervisor 框架也可用于沙盒应用程序。我相信这个框架是专门为解决这个问题而创建的。希望这可以帮助!


推荐阅读