windows下cvs服务器端配置

1、设置CVSROOT环境变量 set CVSROOT=:pserver:administrator@10.10.106.140/cvs 2、使用cvs默认的管理员登陆 cvs login 3、创建用户 cvs passwd -acvsuser //输入cvsuser的密码 //再次输入cvsuser的密码

===================================================================================== 以下内容为转载

CVS是目前最常用的版本控制和软件配置系统。其开源性在其普及的过程中功不可没,然而正因为开源造成了其易用性较差。往往一个功能需要通过几个看似不相干的操作配合才能进行。Windows下CVS的多帐户配置正是这样一个相当重要的,但很不好操作的功能。几个难点如下:

  1. CVS源自Unix系统,其Windows的移植版并没有服务器功能。在Windows下一般采用安装CVSNT这个软件来建立CVS Repository,但CVSNT的操作方法和原始的CVS略微不同。
  2. CVS本身是命令行形式,其配置过程比较繁杂。
  3. CVS的多帐户配置需要手动修改Repository的CVSROOT文件夹里的文件,缺乏统一的界面。

在安装了CVSNT服务器之后,默认的用户就是建立Repository的Windows系统的登陆帐户,但在多人开发的时候,肯定没人希望大家都使用同一个名字来Commit;更重要的是,我们可能需要配置开发人员的权限,例如限制某些人只能看程序,而某些人可以Commit程序,某些人可以添加新的Module。以下是详细的步骤,环境是CVSNT 2.5.03 (Build 2151) + TortoiseCVS 1.8.25:

1. 使用CVSNT建立一个Repository。假设初始使用Windows的管理员administrator密码登陆,Repository使用Pserver协议,IP是1.2.3.4,端口号是2401,Repository名称是/TestRep,密码是123。这时的administrator也是此Repository的管理员。

2. 为了进行多用户配置,必须修改Repository的CVSROOT目录的几个文件。首先在客户端将:pserver:administrator@1.2.3.4/TestRep设为CVSROOT环境变量(请注意区分CVSROOT目录和CVSROOT环境变量)。然后用administrator登陆到CVS,最后Check Out出此CVSROOT目录。命令如下所示:

cvs login //输入密码123 cvs co CVSROOT

3. 在服务器端为Windows添加一个专门用于CVS操作的Windows帐户。所有的CVS帐户都要映射到这个Windows帐户上进行实际的操作。虽然很多资料并没有提到需要建立Windows帐户,但我在实验中发现没有这种帐户,CVS在后边执行任何操作时都会报告没有此帐户的错误。假如这个新的帐户叫做cvsuser。使用Windows命令

net user cvsuser cvsuserpassword /Add

可以添加此帐户。在添加完成之后,一定要记得将/TestRep在服务器上的实际文件夹的权限里添加cvsuser的读写权限,否则到最后任何映射到cvsuser的CVS帐户都会因为没有写权限无法进行正常的commit操作。首先在服务器上的资源管理器里的“工具”菜单里找到“文件夹选项”,在随后出现的“查看”选项卡里找到“使用简单文件夹共享”的项目,取消掉前面的勾,单击确定。然后右击/TestRep所在文件夹,单击“属性”。在随后打开的对话框里可以看到“安全”选项卡。我们需要在这里添加cvsuser的读写权限。

4.为CVS添加自己的帐户。通过使用命令cvs passwd我们可以添加任意多个CVS帐户(当然,只是针对当前的Repository)。所有的帐户信息会被保存在CVSROOT目录的passwd文件当中。然而这个文件是不能Check Out出来的,只能在服务器那里看到它,并且其保存的密码信息是被加过密的。我们可以添加cvsadmin,user1,user2,anonymous等用户。例如添加cvsadmin时的命令是:

cvs passwd -a-r cvsuser cvsadmin //输入cvsadmin的密码 //再次输入cvsadmin的密码

这样就新添了cvsadmin帐户,并将其映射到Windows帐户cvsuser上(-a表示添加一个账户,-r表示影射到操作系统的帐户中。我期望将cvsadmin作为以后/TestRep的管理员。这一点十分重要,如果这时候不设置的话,再将CVS改为“仅使用CVS帐户校验模式”之后就再也没有机会添加管理员了(因为只有管理员可以看得到和操作CVSROOT目录)。

5.设定cvsadmin为CVS管理员。在客户端的CVSROOT目录下新添一个名为admin的文件。在里面将每一个想要升为管理员的CVS帐户的帐户名写到文件中,每行一个帐户名。当然admin文件只有放到服务器,cvsadmin的升迁才能生效。但是,仅仅是这么将admin文件提交上去是不能起作用的。在提交它之前,必须将admin的信息添加到checkoutlist文件中。checkoutlist的格式在文件中有介绍,是“空格 文件名 空格 出错信息 回车符”。我们在里面添加一条记录:

admin adminerror

特别注意admin前面一定要留一个空格。

6.当新的CVS管理员和帐户信息都准备好后,就要将/TestRep的帐户校验模式从“操作系统集成校验模式”修改为“仅使用CVS帐户校验”模式。这么做可以避免为了在CVS中使用多用户时需要操作Windows帐户的麻烦。这个设置的地方在CVSROOT目录中的config文件。打开客户端的config文件,将里面的#SystemAuth=yes改为SystemAuth=no(注意将#删除后,SystemAuth前不能有空格)。修改后保存config文件。

7.提交CVSROOT里的所有更新到服务器,我们的设置就生效了。命令如下所示:

cd CVSROOT cvs add -m "" admin cvs commit -m ""

不过在提交之前,你也许想先把CVSROOT的owner从原来的administrator修改为cvsadmin。使用命令cvs chown可以做到这一点。在提交了CVSROOT目录后,校验模式就立刻改变了,cvsadmin也同时开始生效。这时,用之前的administrator就无法使用CVS了。我们改用cvsadmin帐户重新登陆,继续下面的操作。

8.修改读写权限。CVS有两种读写权限的设置方法,一是粗粒度的,一是细粒度的。只有CVS管理员才能进行访问权限的修改。粗粒度的方法是在CVSROOT中添加readers或者writers文件来实现。在readers里添加的任何一个帐户对当前库只拥有读取权限,添加格式是每行一个帐户名。例如,我们在客户端的CVSROOT目录里添加readers文件,将之前的一个新建帐户anonymous放到里面,然后commit这个readers文件到服务器。anonymous就不能进行commit了。实际的测试结果是在使用anonymous登陆之后执行commit指令,系统会报告正常执行完毕。但实际上,没有任何东西被commit,暴露了CVS在人机界面上的不完善。writers文件的操作readers完全一样。如果一个帐户名被同时写到两个文件里,此帐户只有只读权限。细粒度的方法是使用chacl命令。例如/TestRep里有3个工程,project1、project2、project3。使用命令:

cvs chacl -u user1 -a none -d project1,project2,project3 cvs chacl -u user1 -a all -d project1 cvs chacl -u user1 -a read,write -d project2 cvs chacl -u user1 -a read -d project3

可以让user1拥有对project1目录的完全控制权,对project2目录的读写权,和对project3目录的只读权。第一条命令首先删除user1的所有权限,在随后的3条命令里分别设置了3个不同目录权限。

9.使用帐户组来组织帐户。在客户端的CVSROOT目录下添加一个叫group的文件。此文件的格式是:

组名1:用户名1,用户名2,用户名3,…… 组名2:用户名5,用户名7,…… ……

修改完group文件后commit它,然后通过chacl命令可以实现组权限的修改。

-------------------------------------------------------------------------
CVS操作手册 Version 1.1 [转] ——————————————————————————————————– 1 服务器端安装过程 安装前的注意事项:  本操作手册基于CVSNT 2.5.03 build 2382,操作界面以及选项设置都会随版本的变化而发生一定的改变  CVS容器(repository)、临时文件夹(TEMP)必须安装于CVSNT所在服务器  CVSNT应作为〔服务〕,且建议使用SYSTEM账户执行(原因有两点:1、SYSTEM不具有网络权限,也就是说不能被当作远程服务来使用;2、当SYSTEM账户不进行操作的时候,CVSNT服务仍旧在线服务)  CVSNT建议被运行在采用NTFS文件系统的服务器上(原因有两点:1、NTFS文件系统具备CVS所需要的权限管理的基础;2、NTFS文件系统更加稳定且能够有更大地存储能力) 1.1 CVSNT的安装与配置 1.1.1 创建CVS容器和临时文件夹 例如:D:\CVSNTRepositories (容器) D:\CVSTEMP (临时)(请注意:临时文件夹不可以位于操作系统临时文件夹内。如:C:\winnt\temp 或者 C:\Documents and Settings中)

1.1.2 点击CVSNT安装程序 含客户端、服务器端,进行安装。(请注意:1、如果服务器采用Windows XP、2003或者更高版本则,其〔WMI Service〕服务可能会引起权限拒绝错误,请在安装前将其关闭,安装结束后重新开启即可;2、注意客户端与服务器端版本匹配问题;3、安装后可能需要重新启动) 1.1.3 CVS容器设置  通过〔开始〕-〔程序〕-〔CVSNT〕-〔CVSNT Control Panel〕打开CVS控制面板(或在控制面板中打开)  对设置变更前,请停止CVSNT、CVSNT Lock服务  点击〔Repository configuration〕选项卡  点击〔Add〕新增容器:其中〔Location〕栏位填写/选择容器所在目录(在步骤1中创建的);〔Name〕栏位填写容器名称,必须遵守规则:必须以“/”开头,形如“/CVSNTRoot”。(请注意:如果想要新的容器生效,必须勾选〔Publish Repository〕〔Online〕选项) 1.1.4 CVS临时文件夹设置 点击〔Server Settings〕选项卡,在〔Temporary〕中选择步骤1中创建的CVS临时文件夹。 重新启动CVSNT、CVSNT Lock服务,如果服务不能启动,请检查容器所在文件夹权限设置或重新启动服务器。 1.1.5 更新CVS服务器中的二进制文件列表 (请注意:这是非常重要的,如果不将已知二进制文件类型加入二进制文件列表,当上传此类文件时文件可能被损坏) 在命令行提示符下操作: SET CVSROOT=D:\CVSNTRepositories\Repo1(以Administrator登录服务器,本地操作模式) Cvs co CVSROOT Cd CVSROOT Notepad cvswrappers (在记事本中编辑列表文件例如) *.cab -k ‘b’ *.class -k ‘b’ *.doc -k ‘b’ *.dll -k ‘b’ *.exe -k ‘b’ *.exp -k ‘b’ *.gif -k ‘b’ *.gz -k ‘b’ *.jar -k ‘b’ *.jpg -k ‘b’ *.jpeg -k ‘b’ *.lib -k ‘b’ *.msi -k ‘b’ *.mso -k ‘b’ *.pfw -k ‘b’ *.png -k ‘b’ *.ppt -k ‘b’ *.sit -k ‘b’ *.tar -k ‘b’ *.tlb -k ‘b’ *.vsd -k ‘b’ *.xls -k ‘b’ *.wmz -k ‘b’ *.zip -k ‘b’ Cvs commit 1.1.6 服务器端CVS权限设置 CVSNT服务器的权限控制包括两部分:  NTFS ACL 阻止没有经过授权的人访问CVS容器  CVSNT ACL 阻止开发人员commit错误的版本分支 CVSNT登录方式有两种:  Windows用户验证与CVSNT用户验证的混合验证模式  CVSNT用户验证的单一验证模式 由于Windows不允许任何非真实帐户的对文件系统进行操作,所以使用CVSNT创建的用户其实是Windows用户的别名(映射),其关系如下图:

本文主要介绍混合模式验证的设置方法。

某容器权限的设置步骤: 1) 以Administrator登录服务器 2) 为CVSNT创建Windows用户组、用户 Group Name 描述 CVSAdmins 所有的CVS容器管理权,允许更新所有容器中的文件 CVSAdmin-XXX 某容器的管理权 CVSUsers 所有CVS用户,可以checkout文件,但checkin/commit动作受到CVSROOT\writers文件控制 请注意:如果CVSNT部署于Windows2003+的服务器上,请确认用户组拥有执行CMD.EXE的权限,因为操作系统默认是没有的 3) 设置CVSROOT权限控制文件 CVSROOT filename 描述 Admin 被允许执行CVS管理员指令的用户名单 (不受源代码管理控制) Passwd 记录CVSNT帐户名称和密码 (经过加密,不受源代码管理控制) Group 记录CVSNT组信息,格式: 组名:用户名1 用户名2 用户名3 …… Readers 可以读取数据的用户名单 Writers 被允许进行写操作(commit)的用户名单 config 某CVSNT容器的配置文档  SystemAuth Yes:混合验证 No:单一验证  以Administrator登录服务器,切换到命令行方式  切换到CVS容器所在的文件夹中,例如:D:\CVSNTRepositories\Repo1\CVSROOT  设置admin文件 通过“echo cvsadmin>> admin”新建admin文件,“username”与“admin”中间不能有空格  设置writers、config文件(不要在CVS容器文件夹中进行) Set CVSROOT=:pserver:cvsadmin@host:/Repo1 Cvs login Cvs co cvsroot Cd cvsroot Notepad config Echo username>> writers (请注意:必须将自己所使用的用户名也添加进去,否则会被死锁,若死锁请到CVS容器中删除writers与writers.v文件即可) Cvs add writers (当新建此文档时使用) Cvs commit 4) 设置CVSNT容器所在文件夹权限

Directory/File SYSTEM Administrators CVSAdmins CVSAdmin-XXX CVSUsers 描述 .\CVSNTTEMP Full 开放权限 .\CVSNTRepositories Full Full Full Read .\CVSNTRepositories\Repo1 Full Read Full Full 单个容器 .\CVSNTRepositories\Repo1\CVSROOT Full Read Full Read 避免普通用户改变配置文件 .\CVSNTRepositories\Repo1\CVSROOT\history Full Read Full Change 记录CVS用户历史 .\CVSNTRepositories\Repo1\CVSROOT\val-tags Full Read Full Change CVS用户checkout 请注意:history文件在CVSNT 2.5.x版本后发生了较大的变化,CVSNT不会自动生成历史记录,所以容器Repo1中CVSROOT文件夹下没有history文件需要手动创建一个空的文件并命名为history

某容器内项目权限的设置:

1) 添加CVSNT用户 语法: cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username] 其中,-a表示添加一个cvsnt用户;-x表示取消一个cvsnt用户;-X表示删除一个cvsnt用户;-r表示把一个cvsnt用户和一个指定的系统用户绑定;-R表示取消一个cvsnt用户和一个系统用户的绑定;-D表示域;username表示要创建的cvsnt用户 不加参数表示修改当前登录用户密码 你可以使用以下命令来创建映射关系: cvs passwd -a -r <real accountname=""></real><cvs name="" account=""></cvs> 2) 设置CVSNT用户权限 语法:  Chown CVS chown [-R] user [directory…] 其中-R 表示递归。 cvs chown -R cvsadmin . 上述命令把当前目录及其子目录对应的服务器目录的owner设置为cvsadmin用户。

 Chacl CVS chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control}[,…]] [-d] [file or directory…] -R表示递归; -r branch表示对分支的权限的修改; -a表示设置用户的权限; -d表示删除用户的权限。 cvs chacl -R -u cvsuser2 -a read,write,create,tag . 上述命令赋予cvsuser2用户当前目录及其子目录对应的服务器目录的读/写/创建/打标签的权限。 cvs chacl -u g2 -a read,nowrite HelloWorld.java 上述命令赋予g2群组当前目录下HelloWorld.java文档的读权限,拒绝其写权限。 cvs chacl –u cvsuser2 –d . 上述命令取消cvsuser2 用户对当前目录对应的服务器目录的所有权限。

 Lsacl CVS lsacl [-dR] [file or directory …] -d表示仅列出目录权限,-R表示递归。

3) 请注意:这里是一个CVSNT 2.5.03 build 2382 bug 当进入被cvs checkout出来的项目客户端文件夹时,并且这时你并不是使用checkout所使用的帐户登录的,cvs会自动使你变更成为checkout时所使用的帐户。 危害描述:可以借此漏洞夺得他人帐号控制权,甚至最高管理员权限。 解决方法:在使用时请勿在他人的计算机上使用自己的帐号checkout项目,尤其是管理员帐号。

1.1.7 测试CVSNT服务 经过以上设置,CVSNT服务器已经部署完毕,需要对其进行连接测试,在命令行模式下操作: Set CVSROOT=:pserver:username@host:/Repo1 Cvs login 成功则无错误提示。

1.2 CopSSH的安装与配置 在CVS应用中为了提升数据传输的安全性,可以采用SSH通讯协议来替代pserver标准协议,在众多SSH服务程序当中,截至笔者写此文章之时,CopSSH是对各种客户端程序支持最好的开源项目。  安装过程非常简单,完成后需要〔Activate a user〕,〔开始〕-〔程序〕-〔CopSSH〕 请注意:CopSSH要求必须使用Windows帐户,CVSNT帐户不被支持。可以通过绑定Windows与CVSNT帐户的方法来解决。  需要从CVSNT安装文件夹中拷贝以下文件到CopSSH安装目录的bin下 cvs.exe cvsapi.dll dbghelp.dll extnt.dll msvcp71.dll msvcr71.dll cvstools.dll iconv.dll mdnsclient.dll  请设置CopSSH临时文件夹的权限  Directory/File SYSTEM Administrators CVSAdmins CVSAdmin-XXX CVSUsers 描述 .\Documents and Settings \SvcCOPSSH.XXX\Local Settings\Temp Full Full Full Full

 连接测试

Set CVSROOT=:ssh:username@host:/Repo1 Cvs login 输入密码后,会要求确认接受public key。 1.3 删除不安全CVS通讯协议(可选) 将位于CVSNT安装文件夹中protocols目录中的相应DLL文件删除即可。

2 客户端的安装过程 安装前注意事项:  已经安装Microsoft VS系列  TamTam Plugin是付费软件

客户端的安装相对简单,这里只介绍其中需要注意的几点:  安装时请首先安装CVSNT客户端。  TamTam Plugin 捆绑的文本比较工具不支持多字节字符(中文、日文等等),请使用WinMerge,并在设置中对其进行绑定。  请指定TamTam Plugin所使用的CVS.EXE为CVSNT中的以保持稳定的兼容性。  为了加快网络传输速度请开启网络压缩选项  在填写连接字串时,请使用SSH通讯协议,例如::ssh:username@host:/Repo1

3 CVSNT的日常维护 3.1 容器的备份 通过一个脚本文件(加入〔任务计划〕)或者〔备份〕程序进行备份,其中内容形如: net stop cvsnt xcopy d:\CVSNTRepositories \\server\cvsbackup /Q /S /C /H /R /O /Y net start cvsnt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值