| 结合文档和一些网上资源,我写一点非常简单的“速成”的教材.希望对大家有用. 下面是我的步骤和做法: 前提要求: - root权限;
- CVS软件,请找到相关的rpm,tgz,deb等包装上,或者到
http://www.cvshome.org/CVS/Dev/code 下载原程序编译安装,这里我不准备介绍它的安装,请参考CVS自身的文档安装.我使用Slackware的tgz包,安装的命令是 #installpkgcvs*.tgz 其他包请参考对应包管理工具的命令. - 一定的系统资源,要有一定内存(32M就能工作得很好),要一定的磁盘空间,看你的项目的大小和多少而定.
架设CVS服务器:- 建立CVSROOT目录,因为这里涉及到用户对CVSROOT里的文件读写的权限问题,所以比较简单的方法是建立一个组,然后再建立一个属于该组的帐户,而且以后有读写权限的用户都要属于该组.假设我们建一个组叫cvs,用户名是cvsroot.建组和用户的命令如下
#groupaddcvs #addusercvsroot 生成的用户家目录在/home/cvsroot(根据自己的系统调整) - 用cvsroot用户登陆,修改/home/cvsroot(CVSROOT)的权限,赋与同组人有读写的权限:
$chmod771.(或者770应该也可以)注意:这一部分工作是按照文档说明做的,是否一定需要这样没有试验,我会在做试验后在以后版本的教程说得仔细一点.如果您有这方面的经验请提供给我,谢谢.
- 建立CVS仓库,(仍然是cvsroot用户),用下面命令:
$cvs-d/home/cvsrootinit - 以root身份登陆,修改/etc/inetd.conf(使用xinetd的系统没有此文件)和/etc/services,
如果用的是inetd的系统,在/etc/inetd.conf里加入: cvsserverstreamtcpnowaitroot/usr/bin/cvscvs-f--allow-root=/home/cvsrootpserver 说明:上面的行是单独一整行,/usr/bin/cvs应该是你的cvs版本的命令路径,请根据自己的系统调整./home/cvsroot是你建立的CVSROOT的路径,也请根据上面建立目录的部分的内容做调整. 如果是使用xinetd的系统,需要在/etc/xinetd.d/目录下创建文件cvspserver(此名字可以自己定义),内容如下:
#default:on #description:Thecvsserversessions;
servicecvsserver { socket_type=stream wait=no user=root server=/usr/bin/cvs server_args=-f--allow-root=/cvsrootpserver log_on_failure+=USERID only_from=192.168.0.0/24 }
其中only_from是用来限制访问的,可以根据实际情况不要或者修改。修改该文件权限: #chmod644cvspserver
在/etc/services里加入: cvsserver2401/tcp
说明:cvsserver是任意的名称,但是不能和已有的服务重名,也要和上面修改/etc/inetd.conf那行的第一项一致.这里我用的是CVS的口令认证方式,CVS还有其他认证方式,我没有做试验,如果您有经验,请补充,谢谢.
- 添加可以使用CVS服务的用户到cvs组:
以root身份修改/etc/group,把需要使用CVS的用户名加到cvs组里,比如我想让用户laser和gumpwu能够使用CVS服务,那么修改以后的/etc/group应该有下面这样一行:cvs:x:105:laser,gumpwu 在你的系统上GID可能不是105,没有关系.主要是要把laser和gumpwu用逗号分隔开写在最后一个冒号后面.当然,象RedHat等分发版有类似linuxconf这样的工具的话,用工具做这件事会更简单些.
- 重起inetd使修改生效:
#killall-HUPinetd如果使用的是xinetd的系统: #/etc/rc.d/init.d/xinedrestart
这样服务器就设置完成了.我们接着搞客户端. 设置客户端 如果是Linux(或者其他*nix),客户端和服务器端的软件是一样的,如果是Win,MAC等平台,请到 http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel 找相应的客户端软件,这里我先说一下在Linux(*nix)里怎么做: - 设置环境变量CVSROOT:
$exportCVSROOT=:pserver:laser@the_server_name:/home/cvsroot注意:这里的pserver是访问方式,我在上面设置的是口令认证,所以这里是pserver,如果你的CVS服务器设置成别的访问模式,那么需要相应修改.laser是可以使用CVS服务器的用户名,这里可以根据你的设置修改,我在这个版本设置的是直接使用系统用户的口令文件,也就是说laser必须是CVS服务器上的合法用户,这里当然有安全问题,CVS可以设置成为拥有自己的用户,我将在以后的版本里面增加这些内容,或者您也可以提供一些补充,或者直接读CVS的文档.the_server_name是CVS服务器的名称或者IP地址,根据你的情况填写,/home/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员.你可以把这行放到你的shell的profile里(.bash_profile,.profile等)这样就不用每次敲一长串命令了.
- 登陆CVS服务器:
$cvslogin,这时候cvs会问你口令,请把你在CVS服务器上的口令敲进去,这里是laser在CVS服务器上的系统用户的口令: Passwd:xxxxxxxx 成功登陆后将在你的家目录建立一个.cvspass文件,以后就不用输入口令了.
好,客户端设置完成,简单吧.管理cvs服务器 服务器可以用了,现在大家最关心的就是如何管理服务器,比如,我想让一些人有读和/或写CVS仓库的权限,但是不想给它系统权限怎么办呢? 不难,在cvs管理员用户(在我这里是cvsroot用户)的家目录里有一个CVSROOT目录,这个目录里有三个配置文件,passwd,readers,writers,我们可以通过设置这三个文件来配置CVS服务器,下面分别介绍这几个文件的作用:
passwd:cvs用户的用户列表文件,它的格式很象shadow文件: {cvs用户名}:[加密的口令]:[等效系统用户名] 如果你希望一个用户只是cvs用户,而不是系统用户,那么你就要设置这个文件,刚刚安装完之后这个文件可能不存在,你需要以cvs管理员用户手工创建,当然要按照上面格式,第二个字段是该用户的加密口令,就是用crypt(3)加密的,你可以自己写一个程序来做加密,也可以用我介绍的偷懒的方法:先创建一个系统用户,名字和cvs用户一样,口令就是准备给它的cvs用户口令,创建完之后从/etc/shadow把该用户第二个字段拷贝过来,然后再把这个用户删除.这个方法对付数量少的用户比较方便,人一多就不合适了,而且还有冲突条件(racecondition)的安全隐患,还要root权限,实在不怎么样.不过权益之计而已.写一个小程序并不难,可以到linuxforum的编程版搜索一下,有个朋友已经写了一个贴在上面了. 第三个字段就是等效系统用户名,实际上就是赋与一个cvs用户一个等效的系统用户的权限,看下面的例子你就明白它的功能了. readers:有cvs读权限的用户列表文件.就是一个一维列表.在这个文件中的用户对cvs只有读权限. 源代码网供稿. |