多仓库多用户多权限的CVS服务器配置

来源:互联网 发布:推荐淘宝内部券qq群 编辑:程序博客网 时间:2024/06/08 10:51
需求:建立多个cvs仓库,有多个账户对每个仓库有不同的使用权限。


所需软件:

服务器端软件
cvs-1.11.17.tar.gz
xinetd-2.3.13-4.4E.1.i386.rpm(AS4自带)
Windows客户端:
wincvs 2.0.2.4

配置步骤:
一、 配置服务器:

1. 安装cvs、xinetd。
   略。

2. 增加cvs组和cvsroot用户。
   # groupadd cvs
   # useradd -g cvs -G cvs -d /usr/local/cvsroot cvsroot
   # passwd cvsroot
   # chmod -R 770 /usr/local/cvsroot
3. 创建仓库。
   # su cvsroot
   # cd /usr/local/cvsroot
   # mkdir dev
   # mkdir prod
   # cvs -d /usr/local/cvsroot/dev init
   # cvs -d /usr/local/cvsroot/prod init
   # chmod -R 770 ./dev ./prod  
4. 创建xinetd所需的cvspserver文件。
   # exit (退出到root环境)
   # cd /etc/xinetd.d
   # vi cvspserver
    写入如下内容:
   service cvspserver
   {
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server= /usr/bin/cvs
   server_args= -f --allow-root=/usr/local/cvsroot/dev --allow-root=/usr/local/cvsroot/prod pserver
   log_on_failure += USERID
   }
  
注:
   xinetd的server_args有长度限制,所以如果想建立运行很多仓库的话,可以使用如下方法:
   #vi /etc/xinetd.d/cvspserver
  
   写入如下内容:
   service cvspserver
   {
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server = /usr/local/cvsroot/cvs.run
   log_on_failure += USERID
   }
  
   编辑/usr/local/cvsroot/cvs.run
  
   # vi /usr/local/cvsroot/cvs.run
  
   写入如下内容:
   #!/bin/bash
   /usr/bin/cvs -f /
   --allow-root=/usr/local/cvsroot/dev /
   --allow-root=/usr/local/cvsroot/prod /
   pserver
  
   # chmod a+x /usr/local/cvsroot/cvs.run
  
5. 写入 cvspserver 服务(但一般系统中已有)
  
   vi /etc/services
   写入:
   cvspserver 2401/tcp #pserver cvs service
   cvspserver 2401/udp #pserver cvs service
  
6. 启动cvspserver服务
  
   # /etc/init.d/xinetd restart
7. 检查cvspserver是否已启动
   # netstat -l | grep cvspserver
二、 用户的创建和权限管理。
8. 创建可以登录cvs服务器的虚用户

# su cvsroot
# vi /usr/local/cvsroot/dev/CVSROOT/passwd
写入:
tony:123456:cvsroot
mike:123456:cvsroot
hall:123456:cvsroot
表示tony、mike和hall有登录dev仓库的权限。

# vi /usr/local/cvsroot/prod/CVSROOT/passwd
写入:
tony:123456:cvsroot
mark:123456:cvsroot

表示tony和mark有登录prod仓库的权限。
9. 给不同的用户分配不同的权限:
允许tony对dev仓库有写的权限:
# vi /usr/local/cvsroot/dev/CVSROOT/writers
写入:
tony

允许mike和hall对dev仓库只有读的权限:
# vi /usr/local/cvsroot/dev/CVSROOT/readers
写入:
mike
hall
允许tony对prod仓库有写的权限:
# vi /usr/local/cvsroot/prod/CVSROOT/writers
写入:
tony

允许mark对prod仓库只有读的权限:
# vi /usr/local/cvsroot/prod/CVSROOT/readers
写入:
mark
10. 创建生成密码所需的文件:
# vi /usr/local/cvsroot/cvspswd.pl
写入:
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}/n";
# chmod a+x /usr/local/cvsroot/cvspswd.pl

11. 生成密码。
如果密码为07890,则:
# /usr/local/cvsroot/cvspswd.pl 07890
回车后会得到一行加密后的字符串,,用这行字符串替换每个仓库下面的/cvsroot/passwd中的123456
12. 测试:

# cvs -d :pserver:tony@ip:/usr/local/cvsroot/dev login
输入密码后没有错误提示即正常登录了。
原创粉丝点击