cvs - web蓝草博客–LanCao’s Web Blog

Category: cvs


Linux下CVS安装和配置(转改)

本篇主要讲述CVS服务器的安装与配置

(转载,经过验证,并作更改和添加)
一、安装

1、验证是否已安装CVS
#rpm -q cvs
如果能显示出类似这样的版本信息,证明已安装CVS:
#cvs-1.11.2-10

一般安装在/usr/bin/cvs,如果未安装,http://www.cvshome.org/下载一个最新的rpm安装即可;

2、创建CVS用户组与用户
root用户下执行以下命令:
#groupadd cvs
#adduser cvsroot
#passwd cvsroot

#输入cvsroot用户密码

3、创建CVSROOT
root用户下执行:
#mkdir /var/cvsroot 此处可改为你想要的cvsroot路径
#chown cvsroot:cvsroot /var/cvsroot 更改cvsroot权限

4、初始化CVS
需要在cvsroot用户下执行
#su cvsroot
#cvs -d /var/cvsroot init 此处对应上面创建的cvsroot路径

5、修改环境变量
编辑/etc/profile或者/home下相应用户的.profile文件
此处已修改/etc/profile为例:
#exit
退回到root用户,只有root用户才有权限修改/etc/profile

#vi /etc/profile 编辑/etc/profile文件
在末尾加上以下两句:

CVSROOT=/var/cvsroot
export CVSROOT

更新环境变量:
#. /etc/profile
此时系统已经认识$CVSROOT这样的环境变量

注意:若提示无权限,则需要改变profile的权限后,再执行上一步骤;

#chmod 777 /etc/profile

6、启动cvs服务器:
在/etc/xinetd.d/目录下创建文件cvspserver,内容如下:
# default: on
# description: The cvs server sessions;

service cvspserver
{
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f –allow-root=/var/cvsroot pserver
log_on_failure += USERID
only_from = 192.168.0.0/24
}
其中only_from是用来限制访问的,可以根据实际情况不要或者修改。

注意:如果路径/var/cvsroot与上面创建的不一致,或者为/var/cvsroot/,将出现no such repository问题。

修改该文件权限:
# chmod 644 cvspserver
然后重新启动xinetd:
# /etc/rc.d/init.d/xinetd restart
然后察看cvs服务器是否已经运行:
# netstat -lnp|grep 2401
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN xxxxxx/xinetd或#netstat -l |grep cvspserver  tcp 0 0 *:cvspserver  *:* LISTEN
则说明cvs服务器已经运行。

二、使用管理

在 cvs 管理员用户(在我这里是 cvsroot 用户)的家目录里有(创建)一个 CVSROOT 目录,这个目录里有三个配置文件,passwd, readers, writers,我们可以通过设置这三个文件来配置 CVS 服务器,下面分别介绍这几个文件的作用:
  passwd:cvs 用户的用户列表文件,它的格式很象 shadow 文件:
  {cvs 用户名}:[加密的口令]:[等效系统用户名]
readers:有 cvs 读权限的用户列表文件。就是一个一维列表。在这个文件中的用户对 cvs只有读权限。
writers:有 cvs 写权限的用户的列表文件。和 readers 一样,是一个一维列表。在这个文件中的用户对 cvs 有写权限。

1、创建可以登陆cvs服务的用户及密码,需要创建文件passwd
vi /home/cvsroot/CVSROOT/passwd
文件内容如下:
piao:xxxxx:cvsroot
peng:xxxxx:cvsroot
此文件的意思是piao和peng两个用户可以登陆cvs服务器,登陆后其权限为用户cvsroot的权限
注意:cvs用户和服务器用户是可以不一样的

※事实上必须创建piao和peng这样的系统用户,并划分于cvsroot组

2、xxxxxx为密码,由以下文件生成:
vi /var/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”;

3、修改passwdgen.pl为可执行

#chmod 555 passwdgen.pl 

如果需要密码为:some,则敲入:
passwdgen.pl “some”
回车即可得到加密密码,用其替换passwd文件中的xxxxxx

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

 piao

 peng

5、使用

关于CVS客户端的信息请看
TortoiseCVS,一个优秀的CVS客户端:
http://blog.o2.cn/lg/2004/11/28/tortoisecvs

WinCVS  cvs Windows客户端:目前稳定版本为1.2
http://cvsgui.sourceforge.net

Eclipse CVS客户端设置:

    Connection Type:pserver

    Host:192.168.200.193

    Repository Path:/var/cvsroot

CVS服务器的安装与管理

CVS服务器的安装与设置相关文档网上已经很多了,但是对于如何管理CVS服务器技巧方面的文档很少。笔者就曾经遇到这样的情况:有好几个团队同时开发好几个项目,共享一台CVS服务器,需求是各个团队CVS权限分开,不可以互相访问。但是PM,测试工程师需要同时拥有好几个项目的权限。这样就出现了交叉权限。权限怎么分配呢?有很多朋友第一个概念就是使用操作系统的组的权限去划分,我也是被这种思路整整困了好几个月。我告诉大家的是,使用操作系统的组去进行权限的划分与传递,会给管理带来很大的困难。由于篇幅的关系,具体原因我就不进行阐述了。如果你有兴趣,可以自己试一下就明白了。这篇文档我主要想说明通过CVS多仓库(多cvsroot)来实现权限的分离与交叉。

一 CVS服务器的安装:

1。查看你的操作系统上是否安装了CVS:

#> rpm -qa|grep cvs

如果没有安装你可以在Redhat 9.0的第2张光盘上找到,另外你也可以在http://www.cvshome.org 下载到最新的rpm包。

2。建立cvs用户组:

#> groupadd cvs

3。建立cvs组的cvsroot用户和所属的目录:

#> useradd -g cvs -G cvs –d /cvsroot cvsroot

4。为cvsroot用户添加密码:

#> passwd cvsroot

5。改变 /cvsroot/ 的目录属性:

#> chmod –R 770 /cvsroot

6。改变用户登陆身份:

#> su cvsroot

7。开始创建单个项目:

#> cd /cvsroot
#> mkdir project1
#>mkdir project2

8。开始建立仓库:

#> cvs –d /cvsroot/project1 init
#> cvs –d /cvsroot/project2 init
#> chmod –R 770 ./project1/ ./project2/

9。建立CVS服务启动文件,我们使用xinetd方式:

#> [Crtl]+[d] 切换到root用户身份
#> cd /etc/xinetd.d
#> vi cvspserver
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server= /usr/bin/cvs
server_args= -f –allow-root=/home2/cvsroot/project1 –allow-root=/home2/cvsroot/project2 pserver
log_on_failure += USERID
}
注:由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做:

#> vi cvspserver
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /cvsroot/cvs.run
log_on_failure += USERID
}
编写cvs.run脚本

#> vi /cvsroot/cvs.run
#!/bin/bash
/usr/bin/cvs -f \
–allow-root=/cvsroot/project1 \
–allow-root=/cvsroot/project2 \
pserver
#>chmod +x /cvsroot/cvs.run

10。加入cvs服务:

#>vi /etc/services

cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service

11。启动cvs服务:

#> /etc/init.d/xinetd restart

12。检查cvspserver服务是否已经启动:

#> netstat -l |grep cvspserver
应该有如下结果:

tcp 0 0 *:cvspserver *:* LISTEN
二。CVS服务的用户管理:

上面我们已经建立了project1和project2两个CVS仓库,下面我们分别给两个仓库建立cvs用户。

13。创建可以登陆cvs服务器的用户名和密码:

#> su cvsroot
#> vi /cvsroot/project1/CVSROOT/passwd

trotter:*****:cvsroot
mimi:*****:cvsroot

#>vi /cvsroot/project2/CVSROOT/passwd

trotter:*****:cvsroot
gary:*****:cvsroot

这两个文件的意思是有trotter,mimi,gary三个cvs用户,mimi拥有project1的使用权限,gary拥有project2的使用权限,trotter拥有project1和project2的使用权限。登陆后的权限是cvsroot权限。
注意:这里的cvs用户和系统用户是不同的。

14。*****为密码,由以下文件生成:

#> 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}\n”;
#>chmod a+x /cvsroot/passwd.pl

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

#> /cvsroot/passwd.pl “123456”

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

16。Ok,cvs现在已经全部安装完成了,如果你想让一个用户拥有project1的权限,你就在/cvsroot/project1/CVSROOT/passwd中给他加入一个用户;如果你想让一个用户同时具有project1和project2的权限,你就给/cvsroot/project1/CVSROOT/passwd和/cvsroot/project2/CVSROOT/passwd里给他加一个用户名和密码相同的用户即可。最后,我们试用一下:

#> cvs -d :pserver:trotter@192.168.1.200:/cvsroot/project1 login

敲入命令回车后提示输入trotter的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了(我的机器IP地址是192.168.1.200)

参考文献:
http://www.gbunix.com/bbs/viewtopic.php?t=64
http://www.fanqiang.com/a6/b9/20020627/060200259.html

转载与http://www.gbunix.com

Powered by WordPress. Theme: Motion by 85ideas.