2014-07-06 2 views
5

Mac App Store에서 판매 된 앱이 시스템 폴더에 액세스 할 수 있습니까?Mac App Store에서 판매되는 샌드 박스 응용 프로그램은 시스템 폴더에 액세스 할 수 있습니까?

내 앱이 샌드 박스 영역 외부에있는 디렉토리의 내용을 읽어야하고, 사용자가 원하면 /Library/StartupItems과 같은 파일을 삭제할 수 있어야합니다.

샌드 박스 앱이 시스템 폴더에 액세스하여 파일을 삭제할 수 있습니까? 삭제할 수 없다면 적어도 읽을 수 있습니까?

Mac App Store에서 판매하려면 샌드 박스를 사용해야합니까?

나는 무작위이 일에 디렉토리를 시도 :

NSString *path = @"/Library/StartupItems"; 
    NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; 

나는 디렉토리 목록을 얻을 수 있습니다. 앱이 샌드 박스로 표시된 경우 어떻게 읽을 수 있습니까? 나는 그것을 얻지 않는다.

답변

4

아니요, Mac App Store를 통해 판매 된 OS X 응용 프로그램은 사용자가 설명한 방식으로 리소스에 액세스 할 수 없습니다. 또한 모든 앱을 샌드 박스 처리하고 유효한 Mac 개발자 프로그램 인증서로 코드화해야합니다.

/Library/StartupItems (더 이상 사용되지 않음)은 앱이 '샌드 박스'로 표시된 경우 읽을 수 있습니다. 옵션 검사 만하는 것이 아닙니다. 또한 "사용 권한 파일 사용"이 선택되어 있고 응용 프로그램이 올바르게 코드화되어 있는지 확인해야합니다. 당신은 당신이 사용하여 제대로 터미널에 샌드 박스있어 확인하기 위해 검사 할 수 있음을 완료하면 :

codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable 

또한, "세계 읽을 수"있는 파일을 읽을 수있는 특정 디렉토리가 있습니다 :

/bin 
/sbin 
/usr/bin 
/usr/lib 
/usr/sbin 
/usr/share 
/System 

OS X 응용 프로그램이 (이전의) 예와 같이 파일 시스템과 상호 작용할 수있게하려면 응용 프로그램 샌드 박스에서 허용하지 않는 승격 된 권한 (일반적으로 Authorization Services)을 사용해야합니다. "Determine Whether Your App Is Suitable for Sandboxing"섹션을 살펴보면 다른 모든 문제에 대한 답변을 얻을 수 있습니다.

샌드 박스는 여러 가지면에서 좋지만 동시에 매우 제한적입니다. 앱이 허용 범위를 벗어난 일을해야하는 경우 Mac App Store를 통해 판매하지 않고 샌드 박스를 사용하지 않도록 선택할 수 있습니다. 일부 개발자는 앱의 두 가지 버전 (Mac App Store 버전 및 Mac App Store가 아닌 버전)을 만듭니다. 앱이 외부에 나가는 것에 의존한다면 Sandboxing의 장점과 단점을 고려/검토하고 싶을 것입니다. 답에 대한

  • File System Programming Guide
  • App Sandbox Guide
  • +0

    감사하지만 당신은 옵션으로 샌드 박스에 대해 이야기. 앱 스토어에서 판매하려면 옵션이 아닙니다. 맞습니까? 내 말은, 애플은 앱 스토어를 통해 판매된다면 모든 앱을 샌드 박스 처리해야한다는 것인가? – SpaceDog

    +2

    수정하십시오. App Sandbox 사용은 Mac App Store 외부에서 판매하려는 경우에만 선택 사항입니다. –

    +0

    나는 그것을 의심하고 있었다. 감사. – SpaceDog