1 CVSACL简介
2 CVSACL安装及配置
2.1 下载CVSACL
[url]https://sourceforge.net/project/showfiles.php?group_id=75057&package_id=77484&release_id=423655[/url]。
共有2个文件
cvsacl-1.2.5-for-cvs-1.11.22.tar.gz
cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
2.2 安装CVSACL
//解压缩cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
[root@localhost root]# mv cvs-1.11.22-cvsacl-1.2.5-patched cvs-1.11.22
//修改cvs-1.11.22-cvsacl-1.2.5-patched目录名称为 cvs-1.11.22
[root@localhost root]# cd cvs-1.11.22 //进入cvs-1.11.22
[root@localhost cvs-1.11.22]# ./configure //编译安装
[root@localhost cvs-1.11.22]# make
[root@localhost cvs-1.11.22]# make install
[root@localhost setup_cvs]# cvs –version //查看cvs版本
如果显示以下内容表示安装成功
with CVSACL Patch 1.2.5 (cvsacl.sourceforge.net)
注:如果系统中已安装CVS,不必删除,直接安装CVSACL即可.
2.3 CVS服务配置
和普通的CVS配置相同,CVS日常培训中已经介绍过了。就不在此文中重复说明了,如有必要可以考虑写个CVS安装说明文档。
有一点要强调一下,配置完CVS别忘了重启一下xinetd服务
[root@localhost /]# netstat -l | grep cvspserver //查看是否启动:
屏幕显示:tcp 0 0 *:cvspserver *:* LISTEN,说明已经正常启动,如果没有请做如下检查:
1) 检查vi /etc/xinetd.d/cvspserver文件中的server = /usr/bin/cvs路径和实际执行文件所在位置是否一致(建立多个仓库时, server的路径是cvs.run文件的路径,而且cvs.run文件的属性是可执行的(x));
2) 重新检查配置过程是否有错误或者遗漏;
3) 最后还必须检查防火墙的设置,把2401端口打开
2.4 CVSACL权限设置
1. 创建用于CVS的专用系统组和用户
[root@localhost /]# useradd –g cvs cvsroot
2. 初始化cvs服务器环境
其实就是cvs初始化cvs环境的命令,会在/home/cvsroot/pro1目录下生成CVSROOT文件夹,但是安装了CVSACL后,使用此命令CVSROOT文件夹中生成的文件会和不安装CVSACL的文件有所区别,会增加几个文件,稍后会详细介绍这几个文件的作用.
Aclconfig
Access
aclconfig,v
3. 设置CVS配置库归属及权限:
[root@localhost /]# chmod –R 770 /home/cvsroot/pro1 /修改权限为用户和组用户可以读\写\执行
4. 修改CVSROOT/CVSROOT/aclconfig配置文件:
取消使用系统的组用户,使用CVS的组用户,具体操作
UseSystemGroups=yes 行首添加“#”,表示注释掉。
UseCVSGroup=yes 去除行首的“#”,表示启用此句。
5. 创建CVS用户
[root@localhost /]# htpasswd –c passwd liujt //创建用户liut并设置密码,会将用户信息保存在CVSROOT目录中的passwd文件中
有一点注意, Passwd的文件完整格式是login_name:password:uid:gid: user_name:home:shell
使用htpasswd –c生成的passwd文件中的用户并没有指定user_name,即只有两项login_name:password
使用此用户能成功登录CVS,但是如果进行任何的操作会提示没有此系统用户,我之前因为这个问题耽误了很长时间才找出原因。
需要补全passwd文件内容,将格式改为login_name:password: user_name:
liujt:fi1jDweCweiJQ:cvsroot
zhangsan:Um2VUilrjXBAI:cvsroot
lisi:Yceb9eaI.liQI:cvsroot
zhaowu:FPh2DSwXnNEe.:cvsroot
wangliu:YzoZfZqjvZ1Gk:cvsroot
6. 创建CVS组
在CVSROOT文件夹中创建group文件,并将cvs的用户添加到此组中
[root@localhost /]# vi /home/cvsroot/pro1/CVSROOT/group
Group文件格式如下
group1:x:1: login_name1, login_name2, login_name3
login_name之间以”,”隔开
注:cvsacl有个bug,必须在组用户最前边添加一个不存在的cvs用户,group文件才会生效。即login_name1为一个不存在的cvs用户(没有在passwd文件中无此用户)
7. 使用cvsacl细化权限:
使用cvs -d racl 命令设置权限,命令执行成功后,会在屏幕中显示执行结果,并且会在access文件(就是我在”初始化cvs服务器环境”中提到的使用acl在CVSROOT中多出来的3个文件之一)中记录用户对于指定目录的权限信息.
命令说明
1. 命令格式:cvs –d 配置库位置 racl [用户||组:权限] [-Rl] [-r tag] [模块…] [文件…]
2. 权限参数
权限 |
参数 |
说明 |
没有权限 |
n |
用户不能做任何cvs操作 |
读权限 |
r |
可以执行annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status命令 |
写权限 |
w |
可以执行commit/checkin命令 |
tag |
t |
可以执行tag/rtag命令,依赖读权限 |
创建 |
c |
可以执行add import 命令 |
删除 |
d |
可以执行rm命令 |
全部权限 |
a |
可以执行所有cvs命令处理cvsacl管理命令 |
管理权限 |
p |
可以执行所有命令 |
3. 命令参数
- R 进行目录递归
- r rev 设定版本/标签
- l列出已定义的ACLs权限
4. 如果没有通过cvs -d racl指定用户或组对某个文件的权限,那么这个用户或组会对此目录具有最大权限( 只受文件本身属性限制)
因此在实际对CVS中的项目进行权限设置时,必须指定用户对每一个文件的权限.
5. 最后举个例子,以下命令会使test无权访问通讯程序/mm7_batch下的所有文件
[root@localhost CVSROOT]# cvs -d /home/cvsroot/pro3 racl test:n -R 通讯程序/mm7_batch
查看access文件会发权限设置信息,由于在命令中使用了-R(递归),你会发现,access对通讯程序/mm7_batch的每个目录都进行了权限设定.[root@localhost CVSROOT]# vi access
# CVS ACL definitions file. DO NOT EDIT MANUALLY具体的文件列表就不给大家看了,这可是公司机密:)
3 使用CVSACL对已有仓库进行权限控制
之前提到的都是在给CVS打上CVSACL后对新的仓库的权限控制,那么如何对CVS中已有的库进行权限控制呢?
其实方法十分简单,只需要将安装CVSACL后在初始化仓库时额外生成的文件复制到原有的仓库的CVSROOT里,再按照此文2.4CVSACL权限设置中的第3-7步进行操作就可以了.需要增加的文件只有3个
Access
Aclconfig
aclconfig,v