2012-02-19 11 views
8

Estoy buscando sandbox una aplicación para cumplir con el requisito de sandboxing de 1 de marzo de la Mac App Store. Mi aplicación incluye un emulador de terminal incorporado que utiliza una llamada forkpty() para iniciar procesos en un entorno pseudo-tty. Desafortunadamente, esta llamada falla debajo de la caja de arena con el error "Operación no permitida", aunque la llamada fork() funciona bien. Presumiblemente, la llamada forkpty() requiere acceso de lectura/escritura al directorio/dev/para crear un pseudo-tty (según la página man). Intenté agregar un permiso de espacio aislado temporal (com.apple.security.temporary-exception.files.absolute-path.read-write) con acceso de lectura/escritura a /, y ahora puedo leer y escribir archivos en cualquier lugar del sistema de archivos, pero la llamada forkpty() aún falla con el mismo error. ¿Alguien sabe cómo podría obtener forkpty() para trabajar en la caja de arena?Mac aplicación sandboxing y forkpty()

Mi aplicación es un editor de texto de programación con un emulador de terminal y un explorador de archivos integrados, por lo que básicamente necesita tener acceso a todo el sistema de archivos. Aparte del problema forkpty(), este derecho temporal parece hacer lo que necesito. ¿Pero Apple aceptará una aplicación con un derecho de excepción temporal tan poco definido?

Gracias de antemano chicos. Realmente espero poder poner en marcha este espacio de pruebas y seguir distribuyendo mi aplicación a través de la App Store.

+0

Hmm, si está iniciando un shell, este shell debería tener todos los privilegios para evitar usuarios molestos, lo que contradice la idea de sandboxing ... – jilles

Respuesta

2

Es imposible implementar un emulador de terminal útil en una aplicación de espacio aislado: incluso después de agregar derechos para los dispositivos PTY, el shell termina en la misma zona de pruebas que la aplicación, evitando que haga mucho.

Cuestiones relacionadas