通过gitolite控制权限

git默认是所有用户权限都一样,可以用第三方工具来对用户权限进行控制,也可以用GitLab来对仓库进行管理。以下是使用gitolite来进行权限管理

安装gitolite git服务器上执行以下操作: 前提是已经有git服务和git用户,git用户的passwd属性为/bin/bash,且上传了管理员用户公钥(本文密钥名称为admin.pub)到服务器

git clone https://github.com/sitaramc/gitolite  #下载gitolite代码
mkdir /home/git/bin #创建gitolite安装后的bin目录,主要为git用户操作,建议放在git宿主目录
su git                          #切换到git用户
cd gitolite                     #切换到检出的gitllite代码目录
install -to /home/git/bin               #安装,并指定安装目录
/home/git/bin/gitolite setup -pk admin.pub      #添加管理员的公钥并初始化
# 初始化操作后会在当前目录(git目录)创建仓库目录(repositories),并在里面创建两个库(gitolite-admin.git testing.git),一个是管理库,一个是测试库

# 在有管理员私钥的客户端检出gitolite-admin.git,该库将用做权限控制。“-” 去掉某一个权限

git clone git@git_domain:gitolite-admin.git
cd gitolite-admin
vi conf/gitolite.conf           #权限配置文件
        # user group
        @admin= admin  tom  #设置admin用户组,组内包含admin  和 tom

        # repository group
        @app = @htmi @api   #设置仓库组,组内包含html 和 api这两个仓库

        # Repository Permission
    repo gitolite-admin     #库名
            RW+ =   admin   # 权限控制,分RW+(读写推) RW(读写) R(只读)一行一个用户
        RW+ =   @admin  #给@admin组分配权限
        R   =   test    #给test用户只读权限
        - refs/tags/V[0-9] = jerry  #删除该用户创建以“v”+数字开头的任何标签权限
            - master = tom      #删除该用户对master分支相关的操作权限
        repo testing
                RW+     =   @all        #所有用户
        repo @app       #仓库组
            RW+ = @admin    #给仓库组设置@admin用户组权限

vi keydir/username.pub          # 添加新用户的公钥文件

git add .
git commit -m ‘add user 
git push origin master

添加全新的repository

在上面提到的gitolite.conf文件中配置好对应的名称和权限,再push到server即可,server会自动帮你创建一个empty的bare repository。

最后更新于