提问人:Kristopher Johnson 提问时间:9/14/2008 最后编辑:Kristopher Johnson 更新时间:6/18/2011 访问量:3525
iPhone 应用程序可以以 root 身份运行吗?
Can an iPhone App Be Run as Root?
问:
我正在考虑设计一个我想创建的 iPhone 应用程序。一个可能的问题是,此应用程序必须以 root 身份运行(才能访问某些网络端口)。在典型的 UNIX 应用程序中,我只会让应用程序使用 setuid 运行,但我想知道 iPhone 应用程序是否可以做到这一点。
我在苹果的论坛上读到过这个问题,这令人沮丧:
http://discussions.apple.com/thread.jspa?threadID=1664575
我知道 Apple 想要限制程序可以做什么,但用户有很多好的、合法的理由来运行具有提升权限的程序。我不是想在这里创建一个黑客工具。
我敢肯定我可以在越狱的iPhone上解决这个问题,但这不是我所追求的。有没有办法在不间断的 iPhone 上运行具有提升权限的应用程序?
(顺便说一句,没有必要警告我关于保密协议。
答:
iPhone SDK 协议第 3.3.4 节建议,您不得在沙盒之外工作。
鉴于 Apple 在他们允许哪些应用程序方面有些武断,因此在开始开发之前,您绝对应该仔细检查它们。
与 2.0.x 相比,2.1 中的沙盒限制实际上有所增加;您甚至无法再从其他应用程序的沙箱中读取数据。因此,即使目前可以提升应用的权限,也很可能不会在未来的版本中出现。
您唯一的选择是
在 iphone 上以 root 身份运行应用程序
设置应用程序 setuid 位和所有者 root。
我看不出他们中的任何一个人受到苹果的祝福。
我想这取决于你想用这些权限做什么,如果你幸运的话,可能会有更多细粒度的权限可用,但你必须选择一个高于 1024 的端口。
如果您可以在普通台式计算机上执行此操作,这并不重要。iPhone不是普通的台式电脑。
与台式电脑不同,在不越狱的情况下在 iPhone 上获取应用程序的唯一方法是从 App Store 获取它。进入 App Store 的唯一方法是遵循 Apple 的规则,Apple 的规则明确包括“不提权”、“不转义沙盒”、“不访问现有提供的 API 之外的网络端口”。
你想做的事情是不可能的。
评论