Linux建立本地cvs服务器

在RH Linux上快速建立本地CVS服务器的小指南

前提,在安装RH linux的时候,选择了cvs软件包。如果没有安装,当然也可以从网路上下载最新的cvs代码自己编译,或者使用现成的
rpm包进行安装。

下面的工作,集中精力在建立多用户、单cvs仓库的本地cvs服务器。对于如何扩充它,使之成为局域网多用户、多cvs仓库的cvs服务器, 是以后的讨论范围。

简要的步骤:
1、建立cvs用户组
#groupadd cvs

2、建立cvs组的cvsroot用户和所属的目录
#useradd -g cvs -G cvs -d /home/cvsroot cvsroot

3、用cvsroot用户登录,然后改变用户目录的权限,让所有cvs组的成员对它有读写权、初始化cvs仓库
#su - cvsroot
$chmod 775 .
$cvs init

4、使用root或者cvsroot用户登录,添加cvs用户,添加cvs成员的加密密码
#vi /home/cvsroot/CVSROOT/passwd
在这个文件中添加如下形式的多行内容:
usrname1:xxxxxx:cvsroot
usrname2:xxxxxx:cvsroot
其中的xxxxxx是用户usernamex加密的密码,用来生成的perl程序如下:
#vi passwdgen.pl
#!/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";

这个脚本的使用方法是:perl passwdgen.pl <预定密码>,然后将生成的加密密码拷贝到passwd文件中。
修改passwd文件属性,使之只对于cvsroot用户只读
$chmod 400 passwd

5、修改/etc/services文件,加入cvs服务
#vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service (可以不要的,因为我们在这里仅仅使用到了tcp协议)

6、修改inetd提供的服务,由于linux版本之间的差异,在你的系统中可能使用inetd,或者使用xinetd,
比如在RH Linux 7.3中使用的就是xinetd,你可以使用如下的命令来查询
#ps -A |grep inetd

如果使用的是inetd,则仅仅需要修改/etc/inetd.conf,加入如下的内容
cvsserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver

如果使用的是xinetd,则需要如下操作:
#cd /etc/xinetd.d
#touch cvspserver
#vi cvspserver
[quote]service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}[/quote]
可以注意到上面各个参数与单行内容的对应关系。

7、重新启动inetd或者xinetd:
#/etc/init.d/xinetd restart

8、检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN
好了,至此已经在本地建立了一个可以使用的cvs服务器了。
cvs相关网路资源列表
1、http://www.cvshome.org (cvs本家,这里有最新的cvs下载)
2、http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel (这里有很多关于cvs的资源链接)


另一篇文章 (稍后编辑 请见谅)

参考了网上很多CVS建立的方法,其中有一篇《CVS使用速成配置》写得很实用,然而如果按部就班的操作后却总是不成功。后来仔细看了一下,呵呵,有一个很明显也是很小的错误,或者不能称之为错误,应该是网页排版造成的错误,不同之处我用红色字体标出。过程如下:
我使用的是MagicLinux2.0, cvs版本是cvs-1.11.17-4mgc
一、建立cvs服务
1、建立cvs用户组
#>groupadd cvs
2、建立cvs组的用户cvsroot和所属的目录
#>useradd -g cvs -G cvs -d /cvsroot cvsroot
3、为cvsroot用户添加密码
#>passwd cvsroot
4、改变/cvsroot目录的属性
#>chmod -R 770 /cvsroot
5、改变用户登录
#>su cvsroot
6、创建项目,此处创建两个项目project1和project2
#>cd /cvsroot
#>mkdir project1
#>mkdir project2
7、创建仓库
#>cvs -d /cvsroot/project1 init
#>cvs -d /cvsroot/project2 init
#>chmod -R 770 ./project1/ ./project2/
8、建立CVS服务的启动文件,采用xinetd方式,[color=darkred]各位使用MagicLinux的朋友需要注意了,系统服务默认xinetd是没有运行的,需要运行它。[/color] 没有的话还需要安装xinetd
#>[Ctrl]+[d]切换到root用户身份
#>cd /etc/xinetd.d
#vi cvspserver

service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
env = HOME=
server = /cvsroot/cvs.run
}

注意:
(1)[color=darkred]env = HOME=这一行是为了解决一些cvs操作时产生的读取/root/.cvssignore文件的错误,意思指运行cvs服务时将环境变量HOME置空,这样虽然执行的cvs用户是root,但是没有了HOME环境变量,所以cvs就不会去读/root/.cvssignore这个文件[/color]
(2)/cvsroot/cvs.run是一个脚本文件,因为xinetd的server_args长度限制,所以如果想运行很多单个仓库的话,就不如脚本来的方便,脚本如下:
#>vi /cvsroot/cvs.run
#!/bin/bash
/usr/bin/cvs -f --allow-root=/cvsroot/project1 --allow-root=/cvsroot/project2 pserver
[color=darkred]此处又要注意了,原文在此处是分行写的(可能是排版的问题,应该连在一起),所以会执行错误,但是xinetd的执行是没有输出信息的,所以我在这里郁闷了有一段时间:(,如果太多的话,可以使用分行符 \[/color]

#>chmod +x /cvsroot/cvs.run
最好,执行一下
./cvs.run
如果没有什么特别的信息,应该就没有问题了,[CTRL]+[c]中止它吧
[color=darkred](3)cvspserver这个服务名称要与/etc/services里的名称一致[/color]
9、此时可以启动cvs服务了
#>/etc/init/xinetd restart
10、检查是cvspserver服务是否正常启动
#>netstat -al |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN

二、用户管理
此时我们已经建立了project1和project2两个仓库,下面我们分别给两个仓库建立cvs用户,[color=darkred]此处我们使用cvs的用户认证方式,而不采用Linux的用户。[/color]

11、创建可以登录CVS服务器的用户名和密码
#>su cvsroot
#>vi /cvsroot/project1/passwd

wzw:****:cvsroot
brad:****:cvsroot

#>vi /cvsroot/project2/passwd

brad:****:cvsroot

注意:
(1)passwd文件是不存在的,手动建立
(2)此处有project1两个cvs用户wzw和brad,分别映射到linux系统用户cvsroot,project2有一个用户brad,同样映射到cvsroot,登录后的权限即是cvsroot的权限
(3)****为密码,采用cypt加密,可以由下面的脚本文件生成
#> vi /cvsroot/passwd.pl

#!/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}
";

#>chmod a+x /cvsroot/passwd.pl

15。如果你想生成一个密码是“123456”,则:

#> /cvsroot/passwd.pl “123456”

回车即可得到加密密码,用其替换passwd文件中的****

12、完成了,应该可以了:)
测试一下
#>cvs -d :pserver:brad@192.168.0.39/cvsroot/project1 login
(我的服务器IP为192.168.0.39)
按照提示输入密码,回车
如果没有特别提示信息,呵呵。。。。。OK

感謝《CVS使用速成配置》一文的作者!

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21471/showart_145489.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值