GLinux下cvs服务器的配置和权限管理
1、查看是否安装cvs(redhat9缺省是装的,没有可在系统光盘中找到)
#rpm -qa|grep cvs
2、下载CVSACL
rceforge.net/project/show 查看cvs版本
#cvs –version
3、安装CVSACL
# tar -zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz # mv cvs-1.11.22-cvsacl-1.2.5-patched cvs-1.11.22 # cd cvs-1.11.22 # ./configure # make
# make install
4、在CVS服务器端建立仓库
创建用于CVS的专用系统组和用户,以后要访问CVS服务的用户加入cvs这个组:
#groupadd cvs
#useradd -g cvs -s /sbin/nologin cvsroot #passwd cvsroot 初始化cvs服务器环境
#mkdir /cvs
#cvs -d /cvs init
其实就是cvs初始化cvs环境的命令,会在/cvs目录下生成CVSROOT文件夹,但是安装了CVSACL后,使用此命令CVSROOT文件夹中生成的文件会和不安装CVSACL的文件有所区别,会增加几个文件,稍后会详细介绍这几个文件的作用。 Aclconfig Access aclconfig,
设置CVS配置库归属及权限:
#chown -R cvsroot.cvs /cvs #chmod -R 770 /cvs
加入cvs服务(redhath9缺省就有cvs服务,所以不用加)
#vi /etc/services
#cvspserver 2401/tcp #pserver cvs service #cvspserver 2401/udp #pserver cvs service 创建CVS启动脚本:
#vi /etc/xinetd.d/cvspserver
内容如下:
service cvspserver {
disable = no flags = REUSE
socket_type = stream wait = no user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvs pserver log_on_failure += USERID }
重新启动inetd或者xinetd:
#/etc/init.d/xinetd restart 检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
5、创建CVS用户
#vi /project/CVSROOT/aclconfig
UseSystemGroups=no UseCVSGroup=yes
改为“SUseSystemGroups=no”,/etc/passwd里的用户将不再生效,需要给开发者在CVSROOT/passwd里逐一建立账号,新建的不要分配用户目录,因为它将作为一个虚拟用户帐号来使用
#cd /cvstest/CVSROOT
#htpasswd –c passwd yueyx #vi passwd
yueyx:*******:cvsadmin
6、添加用户
#cd /cvstest/CVSROOT #htpasswd passwd yueyx #vi passwd
yueyx:*******:cvsadmin
7、创建组
#cd /cvs/CVSROOT #vi group
文件格式:
group1:x:1:test1, yueyx //用户之间用“,”分割。
注:cvsacl有个bug,必须在组用户最前边添加一个不存在的cvs用户,group文件才会生效。原因不明,但此方法确实管用。
8、使用cvsacl细化权限(可以针对用户,也可以针对组设置权限)
1. 命令格式
cvs –d 配置库位置 racl [用户||组:权限] [-Rl] [-r tag] [模块…] [文件…] 2. 权限参数 权限 没有权限 读权限 写权限 tag 创建 删除 全部权限 管理权限 关键字 n r w t c d a p 用户不能做任何cvs操作 可以执行annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status命令 可以执行commit/checkin命令 可以执行tag/rtag命令,依赖读权限 可以执行add import 命令 可以执行rm命令 可以执行所有cvs命令处理cvsacl管理命令 可以执行所有命令 说明 3. 命令参数
- R 进行目录递归
- r rev 设定版本/标签 - l列出已定义的ACLs权限 4. 特别注意
如果没有通过cvs -d racl指定用户或组对某个文件的权限,那么这个用户或组会对此目录具有最大权限(只受文件本身属性限制),因此在实际对CVS中的项目进行权限设置时,必须指定用户对每一个文件的权限。