• 2007年01月17日

    CVS服务器设置指南

    Tag:Linux CVS

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://fireshort.blogbus.com/logs/4314833.html

    第二次配置CVS服务器体会:
        1、要用清醒的头脑做事情,不然很容易犯低级错误。
        2、Linux可能比Window更像woman:出错了,你不知道哪里错,我也不会告诉你。

    首先确保系统安装有cvs:
    [root@mail xinetd.d]# rpm -qa|grep cvs
    cvs-1.11.1p1-3
    如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包。

    一 创建CVS属主用户(用于管理CVS,做CVS操作):
     useradd -d  /deke/cvscore/ cvs
     chmod 771 /deke/cvscore/
    二、建立CVS仓库(初始化cvs)
    # su cvs
    $ cvs -d  /deke/cvscore/  init
    $exit
    #
    三、启动cvs服务器
      在Linux上CVS服务可以通过inetd、xinetd或tcpwrapper等来启动,其中inetd由于安全理由在许多场合已经被xinetd所取代了。这里我们使用xinetd来启动CVS服务。
    在/etc/xinetd.d/目录下创建文件cvs,内容如下:
    # default: on
    # description: The cvs server sessions;
    service cvspserver
    {
            socket_type = stream
            wait = no
            user = root
            server = /usr/bin/cvs
            server_args = -f --allow-root= /deke/cvscore/ pserver
            log_on_failure += USERID
    }
     注:
      1)pserver表示是口令认证的访问方式,这是最常用的方式,其他还有gserver,kserver,ext,如果想要更高的安全性可以使用ssh来加密口令和数据流,不过这里为了用户使用的方便,仍然选的是pserver
      2)--allow-root是指定Repository的目录,可以建立多个Repository
            3)请注意每行等号左右都有一个空格,否则无法启动服务。

    修改该文件权限:
    # chmod 644 cvs
    然后重新启动xinetd:
    # /etc/rc.d/init.d/xinetd restart
    然后察看cvs服务器是否已经运行:
    [root@mail xinetd.d]# netstat -lnp|grep 2401
    tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
    则说明cvs服务器已经运行。

    四、创建用来访问cvs的用户
    前面创建的cvs用户是cvs仓库管理用户,而为了让用户访问则还需要一个访问用户:
    # useradd cvspub
    # usermod -G cvs cvspub
    这里添加了一个用户cvspub,并且将该用户添加到cvs组中。

    五、管理cvs服务器
    CVS默认使用系统用户登录,为了系统安全性的考虑也可以使用独立的用户管理。CVS用户名和密码保存在CVSROOT目录下的passwd文件中,格式为:
    用户名:密码:系统用户
    也就是说,它把CVS用户映射到系统用户,这样我们就可以通过系统用户的权限设置来分配给用户不同的权限,而不需要让用户知道系统用户名和密码。

    注意:CVS用户不能跟系统用户重名,否则会提示没有权限之类错误。

    passwd文件默认并不存在,我们必须自己创建。文件中的密码字段使用MD5加密,不幸的是CVS没有提供添加用户名的命令,所以我们借用Apache的命令来完成这项工作:

    #htpasswd passwd username

    这个命令为username指定密码,并保存在passwd中,文件不存在时会自动创建。htpasswd命令不是为CVS而设,因此总有一些遗憾,它不能自动添加映射到的用户名,不过没关系,我们设置好密码后,自己把这部分加上。我的做法是映射到cvspub用户,如果需要映射其他的用户,请注意给相应的目录设置好权限,否则CVS用户可能无法访问源代码仓库。
    要彻底防止使用系统帐号登陆,可以编辑CVSROOT目录下的config文件,把

    代码:
    #SystemAuth=no

    这一行前面的#去掉,CVS就不会验证系统用户了,否则当用户名不在passwd文件中时,CVS会进行系统用户的验证。

    此外还必须配置读写权限,使用CVSROOT目录下的readers和writers文件进行这个工作。这2个文件默认也是没有的,没关系,自己创建就可以了。readers文件记录拥有只读权限的用户名,每行一个用户;writers文件记录拥有读写权限的用户名,也是每行一个用户。注意, readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。

    readers、writers有没有效果?

    六、源代码仓库的备份和移动
    基本上,CVS的源代码仓库没有什么特别之处,完全可以用文件备份的方式进行备份。需要注意的只是,应该确认备份的过程中没有用户提交修改,具体的做法可以是停止CVS服务器或者使用锁等等。恢复时只需要把这些文件按原来的目录结构存放好,因为CVS的每一个模块都是单独的一个目录,与其他模块和目录没有任何瓜葛,相当方便。甚至只需要在仓库中删除一个目录或者文件,便可以删除该模块的一些内容,不过并不建议这么做,使用CVS的删除功能将会有一个历史记录,而对仓库的直接删除不留任何痕迹,这对项目管理是不利的。移动仓库与备份相似,只需要把该模块的目录移动到新的路径,便可以使用了。
    如果不幸在备份之后有过一些修改并且执行了提交,当服务器出现问题需要恢复源代码仓库时,开发者提交新的修改就会出现版本不一致的错误。此时只需要把CVS相关的目录和文件删除,即可把新的修改提交。


    收藏到:Del.icio.us




    引用地址:

发表评论

您将收到博主的回复邮件
记住我