gpt4 book ai didi

linux - 阻止其他 git 作者

转载 作者:太空狗 更新时间:2023-10-29 12:02:54 32 4
gpt4 key购买 nike

我已经设置了自己的私有(private) git 服务器,并且有一个 5 人的团队。我已经设置了他们的所有用户帐户,但是我如何防止由随机的奇怪帐户完成对远程的提交。因为我的一些团队也使用 github,并且不希望他们的用户名出现在日志中,而是我分配给他们的用户名。

最佳答案

为了防止人们使用“随机奇怪的帐户”进行提交,您可以设置一个 git pre-receive钩子(Hook)根据有效名称列表验证传入提交的提交者/作者名称。但这不提供身份验证组件。

为了防止冒充,您可以简单地要求所有提交都是 gpg 签名的(git commit -S ...),并且您有 pre-receive钩子(Hook)根据服务器上的 gpg key 环验证签名。

根据人们连接到您的远程服务器的方式,如果您有权访问,您还可以将提交者/作者姓名与用于连接的用户名明确匹配。

更新 1

如果您的提交者通过 ssh 推送到您的服务器,那么上面的第三个选项可能是最简单的。在你的.ssh/authorized_keys文件,为每个标识用户的键设置一个环境变量:

environment="SSH_USER=lars" ssh-rsa ...

然后在你的 pre-receive钩子(Hook),您可以使用该环境变量针对某个表查找有效的提交者名称/电子邮件。您可以阅读有关 pre-receive 的信息githooks(5) 中的钩子(Hook)手册页,他们在 stdin 上收到以下形式的行:

<oldrev> <newrev> <refname>

您可以从 <newrev> 中获取提交名称像这样:

commiter_name=$(git show -s --format='format:%cn' <newrev>)

邮件使用%ce而不是 %cn .

更新 2

或者见鬼,忘掉表查找吧。在你的.ssh/authorized_keys文件:

environment="ALLOWED_NAME=Bob Jones",environment="ALLOWED_EMAIL=bob@example.com" ssh-rsa ...

然后在您的预接收 Hook 中:

#!/bin/sh

while read oldrev newrev refname; do
cn=$(git show -s --format='format:%cn' $newrev)
ce=$(git show -s --format='format:%ce' $newrev)

[ "$cn" = "$ALLOWED_NAME" ] || {
echo "*** Inalid committer name"
exit 1
}

[ "$ce" = "$ALLOWED_EMAIL" ] || {
echo "*** Inalid committer email"
exit 1
}

done

而且我认为你已经得到了你想要的。

更新 3

您可能可以使用 http 完成类似的事情身份验证,因为在你的 pre-receive 中脚本你会可以访问 REMOTE_USER环境变量,其中包含经过身份验证的远程用户的名称。你可能需要进行某种表格查找以获取已批准名称的值(value),并且电子邮件地址。

关于linux - 阻止其他 git 作者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401926/

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