SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5088|回复: 0

[原创] ClearCase中chmod格式串的实现方式

[复制链接]
发表于 2007-9-5 11:16:10 | 显示全部楼层 |阅读模式
昨天看到一个关于protect -chmod的问题,参见http://www.scmlife.com/bbs/thread-6922-1-1.html
5 N( _6 t7 A+ j# q! j% \* v. ^3 ^6 y# [5 w! z
问题是说用protect -chmod -770无法设置权限,错误信息是Execute permission required for set-ID on execution
! z& y( z3 E2 W4 N; I: ]
9 A9 c. b6 n+ D4 v  g5 k当时没有多想,只是知道去掉770前面的横线就可以得到正确的结果
) {% |/ M' j; h1 P4 ~$ b6 A* ]4 d, Z3 ?
后来仔细分析了一下才知道为什么会报出这样的错误信息0 w: K3 Y3 E, L8 x/ H1 d: U

# B% `4 v( o4 [, w. D9 ^我们知道,ClearCase中的chmod和Unix中的chmod一样,都接受4位的格式串3 T: d; t/ A4 L2 j- \, ~
0 j' X- K: u3 V- l
具体用法大家可以man chmod看一下,通常我们只使用后三位,第一位格式其实与后三位相同,但含义如下:/ t1 C4 i/ S* y

5 K. u" C% d0 d* M! G% T% T4 - Set-UID (前提是owner的执行权限被打开)
1 X1 h/ Q6 K1 f0 t2 - Set-GID (前提是group的执行权限被打开)" Z3 {: P6 c+ b/ r! f# u
1 - Set-Sticky Bit (通常翻译成粘滞位,/tmp目录是个例子)
$ o( E8 V3 @  q; Y- U' r: O' i6 J/ y+ z) b& r9 l! j
如果是4位的格式串,那么当前的访问权限会被清除,并按照这4位格式串来设置
1 J- h5 ]1 y! V3 T( i( F& U2 ?1 T8 R# a6 k' d* s5 b8 O
但-770在Unix chmod中是一个错误的格式串,为什么会被ClearCase解释成Set-UID或者Set-GID呢?
2 v% X& P8 X* f0 `) g0 T9 h+ m. y( u
对于ClearCase中chmod的具体实现,经过实验发现以下两点:
; f) g, R7 F7 ~4 h$ }2 M$ B8 ^; D7 T! k8 W
第一、protect -chmod并不做复杂的输入检查,只是截取最后4位(12个bit)作为有效值' y/ p4 V6 [& ^% _

- K: c) `2 G1 o6 a# ]2 e所以再长的格式串都不会报错,protect -chmod 7755,protect -chmod 67817755也会得到相同而且正确的结果
- D4 n' _! |8 T7 c
( G( V- Z& ?. H7 r0 p第二、ClearCase内部应该是用unsigned int之类的数据类型来定义格式串,所以-770会被转换成补码表示' ~' t) U7 _$ Q0 k0 F& e: N

  Z$ e$ y) [" D- ]+ f. _, W具体情况是这样的(以32位系统为例):
0 z0 U& R. h. ~  `( V* D
( {+ S6 ^  f% z0 j8 R% C2 y) m! w-770的原码 -  1000 0000 0000 0000 0000 0001 1111 1000
5 O3 {6 W9 V. o* W% Y- i-770的补码 -  1111 1111 1111 1111 1111 1110 0000 1000& ?6 k) p! D  e0 c3 m

% r6 Z5 _( ?+ S9 m) U& I将-770的补码截取最后12个bit,结果就变成了7010,含义是Set-UID,Set-GID,Set-StickyBit以及打开group的执行权限
$ @5 n7 ~7 J5 x7 l0 H% R# G7 t2 @& g) u4 M, j
由于没有打开owner的执行权限,Set-UID自然会失败,报错信息就是Execute permission required for set-ID on execution3 N- j" w' L& F3 k
9 J/ ]4 S3 {* h7 ^
以上内容是我在2003.06.00环境下试验的,并不清楚7.x是否存在以上问题。
  u; I; F* C2 f! n9 ]
) [% b+ @- R- g欢迎讨论
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2019-8-26 03:54 , Processed in 0.054527 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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