2010-10-20 8 views
2

Я создаю приложение Cocoa, которое изменяет файл в операционной системе пользователя, для которого требуется разрешение администратора. У меня есть доказательство работы с использованием, которое использует authopen, но оно не доставляет опыта UX, которого я надеюсь достичь. Каждый раз, когда файл изменяется, он запрашивает у пользователя пароль. Есть ли способ получить разрешения, предоставляемые приложению на весь срок его службы?Показывать пароль только один раз - Как?

Цель: Приложение запрашивает у пользователя пароль один раз когда-либо, исходящее приложение не запрашивает пароль.

Следующая Лучшие: Application запрашивает у пользователя пароль один раз при запуске приложения, исходящее приложение не запрашивает пароль, пока перезапуска приложения.

Я в курсе авторизации Услуги и возможности создания демона, который занимается конкретно с модифицирующими привилегированные файлы, что я интересно, если любой из моих перечисленных целей являются даже возможно перед погружением слишком глубоко в другой система.

Действительно оценивайте любые предложения, критические замечания или полезные ссылки.

Приветствия, Dustin

ответ

2

Да, с помощью авторизации службы, это путь вперед. Вы получаете AuthorizationRef в своем приложении через AuthorizationCopyRights() (который показывает пользовательский интерфейс, если необходимо), и передайте это вашему помощнику (путем его упаковки во внешнюю форму), который проверяет, что он действительно получил необходимое право перед выполнением привилегированной задачи , Авторизованные службы могут регистрировать права в базе данных /etc/authorization, поэтому, если вы выберете пользовательское право, вы можете выбрать настройки по умолчанию для тех, кому разрешено его приобретать, какие тайм-аут или другие условия существуют и так далее.

Чтобы развернуть свой привилегированный вспомогательный инструмент, вы должны использовать инфраструктуру Service Management, в частности SMJobBless(), которая проверяет, что идентификаторы подписи кода на вашем клиенте и вспомогательном совпадении перед развертыванием помощника в качестве задания launchd. Затем ваш помощник может быть инициирован по требованию основным приложением.

Не стесняйтесь спрашивать, хотите ли вы разъяснения на любом этапе ответа, однако я уже писал обо всех этих аспектах разделения привилегий в своей книге Professional Cocoa Application Security, так что не стесняйтесь покупать копию или две ;-).

Смежные вопросы