3.管理员登录服务器
其实上面的连接服务器的过程已经包含了管理员登录服务器的过程,不在复述了。需要说明的是,CVSNT有2中用户验证方式:window和CVSNT混合验证方式,CVSNT单一验证方式。
混合验证方式指的是这台机子上的用户以及在CVSNT上建立的用户都可以通过验证,而CVSNT单一验证方式只能让CVSNT上建立的用户通过验证,而这台机子上的用户无法通过验证。验证方式由config文件的SystemAuth的值来决定,如果是yes,则为混合验证方式;如果是no,则是单一验证方式。默认情况下是混合方式。
为了安全保证,一般选择单一验证方式。
方式是打开checkout到本地的config文件并且修改SystemAuth=no,保存并commit。
4.创建普通用户和组
创建普通用户的过程其实是创建管理用户过程的子过程,上面已经提到了。在这里我告诉大家一个快捷的方法,如果你创建的不同的用户初始密码都相同的话,可以打开CVSROOT下面的passwd文件,直接在该文件下面添加多个user和密码。显示的密码是加密处理过的。
格式是:username:password:servername
sample:
cvsadmin:$1$N?l[Tii$uXUrYVW8YQM/4BuWX0Uxj1:share
当然也可以使用命令创建不同用户名和密码
cvs passwd -a username
创建组的过程也比较简单,只需要在本地的CVSROOT下面新建一个group文件,在文件中输入内容
group1:user1 user2
group2:user3 user7
...............
然后保存并commit可以了。
5.设置用户和组的读写权限
CVS有两种读写权限的设置方法,一是粗粒度的,一是细粒度的。只有CVS管理员才能进行访问权限的修改。粗粒度的方法是在CVSROOT 中添加readers 或writers 文件来实现。在readers里添加的任何一个帐户对当前库只拥有读取权限,添加格式是每行一个帐户名。例如,我们在客户端的CVSROOT 目录里添加readers 文件,将之前的一个新建帐户user1 放到里面,然后commit 这个readers 文件到服务器。user1 不能进行commit 了。实际的测试结果是在使用user1 登陆之后执行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 个不同目录权限。
我们也可以直接给组设置权限,这样一来组下面的用户具有了和组相同的权限
cvs chacl -u group1 -a read -d project1
说明:在实际使用的时候,如果在设置了SystemAuth=no之后,再添加用户,会出现
cvs [passwd aborted]: Only administrators can add or change another's password
的错误,所以建议在添加完需要的普通用户之后再设置SystemAuth=no