资源描述
cvs的安全和访问方式
cvs的安全和访问方式
(版本v1.0.0)
中软国际信息技术有限公司
2025年8月22日
第11页
成文信息
主题词:
cvs的安全和访问方式
作 者:
icss产品部
文档类别:
实施规范
审 核:
批 准:
文档性质:
正式稿
主 送:
存档日期:
2004-12-3
抄 送:
发布日期:
签收信息
发送方
接收方:
接收方:
接收方:
代表人:
代表人:
代表人:
代表人:
日期:
日期:
日期:
日期:
变更信息
版本
原因
作者
日期
目录
第一章 cvs的连接方式 1
第二章 Cvsweb的使用 2
2.1 Cvsweb的安装配置 2
2.2 Cvsweb访问安全 3
第三章 cvs备份 4
3.1 使用cvslock锁定cvs repository 4
3.2 使用tar命令备份 5
3.3 使用rsync工具备份cvs 5
3.3.1 概述 5
3.3.2 备份方法 5
第四章 定期备份工具 7
4.1 使用/etc/crontab 7
4.2 使用at 9
第五章 文件夹权限设置 10
5.1 Cvs的权限要求: 10
5.2 用户权限分配的示例 10
第一章 cvs的连接方式
· Pserver的连接方式:
1、配置cvs服务
2、重启xinetd
3、连接cvs服务器:
cvs –d :pserver:user@cvs服务器地址:/cvshome/cvsroot login
· ssh的连接方式(传统口令):
1、测试是否安装ssh:rpm –qa|grep ssh
2、检查sshd是否运行:ps –aef|grep ssh
3、启动sshd:/etc/rc.d/init.d/sshd start
4、基于传统口令认证
#ssh –l [在远程服务器上的帐号] [远程服务器的主机名或ip地址]
#[yes]
#[输入密码]
5、连接cvs:
#export CVS_RSH=ssh
#exprot CVSROOT=:ext:cvs用户名@cvs服务器地址:/cvshome/cvsroot
· ssh的连接方式(密钥):
1、配置远程服务器
编辑/etc/shh/sshd_config文件
将PasswordAuthentication yes改为PasswordAuthentication no
2、配置客户端
在客户端生成密钥
#cd ~
#ssh-keygen –t rsa (dsa)
#~/.ssh/id_rsa.pubid文件即是公钥
发布公钥
将生成的id_rsa.pubid文件复制到远程服务器的cvs用户目录下
$cd .ssh
$cat ../id_rsa.pubid >> authorized_keys
3、连接cvs:
#export CVS_RSH=ssh
#exprot CVSROOT=:ext:cvs用户名@cvs服务器地址:/cvshome/cvsroot
第二章 Cvsweb的使用
2.1 Cvsweb的安装配置
1、 下载CVSWEB的tar包
2、 解压缩tar:
tar -zxf cvsweb-2.0.6.tar.gz.tgz
3、 将配置文件cvsweb.conf拷贝到/etc/httpd/cvsweb.conf
4、 将cvsweb.cgi拷贝到可执行cgi的目录/var/www/cgi-bin下
5、 修改:cvsweb.cgi让CGI找到配置文件:
# == EDIT this ==
# Locations to search for user configuration, in order:
for ("$mydir/cvsweb.conf", '/etc/httpd/cvsweb.conf')
6、修改cvsweb.conf:
修改CVSROOT路径设置:
@CVSrepositories =
('local'=> ['Local Repository', '/cvshome/project1'])#<==修改指向本地的CVSROOT
2.2 Cvsweb访问安全
为cvsweb添加用户身份验证功能。
1、安装apache
2、编辑/etc/httpd/conf/httpd.conf:
添加
Alias /cgi-bin "/var/www/cgi-bin"
<Directory "/var/www/cgi-bin ">
Options Indexes MultiViews
AllowOverride AuthConfig #表示进行身份验证
Order allow,deny
Allow from all #设置可以访问此服务器的ip
</Directory>
3、在/var/www/cgi-bin下创建.htaccess文件
#vi /var/www/cgi-bin/.htaccess
添加如下内容:
AuthName "cvs login" #AuthName 描述
AuthType Basic
AuthUserFile /var/www/cgi-bin/.htpasswd
#apache默认系统对“.ht”开头的文件默认不允许外部读取
require valid-user
#require valid-user 或者 require user xxx 限制是所有合法用户还是指定用户
4、就是创建apache的验证用户
htpasswd -c /var/www/cgi-bin/.thpasswd 用户名
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
5、修改密码
htpasswd -m .htpasswd frank
6、修改/cvsroot权限:chmod 775 /.......
6、 重启apache服务:
/etc/init.d/httpd restart
7、 访问 http://cvs服务器地址/cgi-bin/cvsweb.cgi,弹出用户验证窗口。
第三章 cvs备份
3.1 使用cvslock锁定cvs repository
1、 下载cvslock.tar.gz包
2、 安装cvslock:
# tar –zxvf cvslock.tar.gz
#./config
#make
#make install
3、 使用cvslock锁定要备份的repository。
4、 Cvslock 参数:
描述:
cvslock [-q] [-p pid] [-d CVS root] [-R|-W] [-u|-s|-c Command] [-l]
directory
OPTIONS
-q 关闭cvslock,不发送任何诊断信息。
-d 指定repository
-p pid 指定进程号。
-s 使用用户的登录shell锁定cvs,退出shell时解除锁定。
-c Command 使用指定的shell 命令锁定
-u 解除锁定,和-p 命令配合使用。
-l 指定锁定的目录.
5、 Cvslock使用示例:
· 示例1:
# cvslock -d /cvshome/project test
锁定/cvshome/project的module test
# ls /cvshome/project/test
#cvs.rfl.cvslock.localhost.27378 random.c,v
查看被锁定的目录,可以看到cvs.rfl.cvslock.localhost.27378文件,其中27378代表进程号。
# cvslock -u -p 27378 -d /cvshome/project2 test
解除锁定
# ls /cvshome/project/test
random.c,v
用户锁定的文件被删除
· 示例二:
# cvslock -s -d /cvshome/project test
· 示例三:
# cvslock -c 'find . -name "*cvslock*" ' -d /cvshome/project2 –l test
3.2 使用tar命令备份
将cvs相关内容,打成tar包备份保存。
# tar -cvf backup.tar /cvshome
#gzip -q backup.tar /cvshome
3.3 使用rsync工具备份cvs
3.3.1 概述
rsync——remote sync是linux/unix系统下的数据镜像备份工具,它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。
3.3.2 备份方法
1、 下载:rsync 版本 2.4.6
(下载地址:http://rsync.samba.org/rsync/获得最新版本)
2、配置server端的/etc/rsyncd.conf文件
内容如下:
uid = nobody
gid = nobody
use chroot = no # 不使用chroot
max connections = 4 # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log # 日志记录文件
[cvshome] # 这里是认证的模块名,在client端需要指定
path = /cvshome # 需要做镜像的目录
comment = cvs backup
ignore errors # 可以忽略一些无关的IO错误
read only = yes # 只读
list = no # 不允许列文件
auth users = backup # 认证的用户名//可选项
secrets file = /etc/back.pas # 认证文件名//可选项
3、可选操作:在server端生成一个密码文件/etc/back.pas
# vi /etc/back.pas
backup:backup
出于安全目的,文件的属性必需是只有属主可读。
4、在server端将rsync以守护进程形式启动
# rsync –daemon
5、可选操作:在启动时把服务起来:
加入inetd.conf
编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873
编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
6、从客户端进行测试
普通备份方式:
# rsync -vzrtopg --progress --delete 服务器ip地址::模块名 备份位置
# rsync -vzrtopg --progress --delete 192.9.100.251::cvshome /backup
使用ssh备份:
# rsync –e ssh -vzrtopg --progress --delete 192.9.100.251::cvshome /backup
参数说明:
· v是verbose详细信息
· z是压缩
· r是recursive递归
· topg都是保持文件原有属性如属主、时间的参数
· --progress是显示出详细的进度情况
· --delete是指服务器端删除了这一文件,客户端也相应把文件删除,保持一致
· -e ssh的参数建 立起加密的连接
· --password-file=/password/path/file来指定密码文件,保证可以在脚本中使用rsync而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
8、 备份脚本
脚本内容如下:
#!/bin/sh
DATE=`date +%w`
rsync -vzrtopg --progress --delete 192.9.100.251::cvshome /backup/$DATE
〉/var/log/rsync.$DATE
9、使用crontab/at定期执行脚本
第四章 定期备份工具
4.1 使用/etc/crontab
· 确认安装vixie-cron RPM 软件包:rpm -q vixie-cron
· 判定该服务运行状态:/sbin/service crond status
· 配置 cron 任务:
cron 的主配置文件是 /etc/crontab,它包括下面几行:
SHELL=/bin/bash #系统要使用哪个 shell 环境
PATH=/sbin:/bin:/usr/sbin:/usr/bin #定义用来执行命令的路径MAILTO=root # cron 任务的输出被邮寄给此处定义的用户名
HOME=/ #设置在执行命令或脚本时使用的主目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
· /etc/crontab –e添加任务,相应更改被保存在/var/spool/cron/username :
格式如下:
minute hour day month dayofweek command
ü minute — 分钟,从 0 到 59 之间的任何整数
ü hour — 小时,从 0 到 23 之间的任何整数
ü day — 日期,从 1 到 31 之间的任何整数
ü month — 月份,从 1 到 12 之间的任何整数
ü dayofweek — 星期,从 0 到 7 之间的任何整数
ü command — 要执行的命令
· 控制对 cron 的使用
ü /etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。
ü 这两个使用控制文件的格式都是每行一个用户。
ü 如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
ü 如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。
· 启动和停止服务
启动:/sbin/service crond start
停止:/sbin/service crond stop
4.2 使用at
· 确认安装了at RPM 软件包: rpm -q at
· 判定该服务运行状态: /sbin/service atd status
· 配置 at 作业
命令格式:at time 命令
参数:
-f 从文件中读取命令或 shell 脚本,而非在提示后指定它们
-m 在作业完成后,给用户发送电子邮件
-v 显示作业将被执行的时间
time 参数格式:
ü HH:MM 格式 — 譬如,04:00 代表 4:00AM。如果时间已过,它就会在第二天的这一时间执行。
ü midnight — 代表 12:00AM。
ü noon — 代表 12:00PM。
ü teatime — 代表 4:00PM。
ü 英文月名 日期 年份 格式— 譬如,January 15 2002 代表 2002 年 1 月 15 日。年份可有可无。
ü MMDDYY、MM/DD/YY、或 MM.DD.YY 格式 — 譬如,011502 代表 2002 年 1 月 15 日。
ü now + 时间 — 时间以 minutes、hours、days、或 weeks 为单位。譬如,now + 5 days 代表命令应该在 5 天之后的此时此刻执行。
配置步骤:
ü 键入at 命令和它的时间参数
ü at> 提示下键入要执行的命令,按 [Enter] 键。
ü 键入 Ctrl-D
· 控制对 at 和 batch 的使用
ü /etc/at.allow 和 /etc/at.deny 文件可以用来限制对 at 和 batch 命令的使用。
ü 这两个使用控制文件的格式都是每行一个用户。
ü 如果 at.allow 文件存在,只有其中列出的用户才能使用 at 或 batch 命令,at.deny 文件会被忽略。
ü 如果 at.allow 文件不存在,所有在 at.deny 文件中列出的用户都被禁止使用 at 和 batch 命令。
· 启动和停止服务
启动:/sbin/service atd start
停止:/sbin/service atd stop
第五章 文件夹权限设置
5.1 Cvs的权限要求:
例如:仓库(/cvshome/project1)
· Cvs用户对/cvshome/project1/cvsroot及其中所有文件的读权限。
· Cvs用户对/src/master/cvsroot/histroy文件的写权限。
· Cvs用户对其需要修改模块目录的写权限。
5.2 用户权限分配的示例
一、用户情况
设定有两个用户组:cvsadmin组合cvsuser组
其中cvsadmin组中的用户,对于整个cvs服务器具有管理员权限。
cvsuser组中的用户,对整个cvs具有使用的权限,要根据所属项目的不同具体分配权限。
二、仓库情况:每个不同项目对应不同的
设定有两个仓库:仓库一:/cvshome/project1
仓库二:/cvshome/project2
三、模块情况:根据各个项目不同情况划分具体模块
设定仓库一(/cvshome/project1)下有三个模块:test、test1、test2
四、cvs工具:cvs_acls.pl
如使用ssh方式连接,具体操作如下:
以/cvshome/project1为例:
添加用户和组:
groupadd cvsadmin
groupadd cvsuser
useradd –g cvsadmin admin1
useradd –g cvsadmin admin2
useradd –g cvsuser user1
useradd –g cvsuser user2
设置基本权限:
cd $CVSROOT
chmod -R 2770 test test1 test2
chown -R .cvsadmin test1
chown -R .cvsuser test2
细分权限:
使用cvs_acls.pl,使用方法如下:
1、安装 PERL.
2、在commitinfo 文件中添加一行:
DEFAULT /usr/local/bin/cvs_acls
3、 将cvs_acls.pl文件添加到 /usr/local/bin/ 下并设定可执行权限
4、创建文件:$CVSROOT/CVSROOT/avail.
5、修改$CVSROOT/CVSROOT/avail文件内容,格式如下:
{avail.*,unavail.*} [| user,user,... [| repos,repos,...]]
6、例如设置如下:
unavail ;;使整个仓库不提交。.
avail|uer1|test ;;user1可以对test模块有提交权限
unavail|uer2|test ;;user2可以对test模块没有提交权限
展开阅读全文