将文件复制到iPhone系统文件夹

时间:2010-01-26 13:18:06

标签: iphone xcode jailbreak

我正在为Jailbroken iPhone开发。我需要将文件写入(复制)到只有ROOT具有写访问权限的iPhone系统文件夹(/ Library / LaunchDaemons)。如何通过我的代码将文件写入此类文件夹。我知道我可以使用NSFileManager的copyItemAtPath:toPath方法来复制文件,但我不能写,因为我没有权限在这些文件夹上写。

任何建议??

3 个答案:

答案 0 :(得分:1)

我想我已经找到了这个问题的答案。要写入System文件夹,您需要具有在该文件夹上写入的权限。我的应用程序附加了一个守护进程,因此我必须将该守护进程复制到/ System / Library / LaunchDaemons以使该守护进程正常工作。因此,当我为JB iphone开发并且人们将使用Cydia安装我的应用程序时,为什么不让Cydia将我的应用程序的文件安装到正确的位置。我让Cydia将Daemon文件复制到/ System / Library / LaunchDaemon文件夹中。现在的问题是Cydia将如何知道粘贴文件的位置。答案很简单,只需在.deb文件中创建正确的文件夹,cydia就会粘贴位于.deb文件中的文件夹中的文件。

例如,如果你有一个守护进程,并且你希望Cydia将它粘贴到/ System / Library / LaunchDaemons,那么在制作.deb之前制作这样的文件结构

+- MyApp
   +- Applications
      +Myapp.app
   +-DEBIAN
    -control
   +-System
     +-Library
       +-LaunchDaemons
         +- com.myLaunchDaemon.plist

Cydia在安装你的应用程序时会将com.myLaunchDaemon.plist文件粘贴到System / Library / LaunchDaemons中,重新启动你就可以了。

答案 1 :(得分:0)

您的应用可以以root或setuid root身份运行。

答案 2 :(得分:0)

不是以root身份运行整个应用程序,而是设置一个可以安装文件的小帮助工具。然后只有该帮助工具必须以root身份运行。

有关SUID二进制文件的更多信息,请将http://en.wikipedia.org/wiki/Setuid视为一个良好的开端。