2010-01-26 3 views
0

Jailbroken iPhone 용으로 개발 중입니다. ROOT 만 쓰기 권한이있는 iPhone 시스템 폴더 (/ Library/LaunchDaemons)에 파일을 작성 (복사)해야합니다. 내 코드를 통해 어떻게 이러한 폴더에 파일을 쓸 수 있습니까? NSFileManager의 copyItemAtPath : toPath 메서드를 사용하여 파일을 복사 할 수 있지만 해당 폴더에 쓸 수있는 권한이 없기 때문에 쓰기가 불가능하다는 것을 알고 있습니다.파일을 iPhone 시스템 폴더에 복사

제안 사항 ??

+0

아무도 이것을 시도하지 않았습니까 ?? – raziiq

답변

1

나는이 질문에 대한 답을 찾았다 고 생각합니다. 시스템 폴더에 기록하려면 해당 폴더에 쓸 수있는 권한이 있어야합니다. 내 응용 프로그램에는 데몬이 첨부되어 있으므로 해당 데몬을/System/Library/LaunchDaemons에 복사하여 해당 데몬이 작동하도록해야했습니다. 그래서 JB iphone 용으로 개발 중이며 사람들은 Cydia를 사용하여 내 앱을 설치하려고합니다. 왜 Cydia가 내 앱의 파일을 적절한 위치에 설치하게하지 않을까요? 데몬 파일을/System/Library/LaunchDaemon 폴더에 복사하도록 Cydia를 만들었습니다. 이제 문제는 Cydia가 파일을 붙여 넣을 위치를 어떻게 알 수 있는가입니다. 대답은 간단합니다. 단지 .deb 파일에 적절한 폴더를 만들고 cydia는 .deb 파일 안에있는 폴더에있는 파일을 붙여 넣습니다.

예를 들어 당신이 데몬이 있다면 당신은 Cydia를가/시스템/라이브러리/LaunchDaemons에 붙여 넣을하는 뎁

+- MyApp 
    +- Applications 
     +Myapp.app 
    +-DEBIAN 
    -control 
    +-System 
    +-Library 
     +-LaunchDaemons 
     +- com.myLaunchDaemon.plist 
귀하의 응용 프로그램을 설치하는 동안 것

Cydia를하기 전에이 같은 파일 구조를 만들 시스템/라이브러리/LaunchDaemons에 com.myLaunchDaemon.plist 파일을 붙여넣고 재부팅하면됩니다.

+0

감사합니다. 이것은 내가 필요로했던 것을 정확하게했다. 건배! –

0

앱이 루트 또는 setuid 루트로 실행될 수 있습니다.

+0

및 그 작업을 수행하는 방법은 무엇입니까? 이 작업을 수행하는 방법에 대한 예가 무엇입니까 ?? – raziiq

+1

나중에 프로그램이 설치되어있는 iPhone의 악용에 사용 중이라는 소식을 듣고 싶습니다. – Darron

+0

좋은 지적. iPhoneOS에 setuid 앱이 없다는 표준적인 문제, iphone 방식이 launchd + 데몬을 통한 것이라고 들었습니다. –

0

루트로 전체 앱을 실행하는 대신 파일을 설치할 작은 도우미 도구를 사용하는 것이 훨씬 더 좋습니다. 그런 다음 해당 도우미 도구 만 루트로 실행해야합니다.

SUID 바이너리에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Setuid을 참조하십시오.

+0

이렇게하면 도우미 응용 프로그램을 매우 * 제한적으로 만들어야합니다.그것은 어떤 디렉토리에 파일을 쓸 수 없어야합니다. 그렇지 않으면 누군가가 프로그램을 설치 한 iPhones를 인수하기 위해 악용하는 방법을 알아낼 것입니다. – Darron

관련 문제