git的权限设置
4. 权限配置
到此为止我们还只是构建了一个需要认证的,且可以用于push的Git私服,还没有涉及到授权这块。那么下面我们将通过WebDAV为私服增加授权配置
由于权限是基于WebDAV配置的,因此我们主要是修改Apache的httpd-dav.conf文件:
Dav On
Options +Indexes +FollowSymLinks # 拒绝所有请求
Deny from all
AuthType Basic
AuthName “Git”
AuthUserFile “/home/work/local/apache-httpd-2.2.11/user.git”
AuthGroupFile “/home/work/local/apache-httpd-2.2.11/group.git”
</Directory>
<Directory “/home/work/local/apache-httpd-2.2.11/gitrepo/testproject.git/“>
Allow from all
Order Allow,Deny
# 可读组
<Limit GET>
Require group testproject-read
</Limit>
# 可写组
<Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group testproject-write
</Limit>
</Directory>
以上高亮的地方是需要注意的,首先我们添加了AuthGroupFile用于根据组来授权的功能;然后为我们的testproject项目进行了独立配置,使用Limit限制了testproject-read组和testproject-write组的不同权限
接下来我们编辑group.git文件,将用户加入到组中(假设user.git中现在有guolin,wujinliang,liuou三个用户):
testproject-write: wujinliang liuou
这样配置表示guolin有读取testproject的权限,却没有写入权限,而wujinliang和liuou却拥有读写权限。至此权限配置完成
可以使用guolin用户测试下效果:
Password:
error: The requested URL returned error: 401 while accessing http://guolin@bb-iit-dev05.bb01.baidu.com:8080/git/testproject.git/info/refs
fatal: HTTP request failed
这样一个带有权限配置的Git HTTP私服就大功告成了
关于客户端
按照以上配置,每次Git客户端进行读写操作都需要重新输入密码,如果觉得太麻烦,那么可以编辑~/.netrc文件(因为git是基于curl来进行http传输的)
login guolin
password mypass