Windows下CVS服务器端的配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stuqbx/article/details/6865408

今天玩了一下CVS,遇到了些许问题,也收获良多,现将其整理如下。


前提条件:有一安装有CVSNT的服务器。


其余先不说,我遇到最多问题的是关于用户的设置,所以,先讲讲有关用户的相关操作与配置。


1. 设置环境变量CVSROOT

set CVSROOT=:pserver:administrator@localhost:/cvs

注:1. 这里要用自己操作系统的管理员用户(创建/cvs库的操作系统管理员)代替administrator

(下面遇到administrator,如果没有特别声明,都要用自己操作系统的管理员用户代替administrator)

        2. 如果服务器不是部署在本机,要用服务器的IP代替localhost

2. 在命令行窗口中首先登录cvs,命令如下:

cvs -d :pserver:administrator@localhost:/cvs login

注: 在域中的用户可能会被拒绝,此时要在服务器设置相关的域,如果在早期版本CVSNT中要把“Use local users for pserver authentication instead of domain users”选项去掉。不在域中的本机用户,则勾选此选项。

3. 添加用户

cvs passwd -a -r administrator cvsadmin

这样就创建了用户名为cvsadmin的账户,此时在cvs的安装目录下会生成一个passwd文件,里边存储着用户名和经过加密后的密码。

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

4. 设定CVS管理员

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

 admin adminerror

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


5. 修改校验模式

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

config文件简介

控制CVSNT的验证工作方式的就是config文件,注意该文件最前面的两行:

#Set this to `no" if pserver shouldn"t check systemusers/passwords
#SystemAuth=yes

第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no:

yes:pserver将使用Windows系统用户和CVSNT用户来共同验证(若CVSNT用户未定义,则用Windows系统用户来进行验证),默认为yes,CVSNT用户在后面将要介绍的passwd文件中定义。

no:只使用CVSNT用户来进行验证。

该文件可以在客户端进行修改,因此我们可以将其checkout出来将第二行改为SystemAuth=no,并commit到CVSNT上就可以启用单一验证方式了,注意启用单一验证方式后原来的Windows系统用户将变为无效,因此要注意执行该步骤的时机。

6. 设置生效

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

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

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

7. 修改读写权限

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

cvs chacl -u user1 -a none -dproject1,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个不同目录权限。


默认情况下,任何用户都拥有任何目录的所有权限。但是,我们在配置完CVS后,并不想每个用户都有权限修改CVSROOT(管理模块),所以管理员要手工设置这个目录的权限,只让管理员自己拥有rcw三种全部权限。

修改默认模块(CVSRoot管理模块)的权限

a. Checkout默认模块(CVSROOT管理模块)

b. cd到Checkout出来的CVSROOT目录

c. 对[CVSRoot]模块执行下列CVS命令:

            cvs chacl default:n             取消所有用户的默认权限
            cvs chacl administrator:rcw     设置administrator拥有所有权限
            cvs chown administrator         更改[CVSRoot]的拥有者
            cvs lsacl                       查看[CVSRoot]的权限状态

8. 使用帐户组来组织帐户

在客户端的CVSROOT目录下添加一个叫group的文件。此文件的格式是:

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

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

附:CVSNT系统中用户管理原则

1.  CVSNT的用户和CVSNT所在机器上的NT用户(操作系统账户)是相关联的

2.  只有administrator身份的用户,才有权在CVSNT中创建和删除用户

3.  创建新的CVS用户,必须与CVSNT所在机器上的NT用户绑定

4.  一个NT用户可以和多个CVS用户绑定

注:在x64的机子装CVSNT有可能会遇到“Administrator: Switch to user failed due to configuration error. Contact your System Administrator.”这样的问题。

解决办法:修改服务器所在盘的属性,安全--高级--用在此显示的可以应用到子对象的项目替代所有子对象的权限项目(p),在这条文字前的勾勾上然后确定。

先说到这吧,有疏漏的地方,还望大虾指正!



 

 

 

转载请注明出处!

http://blog.csdn.net/stuqbx

 

猜你喜欢

转载自blog.csdn.net/stuqbx/article/details/6865408