Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72582
  • 博文数量: 12
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 117
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-01 18:56
文章分类

全部博文(12)

文章存档

2011年(1)

2010年(2)

2009年(9)

我的朋友

分类: LINUX

2009-05-03 16:33:44

cygwin 上配置cvs +pserver

〇.必备环境:
  cygwin软件 我使用的是cygwin-1.5.19-4 完全安装
  inetd 守护进程软件 如果没有就安装inetutils(inetd)
  cvs         版本控制软件 如果没有网上找吧 哈哈
              ()

一.软件包安装
首先如果你安装的cygwin足够全,那么里面一定有了cvs,inetd
可以到/usr/sbin目录下看看是否有inetd.exe
到/usr/bin目录下看看是否有cvs.exe
在cygwin中我们将使用inetd.exe 守护进程来开启网络服务(cvspsever服务)

如果很幸运都有,你就不用装啦

不过安装也不麻烦:)
举例说明cvs安装:
#tar -zxvf cvs-1.11.23.tar.gz
#cd cvs-1.11.23
#./configure
#make
#make install
搞定!

二.设置cygwin帐户,环境,开启inetd服务
1.安装好了Cygwin后,在windows下建立一个cvsroot的用户。这个用户需要是本地用户,不要是域用户,
  确定在Cygwin/home目录下有cvsroot户。如果没有切换windows登录到这个用户下,运行cygwin就可以了。
2.Cygwin环境下,运行iu-config

3.运行 mkpasswd -l > /etc/passwd
  将windows用户导入到Cygwin中
  
4.运行inetd服务。
运行以下命令
设置windows环境变量:CYGWIN=ntsec。将cygwin/bin加入到PATH中。
在cygwin中运行
cygrunsrv -I inetd -d " CYGWIN inetd " -p /usr/sbin/inetd -a -d -e CYGWIN=ntsec
cygrunsrv -S inetd
就可以在windows服务管理器中看到CYGWIN inetd服务已经启动了。
运行usr/sbin/inetd.exe --install-as-service
重新启动。


三.cvs服务配置

1、建立cvs用户组
在之前已经建立cvsroot用户
注意:在创建了用户和用户组后,别忘了更新cygwin的环境:

mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group

2.建立cvs组的用户cvsroot和所属的目录
  不建也行:)

3.创建一个仓库:
    这里仓库的位置是: /cygdrive/d/cvsroot
    mkdir /cygdrive/d/cvsroot
    cvs -d /cygdrive/d/cvsroot init
    chmod -R 777 /cygdrive/d/cvsroot


4. 启动cvs服务器:
编辑修改/etc/inetd.conf文件,加入:
cvspserver stream tcp nowait cvsroot /bin/cvs cvs -f --allow-root=/cygdrive/d/cvsroot pserver
编辑修改/etc/services,加入:
cvspserver 2401/tcp #cvs server tcp port
cvspserver 2401/dup #cvs server udp port


然后察看cvs服务器是否已经运行:
# netstat -a|grep 2401
tcp        0      0 :::2401                     :::*                        LISTEN      4299/inetd           

# netstat -a |grep cvspserver
tcp        0      0 *:cvspserver                *:*                         LISTEN  
则说明cvs服务器已经运行。


5.验证CVS服务是否已经配置成功(用户cvsroot, 密码111111,IP192.168.0.2)

$ cvs -d :pserver:cvsroot@192.168.0.2/cygdrive/d/cvsroot login
Logging in to :pserver:cvsroot@192.168.0.2:2401/cygdrive/d/cvsroot
CVS password:
$
不出现其它信息即表示已经配置成功,如果出现下面信息则需要先关闭selinux 服务
$cvs [checkout aborted]: unrecognized auth response from localhost: cvs pserver: cannot open /src/CVSROOT/config: Permission denied

关闭selinux 服务
#vi /etc/selinux/config
SELINUX=disabled
或者
#setenforce 0


四.CVS使用管理

在 cvs 管理员用户(在我这里是 cvsroot 用户)的$HOME(/cygdrive/d/cvsroot)里有一个 CVSROOT 目录,这个目录里有一个配置文件passwd
passwd:cvs 用户的用户列表文件,它的格式很象 shadow 文件:
  {cvs 用户名}:[加密的口令]:[等效系统用户名]

1、创建可以登陆cvs服务的用户及密码,需要创建文件passwd

$vi /cvsroot/CVSROOT/passwd
文件内容如下:
cvsroot:jFAQ58daGWLGk:cvsroot
xxx:jFAQ58daGWLGk:cvsroot
 
此文件的意思是cvsroot和xxx两个用户可以登陆cvs服务器,登陆后其权限为用户cvsroot的权限
注意:cvs用户和服务器用户是可以不一样的


如果需要添加新的CVS用户,只需要在/cvsroot/CVSROOT/passwd 文件中复制一行,将用户名改为新的CVS用户名即可



2、jFAQ58daGWLGk为密码,由以下文件生成:
$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}\n";

3、修改passwd.pl为可执行

#chmod 777 passwdgen.pl

如果需要密码为:xxx,则敲入:
passwd.pl "xxx"
回车即可得到加密密码,用其替换passwd文件中的jFAQ58daGWLGk

5、TortoiseCVS客户端配置
:pserver:xxx@192.168.28.41:2401/cygdrive/d/cvsroot

协议:                口令授权服务协议(:pserver:)
协议参数:
服务器:         192.168.0.2
端口:                2401
仓库文件夹:    /cygdrive/d/cvsroot
用户名:            xxx

用户名必须/cvsroot/CVSROOT/passwd 下已经加入的CVS用户。
这样可以在客户端创建模块,和添加文件,提交等CVS操作了。



附录1:

如果遇到长时间无反应,请先检查网卡是否正常,然后将防火墙关闭.
#ifconfig eth0
#chkconfig iptables off 永久关闭
#service iptables stop 临时关闭

附录2:
只读,写入权限设置:
在CVSROOT目录建立readers,writers文件
把需要设定的用户名直接写入即可。
注意:
1.首先需要在passwd文件中存在该用户名。
2.writers中的用户不能在readers中,要不然不能上传更新文件。



 
阅读(1862) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-08 14:29:47

启动xinetd cygrunsrv -I xinetd -p /usr/sbin/xinetd -d 'CYGWIN xinetd' -1 /dev/null -2 /dev/null /usr/sbin/xinetd.exe --install-as-service