Могут ли приложения магазина приложений Mac получать доступ к локальной файловой системе? - PullRequest
2 голосов
/ 25 августа 2011

Мне интересно, какие ограничения наложены на магазин приложений Mac. Может ли кто-нибудь указать мне правильное направление? Например, допустим, я хотел написать приложение, которое выполняет инкрементное автоматическое резервное копирование файлов в файловой системе Mac, возможно ли это с приложением в магазине приложений Mac, или мой единственный вариант - это автономное приложение Mac?

На iPhone приложения содержатся в собственной «песочнице»? Относится ли этот принцип к приложениям в Mac App Store?

Ответы [ 6 ]

8 голосов
/ 02 сентября 2011

Ребята, на что действительно ссылается ОП, описано здесь:

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

Это все о

  • Контейнеры
  • Права
  • PowerBox (daemon)

После того, как приложение «помещено в« песочницу »», его представление о «домашнем» каталоге выглядит как Контейнер (который создается первымначните с $ HOME / Library / Containers / appBundleID / Data).Там он находит свою «личную копию» файлов конфигурации, кэша и данных.И, конечно, он не может читать что-либо еще, если только ...

... вы не дадите приложению соответствующие Права в виде файла свойств с кодовым обозначением (на самом деле кодовое обозначение является неотъемлемой частьюконцепция песочницы).

Одним из этих прав является « com.apple.security.files.user-selected.read-write », который позволяет приложению читать изапишите именно те файлы, которые пользователь явно выбрал через стандартный диалог сохранения и открытия соответственно .

Затем демон PowerBox (pboxd) отображает соответствующий файловый диалог в своем собственном пространстве процесса и добавляет выбранный файлпути к списку разрешенных файлов.Это прозрачно для приложения, то есть никаких изменений кода не требуется - при условии, что приложение использует стандартные диалоговые окна NSOpenPanel или NSSavePanel.

"Для упрощения изолированной программной среды приложения Mac OS X v10.7 предоставляет доверенную системудемон, которому поручено представлять открытые и сохраненные панели от имени приложений, работающих в изолированной программной среде приложения. Этот демон называется Powerbox (его имя процесса - pboxd). Эти представленные Powerbox удаленные панели выглядят совершенно неотличимыми от панелей в процессе с точки зрениявзаимодействие с пользователем.

Каждый раз, когда приложение, запущенное в изолированной программной среде, вызывает диалог NSOpenPanel или NSSavePanel, вместо того, чтобы показывать панели напрямую, AppKit автоматически запрашивает Powerbox для представления диалогового окна.необходимы изменения с точки зрения использования этих панелей; этот процесс полностью прозрачен ».[конец цитаты из Apple docs]

Учитывая все это, то, что потребуется OP (для решения резервного копирования), - это «непосредственное чтение / запись» :

"Еслиприложение выбирает получение домашнего каталога пользователя таким образом, чтобы обойти API-интерфейсы Cocoa (например, путем непосредственного вызова getpwent), изолированная программная среда приложения запрещает ему выполнять запись в пути, которые оно получает (если только приложение не имеет права на запись без опосредованного отношения, которое являетсяНастоятельно не рекомендуется по очевидным причинам безопасности. "[конец цитаты из Apple docs]

Однако самые близкие права, которые дадут" свободный доступ к файловой системе ", которые я мог бы штрафовать:1040 *

  • Абсолютный файл только для чтения - Возможность чтения файлов или каталогов по указанным абсолютным путям. ( com.apple.security.tevent-exception.files.absolute-path.read-only )

  • Абсолютное чтение / запись файла - Возможность чтения или записи файлов или каталоговпо указанным абсолютным путям.( com. И я не уверен, может ли приложение просто предоставить корневой каталог "/"

    В любом случае, внимательно обратите внимание на то, что эти права помечены как "временные": Apple может удалить или осудить эти права впосчитал нужным !

3 голосов
/ 25 августа 2011

Я полагаю, что начиная с ноября, заявки в Mac App Store должны принять «песочницу» приложения.Существуют определенные разрешения, которые вы можете запросить, когда ваше приложение отправляется в магазин приложений, а также объяснение, почему вам нужны эти разрешения.Дополнительную информацию можно найти в видео WWDC Session 204 на сайте разработчика.

1 голос
/ 27 декабря 2012
1 голос
/ 25 августа 2011

Технически, в OS X существует песочница. Однако, кандидаты, запускаемые пользователем вручную, обходят эти ограничения песочницы (иногда требующие экранов эскалации / проверки администратором).

Взгляните на: http://techjournal.318.com/security/a-brief-introduction-to-mac-os-x-sandbox-technology/

1 голос
/ 25 августа 2011

Меняются или изменились с выпуском Lion.Приложения Mac Store раньше могли выполнять в файловой системе все, что могли позволить зарегистрированные пользователи, но я думаю, что теперь вам необходимо использовать систему разрешений и, следовательно, изолированную среду своего приложения.

Прочтите это, чтобы узнать больше идей

https://developer.apple.com/library/mac/#releasenotes/General/SubmittingToMacAppStore/_index.html#//apple_ref/doc/uid/TP40010572

0 голосов
/ 25 августа 2011

В настоящее время вы можете найти Hype или Pixelmator в Mac App Store.

Это наглядно доказывает, что вы можете сохранять на диск и читать с диска, что кажется основной функцией любого серьезного приложения.Более того, Apple подталкивает разработчиков к использованию инкрементного автоматического резервного копирования файлов, поэтому было бы очень удивительно, если бы они запретили это в App Store, не так ли?

...