`
myqhit
  • 浏览: 64619 次
社区版块
存档分类
最新评论
阅读更多
转自:http://blog.csdn.net/kandypig/archive/2006/06/20/816316.aspx

以下是我最近在公司实习配置CVSNT(2.5)和WINCVS(2.0)的一些经验。普通是WINCVS和CVSNT操作网上资料很多。可以自行查找。关于权限设置的资料相对较少和散乱。所以我作了整理,并对容易发生错误的地方着重进行了讲解。

假设已经安装了WINCVS和CVSNT,并建立了仓库。完成了登陆和导入导出的操作。

(1)管理员登陆以后把服务器中仓库的CVSROOT目录(Module)导出(Checkout)到一个工作目录,比如“admin”。具体操作见“导出模块”。

CVS中目录权限介绍:

系统支持的目录权限如下:

r       (读取权限)

w       (写入权限)

c       (创建和删除权限)

n       (没有任何权限)

默认情况下,任何用户都拥有任何目录的所有权限。

任何情况下只有目录的拥有者和管理员才有权力更改目录的使用权限。下面将会介绍如何修改目录权限和目录的拥有者。

(2)对CVSROOT目录的管理:

CVSROOT目录是在创建仓库时有NTCVS建立的。里面包含了许多关于仓库的信息的文件。

认证口令的时候,服务器先检查 CVSROOT/passwd 文件中的用户。如果找到用户,就按CVS内置的权限管理方法进行认证。如果没有找到,或passwd 文件不存在,服务器将采用操作系统的用户认证机制。为安全起见,应该采用CVS内置的权限管理。具体方法如下:

     1)在服务端 CVSROOT 目录下建立文件passwd(不建立则在添加用户时自动创建)。出于安全考虑,默认不会将 passwd列在 checkoutlist 文件里面。既从客户端导出CVSROOT时不会导出该文件。在WINCVS中转到CVSROOT目录。点击主菜单“Admin->command line”或”ctrl+ L”弹出命令行对话框。在对话框中输入增加管理员的命令:

cvs passwd -a -r systemuser username

          //建立与系统用户systemuser有相同权限的用户,用户名为username。

          //当某个用户绑定的系统用户被删除时,则这个用户也不能登陆。

或  cvs passwd -a  username      

              //建立用户名为username的用户

在两次弹出的对话框输入密码。确认即可。这时可以看到passwd文件多了一行:

username:CUXQwLMdoZHNs:systemuser  

或     username:CUXQwLMdoZHNs

在增加管理员时,应该使用第一种方法:命令为:

cvs passwd -a -r Administrator username

在实际操作中建议使用第一种命令。采用第二种命令增加的用户有时在login时会出现不能登陆的情况(具体原因还不清楚)。

2)修改CVSROOT下的配置文件 config,加入一行:“ SystemAuth=no”其中no表示用passwd检查用户密码权限是否正确。yes 为默认值,表示如果用户在passwd文件中不存在,就用系统用户检查权限是否正确,这就使用了CVS内置的权限管理功能了。         

然后在CVSROOT下建立admin文件。这个文件是指定CVSNT的管理员列表的文件,CVSNT根据这个文件来判断一个用户是否是管理员。文件的内容是一个用户列表。如下:

user1

user2

user3

这些代表user1,user2,user3都是管理员,在此之前CVS将服务器的管理员用户作为自己的管理员用户的。

3)在CVSROOT下加入文件readers,writers来控制用户的读写权限。文件每行内容与admin文件相同。格式为: 用户名回车。

特别注意的是:只有在writer文件中的用户既能读取,又能进行提交修改。在readers中的用户只能读取,同时在两个文件中的用户只能读取。在 writers文件中必须有管理员的用户名。因为管理员在操作控制时将会涉及到文件的读写。对于一般用户就不要写进这两个文件了。

这样就完成了对CVSROOT目录的权限设定。不在readers和writers文件中的用户将不能导出CVSROOT这个module。仅在readers文件中的用户能进行导出操作但不能进行提交修改操作。仅在writers文件中的用户能进行导出和提交修改操作。

下面讲一下不使用系统管理员而自己建立的管理员的步骤:

1.              使用命令cvs passwd -a -r Administrator username建立一个和Administrator有相同权限的管理员用户。

2.              在admin文件中添加该管理员的用户名。

3.              在writers文件中添加该管理员的用户名。

4.              在config 文件中添加一行代码:SystemAuth=no,这样就不能使用Administrator而只能使用自己建立的管理员进行操作了。



(3)对一般目录权限的设置

1)  配置CVS库模块文件modules

先从客户端导入两个module。比如test和localdir。在modules加入如下3行:

     CVSROOT            CVSROOT

     目录1    -a       localdir

     目录2    -a       test

第一列为描述信息,第二列为参数或空格。第三列为相对路径。如果描述信息和相对路径不同则需要参数“-a”。

在导出模块的时候(remote->checkout module),可以点击module name and path on the server一栏旁边的“...” 按钮弹出窗口:


    这样可以使客户端更加方便的进行module选择。



2)  为各个module进行权限配置

module在仓库的下就是一个独立的目录。为module设置权限有两种方法。第一种是手工配置,在module目录下有一个子目录CVS,在里面有一个fileattr.xml文件。在未设置以前打开文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<fileattr>

  <directory>

    <owner>Administrator</owner>

  </directory>

</fileattr>

在< owner></owner>之间设置目录的所有者。目录的拥有者和管理员才有权力更改目录的使用权限。目录权限未设置时,所有用户对目录有除了更改目录权限以外的全部权限。在<directory></directory>之间加入以下代码表示取消所有用户对目录的的默认全部权限。

<acl>

      <all deny="1" />

    </acl>

在<directory></directory>之间加入以下代码表示用户user具有创建、读写、注释的权限。目录的所有者也要通过以下代码进行权限设置。

        <acl user="user">

          <create />

          <read />

          <tag />

          <write />

        </acl>

加入以上代码以后文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<fileattr>

  <directory>

<acl>

          <all deny="1" />

</acl>

    <acl user="user">

          <create />

          <read />

          <write />

          <tag />

        </acl>

    <owner>user</owner>

  </directory>

</fileattr>

第二种方法是使用命令来设置,其实也是通过命令来修改fileattr.xml文件来进行权限设置。具体方法是在WINCVS中用管理员身份登陆并导出要设置的module。选中module,在文件信息栏显示module的文件信息。打开命令行对话框输入以下命令来设置。

命令格式:

cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or directory...]

    -a access    Set access(设置权限)

    -d        Delete ACL(删除目录的控制权限)

    -j branch    Apply when merging from branch(合并分支时应用)

    -m message    Custom error message(定制错误消息)

    -n        Do not inherit ACL

    -p priority    Override ACL priority(不受目录权限管理)

    -r branch    Apply to single branch(在单个分支上应用)

    -R        Recursively change subdirectories(嵌套设置权限,对目录下每个子目录也进行相同的目录权限设置)

    -u user        Apply to single user(应用在单个用户)

例如  cvs chacl -r –a none //取消所有用户的默认权限,禁止一切访问。

cvs chacl -R -u user -a read    //设置用户user有读的权限。

通过下面的代码更改目录所有者:

cvs chown dirowner //dirowner为要设定的管理员    

通过下面的代码显示目录的信息:

cvs lsacl

这两种方法中,第二种方法比较简单,不容易出错。但在第二种方法没有效果的时候可以用第一种方法进行设置。第一种方法中的命令和以前的版本略有不同。具体见它的格式。

    以上就可以完成对目录的权限设置。在模块(module)下的每一个目录下都会自动产生一个名为CVS的文件夹,里面都有一个fileattr.xml文件用来控制目录的访问权限。方法同上。



(3)关于分组(group)的应用

分组:将权限相同的用户划分到一组,这样可以方便维护。就是角色的意思,分组使用在对模块访问权限的划分的方法如下:

a.在服务器端 CVSROOT目录下新建文件 group。

b.在文件中建立分组,group文件内容如下:

group1:user1 user2 user3

group2:user5 user6 user7

c.之后对组进行权限划分,和对单个用户方式一样,就可以使组内用户和组具有相

同的权限,如 选中模块,执行如下命令可以使用户 user1 user2 user3 同时具有对该模块的读权限了。

  cvs chacl -R -u group1 -a write

在fileattr.xml文件中加入如下代码也可以使用户 user1 user2 user3 同时具有对该模块的读写:

<acl user=guoup1>

          <create />

          <read />

          <tag />

          <write />

        </acl>

注意这里的group不用" " 。

补充:cvsnt安装成功之后默认是的混合登陆方式,在命令行中输入cvs login的时候登陆方式是根据系统环境变量中的cvsroot的配置而定的,如果配置的是自己d:/dataRepository/ 这种样子的话那么就是直接根据操作系统的用户登陆方式。将config文件中加入SystemAuth=no之后,再想以管理员身份登陆的话就需要先将cvsroot环境变量设置为::pserver:username@10.10.10.3:2401:\CvsData\ 这种形式。然后在命令中输入cvs login 就可以了。

  另外,实践表明在一个module的cvs目录下的fileattr.xml中即使有如下的写法,而user不在CVSROOT的writer文件中的话,user仍然会没有write的权限。因此似乎是需要往cvs库中提交代码的用户都需要写入到cvsroot目录下的writer中间中去。

<?xml version="1.0" encoding="UTF-8"?>

<fileattr>

  <directory>

<acl>

          <all deny="1" />

</acl>

    <acl user="user">

          <create />

          <read />

          <write />

          <tag />

        </acl>

    <owner>user</owner>

  </directory>

</fileattr>
分享到:
评论

相关推荐

    cvsnt

    【cvsnt】是一款强大的版本控制系统,它是Concurrent Versions System (CVS) 的一个分支,专为Windows环境优化,提供了一种高效、稳定的源代码管理解决方案。CVSNT在原始CVS的基础上添加了更多功能和改进,使得它更...

    cvsnt-2.5.03.2382.msi服务器端

    【cvsnt-2.5.03.2382.msi服务器端】是一款针对Windows操作系统的CVS(Concurrent Versions System)服务器软件。CVS是一种版本控制系统,用于跟踪和管理软件开发过程中的源代码和其他文件的变更。在开源社区和软件...

    cvsnt-server-2.5.05.3744.msi

    《CVSNT服务器详解——基于cvsnt-server-2.5.05.3744.msi的安装与配置》 CVSNT(Concurrent Versions System for NT)是一款广泛应用于Windows系统的CVS(Concurrent Versions System)服务器,它扩展了原始的CVS...

    WINCVS和CVSNT安装包

    CVSNT安装注意点: 1)配置CVSNT默认管理目录 方法一:通过CVSNT Control Panel控制面板 - Pepository configuration 来配置路径 方法二:通过命令来建立cvs -d /usr/local/cvsroot init 2)配置服务器缓存目录(-T) ...

    CVSNT-2.5.01

    CVSNT配置 系统环境: CVSNT 2.5.02 window 2003 服务器配置: 1.安装cvsnt.一路next就行了。安装完毕后可以在服务控制器中发现多了2个服务:cvsnt与cvslocking 或是1. 双击Service Control Panel快捷方式,在...

    CVSNT的详细配置

    CVSNT是一种Windows平台上的版本控制系统,与Unix平台上的CVS具有相同的功能,但专为Windows环境进行了优化。它是CVS的Windows移植版本,使得Windows用户也能方便地使用CVS来进行版本控制。 CVSNT的基础概念包括...

    TortoiseCVS-1.12.5+ CVSNT+汉化包

    TortoiseCVS-1.12.5与CVSNT是两个在IT行业中用于版本控制的重要工具。本文将深入探讨这两个工具以及它们在协同开发环境中的应用。 TortoiseCVS是一个集成在Windows资源管理器中的CVS(Concurrent Versions System)...

    CVS 服务器程序 CVSNT 2.0.58d + CVS 客户端工具 TortoiseCVS 1.10.10 (for win7)+ 图示说明

    CVS 服务器程序 CVSNT 2.0.58d + CVS 客户端工具 TortoiseCVS 1.10.10 (for win7)+ 图示说明 最新的版本cvsnt-2.5.03.2382有4.2MB,追新的朋友可以自己上官网下载. 1都安装好软件 2配置服务器端  a 查看运行...

    cvsnt的使用

    **cvsnt的使用** CVS(Concurrent Versions System)是一种源代码版本控制系统,而cvsnt是CVS的一个Windows NT/2000/XP/2003/Vista/7/8/10兼容的分支。它提供了对Windows系统更好的支持,包括NTFS权限管理和更友好...

    cvsnt-2.0.41.rar

    《CVSNT 2.0.41:版本控制利器详解》 CVS(Concurrent Versions System),中文译为并发版本系统,是一款广泛应用于软件开发领域的版本管理工具,它允许多用户协同工作,并且能够追踪文件和目录的历史版本。CVSNT是...

    CVSNT_2.0.42

    CVSNT(Concurrent Versions System for NT)是一个高度优化的版本控制系统,专为Windows环境设计,但同样适用于其他操作系统。2.0.42是该软件的一个特定版本,旨在提供强大的代码版本控制和管理功能,尤其适合软件...

    cvsnt与myeclipse配置手册

    《CVSNT与MyEclipse配置手册》 CVSNT是一种在Windows系统上运行的CVS(Concurrent Versions System)服务器,它允许开发者进行版本控制和协同开发。MyEclipse是一款集成开发环境,内置了对CVS的支持。下面将详细...

    CVSNT 安装 配置 权限设置

    ### CVSNT 在 Windows 平台下的安装、配置与权限设置详解 #### 一、CVSNT简介 CVS (Concurrent Versions System) 是一款历史悠久且非常流行的版本控制系统,主要用于软件开发过程中对源代码进行版本控制。尽管随着...

    cvsnt-2.0.58d

    【cvsnt-2.0.58d】是一个针对版本控制系统CVS(Concurrent Versions System)的增强版,名为CVSNT。这个版本号表示的是2.0.58d,代表这是一个特定的更新迭代,可能包含了修复的错误、改进的功能以及安全更新。CVSNT...

    CVSNT-CVS服务端

    【CVSNT-CVS服务端】是一个用于源代码版本控制的服务器软件,它基于CVS(Concurrent Versions System)系统并进行了扩展和增强。CVS是一种广泛应用的开源版本控制系统,它允许开发团队协同工作,同时跟踪对代码库的...

    java版本控制工具cvsnt

    Java版本控制工具CVSNT是一个强大的源代码管理软件,尤其适用于Java开发团队,它能够确保在多人协作开发项目时保持代码的一致性和协同性。CVSNT是Concurrent Versions System (CVS)的一个增强版,提供了更多的功能和...

    cvsnt.rar -搭建cvs服务器

    CVSNT是一款强大的版本控制系统,尤其适用于Windows平台。它是一个高度兼容CVS(Concurrent Versions System)的开源软件,能够帮助用户管理和跟踪项目文件的变更。"cvsnt.rar"是一个压缩包,其中包含了安装和配置...

    ubuntu9.04 server上配置cvsnt

    在Ubuntu 9.04 Server上配置CVSNT是一个涉及版本控制系统、服务器配置以及Linux操作系统管理的任务。CVSNT是一个Windows环境下对CVS(Concurrent Versions System)的增强版本,支持多用户、权限控制和更丰富的特性...

    cvsnt-2.5.03.2382

    《cvsnt:一款强大的版本控制系统》 在IT行业中,版本控制是开发团队协作的核心工具,它能够跟踪代码的变化,管理多人同时修改同一份代码的情况,确保项目的稳定性和可维护性。cvsnt,全称 Concurrent Versions ...

Global site tag (gtag.js) - Google Analytics