iPhone应用程序可以以root身份运行吗?

时间:2020-03-05 18:52:59  来源:igfitidea点击:

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

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

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

我了解到Apple希望限制程序可以执行的操作,但是用户以充分的合理理由运行具有较高特权的程序。我不是在这里尝试创建黑客工具。

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

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

解决方案

回答

iPhone SDK协议的第3.3.4节建议我们不得在沙盒外工作。

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

与2.0.x相比,沙箱限制实际上在2.1中有所增加;我们甚至无法从另一个应用程序的沙箱中读取内容。因此,即使当前可以提升应用程序特权,也很可能不会在将来的版本中。

回答

我们唯一的选择是

  • 以root身份在iPhone上运行应用程序
  • 设置应用程序setuid位和所有者根。

我看不出他们有谁被苹果公司祝福。

我想这取决于我们要如何使用特权,如果幸运的话,可能会有更多的细粒度特权可用,但是afaik我们必须选择1024以上的端口。

回答

如果可以在普通台式计算机上执行此操作,则没关系。 iPhone不是普通的台式计算机。

与台式计算机不同,在没有越狱的情况下在iPhone上获取应用程序的唯一方法是从App Store获取该应用程序。进入App Store的唯一方法是遵守Apple的规则,Apple的规则显然包括"禁止特权升级","禁止转义沙盒"和"禁止访问现有提供的API之外的网络端口"。

我们想做的事是不可能的。