Ошибка при доступе к элементу цепочки для ключей из плагина авторизации OS X
Я использую плагин авторизации NameAndPassword для входа через экран блокировки OS X (фиксированная версия плагина, поскольку оригинал сломан). Мне нужно, чтобы он мог каким-то образом получить доступ к сохраненным паролям, и в настоящее время я пытаюсь добиться этого с помощью цепочек для ключей.
Мне удалось создать цепочку для ключей и сохранить некоторый пароль внутри, а также ACL, необходимый для доступа к паролю без запроса пользователя. Любое приложение, добавленное в ACL, работает нормально без запросов, но когда я пытаюсь получить доступ к цепочке для ключей с помощью этого плагина авторизации NameAndPassword, я получаю -25293 The user name or passphrase you entered is not correct
ошибка при звонке SecKeychainFindGenericPassword
получить пароль.
Я попытался добавить оба /Library/Security/SecurityAgentPlugins/NameAndPassword.bundle
расслоение и /Library/Security/SecurityAgentPlugins/NameAndPassword.bundle/Contents/MacOS/NameAndPassword
сам исполняемый файл в ACL, но ошибка всегда одна и та же.
Я полагаю, что это может быть связано с тем, что этот плагин запускается от имени другого пользователя (или вообще без пользователя). Что я могу сделать, чтобы избавиться от этой ошибки? Или, может быть, это будет невозможно? В таком случае, как я могу хранить и получать доступ к паролям из этого плагина, когда он не может получить доступ к домашнему каталогу? Я боролся с этим уже несколько недель.
2 ответа
Убедитесь, что вы изменили владельца пакета подключаемых модулей на root:wheel Используйте эту команду:
sudo chown -R root:wheel /Library/Security/SecurityAgentPlugins/NameAndPassword.bundle
Плагин, вероятно, должен быть настроен как привилегированный, чтобы иметь доступ к расположению файловой системы, где хранится ваша цепочка для ключей.
Ваш механизм, возможно, должен работать после HomeDirMechanism, если вам нужен доступ к домашнему каталогу.
Для того, чтобы читать из цепочки для ключей, вам нужно сначала разблокировать ее. Для стандартной цепочки для ключей входа в систему ее обычно можно разблокировать с помощью пароля из окна входа в систему, поскольку по умолчанию она синхронизируется с паролем для входа.
Вам нужно будет указать, из какой цепочки ключей вы читаете, иначе он попытается использовать цепочку ключей по умолчанию для пользователя root, которая может не существовать.
Техническая записка Apple охватывает многое по этой теме. https://developer.apple.com/library/content/technotes/tn2228/_index.html