|
发表于 2007-2-7 11:05:31
|
显示全部楼层
不同用户设置不同的访问权限方法
- 完成如下权限的设置:
/ [9 g5 E, Y% k - 假设有用户1:user1 ;用户2:user2, `8 T6 y1 y3 w
- 用户1(user1)的工作模块:user1dir;用户2(user2)的工作模块:user2dir
! s, h5 U3 m$ @7 ^/ }/ w7 l: s - 要求实现 user1 只能访问user1dir;user2只能访问user2dir& p- \ b* t& [0 z0 E7 Z
- 第1步,设置CVS的库配置文件(模块CVSROOT)的访问权限
9 _& _2 h- s0 J - 方法:建立超级用户的工作目录 WINCVSADMIN0 W6 L: F$ Y/ g' w9 X0 v, d# x
- a.以cvsnt服务器超级用户administrtor 登陆 wincvs; ^8 H( f, L8 T1 k/ w+ S
- b.CHECKOUT 库控制文件 checkout moudel 'cvsroot',此目录下的文件为CVS的高级配置文件,可以在本地进行修改,提交,本身在版本控制之中5 N) k( G- _ L) ^7 s! i2 S9 `
- c.修改CVSRoot的访问权限,在命令行输入如下命令 #之后为说明,不需要输入 每行命令要单独执行,这是4条命令
$ Y) P% p6 W: r- H - cvs chacl default:n #取消所有用户的默认权限
/ M9 K2 R/ [0 i# H+ g! C0 S3 L, \ - cvs chacl administrator:rcw #设置Administrator拥有所有权限 读取;创建和删除;写入( f& c3 P5 {: T p
- cvs chown administrator #更改的拥有者Administrator
0 }% |9 t3 D. }$ X3 d - cvs lsacl #察看权限的设置情况
# L% \3 ~ b$ ^' d - 第2步,建立CVS的用户
8 N- d4 y# w2 W1 i - 正常可以用WINNT 系统的用户作为CVS 的用户,访问CVS ,但是这种方式安全性太差
3 r0 n1 ?6 f% t7 ` - 可以建立CVS 自己的用户
* N( C6 B# X2 G( s7 W3 B - a.建立WINNT系统用户 CVSUSER,权限设为一般用户就可以,只要能访问WINNT就可以
* |3 v' R. h% x; d6 d - b.建立密码文件PASSWD,/ L+ m/ O: Z4 I* ]; D% m/ R
- 直接在服务端 CVSROOT 目录下建立文件就可以 PASSWD9 ]: c" E4 q6 B4 r# _$ L# d
- 出于安全考虑,不要将 passwd列在 checkoutlist 文件里面。
' M- U3 x) G% _; D4 k$ @ - C.建立CVS用户 $ {5 W8 w7 V- Y* Q0 {
- 在WINCVS 命令行下输入命令 9 ?8 D- W5 s/ Y" a4 {- a+ O' |
- cvs passwd -a -r cvsuser user2 #建立USER2用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令
2 `) N$ c# A7 }) \ - cvs passwd -a -r cvsuser user1 #建立user1用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令
' A3 ~5 _. H8 u7 z3 j - cvs passwd -a -r administratro administrator #建立administrator用户与系统用户administrator有一样的权限,回车后提示输入两次口令
, A1 B* Y/ t# a T! z' p - 可以看到PASSWD 文件多了两行; _" P, F/ a9 Y: s
- user2:CUXQwLMdoZHNs:cvsuser #中间为加密的密码,密码使用Unix标准的crypt()函数加密0 P N) |8 x7 O) l$ O9 O7 n
- user1:ZTUCMKUkZ6ap2:cvsuser
0 A) w4 x' T& I5 N( C0 p c - administrator:oN2Stm4NIf31Q:administrator
j6 z9 E! {( ?$ U9 T - 第3步, 使用CVS用户登陆6 S) P; [! {4 ?* h; H5 V
- 由于CVS 在默认模式下,是采用系统用户登陆的,这就要修改配置文件 CONFIG6 }; _# P0 s; R
- 设置文件CONFIG为修改状态
* d8 @1 \9 ^4 ]4 y! m - 加入如下一行: Q) {! `; _4 n' g( ~0 P
- SystemAuth=no #yes 默认值,表示 如果用户在PASSWD文件中不存在,就用系统用户检查权限是否正确* S; A5 i7 Y. q0 Y7 m$ I
- #no 表示用PASSWD检查用户密码权限是否正确' k$ _# H7 p2 b, g; [0 W6 j
- 之后提交9 X' @* h; S/ \* k& v
- (在设置CONFIG 文件SystemAuth=no 之后" }6 T8 v. {5 ^# V5 P+ g
- 需要在cvs 控制目录cvsroot\ 下建立admin文件 1 A& K/ Q3 Q, ~" w
- 这个文件是指定CVSNT的管理员列表的文件,CVSNT根据这个文件来判断一个用户是否是管理员。文件的内容很是一个用户列表。如下:
1 ?7 P' C% A6 A2 g, | - user18 t `! t& u# z! V9 s# F
- user2
8 d( h" D1 X( @3 n2 K - user3/ ~5 R8 O# b9 ?
- 这些代表user1,user2,user3都是管理员 ;7 w1 S" z9 ] x7 U& h# C" v: s
- 在此之前 cvs将服务器的管理员用户作为自己的管理员用户的)
8 k+ }! ]) k6 T3 M9 t) B( ]/ A! T - 第4步,加入文件 WRITERS ,READERS 控制用户的读写权限" }0 G+ L3 J' x! l8 J" Z; r& x
- 在cvsroot目录下加入两个文本文件,WRITERS ,READERS! k. c( e8 Y; C& k1 x
- 其每行内容为 用户名 回车& M8 _7 G* h3 b3 w0 G; e# n0 l
- 只有加入WRITERS中的用户才能进行提交+ B. R6 j5 l) k& y
- 加入READERS中的用户只能读取, Z* H9 O+ Q. _9 J+ ^, L: s0 O
- 同时在两个文件中的用户只能读取1 V4 t6 m. @1 c) J6 u3 n
- 在writers文件中加入如下
8 e5 Q' R8 j1 `. ]8 v$ e, W - user2, }9 L* O+ F3 h3 T+ @
- user1 6 c5 e' T% o/ o$ f" S- Z S
- administrator
: o. r) k% ^ }5 N - 第5步, 配置CVS库模块文件--modules2 A& |- L& d6 a4 _0 u" b
- a.将MODUES文件设为可编辑状态- M! e$ z- a2 A! c$ H2 Q
- b.在MOUDES 加入如下3行
: o) u* a+ A2 g" V8 a' D - CVSRoot CVSRoot$ L3 @4 `( E% t
- user1的工作目录 -a user1DIR
( r. u% r3 A4 \ - user2的工作目录 -a USER2DIR
( A2 C' i5 U2 V% A9 p- w - c.保存,提交 COMMIT7 Z/ o0 K! t( _" ^) D" i
- 第6步, 为2个用户分别上传工作目录
( B" V. [- G5 S: k" S - 选中USER1的工作目录'USER1DIR' IMPORT MODULE . R+ T1 A1 B( o& Q
- 选中USER2的工作目录'USER2DIR' IMPORT MODULE
7 Q/ X2 k' a, E9 d Q# `2 N - 注意:上传的目录不能为空目录,其下必须有文件(啥文件都行)4 J0 s: {, |9 h7 e# o6 M9 W
- 上传成功后,删除这2个目录OR 改名
) @9 w2 M7 |/ ~1 ?0 v5 W4 N) U - (补充一下分组的使用方法:- V# X' W9 {. i" Z0 R' R
- 分组:将权限相同的用户划分到一组,这样方便维护。就是角色的意思,分组使用在对模块访问权限的划分。; H! R& O5 e# z# A
- 方法:
% n# ^0 a+ q% n. G - a.在服务器端 cvsroot 目录下新建文件 group
. ~- B% Y+ \ j, C- g$ ^9 K - b.建立分组 group1,group2 ,group文件内容如下
/ \: g: i7 C0 V - group1:user1 user2 user3" q! w8 Z- `+ j- k: r
- group2:user5 user6 user7
# N" t4 }0 M- e( z8 L. Y) ]8 W: ` - c.之后对组进行权限划分,和对单个用户方式一样,就可以使组内用户和组具有相同的权限,如 选中模块,执行如下命令
, F) w! Z# u+ N - chacl -R default:n
/ T6 r6 a( D: g$ @( R8 ~4 g. i" Q - cvs chacl -R group1:rcw3 e. }$ P2 y0 m4 y' l1 N
- cvs lsacl 5 l1 M+ h( ]- t. n3 ]+ K% D
- 可以使,用户 user1 user2 user3 同时具有对该模块的读写和控制的权限
; _" `9 @( m5 w( _& X; o5 O* l - )
# U- P) S8 x1 c4 J4 ^5 O/ [+ I7 d - 第7步,下载目录目到本地做权限设置 CHECKOUT MODULE
+ u+ a( f4 G! a; { - CHECKOUT MODULE 选择 user1的工作目录 'USER1DIR'7 ]# Z9 M7 i8 v4 |; D# S
- CHECKOUT MODULE 选择 user2的工作目录 'USER2DIR'
- f+ l ` a2 q3 O6 v6 O - 做法是这样的2 X! G: A" }0 w3 \# j( {6 o: ]
- 选择 菜单\remote\checkou moudule
. _% [! G0 R+ ]6 a* y - 在打开窗口中 点击'...' 按钮 # D/ v! }; I% P
- 在打开窗口中选择 user1的工作目录 . e- b) S; q# f6 J1 x) t
- ok 按钮& j) L4 \% N5 y Q: U- {
- 确定 按钮
# x# p' V& N, c - 第8步 分别设置2用户(USER1;USER2)对各自目录的访问权限
- J- @1 _* ]% x3 c; Z* S - 选中模块 USER1 ,在命令行输入如下3条命令,1 d7 n0 v. v: e0 |4 i
- cvs chacl -R default:n
; {( K0 L: w3 J" T - cvs chacl -R USER1:rcw. D5 R1 s% S% ?. R) A! Q
- cvs lsacl 1 s, N4 r$ y; e! f3 F1 \6 K
- 选中模块 USER2 ,在命令行输入如下3条命令,
- F+ p" x6 m2 d - cvs chacl -R default:n
# o7 O, F4 J( T. S6 `! e - cvs chacl -R USER2:rcw. Q/ S. W( J" S% }& o) H
- cvs lsacl ) k- e' d: `* C% Q7 R
- 说明 加 '-R '参数表示对模块的权限是递归的。解释一下:" P8 L5 ~2 G T! O# r
- 如目录结构 dira! k2 ~& s+ L' ~' B6 Z0 g4 x5 L5 M
- |---dira1* G5 V4 {$ T: M
- |---dira2
% a ]$ [, {. G7 s - 命令:cvs chacl default:n 只对 目录 dira 有效,而对子目录无效' [- E: `. `6 l' t/ I3 r
- cvs chacl -R default:n 对目录dira及其下子目录都有效( I- V* D( C9 q3 q e7 p
- " L" P) G3 g( e! V3 t: G
- 第9步 已经完成了设置
' o* _: q& I" q - 以用户 USER1 OR USER2 登陆WINCVS 就只能CHECKOU 各自的模块 USER1DIR,USER2DIR & n( J" G6 d2 v. S/ c' J
- 进行相应的开发工作了
复制代码 |
|