iPhone应用程序可以以root身份运行吗?
Posted
技术标签:
【中文标题】iPhone应用程序可以以root身份运行吗?【英文标题】:Can an iPhone App Be Run as Root? 【发布时间】:2008-09-14 14:01:07 【问题描述】:我正在考虑设计一个我想要创建的 iPhone 应用程序。一个可能的问题是此应用程序必须以 root 身份运行(以访问某些网络端口)。在典型的 UNIX 应用程序中,我只是让应用程序使用 setuid 运行,但我想知道 iPhone 应用程序是否可以这样做。
我在 Apple 的论坛上读过这个问题,这令人沮丧:
http://discussions.apple.com/thread.jspa?threadID=1664575
我了解 Apple 希望限制程序的功能,但有很多正当的理由让用户以提升的权限运行程序。我不是想在这里创建一个黑客工具。
我确信我可以在越狱的 iPhone 上解决这个问题,但这不是我想要的。有什么方法可以在完整的 iPhone 上以提升的权限运行应用程序?
(顺便说一句,没有必要就 NDA 向我发出警告。)
【问题讨论】:
我不认为 NDA 是你的问题,也许是 iPhone 的许可和使用条款 ;)。 我没有做任何典型桌面用户无法用他们的电脑做的事情。用户运行需要提升权限的程序有很多正当理由。我不是想“侵入”任何东西。 还有很多不正当的原因,这就是为什么你不太可能看到 Apple 将其作为一项功能添加。 【参考方案1】:iPhone SDK 协议第 3.3.4 节建议您不得在沙盒之外工作。
鉴于Apple has been somewhat arbitrary on which applications they permit,您绝对应该在开始开发之前与他们仔细检查。
与 2.0.x 相比,the sandbox restrictions have actually increased in 2.1;您甚至不能再从另一个应用程序的沙箱中读取。因此,即使当前可以提升您应用的权限,也很可能不会出现在未来的版本中。
【讨论】:
【参考方案2】:你唯一的选择是
在 iphone 上以 root 身份运行应用程序
设置应用程序 setuid 位和所有者 root。
我看不到他们中的任何一个受到 Apple 的祝福。
我想这取决于你想用这些特权做什么,如果你幸运的话,可能会有更多细粒度的特权可用,但是你必须选择一个高于 1024 的端口。
【讨论】:
【参考方案3】:如果您可以在普通台式计算机上执行此操作,那一点也不重要。 iPhone 不是普通的台式电脑。
与台式计算机不同,唯一在不越狱的情况下在 iPhone 上获取应用程序的方法是从 App Store 获取。 唯一进入 App Store 的方式是遵循 Apple 的规则,Apple 的规则明确包括“不提权”、“不逃避沙盒”和“不访问现有提供的 API 之外的网络端口”。
你想做的是不可能。
【讨论】:
以上是关于iPhone应用程序可以以root身份运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
通过 XPC 与应用程序通信并启动以 root 身份运行的守护程序
如何以root用户身份运行Google Chrome? [关闭]