2014-07-06 9 views
5

Kann eine App, die über den Mac App Store verkauft wird, auf Systemordner zugreifen?Kann eine Sandbox-App, die im Mac App Store verkauft wird, auf Systemordner zugreifen?

Ich meine dies: meine App muss den Inhalt von Verzeichnissen, die außerhalb der Sandbox-Bereich sind, lesen wir etwas wie /Library/StartupItems und möglicherweise löschen Sie eine Datei dort, wenn der Benutzer will.

Kann eine Sandbox-App auf Systemordner zugreifen und Dateien dort löschen? Wenn es nicht gelöscht werden kann, kann es zumindest lesen?

Muss ich Sandbox aktivieren, wenn ich im Mac App Store verkaufen möchte?

Ich habe ein Verzeichnis zufällig dies zu tun versucht:

NSString *path = @"/Library/StartupItems"; 
    NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; 

und ich kann die Verzeichnisliste zu bekommen. Wie kann ich lesen, wenn die App als Sandbox markiert ist? Ich verstehe es nicht.

Antwort

4

Nein, OS X Anwendungen, die über den Mac App Store verkauft werden, können nicht wie beschrieben auf Ressourcen zugreifen. Es ist außerdem erforderlich, dass alle Apps Sandboxed sind und mit einem gültigen Mac Developer Program Certificate signiert sind.

Wie in der Lage zu lesen /Library/StartupItems (die veraltet ist), wenn Ihre App als "Sandboxed" markiert ist; Es ist nicht nur eine Frage der Option überprüft werden. Sie müssen außerdem sicherstellen, dass die Datei "Berechtigungsdateien verwenden" ausgewählt ist und dass die Anwendung ordnungsgemäß mit einem Code versehen ist. Sobald Sie getan haben, dass Sie überprüfen können, überprüfen, um es richtig in Terminal Sandbox ist durch die Verwendung:

codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable 

Darüber hinaus gibt es bestimmte Verzeichnisse, in denen Dateien, die „Welt lesbar“ sind, können gelesen werden:

/bin 
/sbin 
/usr/bin 
/usr/lib 
/usr/sbin 
/usr/share 
/System 

Damit eine OS X-Anwendung wie Ihr (früheres) Beispiel mit dem Dateisystem interagieren kann, muss die Anwendung erhöhte Berechtigungen verwenden, die normalerweise Authorization Services verwenden - was die App Sandbox nicht zulässt. Werfen Sie einen Blick auf den Abschnitt mit dem Titel "Determine Whether Your App Is Suitable for Sandboxing", und es sollte alle anderen Bedenken beantworten, die Sie möglicherweise haben.

Sandboxing ist in vielerlei Hinsicht gut, aber auch sehr restriktiv zugleich. Wenn Ihre App Dinge tun muss, die nicht im zulässigen Rahmen liegen, können Sie wählen, dass Sie nicht über den Mac App Store verkaufen und Sandboxing nicht verwenden. Einige Entwickler erstellen auch zwei verschiedene Versionen ihrer App (Mac App Store-Version und Nicht-Mac App Store). Wenn deine App darauf angewiesen ist, für viele Dinge aus dem Container zu gehen, wirst du definitiv die Vor- und Nachteile von Sandboxing abwägen wollen.

+0

Danke für die Antwort, aber sie sprechen als Option über Sandbox. Es ist keine Option, wenn ich es im App Store verkaufen möchte, oder? Ich meine, Apple zwingt alle Apps dazu, Sandboxed zu sein, wenn sie durch den App Store verkauft werden, richtig? – SpaceDog

+2

Korrigieren. Verwenden der App Sandbox ist nur optional, wenn Sie sie außerhalb des Mac App Stores verkaufen möchten. –

+0

Ich habe das vermutet. Vielen Dank. – SpaceDog