我正在为Jailbroken iPhone开发。我需要将文件写入(复制)到只有ROOT具有写访问权限的iPhone系统文件夹(/ Library / LaunchDaemons)。如何通过我的代码将文件写入此类文件夹。我知道我可以使用NSFileManager的copyItemAtPath:toPath方法来复制文件,但我不能写,因为我没有权限在这些文件夹上写。
任何建议??
答案 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视为一个良好的开端。