如何使用命令行删除钥匙串引用

4
从钥匙串应用程序中,我可以选择仅删除通过命令行解锁并列出的钥匙串的引用Keychain app 但是从命令行(man security)中,我似乎没有这个选项,只能删除与此钥匙串相关的文件+引用

security command man

如何仅从命令行中删除以前解锁的钥匙串的引用?在执行某些操作后,我想清理和删除(取消列出?)该钥匙串(因为如果不删除,则在钥匙串应用程序中仍然可见)。
2个回答

8
delete-keychain命令行选项用于删除密钥链文件并将其从密钥链搜索列表中移除。如果只想从搜索列表中删除密钥链的引用,请使用list-keychains -s,在删除要消失的密钥链时重写列表。

list-keychains与delete-keychain的区别

在命令行中,引用由list-keychains处理,而数据库/密钥链文件由delete-keychain处理。

常规工作流程

# Get a list of user keychains, make a note of the names
security list-keychains -d <user> 

# Create a new keychain
security create-keychain -p <password> MyNew.keychain

# Adjust the 'references' by rewriting the search list
security list-keychains -s MyNew.keychain <space separated list of other keychains>

# Delete the keychain
security delete-keychain MyNew.keychain

3
您可以使用rm命令直接删除文件。位置将根据密钥链是否在system域或user域中而有所不同。
系统域密钥链位置:
$ ls -l /Library/Keychains/
total 392
-rw-r--r--  1 root  wheel  20460 Aug 21  2014 ConnectedBackup.keychain
-rw-r--r--  1 root  wheel  23732 Aug 21  2014 FileVaultMaster.keychain
-rw-r--r--  1 root  wheel  89560 Sep 19 21:37 System.keychain
-rw-r--r--  1 root  wheel  20460 Nov 10  2014 System.keychain-orig

用户域钥匙串位置
$ ls -l ~/Library/Keychains/
total 1392
drwx------  8 Kevin  1437522721     272 Jul  1  2015 386EC17D-8428-522E-B9DD-CE89C60F0F10
-rw-r--r--@ 1 Kevin  1437522721   40776 Jan 25  2016 Microsoft_Entity_Certificates
-rw-r--r--@ 1 Kevin  1437522721   34368 Jan 25  2016 Microsoft_Intermediate_Certificates
-rw-r--r--@ 1 Kevin  1437522721  513136 Sep 27 20:05 login.keychain
-rw-------  1 Kevin  1437522721   87552 Sep 28 16:59 metadata.keychain

如果您想从用户域中删除“login”钥匙串,可以执行以下操作:
$ rm -rf ~/Library/Keychains/login.keychain

(在钥匙串实用程序中显示的密钥串名称是不带后缀 .keychain 的文件名) 编辑

macOS Sierra 及以上版本具有 -db 扩展名。


1
但我不想删除文件,只是删除引用! - Anubis
@Anubis 这也是我想要的。删除钥匙串文件并复制一个带有更新内容的新文件(相同的文件名 - appstore.keychain)会显示旧内容!这就是为什么我需要一个命令,可以删除引用或从磁盘上的文件刷新内容。如果有人知道如何操作,请告诉我们。我们的iOS构建农场中的Mac mini存在问题,因为无法在构建机器上更新从安全位置下载的AppStore钥匙串,原因是钥匙串中有旧证书。但是当我在另一组Mac上执行完全相同的步骤时,内容会得到更新。 - Patrick D
@PnotNP 在我的情况下没有起作用。Keychain Access 应用程序能够删除引用和钥匙串文件,但使用 rm 命令删除文件时,如果将具有与已删除文件(使用 rm 命令)相同的文件名和路径名的钥匙串文件复制到原位,则无法查看新内容。它在 Keychain Access 应用程序中显示为旧的过期证书。但是不同的 Mac 显示不同的结果。我们的构建机器上运行 macOS 10.12.6,并每天进行新启动。如果我必须登录到 50 台 Mac 的农场上执行此操作以删除应用程序中的钥匙串,那么我将浪费大量时间。 - Patrick D
@PatrickD,“删除引用”只是钥匙串实用程序的特权。在文件系统中,没有引用,只有同样的旧文件。钥匙串保留了引用。你的问题似乎不在钥匙串本身。 - JamesWebbTelescopeAlien
@PatrickD 使用rm命令删除文件,然后用新文件替换也不起作用,因为Keychain实用程序足够聪明,可以弄清楚你刚刚做了什么。最好的方法是创建一个新的钥匙串或只修改钥匙串中的内容,并“刷新您的应用程序”以使用新内容。 - JamesWebbTelescopeAlien
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接