CVS服务器的管理

Nina ·
更新时间:2024-11-13
· 608 次阅读

只包含CVS简单的权限管理

  CVS服务器建立以后,大家关心的是如何管理服务器,比如,我想让一些人有读和/或写 CVS 仓库的权限,但是不想给它系统权限怎么办呢?   不难,在 cvs 管理员用户(在我这里是 cvsroot 用户)的家目录里有一个 CVSROOT 目录,这个目录里有三个配置文件,passwd, readers, writers,我们可以通过设置这三个文件来配置 CVS 服务器,下面分别介绍这几个文件的作用:   passwd:cvs 用户的用户列表文件,它的格式很象 shadow 文件:   {cvs 用户名}:[加密的口令]:[等效系统用户名]   如果你希望一个用户只是 cvs 用户,而不是系统用户,那么你要设置这个文件,刚刚安装完之后这个文件可能不存在,你需要以 cvs 管理员用户手工创建,当然要按照上面格式,第二个字段是该用户的加密口令,是用 crypt (3)加密的,你可以自己写一个程序来做加密,也可以用我介绍的偷懒的方法:先创建一个系统用户,名字和 cvs 用户一样,口令是准备给它的 cvs 用户口令,创建完之后从 /etc/shadow 把该用户第二个字段拷贝过来,然后再把这个用户删除。这个方法对付数量少的用户比较方便,人一多不合适了,而且还有冲突条件(race condition)的安全隐患,还要 root 权限,实在不怎么样。不过权益之计而已。写一个小程序并不难,可以到 linuxforum 的编程版搜索一下,有个朋友已经写了一个贴在上面了。

第三个字段是等效系统用户名,实际上是赋与一个 cvs 用户一个等效的系统用户的权限,看下面的例子你明白它的功能了。 readers:有 cvs 读权限的用户列表文件。是一个一维列表。在这个文件中的用户对 cvs只有读权限。 writers:有 cvs 写权限的用户的列表文件。和 readers 一样,是一个一维列表。在这个文件中的用户对 cvs 有写权限。 上面三个文件在缺省安装的时候可能都不存在,需要我们自己创建,好吧,现在还是让我们用一个例子来教学吧。假设我们有下面几个用户需要使用 cvs: laser, gumpwu, henry, betty, anonymous。 其中 laser 和 gumpwu 是系统用户,而 henry, betty, anonymous 我们都不想给系统用户权限,并且 betty 和 anonymous 都是只读用户,而且 anonymous 更是连口令都没有。那么好,我们先做一些准备工作,先创建一个 cvspub 用户,这个用户的责任是代表所有非系统用户的 cvs 用户读写 cvs 仓库。 #adduser ... 然后编辑 /etc/group,令 cvspub 用户在 cvs 组里,同时把其它有系统用户权限的用户加到 cvs 组里。(见上文) 然后编辑 cvs 管理员家目录里 CVSROOT/passwd 文件,加入下面几行: laser:$xxefajfka;faffa33:cvspub gumpwu:$ajfaal;323r0ofeeanv:cvspub henry:$fajkdpaieje:cvspub betty:fjkal;ffjieinfn/:cvspub anonymous::cvspub 注意:上面的第二个字段(分隔符为 :)是密文口令,你要用程序或者用我的土办法生成。 编辑 readers 文件,加入下面几行: anonymous betty 编辑 writers 文件,加入下面几行: laser gumpwu henry 注意:writers中的用户不能在readers中,要不然不能上传更新文件。

对于使用CVS的用户要修改它的环境变量,例如laser用户的环境变量,打开/home/laser(laser的宿主目录)下的.bash_profile文件,加入 CVSROOT=/home/cvsroot export CVSROOT 用laser登陆可以建立CVS项目,如果要root使用,可以修改/etc/profile文件。

现在我们各项都设置好了,那么怎么用呢,我在这里写一个简单的(估计也是常用的)命令介绍: 首先,建立一个新的CVS项目,一般我们都已经有一些项目文件了,这样我们可以用下面步骤生成一个新的CVS项目: 进入到你的已有项目的目录,比如叫 cvstest: $cd cvstest 运行命令: $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start 说明:import 是cvs的命令之一,表示向cvs仓库输入项目文件。 -m参数后面的字串是描述文本,随便写些有意义的东西,如果不加 -m 参 数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器。)让你输入信息,cvstest 是项目名称(实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库里。) v_0_0_1是这个分支的总标记。没啥用(或曰不常用。) start 是每次 import 标识文件的输入层次的标记,没啥用。 这样我们建立了一个CVS仓库了。 建立CVS仓库的文件夹应该是“干净”的文件夹,即只包括源码文件和描述的文件加,而不应该包括编译过的文件代码等!

参考:http://case.51cmm.com/CM/No095.htm



cvs

需要 登录 后方可回复, 如果你还没有账号请 注册新账号