GLinux下cvs服务器的配置和权限管理
1、查看是否安装cvs(redhat9缺省是装的,没有可在系统光盘中找到)
#rpm -qa|grep cvs
2、下载CVSACL
https://sourceforge.net/project/showfiles.php?group_id=75057&package_id=77484&release_id=423655
查看cvs版本
#cvs –version
3、安装CVSACL
# tar -zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
# mv cvs-1.11.22-cvsacl-1.2.5-patched cvs-1.11.22
# cd cvs-1.11.22
# ./configure
# make
# make install
4、在CVS服务器端建立仓库
创建用于CVS的专用系统组和用户,以后要访问CVS服务的用户加入cvs这个组:
#groupadd cvs
#useradd -g cvs -s /sbin/nologin cvsroot
#passwdcvsroot
初始化cvs服务器环境
#mkdir /cvs
#cvs -d /cvs init
其实就是cvs初始化cvs环境的命令,会在/cvs目录下生成CVSROOT文件夹,但是安装了CVSACL后,使用此命令CVSROOT文件夹中生成的文件会和不安装CVSACL的文件有所区别,会增加几个文件,稍后会详细介绍这几个文件的作用。
Aclconfig
Access
aclconfig,
设置CVS配置库归属及权限:
#chown -R cvsroot.cvs /cvs
#chmod -R 770 /cvs
加入cvs服务(redhath9缺省就有cvs服务,所以不用加)
#vi /etc/services
#cvspserver 2401/tcp #pserver cvs service
#cvspserver 2401/udp #pserver cvs service
创建CVS启动脚本:
#vi /etc/xinetd.d/cvspserver
内容如下:
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvs pserver
log_on_failure += USERID
}
重新启动inetd或者xinetd:
#/etc/init.d/xinetd restart
检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
5、创建CVS用户
#vi /project/CVSROOT/aclconfig
UseSystemGroups=no
UseCVSGroup=yes
改为“SUseSystemGroups=no”,/etc/passwd里的用户将不再生效,需要给开发者在CVSROOT/passwd里逐一建立账号,新建的不要分配用户目录,因为它将作为一个虚拟用户帐号来使用
#cd /cvstest/CVSROOT
#htpasswd –c passwd yueyx
#vi passwd
yueyx:*******:cvsadmin
6、添加用户
#cd /cvstest/CVSROOT
#htpasswd passwd yueyx
#vi passwd
yueyx:*******:cvsadmin
7、创建组
#cd /cvs/CVSROOT
#vi group
文件格式:
group1:x:1:test1, yueyx //用户之间用“,”分割。
注:cvsacl有个bug,必须在组用户最前边添加一个不存在的cvs用户,group文件才会生效。原因不明,但此方法确实管用。
8、使用cvsacl细化权限(可以针对用户,也可以针对组设置权限)
1. 命令格式
cvs –d 配置库位置 racl [用户||组:权限] [-Rl] [-r tag] [模块…] [文件…]
2. 权限参数
权限
关键字
说明
没有权限
n
用户不能做任何cvs操作
读权限
r
可以执行annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status命令
写权限
w
可以执行commit/checkin命令
tag
t
可以执行tag/rtag命令,依赖读权限
创建
c
可以执行add import 命令
删除
d
可以执行rm命令
全部权限
a
可以执行所有cvs命令处理cvsacl管理命令
管理权限
p
可以执行所有命令
3. 命令参数
- R 进行目录递归
- r rev 设定版本/标签
- l列出已定义的ACLs权限
4. 特别注意
如果没有通过cvs -d racl指定用户或组对某个文件的权限,那么这个用户或组会对此目录具有最大权限(只受文件本身属性限制),因此在实际对CVS中的项目进行权限设置时,必须指定用户对每一个文件的权限。
展开阅读全文