2014-01-09 6 views
1

Мой дизайн приложений для какао - это один пользовательский интерфейс .app (UI) и три службы XPC. файлApp Sandboxing, XPC Services и различные права

Основные потребности приложения только для чтения, чтобы показать powerbox и отображения выбранного пути в интерфейсе

  • com.apple.security.app-песочница
  • com.apple.security. files.user-selected.read только
  • com.apple.security.files.bookmarks.app-сфера

Два XPC услуг необходимо подать только для чтения

  • com.apple.security.app-песочница
  • com.apple.security.files.bookmarks.app-сфера
  • com.apple.security.files.user выбранных .read файл только

нужно XPC сервис чтения-записи

  • com.apple.se curity.app-песочница
  • com.apple.security.files.bookmarks.app-сфера
  • com.apple.security.files.user-selected.read-написать

В связи с потоком взаимодействие с пользователем, основное приложение открывает диалоговое окно с блоком питания, позволяющее пользователю выбирать каталог и отображать его в пользовательском интерфейсе. Основное приложение затем сохраняет это как закладку с областью безопасности. Данные закладки отправляются по всем соединениям XPC по мере необходимости, и каждый отдельный процесс XPC разрешает закладок, чтобы получить доступ к этим файлам в своей песочнице.

Проблема заключается в том, если я не установить главное приложение (которое открывает PowerBox), чтобы иметь файл чтения-записи доступа, услуги XPC, что необходим доступ на запись не получит его, даже если его Entitlements файл определяет файл чтение-запись доступ. Регистрируется в консоли следующее:

deny file-write-unlink <file path> 

единственный способ обойти это, чтобы дать основное приложение, которое открывает файл PowerBox чтения-записи пособий, или перепроектировать поток пользовательского интерфейса, так что процесс, нуждающийся дисплеи доступа записи блок питания? Конечная цель состоит в том, чтобы каждый процесс имел как можно меньше разрешений. Идеальным преимуществом было бы отсутствие доступа к файлам в основном процессе .app, двух сервисах XPC с файлом только для чтения и одним файлом чтения и записи файла службы XPC. Благодаря!

Edit:

Powerbox and File System Access Outside of Your Container:

ОС технология безопасности X, который взаимодействует с пользователем, чтобы расширить вашу песочницу называется Powerbox. У Powerbox нет API.Ваше приложение использует Powerbox прозрачно, когда вы используете классы NSOpenPanel и NSSavePanel .

+0

Что такое блок питания? – uchuugaka

+0

Я обновил свой вопрос со ссылкой на соответствующую документацию на блок питания. – Andrew

ответ

2

Я не эксперт в песочнице, но, эй, даже не ребята, которые его написали. Zing!

Как бы то ни было, архитектурно для встроенных служб XPC имеет смысл разрешать только подмножество содержащего приложения, если это действительно то, что происходит. Аргумент может быть сделан против него, но аргумент в пользу того, что система и пользователи намного легче понять, что может сделать приложение, если оно должно объявить ВСЁ на верхнем уровне, а более низкие уровни (XPC) разрешено делать столько или меньше.

Несмотря на то, что вы стараетесь, чтобы ваши права были как можно меньше, в этом случае вы действительно открываете файл для чтения и письма, чтобы вы могли его объявить.