http://www.360doc.com/content/05/0930/08/1268_16043.shtml http://www.doc88.com/p-00085460220.html CVSNT在Windows下的安装和使用 http://edu.tmn.cn (2005-2-27 10:42) (来自未知) 作者:未知 写下来备个案。 这里综合了网上一些教程的内容和本人的实践,出处就没法一一给出了,如有得罪,还请见谅。 本人用的是CVSNT 2.0.51c,用最新的版本在Eclipse中死活不能列出服务器里内容,换了这个版本就好了,现在也不知道怎么回事。 首先安装,如果是使用安装包的版本,很简单,一路NEXT;如果是使用直接解压的版本,解压缩后把cvsnt.cpl和setuid.dll复制到%WINROOT%\\system32下,并在当前目录下执行以下命令注册CVSNT系统服务: cvsservice -i cvslock -i 完成后可以在控制面版里看到CVS for NT的图标,在里面先启动CVS Service和CVS Lock Service,注意如果使用的是解压的版本,还要在CVSNT目录下运行一下genkey生成SSL的密钥: genkey.exe cvsnt-default.pem 并在SSL settings中选择一下刚刚生成的密钥文件,这个好像没有SSL登陆就没用,假设一下,没用过。 如图: 设置Repository,就是CVSNT资源库的位置,切换到Repositories选项卡,Add添加CVSNT资源库的位置,此处Location选为E:/CVSNT/Repository,Name是访问CVSNT服务器时使用的路径名,按默认即可,本人是/CVSNT/Repository,如果是新建的目录,会提示你是否初始化Repository,同意即可。如图:
切换到Advanced,先在Use local users for pserver authentication instead of domain users和Pretend to be a Unix CVS version钩上,这是让CVSNT使用本地账户作为pserver认证方式以及让CVSNT服务器模拟为Unix CVS服务器,如图:
CVSNT服务器已经配置好了,接下来是我使用过程中遇到问题最多的用户配置。 先说下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文件即可。
如果还有不清楚的可以看看自带的文档,说得还是比较详细的。 ok,差不多就是这些,有错还请各位帮忙指出,还在学习ING
先说下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文件即可。 说明:
1.${CVSNT},表示,CVSNT的安装路径
2.${CVSNTROOT},表示,CNSNT的 ROOT Repository 路径 3.本文提到的 CVSNT 一般指 CVSNT Server */
**************** * CVSNT 的安装 * **************** 平台
CVSNT-2.5.03.2151; windows xp sp2; /* 注意:
一般需要 ntfs 格式的系统 CVSNT Server 官方站点 http://www.march-hare.com/ http://www.cvsnt.org/archive/?M=A 这个网址可以下载到原始安装文件和手册
*/
安装 CVSNT-2.5.03.2151 过程略 注意:
1.安装完成之后,安装程序会自动把 ${CVSNT} 加入到 path 中
2.cvs.ext 既是 server 又是 client,如果仅作为 client 端,想要运行 cvs 命令,也必须安装它; 3.注意设定 CVSNT Repository.
*********************** * CVSNT的用户验证方式 * *********************** CVSNT的用户验证方式分两种
1.Windows系统用户与CVSNT用户共存的混合验证方式:
即 windows 操作系统用户和 CVSNT 的 passwd 文件定义的用户都可以作为 CVSNT 的用户。 1.1 作为操作系统的用户登陆:输入操作系统的用户和密码;
1.2 作为 CVSNT 的用户登陆:输入 passwd 文件中定义的用户和密码。 在这种方式,操作系统的管理员帐户同时也是 CVSNT 服务器的管理员帐户。
2.CVSNT用户单一验证方式:
只有 CVSNT passwd 文件定义的用户作为 CVSNT 的用户。 登陆:输入 passwd 文件中定义的用户和密码。
默认工作模式是混合验证方式,但是使用单一验证方式对用户的管理比较方便一点,因此下面的介绍,基于 CVSNT 用户单一验证方式。
*********************** * CVSNT的主要配置文件 * ***********************
CVSNT 服务器安装完成之后,要定义 ROOT Repository (即上文定义的 ${CVSNTROOT} ),在该目录中,定义了服务器的各种配置,在这里可以定义管理选项参数。
本文主要介绍以下几个文件:config,passwd,admin,group,checkoulist,fileattr.xml,cvswrappers
*** config 文件 *** 只关注文中第一、二行注释
#Set this to `no\" if pserver shouldn\"t check system users/passwords #SystemAuth=yes
SystemAuth: 定义验证方式,默认是 SystemAuth=yes ,即混合验证方式。 这项设置默认是注释掉的,相当于 SystemAuth=yes
如果想要修改为 CVSNT 用户单一验证方式,修改为 SystemAuth=no
注意,如果修改为 SystemAuth=no ,操作系统用户就不能登陆 CVSNT 服务器了,所以要在定义好 CVSNT 服务器的管理员之后(即修改好 passwd,admin,checkoutlist 三个文件之后),再修改它。
*** passwd 文件 ***
该文件中定义了 CVSNT 用户的用户名、密码、操作系统用户别名; 默认该文件是不存在的,只有管理员有权限创建和修改它; 该文件不能被 checkout。 格式:
cvsadmin:fqr1fS4gDghrt:administrator 用户名:密码:操作系统用户别名
密码是CVS使用UNIX标准加密函数对密码进行加密后的结果;
这个用户名和密码和操作系统用户没有关系,修改它们不会对操作系统产生任何影响;
每个用户必须要有一个操作系统用户别名,这个别名必须在操作系统中真实存在,并且是管理员身份,否则该用户无法进行 cvs 操作。(为什么必须是管理员?) /*
实际上, CVSNT 服务器是以该操作系统用户的身份进行文件的读写操作的,如果该操作系统用户为 guest ,则不能 checkout ,ls 等。
不知道为为什么 CVSNT 服务器没有把这项设置对使用者透明化,因为每个用户都要进行 checkout ,ls 等基本的操作,如果连这些基本的操作都不能进行的话,这个用户就没有存在的必要了。
按我的理解,格式就要用户名和密码,后面的操作系统别名默认为管理员,就像 servu 一样易于使用。 (也可能有其他的原因) 附: cvsnt manual
The cvs passwd command can be used to add or delete new users. Only an administrator can do this. Note that deleting a user does not remove them from any user permissions. */
*** admin 文件 ***
文件中定义了 CVSNT 服务器的管理员列表 格式: user1 user2 ...
该文件中的用户同样必须出现在 passwd 文件中; 该文件中的用户,拥有 CVSNT 服务器管理员的所有权限; 该文件默认是不存在的,需要手工建立; 该文件要加入到 checkoutlist 文件中。
实际上,cvsnt server 把这个文件当作一个特殊的 group 来对待的。
*** group 文件 ***
这个文件用来定义组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。 格式:
group1:user1 user2 user3 group2:user4 user5 user6 group3:user7 user8 user9
组的名称+冒号+用户名+空格+用户名+空格...
多个用户名之间用空格来进行分割; 组中的用户,要在 passwd 文件中存在。
*** checkoutlist 文件 ***
# The \"checkoutlist\" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. #
# File format: # # []
#
# comment lines begin with '#'
该文件用来支持附加的版本控制操作,在 CVSROOT 中添加的文件,要在此文件中声明. 目前只知道,admin 文件需要声明. 格式举例:
admin err msg by Apollo
注意:不要忘记文件名称之前的空格。
*** fileattr.xml 文件 ***
在每一个 Repository 建立之后,都会在 Repository 的 ROOT 中建立一个名字叫做 CVS 目录,该目录中只有一个文件 fileattr.xml;
fileattr.xml 文件中定义了访问该 Repository 的用户的权限;
对于新建立的 Repository ,默认是所有人拥有所有权限(CVSNT ROOT 除外); CVSNT ROOT 的 fileattr.xml:默认是只有管理员拥有其所有权限。
*** cvswrappers 文件 *** refers to
http://www.mobilefish.com/developer/cvsnt/cvsnt.html
Before using CVS, it is recommended to update the cvswrappers file. The cvswrapper file contains file extensions which determines which file should be stored as binary files in the CVS Repository. To update this file do the following:
Add the following file extensions in the cvswrappers file, e.g.:
*.cab -k 'b' *.class -k 'b' *.doc -k 'b' *.dll -k 'b' *.ear -k 'b' *.exe -k 'b' *.exp -k 'b' *.fla -k 'b' *.gif -k 'b' *.gz -k 'b' *.jar -k 'b' *.jpg -k 'b' *.jpeg -k 'b' *.lib -k 'b' *.msi -k 'b' *.mso -k 'b' *.pdf -k 'b' *.pfw -k 'b' *.png -k 'b' *.ppt -k 'b' *.sit -k 'b' *.swf -k 'b' *.tar -k 'b' *.tlb -k 'b' *.vsd -k 'b' *.xls -k 'b' *.war -k 'b' *.wmz -k 'b' *.zip -k 'b'
****************** * CVSNT 配置实验 * ******************
*** 实验目的 ***
1.修改 CVSNT 服务器验证方式为 CVSNT 用户单一验证方式; 2.定义 CVSNT 服务器的管理员为 cvsadmin,密码为 cvsadmin;
3.定义两个 Repository(testa,testb) ,添加四个普通用户,每个 Repository 有两个用户.
test1:test1 , test2:test2 为 Repository testa 的用户,test1,只能读(checkout),test2 能读、写、添加文件(read,write,create).
test3:test3 , test4:test4 为 Repository testb 的用户,test3,只能读(checkout),test4 能读、写、添加文件(read,write,create).
*** 完成效果 ***
cvsadmin 能设置 CVSNT 服务器的配置,并且能对所有的 Repository 拥有全部权限; test1,test2 只能看见 testa,并且 test1 只能对 teata 进行 checkout(read),test2 能对 testa 进行 checkout,commit,add (read,write,create);
test3,test4 只能看见 testb,并且 test3 只能对 teatb 进行 checkout(read),test4 能对 testb 进行 checkout,commit,add (read,write,create); /*
说明:
权限参数有 read,write,add,tag,control. 这里只举例说明最常要的 read,write,add(参见帮助文档);
control 没有应用成功。 */
*** 开始配置 *** /*
说明:
1. 以下从命令行进行配置,注意步骤地顺序;
2. 设置权限等,都要把 Repository checkout 出来;
3. 对于 CVSNT 服务器的设置,实际上就是对 CVSROOT 这个特殊的 Repository 进行设置,所以首先也要把 CVSROOT checkout 出来.注意 checkout CVSROOT 需要用管理员身份;
4. 刚安装完成之后的 CVSNT server 默认的管理员是操作系统的管理员,所以用操作系统管理员身份 checkout CVSROOT;
*/
1 *** 进入命令行,建立一个临时目录,用来放置 checkout 出来的 Repository ,修改完成之后,再提交到 CVSNT server 上去。
d:\\ md 00 # 在 d: 建立一个临时目录,进入 d:\\00\\
2 *** 登陆 CVSNT server
d:\\00\\set cvsroot=:pserver:administrator:123456@localhost/cvsroot /*
说明:
set cvsroot 是设置一个临时的环境变量,变量值为 = 右边部分;
pserver 为登陆协议,是一种明文协议,用户名和密码可以被监测到。本次实验用这种协议,其他的协议以后再总结;
administrator:123456 为本机操作系统的管理员用户和密码; localhost 为登陆的机器地址,可以用 IP;
/cvsroot cvsroot 是安装 CVSNT server 的时候,指定 CVSROOT 的别名。 */
3 *** 列表 d:\\00\\ cvs ls /*
说明:
列出 CVSNT server 的 CVSROOT 下面的所有 Repository;
此时应该只有一个 CVSROOT ,它是服务器的根,服务器的所有配置都在这里;
此时登陆的身份是管理员,前文说过,CVSNT ROOT 的 fileattr.xml 已经定义,默认是只有管理员拥有其所有权限;
列表命令成功,同时也说明登陆成功。 */
4 *** checkout CVSNTROOT 到 d:\\00\\ d:\\00\\cvs co cvsroot /*
说明:
co 是 commit 命令的简写,具体简写的命令,见帮助;
该命令会把 CVSNTROOT checkout 到 d:\\00\\ ,并且会在 d:\\00\\ 建立一个 cvsroot 目录; d:\\00\\cvsroot 里面是 CVSNTROOT 中的所有配置信息;
修改配置信息之后,再 commit 上去, CVSNT server 的配置随之改变了。 */
5 *** 添加用户信息
d:\\00\\cvs passwd -r administrator -a cvsadmin d:\\00\\cvs passwd -r administrator -a test1 d:\\00\\cvs passwd -r administrator -a test2 d:\\00\\cvs passwd -r administrator -a test3 d:\\00\\cvs passwd -r administrator -a test4 /*
说明:
该命令会直接在 CVSNT server 的 server 端直接建立一个 passwd 文件,而不会在已经 checkout 的 d:\\00\\cvsroot 目录中建立此文件;
该文件只能由管理员建立,并且不能被非管理员修改,不能被 checkout;
-r 是管理的操作系统用户的别名 注意:
该命令不会影响操作系统用户; 此操作系统用户必须为管理员。
-a 添加用户
添加用户的时候,会提示输入密码。(本次实验,用户名和密码取相同)。
建立的 passwd 文件内容应如下内容:
cvsadmin:oVaaG5hcPSOQY:administrator test1:eXetD79lHrTgw:administrator test2:zX3nQkEmS/Se2:administrator test3:cZgugWplhpBd.:administrator
test4:pZ5M7WTmCHMmI:administrator
The cvs passwd command can be used to add or delete new users. Only an administrator can do this.
Note that deleting a user does not remove them from any user permissions.
参考上文 passwd 文件说明。 */
6 *** 定义 cvsadmin 为 CVSNT server 管理员
在 d:\\00\\cvsroot 建立文件名为 admin 的文件(注意,无扩展名) 内容为 :
cvsadmin
即定义了 cvsadmin 为 CVSNT Server 管理员;
如果还想加入其他的用户作为管理员,依次加入用户名即可,每个用户名一行;
实际上 CVSNT 把这个文件中的所有用户,当作是管理员组。
7 *** 注册文件 admin 到 checkoutlist 文件
打开 d:\\00\\cvsroot 中 checkoutlist 文件,加入这一句:
admin err msg by jh
注意 admin 前后的空格,具体的格式信息,参照前文 checkoutlist 文件 说明部分; 只有添加的 admin 文件需要注册到 checkoutlist 中,其他的添加文件不用。
8 *** 定义 group 组
在 d:\\00\\cvsroot 建立文件名为 group 的文件(注意,无扩展名) 内容为 :
#testall :hava all permissions testaall:test1 cvsadmin #testar :read only testar:test2
#testbll :hava all permissions testball:test3 cvsadmin #testbr :read only testbr:test4
testaall,testball 有完全权限; testar,testbr 只读权限;
该文件不用注册到 checkoutlist。
9 *** 修改 cvswrappers 文件 参考上文。
10 *** 修改验证方式
修改 d:\\00\\cvsroot 下面的 config 文件 修改前面第二行为: SystemAuth=no
即修改验证方式为 CVSNT用户单一验证方式。
11 *** 提交对 CVSROOT 的修改
11.1 进入 d:\\00\\cvsroot
11.2 d:\\00\\cvsroot\\cvs add admin group
由于 admin 和 group 文件是新产生的,所以提交之前要添加到 commit 的计划之中; 运行完该命令之后,会提示运行 cvs commit 命令提交该文件。
11.3 d:\\00\\cvsroot\\cvs commit
运行该命令,会提交 d:\\00\\cvsroot\\ 目录中的所有文件,包括新建立的文件;
中间过程会弹出来一个提示文件,说明哪些文件被修改了,哪些文件是添加的,该文件的信息如下:
CVS: ----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically CVS:
CVS: Committing in . CVS:
CVS: Modified Files:
CVS: checkoutlist cvswrappers config CVS: Added Files: CVS: admin group
CVS: ----------------------------------------------------------------------
即提示修改了 checkoutlist config cvswrappers 三个文件,添加了 admin group 两个文件; 这个提示文件可以添加内容,所有信息都会被提交并且被 CVSNT Server 记录; 关掉该文件,选择继续提交。 /*
至此,完成工作如下:
CVSNT server 已经设置为 CVSNT用户单一验证方式; CVSNT server 管理员已经设置为 cvsadmin; test1,test2,test3,test4 已经添加。
此时,如果再运行命令 cvs ls ,则会提示该用户不存在。
因为我们最开始登陆的时候,设置的是 set cvsroot=:pserver:administrator:123456@localhost/cvsroot
所以此时运行 cvs ls 是在 set cvsroot=:pserver:administrator:123456@localhost/cvsroot 环境下面进行的,而我们已经改变了验证方式为 CVSNT用户单一验证方式,administrator 用户不在 passwd 文件中,所以 cvs ls 命令不会被执行了。
以 cvsadmin 用户登陆:
关掉命令窗口,打开一个新的命令窗口
进入临时目录 d:\\00\\
d:\\00\\set cvsroot=:pserver:cvsadmin:cvsadmin@localhost/cvsroot
d:\\00\\cvs ls
就可以看到 CVSROOT 下面的所有 Repository 了。
测试其他的用户为非管理员,即看不到 CVSROOT: 关掉命令窗口,打开一个新的命令窗口 进入临时目录 d:\\00\\
d:\\00\\set cvsroot=:pserver:test1:test1@localhost/cvsroot d:\\00\\cvs ls 会提示
Listing modules on server
空白,即不能看到 CVSROOT。
前文提到过,CVSNT ROOT 默认是只有管理员拥有其所有权限,它是靠 fileattr.xml 文件这一句
来实现的,具体的详细解释见下文。 */
12 *** 至此,对 CVSRT Server 的 CVSROOT 的修改已经完成,为了安全起见,删除临时 checkout 出来的 CVSROOT d:/00/rd cvsroot /s
dos 命令,删除根目录下面的所有文件及文件夹。 /*
dos 命令
1. help # 列出所有命令
2. help xxx #列出 xxx 的帮助 */
13 *** 以 test1 用户身份 import 一个 testa 工程,做如下权限: 只有 cvsadmin,test1,test2 能看见 testa,; test1 只能对 teata 进行 checkout(read);
cvsadmin,test2 能对 testa 进行 checkout,commit,add (read,write,create).
关闭窗口,建立临时目录 d:/00/test/,在 test 中放入几个文件,准备 import 到 CVSNT Server 上面去。
重新以 test1 用户登陆:
d:/00/test/set cvsroot=:pserver:test1:test1@129.9.200.253/CVSNTROOT
把 d:/00/test/目录中的所有文件 import 进入 CVSNT Server,并且命名为 testa: d:/00/test/cvs import -m \"Imported sources test1 \" testa start
-m 为导入时的日志信息
cvs --help import 可以查看 import 参数
设置权限:
必须导出来才可以定制权限;
只有 CVSNT Server 的管理员才可以设置权限,项目的建立者(owner)也不能更改权限(是这样吗,麻烦!);
新建立的项目:默认是所有人拥有所有权限; cvs lsacl :查看当前 Repository 权限。 /*
关于权限的说明:
CVSNT 2.5 对 Repository 的访问控制设置,是使用命令 chacl,chown 来进行的; 当新建立一个 Repository 之后,会在其中建立一个 cvs 文件夹,里面有一个 fileattr.xml 文件,该文件定义了其所在 Repository 的访问控制权限,实际上 chacl,chown 命令就是对该文件的操作;
chacl,chown 命令,只有管理员能够执行,就是 Repository 的创建者(owner)也不能执行!(管理员累死了!怎么会有这种管理方法!)
执行 chacl 命令,必须先把 Repository 导出来,以下执行命令,都是导出来之后执行的。 */
13.1 一个新的 Repository 创建之后,默认是对所有人开放所有权限的。一个新建立的 Repository 的 fileattr.xml 文件如下: test1
仅仅表明,该 Repository 的拥有者 owner (即创建者) 是 test1.
CVSNT 2.5 权限管理的原则是:如果不显示的指出否定权限,则赋予肯定权限。(这一点个人觉得非常不方便,安全是第一位的。)
例如上面的 fileattr.xml 是所有人,拥有所有权限
13.2 如果要把默认的权限关闭,要用 chacl 命令 以管理员身份执行 cvs chacl -a none
执行完毕之后,应该是这个样子: test1
cvsadmin
2005.12.11.11.00.04
modified_by,modified_date 是注释信息;
一句,把默认得权限都关闭了,即使是管理员、创建者都没有任何权限了;
并且,如果不显示的指出肯定权限,都是默认的否定权限(和默认的权限规则相反)。
13.3 开通管理员的所有权限 cvs chacl -u testaall -a all
即,testaall 组对 testa 拥有全部权限;
-u 可以是组名称,也可以是单个用户名称。
cvsadmin
2005.12.11.11.00.04 test1
cvsadmin
2005.12.11.11.00.41
这样,testaall 组中的用户拥有所有权限了,其他的用户无任何权限; 如果想要让一个用户拥有 所有权限,加入到 testaall 组即可。
13.4 添加 testar 组用户只读权限 cvs chacl -u testar -a read 说明:
经过 cvs chacl -a none ,如果不显示的指出肯定权限,都是默认的否定权限(和默认的权限规则相反);
相当于 cvs chacl -u testar -a read,nowrite,nocreate,no...(所有的参数加上前缀 no).
cvsadmin
2005.12.11.11.00.41
cvsadmin
2005.12.11.11.00.04 test1
cvsadmin
2005.12.11.11.09.33 /*
对于 CVSNTROOT Repository 的说明
刚建立 CVSNTROOT 的时候 fileattr.xml 是这样的(CVSNT 自动建立的)
administrator
即只有 administrator 用户和 admin 组的用户拥有全部权限; 而 安装 CVSNT 的时候,是以操作系统管理员 administrator 安装的,所以 administrator 默认给了所有权限,当更改了验证方式之后,administrator 用户就无效了。
admin 也是 CVSNT 自动加上的,即默认 admin组中的用户也拥有全部权限.
实际上,我们可以直接用编辑工具按照格式更改 fileattr.xml 文件,而不用 chacl 命令,效果是一样的。
我们可以测试:
test1,cvsadmin 用户可以 read,write,create ... 而test2 用户只能 read */
14 *** testb 工程 同 11 testa 的过程
建立以后,我们会发现:
test1,tes2 用户运行 cvs ls 的时候,只能看见 testa test3,tes4 用户运行 cvs ls 的时候,只能看见 testb
而 cvsadmin 用户,可以看见全部的 Repository(cvsroot,testa,testb)
15 *** 完成,可以测试实验的结果了
******** * 备注* *******
1. 基本概念介绍 refers to
http://www.guoly.com/wincvs-guide.html
CVS是很早的时候在Unix下发展起来的,它使用的术语比较特殊,需要先熟悉和理解,这是使用CVS的第一步。
1.1 Repository: 中文名称:仓库。它是 CVS服务器(可能在远程,也可能在本地)的根目录,我们所有的工作都保存在这个仓库中,包括源代码和这些代码的全部历史。你可以把Repository想像成一个仓库,仓库中有许多“木桶”,每个“木桶”就 是我们的一个让CVS管理起来的工程。对于CVS来说,这些“木桶”之间是没有什么关联的,删除一个“木桶”不会影响别的“木桶”。我们所想像的木桶,在CVS术语中,又叫模块(Module)。
1.2 Module:中文名称:模块。就是上面我们所想像的仓库中的“木桶”,里面放的是一个项目的所有文件(包括源代码,文档文件,资源文件等等)。在物理上,Module是CVS服务器根目录下的第一级子目录。
1.3 Import:中文名称:导入。我们本地有一个软件项目,里面有许多各种类型的文件,都需要用CVS进行版本管理,那么第一步就是把这个软件项目的整个目录结构都Import到CVS的仓库中去。经过这种导入,CVS将为你的项目创建一个新的“木桶”----Module,即模块。
1.4 Checkout:中文名称:导出。指将仓库中的一个“木桶”(Module, 模块)中的东西导出到本地的工作目录下,然后我们可以在WinCvs的管理下,进行工作,修改其中的内容。
1.5 Commit:中文名称:提交修改。我们在本地的工作目录下,对工程中的文件进行修改,这些修改,需要提交给CVS的仓库,这个过程,就叫Commit。你可以Commit一个文件,也可以Commit整个目录。
1.6 Update:中文名称:同步。它与Commit相对应,是从仓库中的“木桶”(模块)中下载你同事修改过的文件(别忘记你的项目有许多人共同参与),如果这个文件在你本地也有,就会更新本地的拷贝,如果你本地没有,就会把新文件下载到你的本地。
1.7 Revision:中文名称:文件版本。这是CVS中一个需要特别注意的概念,它指的是单个文件的版本,而不是整个项目的版本。基本上,单个文件每次的修改,经过Commit之后,它的Revision都要改变一次,比如从1.1到1.2到1.3等等。特别要注意,单个文件的版本(Revision)与整个工程产品的版本(Version,或者Release)可以没有任何关系。例如,整个产品现在发行1.0版本(Version 1.0)了,但是产品的源代码文件中,有的文件版本(Revision)可能是1.9, 有的是2.1,等等。这很容易理解,因为为了发行产品V1.0,我们需要对源代码进行多次修改编译。
1.8 Release:中文名称:发行版本。整个产品的版本,例如VC5.0, VC6.0等。
1.9 Tag:中文名称:标签。在一个开发的特定期,对一个文件或者多个文件给的符号名,一般是有意义的字符串,如“stable”,“release_1_0”等。比如,我们对某个文件的1.5版本加上标签:“memory_bug_fixed”,借助这个有意义的标签,我们可以理解1.5版本解决了内存Bug,所以说Tag赋予了版本一些文字含义。
上述这些基本概念,与其它的版本控制工具(例如Microsoft Source Safe)有一定的差异,建议您仔细体会。
2. cvsroot 文件介绍 举例 :exmple
.#exmple 以 .# 开头的文件是备份文件,不能被 checkout
exmple,v 以 ,v 结尾的文件:此文件记录了文件的各次版本变化的历史记录,cvs 根据此文
件,进行版本控制。
exmple 该文件记录真正的文件内容,在进行 cvs 命令操作的时候,和 exmple,v 一起作为 cvs 版本控制的依据。
3. cvs 命令 cvs help
# 列出所有命令 cvs --help command # 查看某个命令的语法
命令简写
http://www.mobilefish.com/developer/cvsnt/cvsnt.html
************* * refers to * *************
http://blog.csdn.net/lonelyegg/
http://www.mobilefish.com/developer/cvsnt/cvsnt.html
http://blog.csdn.net/jdskyy/archive/2005/10/18/508567.aspx
http://www.8848software.com/scmforum/forum.asp?FORUM_ID=49&CAT_ID=9 (一个讨论论坛)
******* * faq * ******* 1.
关于登陆CVSNT server 出现信息 :
Error reading from server xxxx: -1: Unknown error 的解释
一般是无法链接到 CVSNT server ,是通讯受到阻止的原因。 排查一下原因: 查看本机的防火墙; 局域网中的端口。
*********** * 遗留问题* ***********
1. 其他的登陆协议的登陆方法
2. 访问权限控制,如何让 owner 拥有其所在 Repository 的 fileattr.xml 修改权限?
这样,Repository 的创建者就拥有其维护权限了,减轻了 CVSNT Server 管理员的权限。如果 Repository 有很多个的话,仅靠管理员来维护是不现实的。 control
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务