金钱- 171
海拔- 82 米
- 积分
- 187
- 精华
- 0
- 帖子
- 10
- UID
- 3537

|
不同用户设置不同的访问权限方法
- 完成如下权限的设置:" i" t1 k9 h) e8 P4 u
- 假设有用户1:user1 ;用户2:user2
9 @7 p0 j, L3 m; s - 用户1(user1)的工作模块:user1dir;用户2(user2)的工作模块:user2dir$ Y3 O/ {; ]- r/ m& x
- 要求实现 user1 只能访问user1dir;user2只能访问user2dir& o# j, T j) H$ ^, L: N
- 第1步,设置CVS的库配置文件(模块CVSROOT)的访问权限# \, X) S' z/ V! r5 A+ F
- 方法:建立超级用户的工作目录 WINCVSADMIN
: [+ f/ R, t7 y+ G - a.以cvsnt服务器超级用户administrtor 登陆 wincvs: n2 x3 A7 D. T3 f- T8 v6 A
- b.CHECKOUT 库控制文件 checkout moudel 'cvsroot',此目录下的文件为CVS的高级配置文件,可以在本地进行修改,提交,本身在版本控制之中1 r1 S: C! o o. D* z
- c.修改CVSRoot的访问权限,在命令行输入如下命令 #之后为说明,不需要输入 每行命令要单独执行,这是4条命令2 R4 J" A: V# o
- cvs chacl default:n #取消所有用户的默认权限
$ C' p1 J" _3 v+ ~ - cvs chacl administrator:rcw #设置Administrator拥有所有权限 读取;创建和删除;写入
6 l0 | j$ D2 U# G% [ - cvs chown administrator #更改的拥有者Administrator
1 v0 Y6 B% f, X3 P+ T8 F - cvs lsacl #察看权限的设置情况
1 w4 j* X7 {$ g: x3 P4 m* g - 第2步,建立CVS的用户
4 \! d8 L. _6 t% \7 ] - 正常可以用WINNT 系统的用户作为CVS 的用户,访问CVS ,但是这种方式安全性太差) {9 C* q, t6 B$ x" o
- 可以建立CVS 自己的用户
- u# t5 z7 K: E+ N" ?) p - a.建立WINNT系统用户 CVSUSER,权限设为一般用户就可以,只要能访问WINNT就可以 8 s% A) O0 A! |- v
- b.建立密码文件PASSWD,
$ j$ i& E9 h% w" o" w2 k% r& b - 直接在服务端 CVSROOT 目录下建立文件就可以 PASSWD
6 X( K/ \$ i7 M+ | s( T \ - 出于安全考虑,不要将 passwd列在 checkoutlist 文件里面。 7 T, V! f/ ?+ I/ j9 J* f$ [
- C.建立CVS用户 5 o" ]* x9 g/ K1 y; ^( {3 ]7 J" ]
- 在WINCVS 命令行下输入命令
- }# Q; {9 w- ^: h - cvs passwd -a -r cvsuser user2 #建立USER2用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令2 K( P5 p, M- ~
- cvs passwd -a -r cvsuser user1 #建立user1用户与系统用户cvsuser有一样的权限,回车后提示输入两次口令
: ~" X" S, z: [$ B0 h4 b: q - cvs passwd -a -r administratro administrator #建立administrator用户与系统用户administrator有一样的权限,回车后提示输入两次口令, _- X0 a2 |3 j8 i
- 可以看到PASSWD 文件多了两行6 W8 G9 S1 c( A7 o) w
- user2:CUXQwLMdoZHNs:cvsuser #中间为加密的密码,密码使用Unix标准的crypt()函数加密
+ z* s: M6 z$ J/ K* i - user1:ZTUCMKUkZ6ap2:cvsuser
; ?5 p1 y _2 m! x2 ~5 } - administrator:oN2Stm4NIf31Q:administrator! q2 a" a/ S) m$ |( S
- 第3步, 使用CVS用户登陆2 u4 M B6 Q6 e$ T: m; m$ `
- 由于CVS 在默认模式下,是采用系统用户登陆的,这就要修改配置文件 CONFIG
1 e* }" @/ B# W/ y9 C0 b, a - 设置文件CONFIG为修改状态
: Z$ y' V1 Q/ g8 c# X4 ~6 { - 加入如下一行
6 ]- l. d. }. A1 @ - SystemAuth=no #yes 默认值,表示 如果用户在PASSWD文件中不存在,就用系统用户检查权限是否正确
$ c' c4 ~. w/ g; L - #no 表示用PASSWD检查用户密码权限是否正确
0 r& y4 G, j; }# p! I - 之后提交
0 y C+ g- Q1 v1 [' S% J* S - (在设置CONFIG 文件SystemAuth=no 之后- A6 B2 Q$ c3 Q Q; T+ V
- 需要在cvs 控制目录cvsroot\ 下建立admin文件 6 G) r5 ]' a- C5 e
- 这个文件是指定CVSNT的管理员列表的文件,CVSNT根据这个文件来判断一个用户是否是管理员。文件的内容很是一个用户列表。如下:% n$ F- F8 Q9 @6 T
- user1
% r* t0 O+ p: A. D0 |7 h6 H+ N) X - user2$ E/ _# u$ r* b, ]3 X
- user3
. d. X+ l+ d+ q# d& v& C. X - 这些代表user1,user2,user3都是管理员 ;
% z* Z$ o* Y) c7 k# n i0 \' Q - 在此之前 cvs将服务器的管理员用户作为自己的管理员用户的)
s( b1 t& r1 n( W - 第4步,加入文件 WRITERS ,READERS 控制用户的读写权限
) k4 `/ a- K; X/ T9 b - 在cvsroot目录下加入两个文本文件,WRITERS ,READERS+ }3 W0 A u* d$ B9 @4 a7 R
- 其每行内容为 用户名 回车
G8 g8 o* ]/ G7 n2 a - 只有加入WRITERS中的用户才能进行提交8 ?8 o; S) M7 c' z
- 加入READERS中的用户只能读取
5 E' r7 u/ Y/ w - 同时在两个文件中的用户只能读取8 w% H3 \' O* }1 {# d
- 在writers文件中加入如下
; f. Z [+ W6 `1 P6 p - user2/ \2 ]* Z) W" z7 G$ O
- user1
& |! Q( }0 w. u7 E - administrator 0 W2 J2 b' i) j6 e g5 a
- 第5步, 配置CVS库模块文件--modules$ q. \# \# ]7 ?
- a.将MODUES文件设为可编辑状态
7 {- d' H& U6 E0 n9 ~* m* y1 C - b.在MOUDES 加入如下3行
4 g- `; @9 h, z7 ?% K% A, o - CVSRoot CVSRoot- ]* L) C7 |) R7 X/ d0 d3 k, n& \6 Y
- user1的工作目录 -a user1DIR
" r3 S- t3 B/ W - user2的工作目录 -a USER2DIR
) b3 V2 Q' b# a d - c.保存,提交 COMMIT
" M/ W- ~$ _3 g" o9 x - 第6步, 为2个用户分别上传工作目录
/ ~; T0 x" _* b4 s" Y X8 A - 选中USER1的工作目录'USER1DIR' IMPORT MODULE
, F' M, z6 M& Z+ _5 s - 选中USER2的工作目录'USER2DIR' IMPORT MODULE
3 F8 ?% L$ y: s! t, D - 注意:上传的目录不能为空目录,其下必须有文件(啥文件都行)
' i; H5 \" C5 w* i) j" u( v - 上传成功后,删除这2个目录OR 改名
8 W4 f0 o" q9 J - (补充一下分组的使用方法:
( i+ G5 w2 _- k" n, c2 T2 \" N - 分组:将权限相同的用户划分到一组,这样方便维护。就是角色的意思,分组使用在对模块访问权限的划分。: g2 V: g5 a/ Q
- 方法:1 }6 U# B: S) z" J7 b, P
- a.在服务器端 cvsroot 目录下新建文件 group
& u" f: @# [6 Z, I9 t# p) ~+ s9 x - b.建立分组 group1,group2 ,group文件内容如下4 `9 h" A7 W2 ~ ?' F
- group1:user1 user2 user3
- }( h. B/ e' D8 I w( H - group2:user5 user6 user78 V2 x; ~+ M, W
- c.之后对组进行权限划分,和对单个用户方式一样,就可以使组内用户和组具有相同的权限,如 选中模块,执行如下命令
$ d/ G! \$ g* F1 l - chacl -R default:n% i! {6 u6 H! c* `# s& |
- cvs chacl -R group1:rcw; Z. `" Q$ p" |( U9 @
- cvs lsacl / V! ^1 T2 t+ b# J t* a4 [3 r9 Y
- 可以使,用户 user1 user2 user3 同时具有对该模块的读写和控制的权限
; k+ b3 G1 H6 A4 p" p! d/ G9 t - )1 L; A, ] |. L9 H
- 第7步,下载目录目到本地做权限设置 CHECKOUT MODULE7 S v" U+ s" p" J6 W8 d
- CHECKOUT MODULE 选择 user1的工作目录 'USER1DIR'
9 a- X6 g; Z8 F. [% x- ^0 j - CHECKOUT MODULE 选择 user2的工作目录 'USER2DIR'6 u/ g4 B$ J0 ^/ o# A
- 做法是这样的& j( g" [/ v' V) M& M
- 选择 菜单\remote\checkou moudule
( d2 a* B, o. M' s4 t - 在打开窗口中 点击'...' 按钮
& n7 J8 g7 t# W& _1 @ - 在打开窗口中选择 user1的工作目录
9 Q/ a7 P9 A( L0 W0 `7 W& m - ok 按钮
& X! ~; Z) G& Z* a4 O1 h* n* } - 确定 按钮
4 d) {$ ?8 s8 ?9 e" j& |# q - 第8步 分别设置2用户(USER1;USER2)对各自目录的访问权限
4 | d& v- I% r - 选中模块 USER1 ,在命令行输入如下3条命令,
9 m- t. p, y* e& f5 ^# @: V - cvs chacl -R default:n M1 E! |2 N" A& M/ w0 _4 q; p
- cvs chacl -R USER1:rcw
7 t* g3 ?3 F! ~2 `0 e - cvs lsacl
2 b2 p+ ]: o. }2 r8 h) E - 选中模块 USER2 ,在命令行输入如下3条命令,
" P& n: _* u5 d, t+ i( J - cvs chacl -R default:n7 _) P9 R% }: q, Y* V0 a- u* J* h
- cvs chacl -R USER2:rcw8 O; g/ |: C- h; v! R6 \& @
- cvs lsacl - a; i9 c: @1 Z6 |
- 说明 加 '-R '参数表示对模块的权限是递归的。解释一下:! o9 c5 x4 }1 E: Y- z1 Q# k
- 如目录结构 dira
$ R2 o+ @5 N; m1 w - |---dira1
7 H6 L. ~' N' `* K2 R - |---dira2( ?$ k$ R7 W; F
- 命令:cvs chacl default:n 只对 目录 dira 有效,而对子目录无效7 p8 K7 U) K {' a
- cvs chacl -R default:n 对目录dira及其下子目录都有效; m" ]3 m m9 Y2 ~# {5 `& N( f
-
, l1 a5 p. }1 ^+ r9 M9 ^4 s# r5 p - 第9步 已经完成了设置 - r( ^4 g( |( c
- 以用户 USER1 OR USER2 登陆WINCVS 就只能CHECKOU 各自的模块 USER1DIR,USER2DIR
) A$ w, d! z) N - 进行相应的开发工作了
复制代码 |
|