安装带权限控制的 CVS
CVS自身的权限控制机制非常简单,如果你的cvs repository有多个项目共存时,单独控制某个项目的读写权限非常困难。一般有两种方法解决这个问题:
使用CVS提供的hook功能:cvs提供一个commitinfo文件用来控制用户能否提交,具体实现请参考下面的具体介绍;
对CVS源码直接patch:一般是通过重写CVS的网络部分来控制pserver通道的权限。
[编辑]通过patch实现CVS权限控制
获取CVS 的源码
获取cvsacl的源码
Copy acl.c文件到CVS源码的src目录
Copy patch文件cvsacl-patch-1.1.0到CVS源码目录
在CVS源码目录执行 "patch -p0 < cvsacl-patch-1.1.0"
编译CVS
[编辑]设置CVS ACL
[编辑]建立 CVS 用户帐户和组
以 root 用户的身份登录,创建一个名为 cvs 的用户,让这个用户使用 cvs 作为他的主组
[编辑]建立文件夹和资源库
以用户 cvs 的身份登录,设置目录 /home/cvsroot的访问级别和访问模式:
chmod 770 /home/cvsroot
初始化资源库:
cvs -d /home/cvsroot init
[编辑]修改环境变量和权限配置
以 root 用户的身份登录,在/etc/profile文件中增加;
export CVSROOT = /home/cvsroot
export EDITOR = /usr/bin/vi
[编辑]修改/home/cvsroot/CVSROOT/aclconfig
[编辑]修改 xinetd 服务以启用 pserver 协议
1. 以 root 用户的身份登录。 2. 在目录 /etc/xinetd.d 中创建一个名为 cvspserver 的文件,文件内容如下:
# default: off
# description: An cvs server.
service cvspserver
{
disable = no
socket_type = stream
protocol = tcp
user = root
wait = no
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_success +=USERID
log_on_failure += USERID
}
打开 /etc/services 并核实存在下面这两行代码。如果不存在,则添加它们:
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
重新启动 xinetd 服务:
service xinetd restart
[编辑]建立CVS用户
CVS提供两种用户验证机制,一是系统用户验证,另外就是CVS自身用户验证.为了保证系统其他资源的安全,建议使用CVS用户验证. CVS的passwd文件是用户密码存放文件,你可以通过一个叫cvsadmin的小程序方便管理CVS用户,cvsadmin的下载地址为。 1. 以cvsroot用户的身份登录。 2. 修改/home/cvsroot/CVSROOT/config中的SystemAuth=no; 3. 使用cvsadmin命令增加需要的用户,其中系统用户输入cvsroot; 4. 设置自己为CVS acl管理员 cvs -d /home/cvsroot racl yourname -r ALL -d ALL 5. 使用acl和racl命令为用户添加权限,acl和racl的使用方法请参考CVS权限控制。