2012-02-19 5 views
8

Sto cercando un'app per sandbox per soddisfare il requisito di sandboxing del primo marzo del Mac App Store. La mia app include un emulatore di terminale integrato che utilizza una chiamata forkpty() per avviare i processi in un ambiente pseudo-tty. Sfortunatamente, questa chiamata non riesce sotto la sandbox con l'errore "Operazione non consentita", sebbene la chiamata fork() funzioni correttamente. Presumibilmente, la chiamata forkpty() richiede l'accesso in lettura/scrittura alla directory/dev/per creare uno pseudo-tty (in base alla pagina man). Ho provato ad aggiungere un entitlement sandboxing temporaneo (com.apple.security.temporary-exception.files.absolute-path.read-write) con accesso in lettura/scrittura a /, e ora posso effettivamente leggere e scrivere file ovunque sul file system, ma la chiamata forkpty() non riesce ancora con lo stesso errore. Qualcuno sa come posso ottenere forkpty() per lavorare sotto la sandbox?Mac sandboxing e forkpty per app()

La mia app è un editor di testo di programmazione con un emulatore di terminale e un browser di file integrati, quindi in pratica deve avere accesso all'intero file system. A parte il problema forkpty(), questa autorizzazione temporanea sembra fare ciò di cui ho bisogno. Ma Apple accetterà un'app con un diritto di eccezione temporaneo così definito?

Grazie in anticipo ragazzi. Spero davvero di riuscire a far funzionare questo sandbox e continuo a distribuire la mia app attraverso l'App Store.

+0

Hmm, se si sta iniziando una shell, questa shell dovrebbe disporre di tutti i privilegi per evitare fastidiosi utenti, il che contraddice l'idea di sandboxing ... – jilles

risposta

2

È impossibile implementare un utile emulatore di terminale in un'applicazione sandbox: anche dopo aver aggiunto le autorizzazioni per i dispositivi PTY, la shell finisce nella stessa sandbox dell'app, impedendole di fare molto.