CVSNT缺省将Windows系统用户作为自己的用户来实现权限管理,如果要将CVS用户与Windows用户分开,由CVSNT管理自己的用户权限就必须要做一些设置工作,下面给出一个在使用过程中比较方便的配置步骤:
(本文中用${REPOSITORY}表示CNSNT的REPOSITORY路径)
(本文中所用的CVSNT版本为:2.0.51d,所用命令可能与新版本有差异)
1、 在安装CVSNT的Windows系统中添加一个系统用户cvsuser。
2、 添加CVS用户名和密码。需要用到如下命令:
cvs passwd -r 'real username' -a 'cvs username'
'real user'是Windows系统用户名
'cvs user'是cvs的用户名,可以为不同的cvs user配同一个real user.
执行上述命令后,在服务器上的[${REPOSITORY}/CVSROOT/passwd]文件中会增加一行用户名密码记录,格式为:用户名:加密后的登陆密码:Windows系统用户+[回车]。多次执行上述命令添加好所有项目组成员的CVS帐户。
3、 在目录[${REPOSITORY}/CVSROOT/]中新建三个文件:admin、writers、readers,顾名思义这三个文件用来指定可对CNSNT的REPOSITORY进行相应操作的用户,这三个文件中的格式为:用户名+[回车]。将2中添加的项目组成员的帐号按其权限分别写入这三个文件。至少在admin文件中加入一个帐号作为管理员。
4、 切换CVSNT权限认证方式。前面说过了,CVSNT的缺省将Windows作为自己的用户,现在要改变这种权限认证方式,方法很简单,将[${REPOSITORY}/CVSROOT/config]文件中的SystemAuth=yes改为SystemAuth=no就行了。此时,原来的Windows帐号就不能访问CVS服务器了,只有在2中添加了的帐户可以访问。
5、 上述4步完成了对CVS的整个REPOSITORY的读、写、管理权限的配置,但我们知道在REPOSITORY下面还可以按实现工作划分成项目、模块、文件等层次结构。项目管理会需要对这些项目、模块、文件进行更细致的权限设置,为实现这个功能,需要用到如下命令:
cvs chacl {user}:[{[r][w][c]|[n]}] [directory...]
首先用:”cvs chacl default:n .”取消缺省用户权限,然后添加需要的帐号权限。
记住:只有模块的拥有者才能执行此命令,执行此命令后,在该模块的.perms文件中会增加一条记录。在此文件中添加了的用户才具有读写控制权限。
6、 完成以上工作后,基本目的已经达到了,但还有一个漏洞需要补上,由于CVS使用[${REPOSITORY}/CVSROOT/]目录中的相关文件来记录权限信息,如果有位于writers文件中的用户check out了这些文件,修改后再check in,则会控制CVS的访问权限。堵住这一漏洞的方法是使用5中的方法对[${REPOSITORY}/CVSROOT/]进行访问限制,只让管理员有读写该目录的权限。