CVSNT 资料汇总

来源:互联网 发布:美图秀秀有mac版吗 编辑:程序博客网 时间:2024/06/10 12:40
 
CvsNT设置
1.安装CvsNT,并重新启动
2.打开Service Control Panel
3.设置Advabced->Temporary为任意一个空目录
   钩选上所有选项
   设置Lock地址为Localhost ,其他选项不要改动
4.添加Repositories 
   点击Add按钮,选择一个准备好的空目录如Location= C:/cvsAdmin   ;Name =/cvsAdmin
   系统会提示是否初始化,点确定
5.如果CvsService或CvsLock服务没有启动,请先启动他们

测试服务器
1.开始菜单-run-cmd,进入命令行环境
2.输入Cvs ,会出现相应的帮助,如果没出现,说明环境变量中的Path值没有设置,你可以手动设置到你的Cvs.exe文件所在的目录
3.set cvsroot=:sspi:localhost:/cvsAdmin
4.输入cvs version ,显示当前CvsNt版本号
  Client: Concurrent Versions System (CVSNT) 2.0.58a (client/server
  Server: Concurrent Versions System (CVS) 1.11.2 (client/server)
5.cvs login
   输入你的Windows登陆密码
 6.cvs ls
    显示所以module,至少会有一个CVSROOT
 7.如果以上步骤都没有错误,说明CVSNT配置成功

添加用户
1.使用cvs passwd命令可以添加用户和修改密码
2.可以修改 C:/cvsAdmin/cvsroot目录下的passwd文件,如果没有的话,可以自己建一个
   添加 test:,这样就添加了一个密码为空的test用户了。
3.添加用户后可以使用:pserver:test@localhost:/cvsAdmin登录了

tortoisecvs设置
1.安装tortoisecvs选择完全安装
2.重新启动计算机
3.新建一个文件夹如(c:/test),右击,创建新模块,使用pserver协议输入机器IP地址和用户名(不要输入端口号,我可深受其害),
   Repositories folder为/cvsAdmin
如果不出意外的话,一个新的模块test就建立了
4.测试Checkout功能:右键菜单-〉cvs->checkout 选择一个模块名test,如果不知道的话,可以使用获取列表的功能
5.ok,提示cvs操作成功,但是我们什么都没看到,自己查看输出信息,其中包含了cannot open CVS/Entries for reading: No such file or directory,什么意思呢,原来cvs中的模块为空时,它无法取得任何实体,就什么都不生成了,解决的方法很简单,就是在新建的模块中添加一个文件,并提交,再测试一下,果然,cvsAdmin自动为我们生成了。哎,这一点,可把我给害苦了。
 
CVSNT用户管理
2007年05月22日 星期二 下午 05:48

所有这些操作基于的环境和软件版本:WINDOWS2000 Pro、CVSNT2.0.4、WinCVS1.3.9.1Beta9 在前面的介绍CVSNT配合WinCVS进行用户管理的文章中,已经对CVSNT的用户管理,权限分配进行了比较详细的叙述,但是还有一些概念没有交待清楚,在这里,我会根据项目的实际需要,以及自己的一些经验给出一套用户管理、权限管理方案,在看这篇文章之前你最好已经阅读了前面的一篇文章,对用户的增加删除,权限的修改,等等这些操作能够了解,否则,会有一点困难。
   1、 CVSNT的用户验证方式
   我们这里所讨论的是工作在pserver方式下。
   在CVSNT的文档中给出了两种验证方式,我总结了一下,可以这样称呼:Window和CVSNT混合验证方式,CVSNT独立验证方式。在前面的文章中,我们没有详细的给出这两种方式的内容,所讲述的启示就是混合验证方式。
   决定CVSNT工作于何种验证方式是由CVS的管理文件来决定的,这些管理文件处在库的目录下的CVSROOT目录中,这里可以得出结论,对于不同的库,可以给不同的验证方式。所以,在每个库建立的时候要首先设定好这些前提。
   下面的操作如果没有特殊指出则都是在客户端来进行管理的,下面首先是对一些控制原理和相关的文件做一些说明,如果你正在进行相关的模拟操作,请停下来暂时停止你的操作,因为这些操作的步骤是有先后的,如果你顺序不对,那么你可能就权限失效,进行不了下面的操作了。
   1.1 config文件
   在库建立好了以后,你还没有对控制文件进行修改之前,CVSNT是工作在混合验证方式之下的,这个时候,CVS服务器的管理员就是CVSNT的管理员,你以一个管理员身份登陆,检出你要操作的库的CVSROOT模块,看一下文件列表,控制CVSNT的验证工作方式的是config文件,你可以在文件列表中找到它,双击看看其中的内容,这里对我们最重要的就是第一个设置内容,你会看到下面的内容:
   # Set this to `no' if pserver shouldn't check system users/passwords
   #SystemAuth=yes
   第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no
yes:pserver将使用系统用户数据库和passwd文件(这个文件后面会详细讲述)来共同验证(若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证)默认为yes
   no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。
   我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器,提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下,NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。
   1.2 passwd文件
   在讲述上面的时候提到了这个文件,在服务器工作在CVSNT验证模式下的时候,这个文件就可以称之为CVSNT的用户数据库,这个里面存储着用户列表,用户的密码,以及别名的一些信息。默认状态下这个文件是不存在的,所以,如果我们要在CVSNT验证模式下工作,必须建立这个文件。注意:这个文件是不能够在客户端进行修改的。这个文件的内容是相当简单的,就像下面:
   bach:ULtgRLXo7NRxs
   spwang:1sOp854gDF3DY
   melissa:tGX1fS8sun6rY:pubcvs
   qproj:XR4EZcEs0szik:pubcvs
   这里分别拿第一个用户bach和第三个用户melissa来进行说明,每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户三部分之间使用冒号“:”来进行分割。
   用户名:就是登陆CVS的用户名
   密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码
   本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其他关系,仅仅是别名的关系)
   如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户,在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下:
   cvs passwd –a bach
   cvs passwd –r pubcvs –a melissa
   在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行
   cvsadmin:
   这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户,就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。
   在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个文件格式的,不要去随便修改,更加不要尝试在客户端进行修改!
   1.3 admin文件
   这个文件是指定CVSNT的管理员列表的文件,CVSNT会根据这个文件中的内容来判断一个用户是否是管理员。这个文件的内容很简单,是一个用户列表。类似下面
   user1
   user2
   user3
   这些代表user1,user2,user3都是管理员,当然,这些用户必须要存在才能够正确登陆系统来执行管理。
   这个文件默认状态下是没有的,但是,可以在客户端进行添加,在你的客户端进行新建这个文件然后add上去再commit一下,这个文件就可以上传到服务器,但是这个时候还没有生效,请修改checkoutlist这个文件,加入admin这一行,checkoutlist也可以在客户端进行修改再提交,这个时候admin就可以被系统自动的build了。
   Checkoutlist是维护的一个文件列表,可以放入系统自动build的用户自定义的系统文件列表,注意:对passwd没有用!!
   1.4 group文件
   这个文件是定义系统的组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。Group的内容如下:
   group1:user1 user2 user3
   group2:me you he
   group3:tom honey
   有上面可以看出来,这个文件的内容也是相当的简单,首先是组的名称然后是冒号,接着是用户名,多个用户名之间用空格来进行分割。
   Group文件可以在客户端进行新建和修改,不用修改checkoutlist这个文件,系统会自动build这个文件并且使之生效。
   作为组里面的特定成员还可以赋给特定的权限,权限分为两类c,w,r和n,否定权限是有高的优先级的。
   好,上面已经介绍了本方案所涉及到的几个重要的文件以及修改方式。这里再强调一下,passwd只能够再服务器端进行建立和修改,不能够在客户端进行操作!
现在根据上面介绍的内容,可以开始你的操作了,下面给出修改顺序,库刚刚建立起来的时候,使用一个服务器上的本地管理员用户进行登陆检出CVSROOT模块。
   1、 现在服务器端加上passwd文件,给一个初始的用户,比如cvsadmin:
   2、 在客户端增加admin,将cvsadmin加入admin文件,作为出是管理员,并提交加入到库中。
   3、 在修改checkoutlist文件,加入admin,使其能够自动build。
   4、 最后修改config文件的SystemAuth=no,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开始生效了!
   5、 好,现在请修改你的参数再重新进行的登陆吧。因为你的系统已经切换了工作模式,你当前的用户已经失效了。
   完成了上面的步骤,整个服务器就会有效的工作在CVSNT验证模式下了。而group文件在你需要的任何时候可以加入。
   在上面的文章关于CVSNT的用户的管理方案的,在这里做一点补充,在后面的操作中全部是针对在客户端使用WinCVS来进行的(出了增加passwd)文件,其实,在我的实践当中config,passwd,admin,checkoutlist,这些文件的起始修改(初始化)都可以在新建了库以后一起完成,然后再让相应的库的管理员来进行相关的操作。

 

 

 

 set cvsroot=:pserver:lrj@127.0.0.1:/cvs
      
cvs login
       输入密码后,提示:
       Fatal error, aborting.
       cvs [login aborted]: lrj: no such user

进入cvsNT的Server Settings

     Run As   :administrator

 

 

CVSNT的用户验证方式,CVSNT的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户单一验证方式,默认工作在混合验证方式下,当然使用单一验证方式对用户的管理肯定比较方便一点,各个资源库所使用的验证方式及用户配置由其目录下CVSROOT里的配置文件决定。

控制CVSNT的验证工作方式的就是config文件
打开CVSNT验证:打开F:/Root/CVSROOT/config文件,把SystemAuth=yes改成SystemAuth=no,并去掉注释#。

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

增加CVS用户:打开F:/Root/CVSROOT/passwd文件(这个文件安装是并没有建立,请自己建立一个passwd文件),添加
cvsroot:
sunxdd:
两行文件。(如果没有添加cvsroot这个用户的话会出现错误的。)如果这样添加不成功则在CMD窗口中输入:cvs passwd �Cr administrator �Ca cvsadmin

group文件
该文件定义CVSNT中组信息,同组里的用户拥有一样的权限,对组权限的修改和对用户权限的修改一样。
group文件的内容为

administrators:cvsadmin kid mystique
users:User1 User2 User3

可以看到该文件的内容也很简单,组名:用户名,多个用户名之间用空格隔开。
Group文件可以在客户端修改,不用修改checkoutlist这个文件,系统会自动使其生效。
作为组里面的特定成员可以赋给特定的权限。

在客户端cmd窗口,输入命令
set cvsroot=:pserver:sunxdd@server/Root(sunxdd是刚才建立的用户名,server是安装的计算机名称或者IP,/Root是刚才建立的文件夹别名)
cvs login
密码为空
这时会登录成功
改密码
cvs passwd

到这里CVSNT服务器基本上搞定了。

二、使用tortoiseCVS
使用tortoise就很简单了,它包含了自己的CVS服务器,安装好后默认就将服务器配置好了,直接使用即可,我也还在刚刚研究中,先不多说了。

有用的资源:
http://edu.tmn.cn/html/5/47/185/2005210/104247.htm
http://www.redsaga.com/CVS_newbie_win32/#tortoisecvs
http://sunxdd.blogchina.com/2338489.html

Win2k Pro sp4

简单说明:

1.绿色安装,可以使用cvsservice.exe和cvslock.exe
2.${INSTALLDIR},表示,CVSNT的安装路径
3.${REPOSITORY},表示,CNSNT的REPOSITORY路径
4.本次不使用WINDOW验证,使用CVSNT自身验证,同时建立WINDOW用户CVS
5.以下提到的文件,如果不存在,请自行创建


权限配置:

1.打开CVSNT验证
[${REPOSITORY}/CVSROOT/config]
改成:SystemAuth=no

2.增加管理员
[${REPOSITORY}/CVSROOT/admin]
格式:用户名+[回车]
添加:trydofor

3.增加CVS用户
[${INSTALLDIR}/]
cvs passwd -r cvs -a guest
[${REPOSITORY}/CVSROOT/passwd]
格式:用户名:加密后的登陆密码:系统实际用户+[回车]
该文件会增加一行记录

4.增加权限
[${REPOSITORY}/CVSROOT/readers]
[${REPOSITORY}/CVSROOT/writers]
格式:用户名+[回车]

5.控制${REPOSITORY}/CVSROOT访问
[${REPOSITORY}/CVSROOT/CVS/fileattr.xml]

<fileattr>
<directory>
<acl>
<create deny="1" />
<read deny="1" />
<tag deny="1" />
<write deny="1" />
</acl>
<acl user="trydofor">
<create />
<read />
<tag />
<write />
</acl>
<owner>trydofor</owner>
</directory>
</fileattr>


问题与思考:

1.好多文章提到了,cvs chacl default:n 但最新版本中该命令有了变化。
实际上cvs chacl命令更改的就是CVS/fileattr.xml。

2.修改过程有的修养checkout除来,该好后再checkin回去。
实际上没那么麻烦,因为都在你本机上,怎么改方便就怎么改。

3.passwd不必非得用cvs passwd -r cvs -a guest添加。
网上有一个perl脚本,可以代替它生成加密的密码部分。

4.fileattr.xml好像是cvsnt特有的,cvs中有个fileattr,格式不大一样。

5.admin中一定要添加window等前登陆用户,否则
运行cvs passwd -r cvs -a guest,会报告没有权限。
 
1.为CVSNT增加文件权限管理 Copy to clipboard
Posted by: tier3
Posted on: 2006-06-05 14:01

为CVSNT增加文件权限管理
Bruce @ 2006-06-02 16:48

老板提出一个要求:有一些文件只能被他和会计存取,研究了几天,终于解决了,
也算是个小成果,给大家共享一下。网上的材料不是很全,东一点,西一点,
再加上自己的理解就可以了。
1. 改变CVSNT用户管理方式;
缺省是跟windowns2003系统一样的,这样服务器端就要建立跟CVSNT客户端
的用户和密码一样的用户。比较无聊。
方法是在CVSROOT/config文件里把SystemAuth=yes改成SystemAuth=no,
不过这里有个陷阱,把config checkin以后原来的用户都没用了,
2 所以要在改这个文件之前在CVSROOT下先手工建一个passwd文件来存取用户
信息,所以你如果跟我一样,不小心一开始就做了第一步,麻烦再改回去,
做第2步;
3 用 'cvs passwd -r 'real user' -a 'cvs user' 命令重新建立所有用户,'real user'
是系统用户名,'cvs user'是cvs管理的用户名,可以为不同的cvs user配同一个
real user. 这里也有一个小陷阱:尽量不要改用户名,否则人家已经checkout
出来的东西就要全部再checkout 一次,比较麻烦,如果发现用户名不一样,
没关系,再用cvs passwd建一个用户好了。如此一来,CVS用户跟客户端的
登录用户的密码就可以不一样了。增加安全性。
4. 建立一个目录放敏感的文件sensitive_dir;
5. 把敏感文件加到repository里去;
6. 用acl(Access Control List)命令改sensitive_dir/fileattr.xml内容来改变该目录的
权限控制。
缺省所有用户没有任何权限
cvs chacl -a noread,nowrite,nocontrol,nocreate,notag
把会计的权限加上
cvs chacl -u susan -a read,write,tag,control,create
把老板的权限加上
cvs chacl -u laoban -a read,write,tag,control,create
再说一个陷阱,这些命令是在客户端做的,有时会出现does not support之类的
错误,这个其实是客户端CVSNT和服务器端CVSNT版本不一样导致的。
解决方法很简单:把服务器端的cvs.exe所在的目录的文件全部copy到客户端来,
然后在path里把新的cvs.exe所在目录放在旧版本的目录之前就行了。
7 设置完了以后,用户只要重新在sensitive_dir上一级目录update一下,就可以
把sensitive_dir checkout出来了,而其实用户check out出来则不会出现这个
目录。