Я использую следующую команду для получения пароля из связки ключей в сценарии оболочки: security find-generic-password -w -s "MyServiceName"
Это работает, но показывает всплывающее окно, запрашивающее у меня пароль для входа в систему:
security
хочет использовать вашу конфиденциальную информацию, хранящуюся в «MyServiceName» в вашей цепочке для ключей. Чтобы разрешить это, введите пароль для входа в систему.С вариантами
Deny
,Allow
илиAlways Allow
Но я не хочу каждый раз вводить пароль для своей цепочки для ключей, поэтому я не могу использовать «Разрешить» и предпочел бы не «Всегда разрешать», чтобы сохранить некоторый уровень безопасности здесь.
В идеале я хотел бы получить приглашение Touch ID. Есть какой-либо способ сделать это ?
Ответы:
Исследуя это, я не смог найти никакого метода, который позволял бы
security
команде использовать Touch ID. Эта статья под названием: « Как использовать Touch ID для аутентификации sudo в Mac OS» , упомянутая в комментарии, касающемся,sudo
а затем использования Touch ID, не будет работать, поскольку в ней используется добавление этой строки:в
sudo
файл PAM/etc/pam.d/sudo
. Нет ничего эквивалентногоsecurity
команде, так как она не используетsudo
.Поэтому вам остается использовать один из 2 методов, упомянутых в диалоговом окне при запуске
security
команды:Если вы выберете «Всегда разрешать», это даст неограниченный доступ только к
security
команде. Если вы выберете «Разрешить», он дастsecurity
доступ к связке ключей только один раз.пример
Здесь я создал элемент пароля приложения в связке ключей с именем TestPassword.
Мы можем видеть, что ничто не было предоставлено доступ к нему, глядя на вкладку ACL этого диалога.
Если я запускаю эту
security
команду:И навсегда «Всегда разрешать» мне будет дан пароль для этого элемента из цепочки для ключей:
Но что более важно, я добавлю
security
в ACL для этого элемента в Keychain.источник