2012-02-19 6 views
8

Mac App Store의 3 월 1 일 샌드 박싱 요구 사항을 준수하기 위해 샌드 박스를 사용하려고합니다. 내 응용 프로그램에는 pseudo-tty 환경에서 프로세스를 시작하기 위해 forkpty() 호출을 사용하는 내장 터미널 에뮬레이터가 포함되어 있습니다. 아쉽게도 fork() 호출이 제대로 작동하지만 "호출이 허용되지 않습니다"라는 오류 메시지와 함께 샌드 박스에서이 호출이 실패합니다. 아마 forkpty() 호출은 (man 페이지에 따라) pseudo-tty를 생성하기 위해/dev/디렉토리에 대한 읽기/쓰기 액세스를 요구합니다. /에 대한 읽기/쓰기 액세스 권한이있는 임시 샌드 박스 사용 권한 (com.apple.security.temporary-exception.files.absolute-path.read-write)을 추가하려고 시도했지만 이제는 실제로 어디서나 파일을 읽고 쓸 수 있습니다. 파일 시스템에 있지만 여전히 동일한 오류로 forkpty() 호출이 실패합니다. 아무도 내가 모래 상자에서 작동하도록 forkpty()을 얻는 방법을 알고 있습니까?Mac app sandboxing and forkpty()

내 응용 프로그램은 터미널 에뮬레이터와 파일 브라우저가 내장 된 프로그래밍 텍스트 편집기이므로 전체 파일 시스템에 액세스해야합니다. forkpty() 문제는 별개로,이 임시 자격은 내가 필요한 것을 수행하는 것 같습니다. 그러나 애플은 느슨하게 정의 된 임시 예외 권한을 가진 앱을 받아 들일 것인가?

미리 감사드립니다. 이 샌드 박스를 실행하여 App Store를 통해 내 앱을 계속 배포 할 수 있기를 바랍니다.

+0

흠집을 시작하는 경우,이 셸은 성가신 사용자를 피할 수있는 완전한 권한을 가져야 만합니다. 이는 샌드 박스 개념에 위배됩니다. – jilles

답변

2

샌드 박스 응용 프로그램에 유용한 터미널 에뮬레이터를 구현하는 것은 불가능합니다. PTY 장치에 대한 권한을 추가 한 후에도 셸은 응용 프로그램과 동일한 샌드 박스에서 끝나며 그렇게하지 못합니다.