使用CVSNT进行权限控制

来源:互联网 发布:java获取当前日期时间 编辑:程序博客网 时间:2024/05/16 14:57

今天看了下CVSNT的东西,它呢是一个windows平台上的一个CVS程序,使用它的时候很基本的东西就是一些权限的设置,不同人员具有不同的权限,在网上看了一下,作下记录,以备日后深入学习:

前一段时间要把公司所有的项目源代码统一进行管理和控制,需要建立一个CVS服务器,如何进行权限的划分成了一个问题。不是所有的人都能取各个项目代码,也不是所有能取出代码的人都能进行代码的提交。如何控制权限呢?网上找了一大堆资料,可是很多都实践通不过。

所有文档中的方法都在CVSNT上的测试通过。环境是Win2000 AD Server + sp4,磁盘分区是NTFS,登陆用户是Administrator,CVSNT的版本是2.0.12a,客户端采用TortoiseCVS version 1.4.0.

1.通过CVS验证模式进行控制

(假设系统以Administrator登陆)

1.  安装CVSNT。
2.  设置CVSNT的Repositories到一个具体的目录。
3.  在Win2000 下设置系统环境变量,确定CVSNT的安装目录在path路径中。
4.  同时设置Win2000的环境变量CVSROOT到刚才指定的Repositories目录。保存退出。
5.  打开cmd窗口。输入 cvs init
6.  在Respositories下的CVSROOT目录中新建一个passwd的文件,文件内容如下:administrator:
7.  安装WinCVS或者TortoiseCVS等CVS的客户端工具。
8.  以Administrator的身份和密码登陆CVS,取出CVSROOT模块。
9.  在取出的模块目录中新增admin和group两个文件。其中admin文件用来指明哪一个用户是管理员帐号。可以录入Administrator    (如果指定其他帐号,一定要确定该帐号在Win2000中存在,同时,后面的部分操作需要以该帐号登陆,如果这里采用ADMIN,则比较简单)然后在新建的group文件中对用户进行分组,文件的格式如下:

组名:用户1 用户2 用户3 (用户之间用空格分隔)

10.把新建的这两个文件添加到CVS服务器,并提交。|
11.修改checkoutlist文件,加入一行admin ,以便CVS服务器能自动通过新建的文件知道管理员帐号。
12.修改config文件的SystemAuth=no,并去掉前面的注释符号#,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开始生效了。
13.提交刚才修改的checkoutlist和config文件。
14.打开CMD窗口,进入取出的CVSROOT目录。修改CVSROOT的默认权限。

cvs chacl default:n            取消所有用户的默认权限(针对相应的目录)

cvs chacl administrator:rcw        设置管理员拥有所有权限(针对相应的目录)

15.为所有的用户建立passwd的内容。具体的命令需要打开CMD窗口,输入

cvs passwd –a username   (确定这时候的登陆帐号是刚才admin中配置的帐号,否则会提示只有管理员才有权限修改其他帐号的密码。)

16.导入具体项目。打开cmd窗口,进入到项目源代码目录,输入

cvs import –m “模块名字” “描述” “版本信息”  (注意,二进制文件导入可能会存在问题。最好不要通过这种方式导入二进制文件。)

17.为该项目的人员设定group文件。如果需要进行读和写的单独控制,可以在group中为该项目建立两个用户组,一个组是只能读的用户列表,一个是可读写的用户列表。
18.提交修改后的group文件。
19.找到Repositories目录下生成的项目目录。在根目录下,默认只有一个.owner的文件来控制用户,可以在这里添加一个.perms文件来控制读写。.owner文件控制那些用户可以访问这个项目。而.perms文件控制用户的权限,用户的权限是rcwn中的一个。其中r表示读取权限、c表示创建和删除权限、w表示写入权限、n表示无任何权限。默认情况下是default:rcw,可以在.perms文件中添加group的名字,冒号,后面跟具体的权限。如

default:n

group1:rcw

group2:r

20.如果只是简单的控制有没有权限读,则只需要在根目录下添加.perms文件就可以了,如果要控制有读取权限的用户写入,则需要每个目录单独控制,可以把.owner和.perms两个文件分别拷贝到各个目录下即可。

说明:通过这两个文件来控制访问权限的方法,比较繁琐。下面介绍另外一种控制方法。

2.通过Windows的目录访问权限进行控制

1.  安装CVSNT和客户端工具。
2.  新建Repositories目录和Lock目录。如CVSFile和CVSLock。
3.  在系统中建立用户test1和test2,同时建立cvsReaders和cvsWriters组,分别分配test1·和test2用户到两个组中。
4.  执行cvs init,初始化cvs的Repositories目录。
5.  利用CVS客户端工具下载CVSROOT目录下的内容到本地,修改config文件中的LockDir=e:/cvsLock,提交该文件。同时确保cvsReaders和cvsWriters都有读写cvsLock目录的权限,默认是everyone,则不用修改。
6.  设置CVSFile的目录的权限。右键——>属性——>安全,删除everyone权限,然后添加cvsReaders、cvsWriters、administrators组的完全控制权限给该目录。
7.  进入到CVSFile/CVSROOT目录下,对config和history两个文件添加everyone权限。这样就可以显示历史和模块列表了。
8.  导入项目。cvs import –m “test” “test” “test”。(注意,二进制文件导入可能会存在问题。)
9.  对导入的项目,在CVSFile目录下会生成一个相应的目录。再对这个目录进行权限控制。右键——>属性——>安全,取消所有继承来的权限,重新添加cvsReaders的读权限、cvsWriters和administrators的完全控制权限。 

好了,现在test1用户可以下载cvs中的文件,但是不能修改提交。test2用户可以下载,同时也可以修改提交增加文件等等。要添加用户,只需要在Windows中的用户管理中,为用户组添加用户就可以了。对于CVS的管理员,可以设置到Administrators组中,不过这样安全不太好。也可以单独建立一个管理员组,分配所有的权限就可以了。

说明:这种控制方法简单,但是要为每一个项目建立两个用户组,同时Windows系统中会存在大量的用户。

转自:http://www.javayou.com/diary/547

原创粉丝点击