Linux上配置CVS服务器

CVS在项目开发中使用的非常广泛,有些新手对于linux不太熟悉,配置CVS时错误百出,我也是从新手一步步过来的,结合自己的工作心得和使用经验,写了这篇指南,希望对初学者有所帮助。

********************************
* 版权所有:Matrics
* 转载请注明出处 http://matrics.cublog.cn
********************************

OS版本:RHEL 4 u3
cvs版本:1.11.17 (系统自带rpm包)
目标  :安全控制, 多仓库管理,网络访问

申明:
由于使用的是系统自带的cvs服务器rpm版本,故此略过安装步骤。

重要的配置文件:
/etc/passwd
/etc/xinetd.d/cvspserver(新创建)

cvs仓库位置:
/opt/cvsbase/srchome

cvs管理员:cvsadmin
cvs用户组:cvs

配置步骤:
1、创建cvs管理员和组
#mkdir -p /opt/cvsbase/srchome
#groupadd cvs
#useradd -g cvs -G cvs -d /opt/cvsbase/cvsadmin cvsadmin
#chown cvsadmin.cvs /opt/cvsbase/srchome
2、更改cvsadmin的密码
passwd cvsadmin

3、多仓库
由于/etc/xinetd.d/cvspserver文件中,server_args项只能指定的一个CVS仓库,所以要想使用多个仓库需要特殊的方法——脚本。
编辑/etc/xinetd.d/cvspserver文件内容如下:
# File begin
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /opt/cvsbase/cvsrepos.run
log_on_failure += USERID
}

# EOF

编辑仓库脚本文件 /opt/cvsbase/cvsrepos.run
# File begin
#!/bin/bash

CVSHOME=/opt/cvsbase/srchome

/usr/bin/cvs -f \
--allow-root=$CVSHOME/proj1 \
--allow-root=$CVSHOME/proj2 \
--allow-root=$CVSHOME/proj3 \
...
...
pserver

# EOF

注意每个“--allow-root”项末尾的 \ 后不能有空格,否则会报告错误。

以后重启xinet服务
# chmod +x /opt/cvsbase/cvsrepos.run
# service xinetd restart

4、初始化cvs仓库(XXX为项目名)
#su - cvsadmin
#mkdir /opt/cvsbase/srchome/XXX
#cvs -d /opt/cvsbase/srchome/XXX init

5、cvs用户验证
普通cvs用户不使用linux系统帐户,而是使用cvs自身的用户验证系统,映射cvs用户到linux的系统帐户上。

常用的方法是,为每个工程建立一个等效系统帐户,限制其登录,只作为映射使用,且此帐户应该是cvs组的成员。
命令如下:(XXX用实际的项目名代替)
#adduser -g cvs -G cvs -s /bin/false -d /opt/cvsbase/srchome/XXX -M XXXcvs

创建cvs用户
可以使用htpasswd工具生成加密后的密文,也可以使用perl编写小的passwd加密脚本。
方法一:perl脚本
加密用的perl脚本内容如下:
# File begin
#!/usr/bin/perl

srand(time());
my $randletter = "(int (rand(26)) + (int (rand(1) + .5) % 2 ? 65:97))";
my $salt = sprintf("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);

print "${crypttext}\n";

# EOF

文件保存到/opt/cvsbase/cvspasswd.pl,并赋予可执行权限:
#chmod +x /opt/cvsbase/cvspasswd.pl
这样,通过运行
#/opt/cvsbase/cvspasswd.pl "密码"
就可以得到密码加密后的密文。

方法二:htpasswd工具
#htpasswd -c cvspasswd cvsusername
输入两次密码后,加密后的密文就保存到了cvspasswd文件里。冒号后的一段就是密文。

不管用哪种方法,得到密文后,编辑项目cvs仓库下的/CVSROOT/passwd文件,以如下格式添加用户:
cvsusername:加密后的密文:XXXcvs
上例共三部分,分别是要添加的cvs用户名、cvs用户密码加密后的密文、被映射到的linux系统帐户。
cvs用户名自定义,密文用上面的cvspasswd.pl脚本生成,被映射的linux系统帐户在第5步开始处建立。

如果cvs用户需要有写的权限,那么用户名添加到项目cvs仓库的CVSROOT/writers文件里,每行一个用户。
#echo cvsusername >> writers
如果需要只读权限,就把用户名添加到项目cvs仓库的CVSROOT/readers文件里,每行一个用户。
#echo cvsusername >> readers
需要注意的是,拥有写权限的用户名不能再次出现在readers文件中,换句话说,每个用户在两个文件中最多只能出现一次。

6、启动cvs服务器
#service xinetd restart
使用命令查找cvs服务是否正常启动:
netstat -l | grep cvspserver
如果有显示,说明cvs服务器已经正常启动。

7、防火墙配置
cvs服务器默认使用2401端口监听连接请求,所以想要开通远程cvs连接的话,需要在防火墙上打开2401端口的tcp连接。可以使用system-config-securitylevel-tui工具进行可是可视化配置, Customize -> Allow incoming:Other ports: 输入2401:tcp,如果已存在其他项,则彼此用空格隔开。
保存退出。
熟悉iptables命令的人也可以直接编辑/etc/sysconfig/iptables文件添加规则,然后重新启动iptables服务也可。

然后,使用cvs客户端工具进行连接测试。

至此,linux上的cvs服务器配置完毕。

如果用户提交 出错 c vs cannot mkdir  

把cvsroot目录所有者给cvsroot     命令:chown cvsroot /home/cvsroot/ -R

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值