4

我正在考虑我想创建的 iPhone 应用程序的设计。一个可能的问题是此应用程序必须以 root 身份运行(以访问某些网络端口)。在一个典型的 UNIX 应用程序中,我只是让应用程序使用 setuid 运行,但我想知道这是否可以使用 iPhone 应用程序。

我在 Apple 的论坛上读过这个问题,这令人沮丧:

http://discussions.apple.com/thread.jspa?threadID=1664575

我了解 Apple 想要限制程序的功能,但用户有很多正当的理由以提升的权限运行程序。我不是想在这里创建一个黑客工具。

我确信我可以在越狱的 iPhone 上解决这个问题,但这不是我想要的。有没有办法在完整的 iPhone 上运行具有提升权限的应用程序?

(顺便说一句,没有必要就 NDA 向我发出警告。)

4

3 回答 3

5

iPhone SDK 协议第 3.3.4 节建议您不得在沙箱之外工作。

鉴于Apple 在允许哪些应用程序方面有些武断,因此在开始开发之前,您绝对应该仔细检查它们。

与 2.0.x 相比,沙盒限制在 2.1 中实际上有所增加;您甚至无法再从另一个应用程序的沙箱中读取数据。因此,即使当前可以提升您的应用程序的权限,它也很可能不会出现在未来的版本中。

于 2008-09-14T14:22:54.487 回答
2

你唯一的选择是

  1. 在 iphone 上以 root 身份运行应用程序

  2. 设置应用程序 setuid 位和所有者根。

我看不到他们中的任何一个受到苹果的祝福。

我想这取决于你想用这些特权做什么,如果你幸运的话,可能会有更多细粒度的特权可用,但是你必须选择一个高于 1024 的端口。

于 2008-09-14T14:24:32.957 回答
0

如果您可以在普通台式计算机上执行此操作,那一点也不重要。iPhone 不是普通的台式电脑。

与台式电脑不同,在 iPhone 上无需越狱即可获取应用程序的唯一方法是从 App Store 获取。进入 App Store的唯一途径是遵循苹果的规则,而苹果的规则明确包括“不提权”、“不逃避沙盒”、“不访问现有提供的 API 之外的网络端口”。

你想做的事是不可能的

于 2008-09-14T19:26:50.390 回答