2012-02-19 13 views
8

Mac App Storeの3月1日のサンドボックス要件に準拠するために、アプリをサンドボックスしたいと思っています。私のアプリには、擬似tty環境でプロセスを起動するためのforkpty()呼び出しを利用するビルトイン端末エミュレータが含まれています。残念ながら、この呼び出しは "操作が許可されていません"というエラーのサンドボックスで失敗しますが、fork()呼び出しは正常に機能します。おそらくforkpty()コールには、疑似ttyを作成するために/ dev /ディレクトリへの読み書きアクセスが必要である(マニュアルページによると)。私は一時的なサンドボックス化の権利(com.apple.security.temporary-exception.files.absolute-path.read-write)を/への読み取り/書き込みアクセス権で追加しようとしましたが、今ではどこでもファイルを読み書きできますファイルシステムでも、同じエラーでforkpty()呼び出しが失敗します。どのように私はforkpty()がサンドボックスの下で動作するかもしれないか誰にも知っていますか?Mac app sandboxing and forkpty()

私のアプリは、ターミナルエミュレータとファイルブラウザが組み込まれたプログラミングテキストエディタなので、ファイルシステム全体にアクセスする必要があります。 forkpty()の問題とは別に、この一時的な資格が私の必要とするように見えます。しかし、Appleは、このようなゆるやかに定義された一時的な例外の権利を持つアプリを受け入れるだろうか?

ありがとうございました。このサンドボックスを起動して実行することができれば、私はApp Storeを通じて自分のアプリケーションを配布し続けることができます。

+0

ええと、シェルを起動している場合、このシェルには迷惑なユーザーを避けるための完全な権限が必要です。これはサンドボックス化の考え方と矛盾します... – jilles

答えて

2

サンドボックスアプリケーションで有用な端末エミュレータを実装することは不可能です.PTYデバイスのエンタイトルメントを追加した後でも、シェルはアプリケーションと同じサンドボックス内で終了し、あまり実行しません。