CVSNT在Windows下的安装和使用 [转贴 2005-12-6 6:43:13 ]

CVSNT在Windows下的安装和使用

先说下CVSNT的用户验证方式,CVSNT的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户 单一验证方式,默认工作在混合验证方式下,当然使用单一验证方式对用户的管理肯定比较方便一点,因此下面的配置就是围绕该方式进行的。各个资源库所使用的 验证方式及用户配置由其目录下CVSROOT里的配置文件决定,其中有几个比较重要的文件。




1、config文件

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

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

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

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

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

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

2、 admin文件

该文件保存CVSNT管理员用户列表,内容很简单,形式如下:
User1
User2
User3
每一行定义一个管理 员用户,默认时没有该文件,但你可以在客户端自己添加并add上去,再commit到CVSNT上,但是光有这个文件还是不会生效的,还要将其添加到 checklist文件中,使CVSNT能够读取该文件的内容,在checklist中添加文件列表的格式为:
[空格]文件名 出错信息
其中文件名前的空格必须要有的,不然会出错。
我们可以先添加admin文件到CVSNT中,再修改checklist文件commit,就可以使admin文件生效了。
3、passwd文件
服务器工作在CVSNT用户单一验证方式下的时候,这个文件定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。
添加用户的命令的示例:
cvs passwd –r administrator –a cvsadmin
之后系统提示输入密码,输入后服务器会新建一个passwd文件。
该文件的内容很简单,形式如下:
cvsadmin:fqr1fS4gDghrt:administrator
kid:aTXRfS31Bm6JA
mystique:Yna4QcXz9dEqd
以第一行为例:cvsadmin为用户名,fqr1fS4gDghrt为CVS使用UNIX标准加密函数对密码进行加密后的结果,administrator为该用户的别名,当使用混合验证方式时对应Windows系统用户名。
注意:这个文件是不能在客户端进行修改的,不能checkout出来。
4、group文件
该文件定义CVSNT中组信息,同组里的用户拥有一样的权限,对组权限的修改和对用户权限的修改一样。
group文件的内容为
administrators:cvsadmin kid mystique
users:User1 User2 User3
可以看到该文件的内容也很简单,组名:用户名,多个用户名之间用空格隔开。
Group文件可以在客户端修改,不用修改checkoutlist这个文件,系统会自动使其生效。
作为组里面的特定成员可以赋给特定的权限。
了解了以上内容,下面我说一下我自己的配置步骤,我没有使用WinCVS进行操作,是直接使用命令行进行修改的,觉得这样思路比较清晰:
1、添加系统变量CVSROOT=E:/CVSNT/Repository,并把E:/CVSNT加入到系统Path路径。
2、进入命令提示符,因为此时为混合验证模式,可以不用不用登陆直接进行checkout。可以建立一个工作目录,在该目录下进行操作,我这里为E:/CVSNT/Works。
 检出CVSROOT目录:
  cvs co CVSROOT
3、添加CVSNT系统管理员用户,此时会提示设置用户密码:
 cvs passwd –r administrator –a cvsadmin
4、修改CVSROOT访问权限:
cd CVSROOT
 cvs chown cvsadmin   //更改所有者为cvsadmin
 cvs chacl default:n   //默认权限为n
 cvs chacl cvsadmin:rwc  //添加cvsadmin
5、修改config文件,按上面的方法修改后commit:
 cvs ci
6、此时单一验证方式已经启用了,也就是只能使用刚才添加的cvsadmin进行登录,此时可以把CVSNT控制面板上的Use local users for pserver authentication instead of domain users关掉。登录前还要改一下系统变量CVSROOT,关闭命令提示符窗口,修改CVSROOT为:
 :pserver:cvsadmin@192.168.0.1:4021/CVSNT/Repository

这里的192.168.0.1是服务器的IP地址,/CVSNT/Repository就是前面设置Repository时设置的Name,可以改为你机器上的配置。修改系统变量之后以下的步骤在任何与服务器相连的机器上进行,当然该机器上应该有CVSNT的可执行文件。
7、如果为了避免出现错误,先重启一下CVSNT服务器,再启动命令提示符来到E:/CVSNT/Works,因为已经启用单一验证方式,先要进行登录。

 cvs login
 
 输入密码,此时就是以cvsadmin登录了。
 
8、添加admin文件,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为
 
 cvsadmin
 
 执行命令:
 
 cvs add admin
 cvs ci
 
9、修改checklist文件,在该文件末尾添加一行:

 [空格]admin  error message
 
 注意:admin前的空格不能少。
 
 执行命令:
 
 cvs ci
 
经过以上步骤,可以说用户配置已经基本完成了,CVSNT可以很好的工作在单一验证方式下。进一步的管理可使用以下命令:

添加用户: cvs passwd -a username,使用时不必理会需要添加别名的提示。

修改用户权限:cvs chacl username:r|w|c|n,(r:Read w:write c:control n:none)

要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。

CVSNT安装注意点: 1)配置CVSNT默认管理目录 方法一:通过CVSNT Control Panel控制面板 - Pepository configuration 来配置路径 方法二:通过命令来建立cvs -d /usr/local/cvsroot init 2)配置服务器缓存目录(-T) windows平台下默认:c:\windows\temp linux平台下默认:/tmp 3)配置验证方式: 建立好默认管理目录后,会在其目录里产生CVSROOT配置文件夹, 找到config文件,其中 SystemAuth有两个值yes和no: yes:pserver将使用系统用户数据库和passwd文件来共同验证 (若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证) 默认为yes no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。 我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器, 提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下, NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。 4)解决 no such repository 现象 最新的cvsnt可能采用unix的设置访问方式,即使你是cvsnt也不需要些盘符。 5)解决认证失败 情况一:SystemAuth=yes 系统集成验证 cvs [login aborted]: authorization failed: server xxx.xxx.xx.xx rejected access to /coderoot for user cvsuser 解决方法:需要使用系统用户登录,例如administrator 情况二:cvsnt 单一验证 cvs [login aborted]: no such user cvsuser in CVSROOT/passwd 解决方法:passwd文件默认是没有的,里面字段含义是 CVS登录用户名:密码(加密):系统用户 在服务器CVSROOT目录建立一个passwd文件,之后输入cvsadmin: 表示建立一个cvsadmin空密码的用户。 下面具体介绍下passwd文件: 一定要注意:这个文件是不能在客户端进行修改的,不能checkout出来。 每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户 三部分之间使用冒号“:”来进行分割。 用户名:就是登陆CVS的用户名 密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码 本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其 他关系,仅仅是别名的关系) 如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的 用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户, 在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下: cvs passwd –a bach cvs passwd –r pubcvs –a melissa 在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行 cvsadmin: 这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户, 就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。 注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。 在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端 进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这 个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个 文件格式的,不要去随便修改,更加不要尝试在客户端进行修改! 6)远程管理建立/用户和用户组的建立 1)首先使用系统集成认证的方式登录CVSNT,检出(checkout)根目录(.)下所有 文件(包括cvsroot目录); 2)调整和查看当前用户权限: 添加用户操作: 将系统账号升级成CVSNT的超级管理员帐户: cvs passwd -r administrator -a cvsadmin(当前帐户) 添加admin文件: 接着重新登录,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为 cvsadmin 然后上传更新 接下来可以有权限操作 cvs passwd -a username 修改用户权限:cvs chacl username:r|w|c|n,(r:Read w:write c:control n:none) 射影系统用户: cvs passwd -r 系统用户名 passwd里用户名 添加组操作: 要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。 查看权限操作: r (读取权限)w (写入权限)c (创建和删除权限)n (没有任何权限) 选中刚刚下载的【CVSRoot】模块,【Ctrl+L】或Admin=>Command Line…,弹出Command Line Settings对话框,直接执行CVS命令。 取消所有用户的默认权限:cvs chacl default:n 回车,OK,完成。 设置Administrator拥有所有权限:cvs chacl administrator:rcw 回车,OK,完成。 更改【CVSRoot】的拥有者:cvs chown administrator 回车,OK,完成。 查看【CVSRoot】的权限状态:cvs lsacl 回车,OK 3)模块的配置:在【CVSRoot】模块目录下有一个modules文件,打开编辑 CVSRoot CVSRoot sean工作目录 -a sean 4)上述操作可能导致权限问题,无法提交更新,解决方法如下 linux:在CVSROOT下的readers、writers、passwd以及repository的许可权限,决定了上述的操作 windows:把CVSNT Control Panel中的Advanced的All user are read给勾选了,这样设置了之后就变成了所有用户只能读不能写了, 去掉勾问题解决 7)KeyWord自动宏替换 CVS缺省会对文件进行keyword(宏)替换,在文件中加入这些关键字是个良好的工作习惯 $Id$ 关键字是用文件名、版本、时间、作者及代码性质替换,如果使用-l选项取出,在Exp后 面会加上登录用户的名称。除了$Id$关键字,RCS还支持下面常用的关键字: $Log$ : 你所提供的修改日志信息。 $Author$ :存入该版本的作者。 $Locker$ : 该版本的加锁者 $State$ : 该版本的状态 Exp(试验版), Stab(稳定版), Rel(发行版).缺省是Exp $Date$ : 该版本存入的时间,使用UTC时间格式。 $Revision$ : 该版本的版本号 $RCSfile$ : RCS文件名 $Source$ : RCS全路径名 $Name$ : 取回该版本的符号名 $Header$ : 相当于$ Source $$ Revision$$Date$$Author $$State$$Locker$的组合 更新时的选项如果选择 -kkv或-kkvl等,更新的文件中Id号虽然会自动替代,但是在某些编辑器中, 可能会打开时每行间插入空行。解决方法是更新时点击右键弹出的command, 以命令行的方式更新对象,对象可选整个目录,也可以是选定的文件, 更新选项自己添加,如 cvs update -kbkkv main.c 可用的模式为: -kkv(默认产生替换) 使用默认形式产生关键字字符串,如。 $Revision: 5.7 $ 对于 Revision 关键字。 -kkvl 类似 -kkv,如果指定的版本现在被加锁,还需要插入加锁者的名字。锁名与使用cvs admin -l 命令相关。 -kk(忽略其值,继续替换) 在关键字字符串中只生成关键字名;忽略其值。例如,对于关键字 Revision,生成的字符串是 $Revision$ 而不是 $Revision: 5.7 $。这一选项在比较版本差异时忽略关键字替换的影响非常有用(参阅 Merging and keywords)。 -ko(不替换,采用旧的) 生成旧的关键字字符串,在工作中的文件与检入前一样。例如:对于关键字 Revision,如果检入前字符串是 $Revision: 1.1 $,则生成的字串与以前相同而不会是 $Revision: 5.7 $。 -kb(替换过程中阻止换行转换) 类似 -ko 选项,并阻止换行字符的转换,这种转换是因为换行符在仓库(只是换行) 的形式与客户机使用的操作系统不同。对有些系统,比如 Unix,换行符就是行中止符,这样就和 -ko 没什么区别。关于二进制文件的更多信息,参阅 Binary files。 -kv(一次性替换) 只为关键字符串生成关键字值。例如,对于关键字 Revision,生成的字串是 5.7,而不是 $Revision: 5.7 $。这种方法有助于一些难以从 $Revision: $ 这样的字符串中剥去关键字分界符的编程语言生成文件。但是,一旦删除关键字名,以后将不能执行关键字替换,所以应小心使用该选项。 注意:代码中如果有$Revision$和$Date$,每次提交时代码中的这种keyword都会被替换。如果和另外一个team用的是不同的cvs进行开发。这种替换会引起问题。本来文件内容没有变化,但提交到cvs之后文件就变了,发给另外一个team,会造成对方的困扰。 cvs admin -ko some\path\in\component\* -r 这个命令的作用是关闭Keyword substitution.这样.我们提交到cvs上的文件中的$Revision$和$Date$就不会被修改了. 如果以后需要恢复这个功能,用 cvs admin -kkv some\path\in\component\* -r 8)关于无法更新版本状态以及更新版本状态中的注意点 cvs admin -s State[:rev] 命令的使用。 注意:该命令只有在admin里的用户才有权限使用 State 为中文的时候,文件编码有可能影响到显示 9)关于CVSNT服务器时区(时间戳)始终是UTC 这个问题找了半天,查了官方很多资料始终没有找到明确的说明。 可以这么理解,应该是CVSNT处于Intelnet运作模式,需要统一的 标准时区来定义时间,这点希望在之后的版本中得到更好的修改!! 在控制面板-Advanced中的Zeroconf publication 的相关设定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值