QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 567|回复: 0

用CVS实现复杂的权限控制

[复制链接]
发表于 2004-4-18 21:59:47 | 显示全部楼层 |阅读模式
作者:张元一
这篇文章的基础是:为CVS建立只读用户,如果你对CVS不太了解,我建议你在这篇文章之前先读一下那篇文章或者其他的介绍CVS的文章以对CVS有一个大致的了解。
在上一篇文章中我们讲到了如何为CVS建立只读用户,但是在有些应用中,可能一个CVS服务器上存在有多个项目,也就是多个仓库,那么如何对这些项目进行权限管理呢?能不能让一个用户对这个项目具有写权限,而对其他项目只具有读取权限呢?答案是可以的,下面我们通过一个例子来介绍具体的实现方法:
假设你的CVS服务器上有两个项目:proj(一个正在开发的项目)和prac(一个用户公司实习人员练习的项目),而你打算建立4个用户:admin,projdev,pratice,anonymous,这4个用户分别如下:
        admin----管理员,对两个项目都拥有读写权限
        projdev----proj开发人员,你希望它只对proj拥有写权限,对于test拥有读权限
        practice----公司新来的实习生,你希望他只对prac具有写权限,但是又不希望他看到proj中的东西
        anonymous----匿名用户,对于他们,你希望他们只能读取prac项目。
下面就来讲解实现的步骤:
第一步,创建用户和群组,
        groupadd cvsgroup
        groupadd project
        groupadd practice
        adduser  cvsroot -d /home/cvsroot
        adduser  project -d /home/cvsroot
        adduser  practice -d /home/cvsroot
        adduser  cvspub -d /home/cvsroot
-d的作用是为用户指定主目录,这里只为cvsroot用户创建主目录,然后编辑/etc/group文件,是用户和组的关系如下:
        cvsgroup:cvsroot,project,practice,cvspub
        project:project,cvsroot
        practice:practice
然后进入/home/cvsroot目录,输入如下命令:
        chmod 770 proj
        chown -c cvsroot:project proj
        chmod 775 prac
        chown -c cvsroot:practice prac
其中第一、二句指定proj文件夹只有同组的用户才对其拥有读写权限,并且它属于cvsroot用户和project组。第三、四句指定prac文件夹只有同组的用户对其具有读写权限,其他用户具有读取和执行权限。
假设你已经按照我上一篇文章说的,将CVS的LockDir设成了/var/lock/cvs,那么你应该在这个目录下建立两个文件夹:
        mkdir proj
        chmod 771 proj
        chown -c cvsroot:cvsgroup proj
        mkdir prac
        chmod 771 prac
        chown -c cvsroot:cvsgroup prac
之所以要将这两个文件夹的组设为cvsgroup是为了保证所有的用户都可以正确访问它。
接下来,你需要编辑$CVSROOT/CVSROOT/目录下的passwd文件,为这四个用户设置相应的密码和对应的系统帐户:
        admin:密码:cvsroot
        projdev:密码:project
        practice:密码:practice
        anonymous::cvspub
然后编辑writers文件:
        admin
        projdev
        practice
编辑readers文件:
        anonymous
这样就已经实现了你所需要的权限控制了。当然你也可以将这个例子再扩展到更复杂的情况,但是应该注意下面几点:
1.让所有的用户对应的系统用户都属于cvsgroup组,并且LockDir目录下的所有目录都属于cvsgroup组,这样可以确保每个用户都可以正确的读取项目文件。
2.为每个项目都建立一个单独的用户和组,让这个项目所在的文件夹属于cvsroot用户和这个项目的组,这样可以保证cvsroot用户对所有的项目都有权访问。
3.将所有对项目x具有写权限的用户加入这个项目对应的组。
4.对于只读用户,不要让它们加入任何组(除了cvsgroup)
5.由于CVS默认一个用户拥有读取权限,因此如果要禁止一个用户访问一个项目,那个不要将这个用户加入这个项目的组,并将这个项目的访问权限设为770,否则设为775。
其实对CVS的权限控制就是对项目文件夹访问权限和用户以及readers,writers文件设定的权限的组合,只要运用得当就可以组合出任意复杂的权限控制来。
本人也是CVS新手,因此文章用难免会有错误和疏漏,还清各位批评指正。
我的信箱:[email protected]
我的主页:http://bridge.ekelu.com/index.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 20:45 , Processed in 0.044528 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表