我正在考虑设计我想创建的iPhone应用程序。一个可能的问题是该应用程序必须以root身份运行(以访问某些网络端口)。在一个典型的UNIX应用程序中,我只是让应用程序与setuid一起运行,但我想知道是否可以使用iPhone应用程序。
我在Apple的论坛上看到了这个问题,这令人沮丧:
http://discussions.apple.com/thread.jspa?threadID=1664575
我理解Apple希望限制程序可以执行的操作,但是有很多好的,合理的理由让用户以提升的权限运行程序。我不打算在这里创建一个黑客工具。
我确信我可以通过破牢的iPhone解决这个问题,但这不是我追求的目标。有没有办法在不间断的iPhone上运行具有提升权限的应用程序?
(顺便说一句,没有必要警告我NDA。)
答案 0 :(得分:5)
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;你甚至不能再读取其他应用程序的沙箱了。因此,即使当前 可以提升您应用的权限,也很可能不会在将来的版本中使用。
答案 1 :(得分:2)
您唯一的选择是
在iPhone上以root身份运行应用程序
设置应用程序setuid位和所有者root。
我看不到他们中的任何一个被Apple祝福。
我想这取决于你想要使用权限做什么,如果你很幸运,可能会有更细粒度的权限,但是你必须选择1024以上的端口。
答案 2 :(得分:0)
如果您可以在普通台式计算机上执行此操作,则无关紧要。 iPhone不是普通的台式电脑。
与台式计算机不同,只有 方式才能在没有越狱的情况下在iPhone上获取应用程序,这是从App Store获取的。进入App Store的唯一方式是遵循Apple的规则,Apple的规则明确包括“没有权限升级”,“没有逃离沙箱”,“否”访问现有的API提供的网络端口“。
您想要做的是不可能。