CVS Server安装与配置

本文详细介绍了CVS版本控制系统在Linux环境下的安装过程及服务器管理方法,包括CVS服务器的基本安装、Repository根目录的建立、启动CVS服务的设置、以及如何通过配置CVS服务器上的passwd、readers和writers文件来管理用户权限。
摘要由CSDN通过智能技术生成
CVS是Concurrent Versions System(并行版本系统)的缩写,它是目前比较流行与优秀的版本管理与控制工具,它深受大多数开发人员与系统管理的喜爱,同时也是用来管理其它日常文档(如word工作文档之类)的一个强有力的工具。

一、 CVS服务器的安装

1、基本安装

首先确认系统中是否安装CVS服务:
# rpm –qa |grep cvs
cvs-1.11.17-1

如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包,或者到http://www.cvshome.org下载。

若未安装,运行rpm –ivh cvs-1.11.17-1.i386.rpm 安装:

# rpm –ivh cvs-1.11.17-1.i386.rpm

还可以使用源码包进行编译安装:


# tar -xjpvf cvs-1.11.17.tar.tar
# cd cvs-1.11.17
# ./configure --prefix=/usr/share/cvs --disable-server-flow-control
# make
# make install


以上指令将CVS安装到/usr/share/cvs这个目录上。

2、在服务器端建立Repository根目录 cvsroot


因为这里涉及到用户对cvsroot里的文件读写的权限问题,所以比较简单的方法是建立一个组,然后再建立一个属于该组的帐户,而且以后有读写权限的用户都要属于该组。假设我们建一个组叫cvs,用户名是cvsroot。建组和用户的命令如下


# groupadd cvs
# useradd -g cvs -s /sbin/nologin cvsroot
# chown -R cvsroot /home/cvsroot


  接下来进行初始化,建立仓库Repository:


 # cvs -d /home/cvsroot init


这样在/home/cvsroot目录中就产生了CVSROOT目录,其中存放了一些配置文件,如config等,然后设置权限:


 # chown -R cvsroot.cvs /home/cvsroot
 # chmod -R ug+rwx /home/cvsroot
 # chmod 644 /home/cvsroot/CVSROOT/config


  为了CVS系统的安全,我们要修改/home/cvsroot/CVSROOT/config文件,将"#SystemAuth =no"的前面的注释号#去掉,即改为“SystemAuth =no”(这样,将只有passwd文件里指定的用户才能登录CVS服务器),然后给开发者们逐一建立账号,新建的不要分配用户目录,因为它将作为一个虚拟用户帐号来使用,具体命令如:


 # useradd -g cvs -M cyberwh
 # passwd cyberwh


  上面的命令就创建了一个并没有Home目录的用户cyberwh,接着将系统的shadow文件复制到CVSROOT, 并重命名为passwd:


 # cp /etc/shadow /home/cvsroot/CVSROOT/passwd
 # chmod 0644 /home/cvsroot/CVSROOT/passwd


  然后修改passwd文件,将除刚才设定的可使用CVS的用户cyberwh之外的所有行删除,然后去掉每行第二个冒号以后的所有内容,并添上字符串cvsroot, 改为如下格式:


 cyberwh: $1$yh65p/pK$srDuMpEazPhlQOeGsBYN./:cvsroot


  然后,删除掉刚刚在系统中添加的那个用户cyberwh:


 # userdel -f cyberwh


这样你的CVS用户就只能用passwd中规定的用户来登陆你的CVS服务器了,要注意的是:本文介绍的添加用户的方法适用于小数量的用户,如果是有大规模的开发人员,推荐采用连接LDAP或者数据库来进行用户的认证服务。





3、设置启动CVS服务


在Linux上CVS服务可以通过inetd、xinetd或tcpwrapper等来启动,其中inetd由于安全理由在许多场合已经被xinetd所取代了。这里我们使用xinetd来启动CVS服务。


3.1 在/etc/xinetd.d目录下为CVS服务创建一个配置文件:


#touch /etc/xinetd.d/cvspserver


编辑/etc/xinetd.d/cvspserver,输入如下内容:


  service cvspserver
  {
   disable = no
   socket_type = stream
   wait = no
   user = cvsroot
   env = HOME=
   server = /usr/bin/cvs
   server_args = -f --allow-root=/home/cvsroot pserver
  }


  注:


1)pserver表示是口令认证的访问方式,这是最常用的方式,其他还有gserver,kserver,ext,如果想要更高的安全性可以使用ssh来加密口令和数据流,不过这里为了用户使用的方便,仍然选的是pserver
  2)--allow-root是指定Repository的目录,可以建立多个Repository





3.2 加入cvs服务(如果缺省就有cvs服务,就不用加)


vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service




3.3 重新启动xinetd:


# /etc/rc.d/init.d/xinetd restart
   Stopping xinetd: [ OK ]
   Starting xinetd: [ OK ]


重新启动xinetd服务后,CVS服务也开始工作了。


3.4 检查cvspserver服务是否已经启动


# netstat -lnp|grep 2401
tcp 0 0 .0.0.0:2401 0.0.0.0:* LISTEN 1041/xinetd
则说明cvs服务器已经运行。

好了,做到这里,CVS的服务器端就已经安装设置好了。





二、管理CVS服务器


服务器可以用了,现在大家最关心的就是如何管理服务器,比如,我想让一些人有读和/或写 CVS 仓库的权限,但是不想给它系统权限怎么办呢?


不难,在 cvs 管理员用户(在我这里是 cvsroot 用户)的家目录里有一个 CVSROOT 目录,这个目录里有三个配置文件,passwd, readers, writers,我们可以通过设置这三个文件来配置 CVS 服务器,下面分别介绍这几个文件的作用:


passwd:cvs 用户的用户列表文件,它的格式很象 shadow 文件:


{cvs 用户名}:[加密的口令]:[等效系统用户名]


readers:有 cvs 读权限的用户列表文件。就是一个一维列表。在这个文件中的用户对 cvs只有读权限。


writers:有 cvs 写权限的用户的列表文件。和 readers 一样,是一个一维列表。在这个文件中的用户对 cvs 有写权限。


上面三个文件在缺省安装的时候可能都不存在,需要我们自己创建,好吧,现在还是让我们用一个例子来教学吧。假设我们有下面几个用户需要使用 cvs:


laser, gumpwu, henry, betty, anonymous。


其中 laser 和 gumpwu 是系统用户,而 henry, betty, anonymous 我们都不想给系统用户权限,并且 betty 和 anonymous 都是只读用户,而且 anonymous 更是连口令都没有。


1、 编辑 cvs 管理员家目录里 CVSROOT/passwd 文件(cvsroot用户),加入下面几行:


laser:$xxefajfka;faffa33:cvsroot
gumpwu:$ajfaal;323r0ofeeanv:cvsroot
henry:$fajkdpaieje:cvsroot
betty:fjkal;ffjieinfn/:cvsroot
anonymous::cvsroot


注意:上面的第二个字段(分隔符为 :)是密文口令。


密码可以有以下几种方法生成:


1.1 安装步骤2中所述。


1.2


vi /home/cvsroot/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";


如果需要密码为:cyberwh,则敲入:
./passwdgen.pl cyberwh
(注意passwdgen.pl要先设为可执行)
回车即可得到加密密码,用其替换passwd文件中的passwd部分就可以了


1.3 使用htpasswd做加密运算。


htpasswd是Apache的一个工具,如果未安装Apache需先安装。查看Apache是否已经安装:


rpm -q httpd





假定建立一个yzx帐号。


htpasswd –n cyberwh


New password:


Re-type new password:


cyberwh:BLoOq1SmcVfbU





其中BLoOq1SmcVfbU就是加密后的密码。


在CVSROOT目录下建立一个passwd文本文件,格式如下:


anonymous::cvsroot(不要密码)


cyberwh:BLoOq1SmcVfbU:cvsroot


2、 编辑 readers 文件,加入下面几行:
anonymous
betty


3、 编辑 writers 文件,加入下面几行:


laser
gumpwu
henry


注意:writers中的用户不能在readers中,要不然不能上传更新文件。


至于客户端的配置,由于我常使用的IDE如 Eclipse、WSAD都比较容易设置,这里就不再罗嗦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值