适用于多个用户的 Linux“pass”实用程序

适用于多个用户的 Linux“pass”实用程序

我正在尝试设置一个企业内部密码存储,供各种脚本(和人员)使用。我研究过许多替代方案,但最容易修改以实现我的目标的似乎是pass公用事业。

我对安全性不太在行,而且在 GPG 方面真的是个菜鸟。我已设法通过以下方式使单个用户能够正常工作:

  • 生成新的 GPG 密钥
  • 使用pass init <key_hex>

我还知道我可以使用-p选项(或环境变量)在“数据”文件夹而不是主目录(默认为~/.password-store)中初始化传递存储。

但是,我的情况是,我希望 (Linux) 主机/机箱的所有用户(或稍后特定组的用户)能够访问相同的密码存储。据我了解,我需要以某种方式为所有这些用户创建一个共享的 GPG 密钥,以便每个人都可以使用该pass实用程序访问相同的存储并检索密码。我不知道如何进行这样的设置,我有点不知所措...

任何帮助,将不胜感激

答案1

可以将多个 gpg-id 添加到.gpg-id文件以加密目录中的每个密码。这样做将允许各个成员共享密码存储,而无需将私钥交给每个人。

如果有必要的话,还可以创建具有不同 gpg-id 集的子目录。

请参阅man pass下一节init了解更多详细信息。

以下是一篇概述该过程的优秀文章:https://medium.com/@davidpiegza/using-pass-in-a-team-1aa7adf36592

希望这可以帮助。

答案2

为了避免共享私钥(这并非其真正目的),您可能需要查看相对较新的gopass的替代方案pass,它与 兼容pass并且允许您本地支持多个收件人,同时强制执行git基于 的工作流程。

它是开源的,基于 Go,可在Github

它具有您在多用户环境中使用 pass 时可能缺少的以下功能:

  • git 自动推送和自动拉取,永远不会错过任何变化。
  • 可以像 Linux/UNIX 系统上的文件系统一样相互挂载的多存储
  • 从命令行列出、添加和删除收件人
  • 将公共 gpg 密钥存储在密码存储中的密钥文件夹中
  • 与 git pgp 签名的提交完全兼容

当团队合作共享密码时这真的很有趣。

就像一样pass,这意味着它使用gpg,它以与相同的格式存储密码pass,在文件的第一行.gpg等。

gopass 的正常工作流程如下:

  1. 用户设置密码存储(或采用一个pass)并将每个收件人添加到其中。
  2. 用户在一个可公共访问的 git 存储库上共享密码存储(如果可能的话,在内部 git 服务器上,但由于所有内容都已加密,您也可以将其存储在外部服务器上,请记住,您的条目的结构和名称是暴露的。)
  3. 每个人都使用自己的私钥来解密数据,然后在更改时使用每个人的公钥对数据重新加密。

好消息是,每次提交到你的密码存储区都可以通过 git 签名,它与 PGP 智能卡兼容,例如pass,如果您已经在生活中使用过 Go,那么很容易按照自己的方式对其进行调整。代码附带了大量的单元测试和足够好的文档。

在您的特定情况下,它应该可以很好地工作。您甚至可以避免完全远程 git 服务器,而只需将其存储在一个公共文件夹中。

答案3

每个用户都有权访问 pass,并将使用其钥匙串中的 GPG 密钥(第二个密钥而不是他们自己的密钥)对该目录进行 pass 初始化

首先,确保您的 pass 存储已使用 git 初始化。

添加您需要的密码。提交并推送到所有用户可访问的存储库。

然后每个用户将克隆这个包含你的加密密码(但不包含 GPG 密钥)的 git repo

您可以使用以下方式传播您的 GPG 密钥:

gpg --export-secret-key -a "User Name" > private.key

然后为每个用户导入

gpg --allow-secret-key-import --import private.key

最后,每个用户将使用共享的 GPG 密钥 ID 初始化自己的 pass repo

init [ --path=sub-folder, -p sub-folder ] gpg-id...

你可以使用以下命令获取 key-id

gpg --list-keys 

注意:您必须考虑共享私钥的逻辑。

我引用[电子邮件保护]在这个好关于 GPG 的备忘单

用例 *.2:上面提到的是导出和导入密钥的命令,我想解释一下为什么你可能想要这样做的原因。基本上,如果你属于一个组,并且想要为该组创建一个密钥对,那么一个人将创建密钥对,然后导出公钥和私钥,将它们交给该组的其他成员,然后他们都将导入该密钥对。然后,该组的成员或组外的某个人可以使用该组的公钥,加密消息和/或数据,并将其发送给该组的成员,并且所有成员都可以访问该消息和/或数据。基本上,你可以创建一个简化的系统,其中只需要一个公钥即可将加密的内容发送给多个收件人。

相关内容