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 向我发出警告。)

【问题讨论】:

我不认为 N​​DA 是你的问题,也许是 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? [关闭]

无法以 root linux 用户身份运行 mysql 命令

Qt应用程序以root身份运行时更改字体

您可以以编程方式打开“以不同用户身份运行”对话框吗?

iPhone / iOS Facebook SDK - 您可以在应用内登录并保留登录凭据吗?