【问题标题】:On a jailbroken iPhone, how can I run commands as root?在越狱的 iPhone 上,如何以 root 身份运行命令?
【发布时间】:2011-12-15 07:13:10
【问题描述】:

我想在 Xcode 中使用 system 调用以 root 身份登录。我尝试这段代码没有成功:

System("su");
System("alpine");

System("su root");
System("alpine");

System("su root alpine");

当我用谷歌搜索时,我知道这是使用 NSTaskNSPipe 完成的。 谁能告诉我如何使用NSTaskNSPipe 运行多个system 命令?

请给我一些关于这个或其他方法的提示。我在越狱的 iPhone 上使用这个应用程序。

更多详情请联系here

【问题讨论】:

  • 请注意,如果您将应用程序放在 /Applications 中,那么当您的应用程序启动时,您已经是 root。
  • 另外请注意,iOS 是一个 Unix 操作系统。而且我认为你不能给已经存在的进程root权限。您只能启动具有更高权限的新进程。这意味着您将需要辅助可执行文件。 (除非您以 root 身份重新启动应用程序)
  • 另外请记住,system() 就像您输入了传递给命令行 shell 的确切内容。 (你不能调用它两次来传递输入。)所以system("alpine") 不是正确的方法。而使用system()(与使用fork()exec() 不同)您无法直接控制子进程的I/O。一旦你“以root身份登录”,你到底想做什么?因为即使你设法获得了一个 shell,system() 也会挂起你的进程并等待 shell 退出。推荐阅读:man 3 systemman 2 forkman 3 exec

标签: iphone ios xcode sdk system


【解决方案1】:

如果你想以 root 身份启动某些东西,你可以使用sudo

密码一行的用法示例:

echo <password> | sudo -S <command>

【讨论】:

  • 这当然需要在设备上安装sudo 可执行文件。
  • 如果你的 iPhone 越狱了,你可以通过 Cydia 安装 sudo。
  • 如果您的应用程序将通过 Cydia 通过某种 repo 发布,您可以将 sudo 设置为依赖项。
  • 没错,但是如果他通过Cydia发布应用,他可以轻松地将他的应用安装到/Applications并自动获得超级用户权限,但这当然实际上使整个原始问题毫无用处。跨度>
  • 是什么阻止你添加他?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多