Права администратора песочницы

Я только что скачал приложение iAntivirus из Mac App Store. Я хотел, чтобы он просканировал весь мой жесткий диск на наличие вирусов, поэтому он представил мне диалоговое окно «Открыть», указывающее на корень жесткого диска (чтобы компьютер мог получить доступ за пределами своей песочницы). Я нажал ок, и приложение запустилось.

Что мне показалось странным, так это то, что мне никогда не показывали окно входа в систему. Программе был предоставлен доступ к файлам в папке «Система», «Библиотека» и т. д., которые только я мог редактировать, введя имя пользователя и пароль администратора. Это проблема безопасности с песочницей или она так и должна работать?

Ответы (2)

Приложение может иметь доступ для чтения/записи к местоположению, если оно получает ваше разрешение, используя право как часть песочницы приложения, другими словами, это то, как оно должно работать. Приложение подписано кодом и ему доверяют, оно спрашивает вашего разрешения, теоретически все должно быть хорошо.

Как отмечено в обзоре технологий Mac :

Песочница приложения

Представленная в OS X v10.7 песочница приложений обеспечивает последнюю линию защиты от кражи, повреждения или удаления пользовательских данных, если вредоносный код использует ваше приложение. App Sandbox также сводит к минимуму ущерб от ошибок кодирования. Его стратегия двояка:

App Sandbox позволяет вам описать, как ваше приложение взаимодействует с системой. Затем система предоставляет вашему приложению только тот доступ, который ему необходим для выполнения своей работы, и не более того.

Песочница приложения позволяет пользователю прозрачно предоставлять вашему приложению дополнительный доступ с помощью диалоговых окон «Открыть» и «Сохранить», перетаскивания и других привычных действий пользователя.

В частности, разработчик может реализовать следующее право, как указано здесь в разделе «Включение тестовой среды приложения» . Это именно то, что вы описали в своем вопросе, так что, вероятно, это право, которое разработчик аудио/видеопрограммы использовал для получения доступа только для чтения и записи.

com.apple.security.files.user-selected.read-write

Доступ для чтения/записи к файлам, выбранным пользователем с помощью диалогового окна «Открыть» или «Сохранить».

Обратите внимание, что это не то же самое, что настоящий пользователь-администратор, поскольку программе не будут предоставлены права на выполнение.

Ничего себе, я понимаю, почему это работает, но это все еще немного удивительно. Согласно тому, что вы сказали, я мог бы предоставить приложению доступ к папке на рабочем столе другого пользователя (или к любой другой папке, к которой у меня нет разрешения на доступ), если я открываю одну из его родительских папок в диалоговом окне «Открыть». Это как бы побеждает цель разрешений, если я не вижу это правильно.
@Jack Этот ответ не совсем правильный. Geowar предоставил ответ ниже, который является более точным описанием того, что происходит: приложение использует разрешения пользователя, которые могут включать чтение/запись, но если у них нет разрешения, диалоговое окно NSOpen не предоставляет его.

Вы не видите это правильно. Песочница не обходит права доступа к файлам. Если у вас нет прав на запись в файл, то наличие права на запись в файл не даст вам права на запись в файл. Точно так же диалоги NSOpen/NSSave не могут получить доступ к чему-либо, к чему они не могут получить доступ при отключенной песочнице.