macOS已解锁钥匙串时,如何获取钥匙串项无需密码确认?
在macOS已解锁钥匙串中免密码获取钥匙串项的配置方法
太懂这种别扭的体验了——明明钥匙串已经解锁,还要反复输入密码,尤其是帮用户存密码的时候,完全不符合逻辑!别慌,下面就给你两种靠谱的配置方法,让你在钥匙串解锁的前提下,访问指定钥匙串项再也不用输密码:
图形界面可视化配置(适合普通用户)
- 打开「钥匙串访问」应用:可以通过Spotlight(按
Cmd+Space)搜索“钥匙串访问”,或者在Launchpad的「其他」文件夹里找到它 - 在左侧侧边栏选中目标钥匙串(绝大多数场景选「登录」钥匙串即可,这是macOS默认的个人钥匙串)
- 在右侧列表里找到你需要配置的钥匙串项,右键点击它,选择「显示简介」
- 在弹出的窗口中切换到「访问控制」标签页
- 如果你想彻底放开权限(方便但安全性稍低),直接勾选「允许所有应用访问此项目」
- 如果你想更安全,点击「+」按钮,找到你的应用程序并添加到列表中
- 最后点击「存储更改」,此时会要求你输入一次管理员密码确认,之后再访问这个钥匙串项就无需反复输入密码了
命令行批量/开发配置(适合开发者或批量操作)
如果你习惯用终端,或者需要批量配置,可以借助macOS自带的security命令:
- 先定位到目标钥匙串项,比如你要修改的项名为「MyAppUserPassword」,执行:
从输出里可以找到服务名(security find-generic-password -l "MyAppUserPassword""svce"字段)和账户名("acct"字段),后面会用到 - 给指定应用添加访问权限(比如你的应用路径是
/Applications/MyCustomApp.app):security set-generic-password -l "MyAppUserPassword" -a "$USER" -s "对应的服务名" -T "/Applications/MyCustomApp.app" - 如果想允许所有应用访问,直接用空字符串作为
-T参数:security set-generic-password -l "MyAppUserPassword" -a "$USER" -s "对应的服务名" -T ""
额外注意事项
- 所有配置仅在钥匙串处于解锁状态时生效,如果钥匙串被锁定,还是需要输入密码解锁
- 「允许所有应用访问」虽然便捷,但会降低安全性,建议优先选择给信任的单个/少数应用授权
- 如果你是开发应用,可以直接在代码中调用钥匙串服务API,通过配置访问控制列表(ACL)实现首次授权后免密访问,用户只需要确认一次权限即可
内容的提问来源于stack exchange,提问作者Miquella




