您的位置:首页 > 其它

cvsnt配置用户权限的一点心得

2007-10-11 15:33 204 查看
cvsnt配置用户权限的一点心得

szbruce77@163.com
最近公司项目太多,代码太乱,
这个文章基本上都总结好了,不过说说新手容易犯错的地方
我cvsnt版本是 2.5.03, winxp. 我没有用8848software上那个wincvs
那个总有些问题(要求安装python,tcl,而且对版本限制很多,不过他那个几个pdf文档不错,哈哈)

AA.安装完cvsnt以后,需要用 程序--->cvsnt control panel设置仓库目录
D:/CVSROOT name为CVSROOT(以后在客户端使用这个相当于一个unix的名字是 /CVSROOT)
不要使用D:/CVSROOT
BB.然后登录 以windows的用户名登录,比如zpb(注意最好是管理员权限)
CC.
登录后执行
/*****************、
添加CVS用户名和密码。需要用到如下命令:

cvs passwd -r 'real username' -a 'cvs username'
'real user'是Windows系统用户名
'cvs user'是cvs的用户名,可以为不同的cvs user配同一个real user.
执行上述命令后,在服务器上的[${REPOSITORY}/CVSROOT/passwd]文件中会增加一行用户名密码记录,
格式为:用户名:加密后的登陆密码:Windows系统用户+[回车]。多次执行上述命令添加好所有项目组成员的CVS帐户。
在目录[${REPOSITORY}/CVSROOT/]中新建三个文件:admin、writers、readers,
顾名思义这三个文件用来指定可对CNSNT的REPOSITORY进行相应操作的用户,
这三个文件中的格式为:用户名+[回车]。将2中添加的项目组成员的帐号按其权限分别
写入这三个文件。至少在admin文件中加入一个帐号作为管理员。
/*****************、
需要注意的是:
比如我在writers 有个用户 testwriter zpb xxj
如果要增加xxj为admin,注意确保writers中要有xxj
否则cvs passwd -r 'real username' -a 'cvs username'
总是提示无法添加用户, passwd 写入不了之类错误
cvs [server aborted]: "passwd" requires write access to the repository

http://blog.csdn.net/jjdragon/archive/2006/10/26/1352218.aspx
一步步配置CVSNT访问权限
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]|
}] [directory...]
首先用:”cvs chacl default:n .”取消缺省用户权限,然后添加需要的帐号权限。
记住:只有模块的拥有者才能执行此命令,执行此命令后,在该模块的.perms文件中会增加一条记录。
在此文件中添加了的用户才具有读写控制权限。

6、 完成以上工作后,基本目的已经达到了,但还有一个漏洞需要补上,
由于CVS使用[${REPOSITORY}/CVSROOT/]目录中的相关文件来记录权限信息,
如果有位于writers文件中的用户check out了这些文件,修改后再check in,则会控制CVS的访问权限。
堵住这一漏洞的方法是使用5中的方法对[${REPOSITORY}/CVSROOT/]进行访问限制,只让管理员有读写该目录的权限。
(我通过cvs co cvsroot这个工程,发现新版本里不能到处一些控制文件,感觉好像2.5解决了该bug)

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1352218
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: