gpt4 book ai didi

git 阻止模拟另一个用户

转载 作者:太空狗 更新时间:2023-10-29 13:49:28 25 4
gpt4 key购买 nike

我们刚刚开始使用 Git 进行源代码管理。我们有一个中央存储库并通过 SSH 访问它,因此我们在中央服务器上的 authorized_keys 文件中设置了各自的 key 。

当你在 git 中提交时,与提交关联的元数据包括例如 user.name,但据我们所知,没有什么能阻止我将我的 user.name 设置为另一个用户的 user.name 并假装他/她做出了 promise 。

在 git 中有什么办法可以防止这种情况发生吗?例如将 user.name 与特定的 SSH key 相关联?

顺便说一句,我的问题不是为什么 git 允许这样做,我读过有有效的用例。我的问题是,如果我们不想允许,是否可以通过任何方式阻止这种情况?

谢谢

最佳答案

正如您所注意到的,Git 允许任何用户进行任何提交,并将作者和/或提交者姓名和电子邮件地址设置为任何(可解析的)值。 (任何用户也可以将任何提交的作者和/或提交者日期设置为任意值,只要它是 Git 视为可用的日期戳即可。)

在中央服务器上检查这些东西的方法是注意 git push 推送 commits,然后要求或告诉服务器设置一个或多个引用名称——通常是一些分支和/或标签名称——指向新的提交。这些请求被传递给 pre-receiveupdate 钩子(Hook),它们可以以它们(钩子(Hook))喜欢的任何方式测试新提交,接受或拒绝引用名称更新。

pre-receive Hook 在标准输入上一次获取所有更新请求,并且可以拒绝整个推送。如果它接受推送,update Hook 然后一次获取每个更新请求(作为命令行参数),并可以拒绝该特定更新。

Git 本身并没有内置任何东西来做这一切,但是 there are some add-ons such as Gitolite that can do this for you .

如果您想使用粗略的“作者姓名必须匹配 ssh 凭据”方法以外的方法来执行此操作,您可以考虑在每次提交时要求数字签名(但请注意,中央服务器仍然必须检查这些签名,我不要认为在 Gitolite 中有什么可以做的)。这实际上更加棘手;通常不会签署个人提交,而是签署带注释的标签。由于提交具有身份验证树 ( Merkle tree ) 的形式,因此签署特定标签意味着您不仅信任该标签的提交,而且还信任其所有祖先提交。 (这种暗示的强度取决于签署它的人的意思,要弄清楚他们的意思你必须问他们。)

关于git 阻止模拟另一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com