需求:建立多个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 输入密码后没有错误提示即正常登录了。 |
多仓库多用户多权限的CVS服务器配置
最新推荐文章于 2019-06-09 14:39:38 发布