首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何阻止来自无效用户的git提交?

如何阻止来自无效用户的git提交?
EN

Stack Overflow用户
提问于 2014-03-19 06:01:26
回答 3查看 1.7K关注 0票数 4

我运行的是gitlab git服务器。

我的大多数用户都在运行git的3个版本中的1个。

git 1.7.1 (centos用户)

git 1.7.9 (其他所有人)

git 1.8.4 (mac用户)

一些用户意外地以root用户的身份提交和推送代码。我需要阻止来自这些用户的提交。

我的pre-commit钩子如下所示:

代码语言:javascript
运行
复制
#!/bin/bash

if [[ $GIT_AUTHOR_NAME == 'root' ]]
then
    echo "If you commit as root, you're gonna have a bad time";
    echo "Set 'git config user.name' and try again";
    exit 1;
fi

这在1.7.9和1.8.x上作为预提交钩子工作,但在1.7.1上不起作用

根据this blog的说法,接收前和接收后挂钩没有我正在寻找的任何环境变量( GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_COMMITTER_DATE, EMAIL )。

有没有办法修改这个预提交钩子,以阻止旧版本的git上的root用户?

http://longair.net/blog/2011/04/09/missing-git-hooks-documentation/

EN

回答 3

Stack Overflow用户

发布于 2014-03-19 09:01:02

为什么不把检查放在一个预接收钩子中,也就是,当代码将要提交到中央git存储库/服务器时,在服务器端进行身份验证。

代码语言:javascript
运行
复制
#Extract commiter names here.
commiters=$(git log --pretty=format:"%cn" $revs) #This should work in all git versions

printf "$commiters\n" | while read name; do
     if [[ $name == "root" ]]; then
      echo "You are commiting as root user which I don't like. Reveal your identity!"
      exit 1
     fi
done
票数 1
EN

Stack Overflow用户

发布于 2014-03-19 08:01:20

例如,设置gitolite (应该有适用于您的服务器系统的包),并将其配置为只有经过批准的用户才能推送。如果他们切换到root,凭据将不匹配,推送将被拒绝。它使您可以详细控制每个分支都有权访问的分支。

票数 0
EN

Stack Overflow用户

发布于 2014-03-19 16:35:28

您可以鼓励您的用户使用他们这边的pre-commit钩子作为缓解措施,但最终您必须拒绝服务器端的推送,才能完全实施该策略。

您可以做的一件事是使用一个更新钩子,它将拒绝root作者提交的推送。将此代码添加到您的.git/hooks/update

代码语言:javascript
运行
复制
git log --format="%h %an" ${2}..${3} | while read COMMIT_HASH COMMIT_AUTHOR; do
    if [ "$COMMIT_AUTHOR" = "root" ]; then
        echo "Updating ${1} by root is not allowed, offending commit: $COMMIT_HASH"
        exit 1
    fi
done

代码片段将解析正在推送的旧修订和新修订之间的所有提交,如果这些提交中的任何一个具有作者的root权限,则将拒绝推送。另外,要确保钩子是可执行的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22491942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档