您的位置:首页 > 运维架构 > Linux

Linux中用CVSNT进行目录、文件的权限设置

2006-08-29 14:35 423 查看
1 CVSNT for Linux的安装及使用
1.1 使用CVSNT的原因
要达到目录或文件的详细权限设定,要借助CVS扩展包,但在Fedora Core 5 Linux中,使用ACL扩展包的CVS容易出错。这可能是CVS程序在引入ACL功能时导致产生一些新的BUG造成的。
在此,我使用的CVSNT for Linux 版,CVSNT已经有其自己实现的ACL控制策略,能完成目录及文件权限的详细分配、控制。

1.2 安装CVSNT for Linux
www.cvsnt.org下载Linux版的CVSNT,Fedora Core 5 Linux下可以直接使用RedHat的RPM安装包 cvsnt-2.5.03.2382-rh9-rpm.tar.tar。
安装步骤如下:
1) 解压文件
#tar xvf cvsnt-2.5.03.2382-rh9-rpm.tar.tar
会产生一些RPM文件
2) 安装CVSNT RPM
#rpm –ivh cvsnt-2.5.03.2382-1.i386.rpm

1.3 配置CVSNT服务
在Linux下安装好CVSNT后,要进行相应的配置,以便正确使用。下面配置步骤分别说明。
1) 启动cvslock服务
#service cvslockd start
或建立cvslockd自动启动文件,以便系统启动时自动启动cvslockd服务。方法如下:在/etc/rc[345].d下,建立到/etc/init.d/cvslockd 的软链接。以便系统启动或关闭时引用。
首先,建立软链接:
#ln -sf /etc/init.d/cvslockd S92cvslockd
#ln -sf /etc/init.d/cvslockd K29cvslockd
然后,将链接文件copy到/etc/rc[345].d目录下:
将S92cvslockd,K29cvslockd分别copy到/etc/rc3.d,/etc/rc4.d,/etc/rc5.d目录下即可。

2) 修改CVS配置目录权限
将/etc/cvsnt目录的权限设置成所有人可读写的。因为在CVS库初始化时,要将配置写入到这个目录。如果不将权限设置成所有人可写,则只有root用户能初始化CVS库了。
设置/etc/cvsnt给所有人读写权限的命令如下:
#chmod a+rw –R /etc/cvsnt

3) 启动CVSNT Xinetd服务
首先,修改/etc/xinetd.d/cvsnt文件,设置“disable=no”。操作如下:
#vi /etc/xinetd.d/cvsnt
输入i命令,进入vi的insert输入状态,将disable=yes改变成disable=no
保存,退出:ESC->wq。
修正后的cvsnt文件如下图:



然后,重启xinetd服务
#service xinetd restart

1.4 初始化CVS仓库
使用cvs init命令即可。如初始化/home/cvsroot,可直接使用命令:
#cvs –d /home/cvsroot init
完成初始化。
注:cvsnt中可以对仓库设置别名,详细请参见命令帮助,别名及仓库路径存于/etc/cvsnt/PServer。如/home/cvsroot如果要别名成/cvsroot,则可以如下初始化库:
#cvs –d /home/cvsroot –a /cvsroot init。

同时修改CVSROOT/config,设置“SystemAuth=no”,使用CVS内置的用户、密码验证。见“3.1.6 使用CVS内置权限检查”。

1.5 用户、分组
CVSNT下的用户增加、修改、删除,可直接使用cvs passwd命令来完成。如下图显示了用命令来增加一个新用户cvsuser,将它映射到系统用户cvsroot上。



分组:建立文件$CVSROOT/CVSROOT/group,其中存放的分组格式如下:
group1:user1 user2 user3
group2:user5 user6 user7

如果在一个用户在一个组中,在对一个文件设置权限时,如果同时有用户与组的权限声明,则以用户声明的为准。如有一用户cvs,他属于组group1。见下图:



在目录src下,有ACL说明文件CVS/fileattr.xml如下:



如果只有<acl user=”group1”>…</acl>单元,则cvs用户登录后不能查看到src/目录下内容。但如果增加了<acl user=”cvs”>…</acl>后,则cvs用户能查看到src/目录下的内容了。此时“cvs”用户在组“group1”中的。

1.6 目录及文件的权限分配
CVS的目录及文件的权限说明会存放在仓库任意目录下的CVS/fileattr.xml文件中,每个定义的权限会以 <acl user= ></acl>元素来定义。如下面是一个目录下的定义:



这个文件说明了对于目录,cvstest用户没有写权限,而对此目录下的A.java文件,用户cvstest有读权限而没有写权限。
如果没有定义说明用户有哪些权限,默认的权限为all。CVS的权限有:read|write|create|tag|control|all|none。其中control权限为both read and write。
设置CVS的权限可直接修改CVS/filleattr.xml文件,也可以使用命令来设置,设置权限的命令如下:
cvs rchracl(或cvs chacl)
修改所有者的命令为:cvs rchown(或cvs chown)
显示权限列表的命令为:cvs rlsacl(或cvs lsacl)
注:rchacl、rchown、rlsacl与chacl、chown、lsacl的区别在于,rchacl、rlsacl可直接对服务器资源权限进行更改,而不需要先checkout到本地。而使用chacl,lsacl,则必须先checkout到本地。然后进行更改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: