macos - 绕过 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 一样需要提权并且没有它完全没用的应用程序,开发人员将如何绕过这些限制?还是只是一个足够大的问题,苹果会在审查过程中对此视而不见?你可以向苹果申请例外吗?
解决方案
对 App Store 政策问题没有评论(很遗憾),但我可以回答您关于 Parallels 的问题。Mac App Store 上的 Parallels 版本不使用 kext,也不需要。Hypervisor 框架使编写类似 Parallels 的应用程序成为可能,而无需 root 权限,或编写和分发自定义 kext(这需要 Apple 单独批准)。Hypervisor 框架也可用于沙盒应用程序。我相信这个框架是专门为解决这个问题而创建的。希望这可以帮助!
推荐阅读
- apache - Symfony 在登录后下载 Apache 服务器
- c - 创建我自己的外壳。处理 Ctrl-Z 然后发送 SIGCONT 会关闭进程而不是继续它
- r - 一键多值列展开[tidyr]
- css - 导入全局 css 自定义变量
- docker - 在 Kubernetes 中与容器存储/共享数据
- excel - 根据单元格值选择要复制到新工作表的工作表
- php - 使用 ?XDEBUG_PROFILE 时,Webgrind 可以看到 cachegrind 文件但没有输出
- javascript - VueJs 模块构建失败:错误:找不到相对于目录的预设“@vue/app”
- php - 通过 Lynda 练习为会员和非会员提供 PHP 条件语句
- logging - Elastic Cloud / Kibana 将 cloudwatch 流式传输到日志仪表板