2013-05-22 2 views
3

내 샌드 박스 OSX 응용 프로그램에서 launchctl load/unload 명령을 실행해야합니다. 앱은 실행 에이전트의 plist 파일이있는 폴더 (앱 사용자가 이전에 부여한 보안 범위가 지정된 북마크 사용)에 대한 사용 권한이 read-write입니다.sandboxed mac app에서 launchctl 실행

- 
5/22/13 9:15:56.420 AM sandboxd[28463]: ([28473]) launchctl(28473) deny file-read-data /private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist 
- 

는 분명히, 나는 자동 시작을위한 시작 항목에 내 자신의 응용 프로그램을 추가하지 않으 만들려면 나는 또한 비슷한 주제에이 http://www.mail-archive.com/[email protected]/msg80413.html 대화를 발견 앱이 다음과 같은 오류를 얻을 그러나

결과가 아직 없습니다.

답변

3

/private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist 파일은 관리자 사용자 (루트) 만 읽고 쓸 수 있습니다. 따라서 launchctl load\unload을 작동 시키려면 명령 앞에 루트가되어야하거나 sudo을 사용해야합니다. 그러나 샌드 박스에서는이 작업을 수행 할 수 없습니다.

필요에 따라 도우미 응용 프로그램을 사용할 수 있습니다. Adding Login Items Using the Service Management Framework을보십시오.

1

권한이 필요한 작업을 수행하기 위해 응용 프로그램이 수행하도록하기 위해, Apple은 서명으로 인해 부모 응용 프로그램에서만 실행할 수있는 도우미 응용 프로그램이 만들어 지도록 제안합니다. 도우미 응용 프로그램은 향상된 권한으로 시작되고 필요한 최소한의 작업을 수행합니다. 여기 SMJobBless를 살펴 보자 : -

http://developer.apple.com/library/mac/#samplecode/SMJobBless/Introduction/Intro.html

이 상태로 : -

SMJobBless demonstrates how to securely install a helper tool that performs a privileged operation and how to associate the tool with an application that invokes it.

+0

감사합니다,하지만'SMJobBless' 예는 또한 "인증 서비스"의 메서드 호출을 사용하여 (' AuthorizationCopyRights') 및 Apple docs 상태 : "중요 : 권한 상승을 허용하기 때문에 권한 서비스 API는 앱 샌드 박스 내에서 지원되지 않습니다." – anka

+0

그건 제가 간과 한 좋은 지적입니다. Apple의 "EvenBetterAuthorizationSample"을 살펴 보도록하겠습니다 만 인증 서비스도 사용합니다. 샌드 박스가 너무 제한적이어서 당신이 요구하는 것이 불가능하다고 생각하기 시작했습니다. – TheDarkKnight

+1

그래,이 답변을 보는 사람이라면 분명히 알 수 있듯이 샌드 박스 응용 프로그램은 권한을 상승시킬 수 없으며 샌드 박스 응용 프로그램은 도우미 응용 프로그램을 포함 할 수 있지만 도우미 응용 프로그램도 샌드 박스 처리해야합니다. – AriX