Как использовать BetterAuthorizationSample? - какао - PullRequest
5 голосов
/ 25 апреля 2011

Я пытаюсь использовать BetterAuthorizationSample, а не использовать так называемый «злонамеренный» способ использования setuid для получения привилегий root.

В настоящее время я использую AuthorizationCreate ();с BLAuthentication для получения root-прав на изменение некоторых файлов, но меня несколько раздражает тот факт, что мне приходится постоянно вводить свой пароль при каждом запуске приложения.

Так что я натолкнулся на метод Apple HelperTool,и я просто не могу понять.

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

Существует ли более простой способ использовать концепцию HelperTool, чтобы мои пользователи могли просто ввести свой пароль один раз, и он предоставил бы привилегии rootнавсегда?

1 Ответ

2 голосов
/ 11 декабря 2012

«Современный» способ создать вспомогательный инструмент в Mac OS X - это отправить его как часть вашего приложения, а использовать инфраструктуру ServiceManagement для его развертывания . Ваши пользователи вводят свой пароль один раз при развертывании инструмента. Это устанавливает его как launchd задание; с тех пор вы используете любой механизм запуска по требованию , чтобы запустить помощника и заставить его работать за вас.

Обратите внимание, что в сообщении блога, указанном выше, рекомендуется защищать последующие вызовы помощника с помощью эскалации Authorization Services , чтобы избежать произвольного повышения привилегий, которое может использовать любой. Кажется, что это несколько влияет на преимущество «пользователи могут просто ввести свой пароль один раз», хотя вы можете использовать AuthorizationRightSet() для создания токена авторизации вашего приложения в базе данных политики, чтобы вы могли фактически определить, нужно ли пользователям представить пароли при первом развертывании.

Пример кода из этого поста на GitHub и демонстрирует использование ServiceManagement для развертывания вспомогательного инструмента и служб авторизации для управления доступом к нему.

...