Пользовательский экран входа / блокировки в 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, но это не сработало, поэтому через некоторое время мне удалось сделать это проще, чем я думал:
security authorizationdb read system.login.console > outfile.plist
После этого вам нужно изменить получившийся
outfile.plist
как сказано в readme NullAuthPlugin:<key>mechanisms</key> <array> <string>NameAndPassword:invoke</string>
(последняя строка - та, которую нужно добавить в файл).
Затем, чтобы сохранить его в базе данных:
security authorizationdb write system.login.console < outfile.plist
Тогда изменения должны быть видны на любом экране входа / блокировки вашей системы, но будьте осторожны!
Вы не сможете аутентифицироваться в текущей версии примера NameAndPassword!
Обязательно установите работающее SSH-соединение с Mac до изменения базы данных, чтобы вы могли отменить изменения, используя другое устройство (просто повторите процесс изменения базы данных, но на этот раз удалите строку, которую вы добавили ранее).