Пользовательский экран входа / блокировки в OS X Mavericks

Я пытаюсь переопределить экран входа / блокировки по умолчанию в OS X, чтобы позволить пользователю войти в систему иным способом, кроме предоставления пароля (например, сканер отпечатков пальцев или как работает "Knock to unlock"), и я ищу способ делать это часами - все, что мне показалось полезным, это ссылка на ADC подключаемого модуля авторизации и этот пример: https://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html

Этот проект xcode NameAndPassword немного устарел, но мне удалось его создать, просто указав Base SDK (был жестко задан неправильный путь), а затем я поместил полученный файл.bundle в /Library/Security/SecurityAgentPlugins каталог. После того, как я заблокировал экран, ничего не изменилось, но я знаю, что мне нужно добавить роль авторизации в /etc/authorization файл, который я знаю, больше не существует в Mavericks (есть этот файл auth.db и весь API-интерфейс auth), но поэтому я застрял здесь - я не знаю, как поместить NameAndPassword в эту базу данных.

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

1 ответ

Решение

Я нашел способ редактировать базу данных - сначала я попробовал прямой /var/private/db/auth.db Изменения sqlite, но это не сработало, поэтому через некоторое время мне удалось сделать это проще, чем я думал:

  1. security authorizationdb read system.login.console > outfile.plist

  2. После этого вам нужно изменить получившийся outfile.plist как сказано в readme NullAuthPlugin:

    <key>mechanisms</key>
      <array>
        <string>NameAndPassword:invoke</string>
    

    (последняя строка - та, которую нужно добавить в файл).

  3. Затем, чтобы сохранить его в базе данных:

    security authorizationdb write system.login.console < outfile.plist

Тогда изменения должны быть видны на любом экране входа / блокировки вашей системы, но будьте осторожны!

Вы не сможете аутентифицироваться в текущей версии примера NameAndPassword!

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

Другие вопросы по тегам