详细的windpws平台县cvsnt配置与权限分配

 

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

CVS源自Unix系统,其Windows的移植版并没有服务器功能。在Windows下一般采用安装CVSNT这个软件来建立CVS Repository,但CVSNT的操作方法和原始的CVS略微不同。 CVS本身是命令行形式,其配置过程比较繁杂。 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 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值