跪求高手帮忙,我按如下步骤安装了CVS,2401端口就是启动不了....

feilong_1216 2010-07-25 09:48:46
请高手看看,看看哪个配置文件配的不对
1、下载源码

通过搜索引擎找到CVS的源代码包,也可以从CVS的官方网站cvshome.org上寻找,由于CVS历史上也出现过一些安全漏洞,所以建议要定期去其官方网站上看看有没有最新版本推出。

2、编译安装

[root@terry src]# tar -xjpvf cvs-1.12.5.tar.bz2

[root@terry src]# cd cvs-1.12.5

[root@terry cvs-1.12.5]# ./configure --prefix=/usr/local/terry_yu/cvs

--disable-server-flow-control

[root@terry cvs-1.12.5]# make

[root@terry cvs-1.12.5]# make install

以上指令将CVS安装到/usr/local/terry_yu/cvs这个目录上。

注:除了使用源码包进行安装之外,还可以使用RPM包来安装。

3、设置启动CVS服务

在Linux上CVS服务可以通过inetd、xinetd或tcpwrapper等来启动,其中inetd由于安全理由在许多场合已经被xinetd所取代了,这里我们使用xinetd来启动CVS服务。

在/etc/xinetd.d目录下为CVS服务创建一个配置文件,比如:/etc/xinetd.d/cvspserver,编辑/etc/xinetd.d/cvspserver,输入以下内容:

service cvspserver

{

disable = no

socket_type = stream

wait = no

user = root

env = HOME=

server = /usr/bin/cvs

server_args = -f --allow-root=/home/cvsroot pserver

}

注:

1)pserver表示是口令认证的访问方式,这是最常用的方式,其他还有gserver,kserver,ext,如果想要更高的安全性可以使用ssh来加密口令和数据流,不过这里为了用户使用的方便,仍然选的是pserver。
2)--allow-root是指定Repository的目录,可以建立多个Repository

然后重新启动xinetd:

[root@terry bin]# /etc/rc.d/init.d/xinetd restart

Stopping xinetd: [ OK ]

Starting xinetd: [ OK ]

重新启动xinetd服务后,CVS服务也开始工作了。

4、在CVS服务器端建立Repository

首先要创建一个名为cvs的组和一个名为cvsroot的用户,以后要访问CVS服务的用户加入cvs这个组:

[root@terry root]# groupadd cvs

[root@terry root]# useradd -g cvs -s /sbin/nologin cvsroot

[root@terry root]# chown -R cvsroot /home/cvsroot

接下来进行初始化:

[root@terry root]# cvs -d /home/cvsroot init

这样在/home/cvsroot目录中就产生了CVSROOT目录,其中存放了一些配置文件,如config等,然后设置权限:

[root@terry root]# chown -R cvsroot.cvs /home/cvsroot

[root@terry root]# chmod -R ug+rwx /home/cvsroot

[root@terry root]# chmod 644 /home/cvsroot/CVSROOT/config

为了CVS系统的安全,我们要修改/home/cvsroot/CVSROOT/config文件,将“#SystemAuth =no”前面的注释号#去掉,即改为“SystemAuth =no”,然后给开发者们逐一建立账号,新建的不要分配用户目录,因为它将作为一个虚拟用户帐号来使用,具体命令如:

[root@terry root]# useradd -g cvs -M bogus

[root@terry root]# passwd bogus

上面的命令就创建了一个并没有Home目录的用户bogus,接着将系统的shadow文件复制到CVSROOT, 并重命名为passwd:

[root@terry root]# cp /etc/shadow /home/cvsroot/CVSROOT/passwd

[root@terry root]# chmod 0644 /home/cvsroot/CVSROOT/passwd

然后修改passwd文件,将除bogus之外的所有行删除,然后去掉每行第二个冒号以后的所有内容,并添上字符串cvsroot, 改为如下格式:

bogus:ND5$J8N9BW5DKV.nPdxfdsh:cvsroot

然后,删除掉刚刚在系统中添加的那个用户bogus:

[root@terry root]# userdel -f bogus

好了,到这里,CVS服务器端就已经安装设置好了,这样你的CVS用户就只能用passwd中规定的用户来登陆你的CVS服务器了,要注意的是:本文介绍的添加用户的方法适用于小数量的用户,如果是有大规模的开发人员,推荐采用连接LDAP或者数据库来进行用户的认证服务。


我在连接的时候,服务器积极拒绝,我netstat看了一下,CVS 2401端口 cvsserver服务没有起来。。。跪求高手指点。小弟非常感谢
...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FancyMouse 2010-07-26
  • 打赏
  • 举报
回复
>什么年代了,还自己装软件,apt/yum/yast/emerge哪个不比手动方便百倍.
要最新版的当然自己编译咯。
feilong_1216 2010-07-26
  • 打赏
  • 举报
回复
非常感谢大家的支持.现在问题已得到解决,需要改下面的配置文件
$ vi /etc/xinetd.conf
service cvspserver
{
port = 2401
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/src pserver
bind = 168.168.20.199
}
大家现在用CVS的用户名,密码是怎么来管理的呢??用数据库,还是用useradd有形式呢
steptodream 2010-07-25
  • 打赏
  • 举报
回复
第一
1.首先确认端口是否开启 这样看lsof -i :2401
2.其次因为你是用xinetd来守护cvs服务的 所以确认下/etc/services文件
看看2401是否有别的服务使用 如果有你在行首加#号注释掉 追加如下2句
cvspserver 2401/tcp
cvspserver 2401/udp
(当然如果是自己cvspserver在使用 就没必要修改了)
3.然后重启xinetd /etc/rc.d/init.d/xinetd restart
4.然后再确认端口lsof -i :2401

第二
1.请确认/var/log/messages日志 看看有没有异常信息
2.关闭防火墙 /etc/init.d/iptables stop
3.关闭selinux setenforce 0
谭海燕 2010-07-25
  • 打赏
  • 举报
回复
是不是端口被占用了呢?
steptodream 2010-07-25
  • 打赏
  • 举报
回复
我看你的那个配置文件/etc/xinetd.d/cvspserver下面这个参数似乎有问题哦
env = HOME=
改成
env = HOME=/home/cvsroot
试试
(记住一定把selinux关闭)
Coder_Granger 2010-07-25
  • 打赏
  • 举报
回复
什么年代了,还自己装软件,apt/yum/yast/emerge哪个不比手动方便百倍.
lianruidong 2010-07-25
  • 打赏
  • 举报
回复
顶楼上的,高手
源码来自:https://pan.quark.cn/s/a4b39357ea24 《C++ Primer》作为C++编程领域中的一部权威著作,主要服务于初学者和经验丰富的开发者,致力于帮助他们深入掌握C++的核心知识。 第一章通常会详细讲解C++语言的基础概念和语法结构,包括变量的使用、数据类型的分类、常量的定义、运算符的应用以及基础的输入输出操作。 接下来,我们将对这一章中的核心知识点和可能的习题解答进行深入分析。 ### 1. 变量与数据类型在C++编程中,变量被视为存储数据的媒介。 每一个变量都必须预先声明其数据类型,常见的数据类型有整型(int)、浮点型(float)、双精度浮点型(double)以及字符型(char)。 例如:```cppint age = 25; // 声明一个整型变量age并赋予其初始值25float weight = 70.5f; // 声明一个浮点型变量weight并赋予其初始值70.5char grade = A; // 声明一个字符型变量grade并赋予其初始值A```### 2. 常量与字面量常量指的是不可更改的值,可以通过`const`关键字进行声明。 例如:```cppconst int MAX_SIZE = 100; // 声明一个整型常量MAX_SIZE,其值为100```字面量是指程序中直接书写的值,如`42`、`3.14`或`"Hello"`。 ### 3. 运算符C++提供了多种运算符,涵盖了算术运算符(+,-,*,/,%)、比较运算符(==,!=,<,>,<=,>=)、逻辑运算符(&&,||,!)以及赋值运算符(=,+=,-=,*=,/=,%=)等。 ### 4. 输入与输出在C++中,使用`std::cin`来实现输...
内容概要:本文详细介绍了一个基于C++的仓库存储管理系统的设计与实现,涵盖了项目背景、目标、挑战及解决方案,并系统阐述了整体架构设计、数据库建模、功能模块划分、权限安全、并发控制、数据一致性保障、异常处理与可扩展性等关键内容。通过面向对象编程思想,采用分层架构与模块化解耦设计,结合STL容器、多线程、锁机制等C++核心技术,实现了高效的库存管理功能,包括入库、出库、盘点、调拨、权限控制、日志追踪与智能报表分析。文中还提供了核心类如Inventory(库存)、User(用户权限)、LogEntry(操作日志)及WarehouseManager(主控制器)的代码示例,展示了数据结构设计与关键算法逻辑。; 适合人群:具备C++编程基础,熟悉面向对象设计与基本数据结构的软件开发人员,尤其适合从事企业级管理系统开发或希望深入理解系统架构设计的中级开发者(工作1-3年);也适用于计算机相关专业学生进行课程设计或毕业项目参考; 使用场景及目标:①学习如何使用C++构建复杂业务系统的整体架构与模块划分方法;②掌握高并发、数据一致性、权限控制、异常处理等企业级系统关键技术的实现思路;③理解仓储管理业务流程及其在软件系统中的建模与落地方式;④为开发类似ERP、MES等后台管理系统提供技术原型与设计参考; 阅读建议:此资源不仅提供理论架构与代码片段,更强调系统设计的完整性与工程实践性。建议读者结合代码示例动手实现核心模块,深入理解类之间的关系与交互逻辑,重点关注多线程安全、事务管理与权限校验等难点环节,并尝试扩展功能如对接GUI界面或数据库持久化模块,以全面提升系统开发能力。

19,615

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧