Мой дизайн приложений для какао - это один пользовательский интерфейс .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 .
Что такое блок питания? – uchuugaka
Я обновил свой вопрос со ссылкой на соответствующую документацию на блок питания. – Andrew