Mac App Sandboxing und Forkpty ()

8

Ich möchte eine Sandbox erstellen, um den Anforderungen des Mac App Store vom 1. März zu entsprechen. Meine App enthält einen integrierten Terminalemulator, der einen forkpty() -Aufruf verwendet, um Prozesse in einer Pseudo-Tty-Umgebung zu starten. Leider schlägt dieser Aufruf unter der Sandbox mit dem Fehler "Operation nicht erlaubt" fehl, obwohl der fork() -Aufruf einwandfrei funktioniert. Vermutlich benötigt der Aufruf forkpty() Lese- / Schreibzugriff auf das Verzeichnis / dev /, um ein Pseudo-Tty zu erstellen (entsprechend der Manpage). Ich habe versucht, eine temporäre Sandboxing-Berechtigung (com.apple.security.temporary-exception.files.absolute-path.read-write) mit Lese- / Schreibzugriff auf / hinzuzufügen, und ich kann jetzt tatsächlich Dateien überall auf der Dateisystem, aber der Aufruf forkpty() schlägt immer noch mit demselben Fehler fehl. Weiß jemand, wie ich forkpty() erhalten könnte, um in der Sandbox zu arbeiten?

Meine App ist ein Programmtext-Editor mit einem integrierten Terminalemulator und Dateibrowser, der im Prinzip Zugriff auf das gesamte Dateisystem benötigt. Abgesehen von dem forkpty() Problem scheint diese temporäre Berechtigung zu tun, was ich brauche. Aber akzeptiert Apple eine App mit einer solchen, zeitlich begrenzten Ausnahmeberechtigung?

Vielen Dank im Voraus Jungs. Ich hoffe wirklich, dass ich dieses Sandboxing einrichten und ausführen kann, so dass ich meine App weiterhin über den App Store vertreibe.

    
krill 19.02.2012, 22:31
quelle

1 Antwort

2

Es ist nicht möglich, einen nützlichen Terminalemulator in einer Sandbox-Anwendung zu implementieren - selbst nachdem Sie Berechtigungen für die PTY-Geräte hinzugefügt haben, landet die Shell in der gleichen Sandbox wie die App und verhindert, dass sie viel tut.

>     
duskwuff 04.03.2013 16:41
quelle