首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件测试 >

[300高分]通过CVSNT以及CVS的目录权限怎么设置,比如某个用户只能检出项目中自己目录中的程序,其他用户的目录程序他不能检出?

2012-04-14 
[300高分]通过CVSNT以及CVS的目录权限如何设置,比如某个用户只能检出项目中自己目录中的程序,其他用户的目

[300高分]通过CVSNT以及CVS的目录权限如何设置,比如某个用户只能检出项目中自己目录中的程序,其他用户的目录程序他不能检出???
CVSNT以及CVS的目录权限如何设置,   例如我创建了一个module1模块,   下面有a,   b,   c三个目录,   CVS建了三个用户:   cvsadmin,   user1,   user2,   分别设置cvsadmin可以对所有目录进行读写,   user1可以读写a目录,   user2可以读写b目录,   user1和user2可以读c目录,   请问这该如何设置,   情详细介绍一下CVSNT以及CVS里面的设置步骤!

[解决办法]
WinCVS中操作:
1、选中moudle,键入:
cvs chacl -R default:n
cvs chacl -R cvsadmin:rcw

2、选中a目录,键入:
cvs chacl -R user1:rcw
cvs chacl -R user2:r

3、选中b目录,键入
cvs chacl -R user2:rcw
cvs chacl -R user1:r

4、选中c目录,键入:
cvs chacl -R user1:r
cvs chacl -R user2:r
[解决办法]
不同用户设置不同的访问权限方法

完成如下权限的设置:
假设有用户1:user1 ;用户2:user2
用户1(user1)的工作模块:user1dir;用户2(user2)的工作模块:user2dir
要求实现 user1 只能访问user1dir;user2只能访问user2dir
第1步,设置CVS的库配置文件(模块CVSROOT)的访问权限
方法:建立超级用户的工作目录 WINCVSADMIN
a.以cvsnt服务器超级用户administrtor 登陆 wincvs
b.CHECKOUT 库控制文件 checkout moudel 'cvsroot ',此目录下的文件为CVS的高级配置文件,可以在本地进行修改,提交,本身在版本控制之中
c.修改CVSRoot的访问权限,在命令行输入如下命令 #之后为说明,不需要输入 每行命令要单独执行,这是4条命令
cvs chacl default:n #取消所有用户的默认权限
cvs chacl administrator:rcw #设置Administrator拥有所有权限 读取;创建和删除;写入
cvs chown administrator #更改的拥有者Administrator
cvs lsacl #察看权限的设置情况

第2步,建立CVS的用户
正常可以用WINNT 系统的用户作为CVS 的用户,访问CVS ,但是这种方式安全性太差
可以建立CVS 自己的用户
a.建立WINNT系统用户 CVSUSER,权限设为一般用户就可以,只要能访问WINNT就可以
b.建立密码文件PASSWD,
直接在服务端 CVSROOT 目录下建立文件就可以 PASSWD
出于安全考虑,不要将 passwd列在 checkoutlist 文件里面。
C.建立CVS用户
在WINCVS 命令行下输入命令
cvs passwd -a -r cvsuser user2 #建立USER2用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令
cvs passwd -a -r cvsuser user1 #建立user1用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令
cvs passwd -a -r administratro administrator #建立administrator用户与系统用户administrator有一样的权限,回车后提示输入两次口令
可以看到PASSWD 文件多了两行
user2:CUXQwLMdoZHNs:cvsuser #中间为加密的密码,密码使用Unix标准的crypt()函数加密
user1:ZTUCMKUkZ6ap2:cvsuser
administrator:oN2Stm4NIf31Q:administrator

第3步, 使用CVS用户登陆
由于CVS 在默认模式下,是采用系统用户登陆的,这就要修改配置文件 CONFIG
设置文件CONFIG为修改状态
加入如下一行
SystemAuth=no #yes 默认值,表示 如果用户在PASSWD文件中不存在,就用系统用户检查权限是否正确
#no 表示用PASSWD检查用户密码权限是否正确
之后提交
(在设置CONFIG 文件SystemAuth=no 之后
需要在cvs 控制目录cvsroot\ 下建立admin文件
这个文件是指定CVSNT的管理员列表的文件,CVSNT根据这个文件来判断一个用户是否是管理员。文件的内容很是一个用户列表。如下:
user1
user2
user3
这些代表user1,user2,user3都是管理员 ;
在此之前 cvs将服务器的管理员用户作为自己的管理员用户的)
第4步,加入文件 WRITERS ,READERS 控制用户的读写权限
在cvsroot目录下加入两个文本文件,WRITERS ,READERS
其每行内容为 用户名 回车
只有加入WRITERS中的用户才能进行提交
加入READERS中的用户只能读取
同时在两个文件中的用户只能读取
在writers文件中加入如下
user2
user1
administrator
第5步, 配置CVS库模块文件--modules
a.将MODUES文件设为可编辑状态
b.在MOUDES 加入如下3行
CVSRoot CVSRoot
user1的工作目录 -a user1DIR
user2的工作目录 -a USER2DIR
c.保存,提交 COMMIT

第6步, 为2个用户分别上传工作目录
选中USER1的工作目录 'USER1DIR ' IMPORT MODULE
选中USER2的工作目录 'USER2DIR ' IMPORT MODULE
注意:上传的目录不能为空目录,其下必须有文件(啥文件都行)
上传成功后,删除这2个目录OR 改名
(补充一下分组的使用方法:
分组:将权限相同的用户划分到一组,这样方便维护。就是角色的意思,分组使用在对模块访问权限的划分。
方法:
a.在服务器端 cvsroot 目录下新建文件 group


b.建立分组 group1,group2 ,group文件内容如下
group1:user1 user2 user3
group2:user5 user6 user7
c.之后对组进行权限划分,和对单个用户方式一样,就可以使组内用户和组具有相同的权限,如 选中模块,执行如下命令
chacl -R default:n
cvs chacl -R group1:rcw
cvs lsacl
可以使,用户 user1 user2 user3 同时具有对该模块的读写和控制的权限
)

第7步,下载目录目到本地做权限设置 CHECKOUT MODULE
CHECKOUT MODULE 选择 user1的工作目录 'USER1DIR '
CHECKOUT MODULE 选择 user2的工作目录 'USER2DIR '
做法是这样的
选择 菜单\remote\checkou moudule
在打开窗口中 点击 '... ' 按钮
在打开窗口中选择 user1的工作目录
ok 按钮
确定 按钮
第8步 分别设置2用户(USER1;USER2)对各自目录的访问权限
选中模块 USER1 ,在命令行输入如下3条命令,
cvs chacl -R default:n
cvs chacl -R USER1:rcw
cvs lsacl
选中模块 USER2 ,在命令行输入如下3条命令,
cvs chacl -R default:n
cvs chacl -R USER2:rcw
cvs lsacl
说明 加 '-R '参数表示对模块的权限是递归的。解释一下:
如目录结构 dira
|---dira1
|---dira2
命令:cvs chacl default:n 只对 目录 dira 有效,而对子目录无效
cvs chacl -R default:n 对目录dira及其下子目录都有效

第9步 已经完成了设置
以用户 USER1 OR USER2 登陆WINCVS 就只能CHECKOU 各自的模块 USER1DIR,USER2DIR
进行相应的开发工作了

[解决办法]
如果只是一个目录对应一个用户的话比较好办,创建系统用户,用 /usr/sbin/useradd name -s /sbin/nologin,创建的用户不能登录,然后用chown username -R path,把path分配给username,然后用 chmod -R u+rw,a-rwx path,把path目录下的文件访问属性给修改掉,基本就差不多了,这里可能还会出现新添加的文件其他人还能check到,但能满足一部份的需求。对于更复杂的控制就不知道了,这几天也在弄这玩意,发现linux在文件访问权限这一块做的真差,不能对一个文件向几个人授权,只能对一组人

热点排行