不会健身的程序员
不是好作家

linux下cvs安装、维护

前言

       这篇文章将会教大家如何安装cvs,以及新建项目,用户,以及如何管理他。虽然现在在版本控制软件上有cvs,svn和git,cvs也在慢慢的淡出人们的视线,但是还是有非常多的企业在使用着他。

简介

      CVS(Concurrent Versions System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。Concurrent有并发的、协作的、一致的等含义。实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。CVS维护的文件类型可以是文本类型也可以是二进制类型。CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。CVS基于客户端/服务器的行为使其可容纳多个用户。这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。

安装环境

操作系统:centos linux 64bit (虚拟机中)

系统配置:CPU:I5-3210M 内存:1G

虚拟机版本:VMware 7.0.0

准备安装版本:cvs

开始安装

下载安装软件包

[root@temp ~]# rpm -qa | grep cvs
guile-1.8.0-8.20060831cvs
[root@temp ~]#rpm -qa | grep xinetd

如果还未安装cvs,xinetd包,则安装。

1、联网yum装

2、官网下载rpm包,上传之后装</P>

3、加载安装盘里面基本都会带有

具体方法查看《linux常用工具》中关于vnc那张介绍有介绍如何查找安装rpm包的方法。

下面附带采用方法3,加载安装盘安装的方法。

image

创建cvs用户和cvs组

这里我们创建一个cvs用户叫cvsadmin和一个cvs组叫cvs

创建cvs组

groupadd cvs

创建cvsadmin用户并赋给cvs组  

useradd -g cvs cvsadmin

修改cvsadmin用户密码  

passwd cvsadmin

image

创建根目录

可以有根目录也可以没有,cvs只和工作区有关,比如你可以直接在/下建/project1、/project2但是这样管理起来不方便,所以我们建立一个根目录来管理这些,本例中我们就建一个目录叫/cvsroot,然后工作区就以下面的规则来放置/cvsroot/project1、/cvsroot/project2
创建2个工作目录

mkdir -p /cvsroot/project1
mkdir -p /cvsroot/project2

授权

[root@temp ~]# chmod 775 -R /cvsroot/project1
[root@temp ~]# chmod 775 -R /cvsroot/project2
[root@temp ~]# chown cvsadmin:cvs -R /cvsroot/project1
[root@temp ~]# chown cvsadmin:cvs -R /cvsroot/project2

用cvsadmin用户初始化工作区

[root@temp ~]# su - cvsadmin
[cvsadmin@temp ~]$ cvs -d /cvsroot/project1 init
[cvsadmin@temp ~]$ cvs -d /cvsroot/project2 init

image

定义cvs服务器

在/etc/xinetd.d/目录下创建文件cvspserver(默认安装cvs服务之后一般就会存在了,无须手动创建),编辑cvspserver文件,内容如下:

service cvspserver
{
    disable = no
    socket_type = stream
    flags = REUSE
    wait = no
    user = root
    server = /usr/bin/cvs
    server_args = -f --allow-root=/cvsroot/project1 pserver
    log_on_failure += USERID
    only_from = 192.168.126.1/24
}

注意:编辑文件时要注意书写格式,所有“=”号两边都要有一个空格(除了root=/仓库资源路径),否则服务不能正常启动。only_from是用来限制访问的,可以根据实际情况不写或者修改。server_args为cvsroot仓库资源路径,按实际情况填写,可以在这里填写多个cvsroot,相关设置下文将会逐一介绍。其他地方默认即可。

修改该文件权限:

chmod 644 cvspserver

重启xinetd服务:

/etc/rc.d/init.d/xinetd restart

image

测试服务是否启动

netstat  -l | grep cvspserver

到这里就能用cvsadmin用户访问了project1了

测试是否能访问,采用命令行的方式,如果没出错就说明成功了

cvs -d :pserver:cvsadmin@192.168.126.111:/cvsroot/project1 login

image

使用客户端工具的方式,例如eclipse

image

image

但是这样子紧紧满足我们的需求了,假如我们有多个项目怎么配置 ,怎么给公司每个人都配置一个帐号,而不使用cvsadmin?下面要讲的就是关于这两点

cvs用户管理

cvs用户的新建和维护有两种方式,一是采用系统用户,第二种是映射帐号到cvsadmin(就是之前创建并把工作区赋值给cvsadmin这个用户还有cvs这个组)。

方法一:

创建系统用户并加入到cvsadmin用户组

useradd -g cvsadmin user1

为用户添加密码

passwd user1 

创建用户后即可以通过cvs客户端工具登录访问cvs服务器。

好处:基本没什么好处…如果硬要找几点就只能说:配置简单、省事。

坏处:如果是一个工作团队,20-100人或者更多,要为每个人单独创建系统用户,就算设置成默认不允许登录,都会造成系统资源消耗,增加管理难度,而且最重要一点就是这样的设置方法不够专业不够安全,如果cvs资源库是放在互联网,大量的系统用户就会成为无可避免的安全隐患,保密工作无从谈起。

方法二:新建的所有cvs访问用户都通过cvs管理用户登录(推荐

用户配置文件格式介绍

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

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

readers:有cvs读权限的用户列表文件,一个简单的一维用户列表,一个用户名占一行,由上往下写就OK

writers:有cvs写权限的用户列表文件,一个简单的一维用户列表,一个用户名占一行,由上往下写就OK

注意:如果一个用户有写权限,那么他必然有读权限,也就是说,如果readers里面有用户zhangs,那么不管他是不是在writers里面有zhangs这个帐号,zhangs这个人都没有写的权限。

手动创建用户配置文件

刚刚安装完cvs工作区这三个文件可能不存在,我们可以通过手动创建
进入CVSROOT目录

cd /cvsroot/project1/CVSROOT/

手动创建用户配置文件

touch passwd writers readers

修改用户配置文件的权限和属性

chmod 777 passwd writers readers 

新建一个cvs用户
进入CVSROOT目录

cd /cvsroot/project1/CVSROOT/

通过对passwd文件加密验证的方式创建cvs用户

htpasswd passwd user1

注:可以添加多个用户,也可以同一个用户执行多次,不会重复添加,只会更新相应的用户,具体htpasswd是如何加密的,感兴趣的朋友可以自己去查一下。

image

编辑用户
查看用户列表文件

cat passwd

如例所示用户已经创建并加密

[root@temp CVSROOT]# cat passwd
user1:2hBAjRckpc/D6
user2:cfoWzAIIEl21Y

编辑用户

vi passwd

在该用户密码后添加冒号以及cvsadmin的等效系统用户:

user1:2hBAjRckpc/D6:cvsadmin
user2:cfoWzAIIEl21Y:cvsadmin

保存退出,至此便完成了cvs新用户的创建,可以通过cvs客户端工具(例如eclipse)登录cvs服务器对cvs资源库进行访问。

删除用户

删除用户同样轻松,只需要编辑passwd文件,将要相应的用户条目删除后保存退出即可,这里就不多作介绍了。

给各cvs用户分配权限

例如想让user1只有读cvs资源库的权限,可以编辑readers表,加入user1

例如想让user2有读写cvs资源库的权限,可以编辑writers表,加入user2

#vi readers

user1

user3

user4

#vi writers

user2

user5

注:如果新建用户后没有将该用户加入到writers或readers表,那么该用户默认拥有所有权限,包括check out、commit、delete。我自己又测试了下发现以下几点

1、passwd肯定是要有的,如果没有,用户就没有任何权限

2、readers感觉写不写用户都有read和checked权限

3、writers如果存在,用户只有只读权限,如果不存在,所有用户都有读写提交权限。

注:看到这里,上面这些配置是一个工作区一个passwd,一个readers,writers,很多企业中,员工都是固定的,只是某些项目没有权限访问而已,所以密码表可以共用一套密码,所以我们可以在/cvsroot/下建一个passwd的文件,然后在各个工作区下面建立passwd的快捷方式(一个链接地址)

经过

统一密码表

image

配置多个cvs工作区

一个工作区对应一个项目,新建一个新的工作区只需要下面几步,

最好就用cvsadmin进行以下操作,不然用root用户,还需要给权限,和修改目录及文件所属者

切换到cvsadmin

su - cvsadmin

步骤一:创建目录

mkdir /cvsroot/project2

步骤二:初始化工作区

cvs -d /cvsroot/project2 init

步骤三:创建用户密码和权限

ln -s /cvsroot/passwd /cvsroot/project2/CVSROOT/passwd
cd /cvsroot/project2/CVSROOT/
touch writer reader

假设这上面的都是在cvsadmin这个用户下执行的。如果是其他用户下,还需要修改权限

chmod 775 -R /cvsroot/project2
chown cvsadmin:cvs -R /cvsroot/project2

步骤四:加进xinted服务中,修改

vi /etc/xinetd.d/cvsperver

添加新的项目

image

配置完成需要重启xinetd服务

image

由上可见增加工作区路径实际上就是修改server_args项,前提这些工作区的路径是存在的。

由于xinetd中的server_args长度有限制,我们可以进行以下操作对cvspserver文件进行重定向,方法如下:

service cvspserver
{
    disable = no
    socket_type = stream
    flags = REUSE
    wait = no
    user = root
    server = /cvsroot/cvs.run
    #server = /usr/bin/cvs
    #server_args = -f --allow-root=/cvsroot/project1 --allow-root=/cvsroot/project2 pserver
    log_on_failure += USERID
}

然后在/cvsroot/下面创建cvs.run文件

cd /cvsroot
touch cvs.run
chmod 770 cvs.run

修改他,添加下面内容

#!/bin/bash
/usr/bin/cvs -f
--allow-root=/cvsroot/project1
--allow-root=/cvsroot/project2
--allow-root=/cvsroot/project3
pserver

linux下的cvs安装就到这里了,小林也是根据自己实操的经验总结了一下写了这篇博文,如果大家有什么意见和提议,或者安装过程中遇到什么问题,欢迎留言。

系统安装就像游泳,如果不下水亲身游一下,你永远不会知道如何游泳。建议大家还是多实操。

赞(0)
转载请注明出处:林俊龙博客 » linux下cvs安装、维护

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

年年岁岁花相识,岁岁年年人不同

给我留言网站地图

谢主隆恩

支付宝扫一扫打赏

微信扫一扫打赏