cvs服务器的安装:
1。查看你的操作系统上是否安装了cvs:
#> rpm -qa|grep cvs
如果没有安装可以在网上下载到最新的rpm包。很容易找,其实不存在什么linux版本。
2。建立cvs用户组:
#> groupadd cvs
3。建立cvs组的cvsroot用户和所属的目录:
#> useradd -g cvs –d /cvsroot cvsroot
4。为cvsroot用户添加密码:
#> passwd cvsroot
5。改变 /cvsroot/ 的目录属性:
#> chmod –R 770 /cvsroot
6。改变用户登陆身份:
#> su - cvsroot
7。开始创建单个项目:
#> cd /cvsroot
#> mkdir project1
#>mkdir project2
8。开始建立仓库:
#> cvs –d /cvsroot/project1 init
#> cvs –d /cvsroot/project2 init
9。建立cvs服务启动文件,我们使用xinetd方式:
#> [crtl]+[d] 切换到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=/home2/cvsroot/project1 --allow-root=/home2/cvsroot/project2 pserver log_on_failure += userid
}
注:由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做:
#> vi cvspserver
service cvspserver
{
disable = no
flags = reuse
socket_type = stream
wait = no
user = root
server = /cvsroot/cvs.run
log_on_failure += userid
}
编写cvs.run脚本
#> vi /cvsroot/cvs.run
#!/bin/bash
/usr/bin/cvs -f
--allow-root=/cvsroot/project1
--allow-root=/cvsroot/project2
pserver
#>chmod +x /cvsroot/cvs.run
10。加入cvs服务:
#>vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service
11。启动cvs服务:
#> /etc/init.d/xinetd restart
12。检查cvspserver服务是否已经启动:
#> netstat -l |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* listen
二。cvs服务的用户管理:
上面我们已经建立了project1和project2两个cvs仓库,下面我们分别给两个仓库建立cvs用户。
13。创建可以登陆cvs服务器的用户名和密码:
#> su cvsroot
#> vi /cvsroot/project1/cvsroot/passwd
trotter:*****:cvsroot
mimi:*****:cvsroot
#>vi /cvsroot/project2/cvsroot/passwd
trotter:*****:cvsroot
gary:*****:cvsroot
这两个文件的意思是有trotter,mimi,gary三个cvs用户,mimi拥有project1的使用权限,gary拥有project2的使用权限,trotter拥有project1和project2的使用权限。登陆后的权限是cvsroot权限。
注意:这里的cvs用户和系统用户是不同的。
14。*****为密码,由以下文件生成:
#> vi /cvsroot/passwd.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}
";
#>chmod a+x /cvsroot/passwd.pl
15。如果你想生成一个密码是“123456”,则:
#> /cvsroot/passwd.pl “123456”
回车即可得到加密密码,用其替换passwd文件中的*****
另外,对于有的版本没有passwd.pl文件,则可以通过命令htpasswd生成,命令为htpasswd 文件名 用户名,如给lds用户生成密码则htpasswd -c passwd lds。
16。ok,cvs现在已经全部安装完成了,如果你想让一个用户拥有project1的权限,你就在/cvsroot/project1/cvsroot/passwd中给他加入一个用户;如果你想让一个用户同时具有project1和project2的权限,你就给/cvsroot/project1/cvsroot/passwd和/cvsroot/project2/cvsroot/passwd里给他加一个用户名和密码相同的用户即可。最后,我们试用一下:
#> cvs -d :pserver:trotter@192.168.1.200:/cvsroot/project1 login
敲入命令回车后提示输入trotter的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了(我的机器ip地址是192.168.1.200)
17。补充下,要彻底防止使用系统帐号登陆,可以编辑CVSROOT目录下的config文件,把:
#SystemAuth=no
这一行前面的#去掉,CVS就不会验证系统用户了,否则当用户名不在passwd文件中时,CVS会进行系统用户的验证。此外还必须配置读写权限,使用CVSROOT目录下的readers和writers文件进行这个工作。这2个文件默认也是没有的,没关系,自己创建就可以了。readers文件记录拥有只读权限的用户名,每行一个用户;writers文件记录拥有读写权限的用户名,也是每行一个用户。注意, readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。