在使用 Cliosoft SOS 的时候,我们通常会以用户组的方式定义权限。
当权限出现交叉的时候,需要对工作内的 MEMBER 进行多次定义。
是否有一种类似于 SVN 的方式,定义一个用户组,然后将这个用户组添加到工作组的 MEMBER 中实现快速管理呢!!!!
答案当然是有。。
一、用户组
——————————————————————————
打开 sosd.cfg,然后设置一个用户组
set group1 {user1 user2 user3} set group2 {user1 user3 user4} set group3 {user1 user2 user4}
使用 set 命令,后跟自定义用户组名,使用 {} 方式添加成员,成员使用空格分割。
工作组 MEMBER 引用
GROUP design { MEMBER testuser1; MEMBER $group1; MEMBER $group2; } GROUP test { MEMBER testuser3; MEMBER $group1; MEMBER $group3; }
定义两个工作组 design 和 test,在定义用户的时候,MEMBER 后面可以直接添加用户名,也可以添加用户组信息。
用户组信息需要用 $ 符号明确它是一个用户组,多个 MEMBER 用分号;分割。
一、权限组
——————————————————————————
定义一个组,名为:TAGGER,可以执行快照、打 tag、取消 tag 等权限
ROLE TAGGER {COMMAND snapshot, tag, tag-B, modattr;}
以上写法代表 TAGGER 可以执行命令 (COMMAND),可执行的命令是快照 (snapshot),打 tag (tag),取消 tag (tag-B),修改属性 (modattr) ,命令之间用逗号,分割。
权限组的权限分为 全局权限 和局部权限。
1、全局权限
若想配置一个全局 TAGGER 权限的用户组,则在 sosd.cfg 文件中直接定义。
TAGGER zhangsan,lisi;
代表 zhangsan,lisi 有权限对全局所有文件有快照、tag、修改权限的信息
2、局部权限
如果定义局部权限,则需要将 TAGGER 写入到 group 中实现
GROUP design { MEMBER testuser1; MEMBER $group1; MEMBER $group2; TAGGER zhangsan,lisi; } GROUP test { MEMBER testuser3; MEMBER $group1; MEMBER $group3; }
这里我在 design 中定义了 TAGGER 信息,则 zhangsan,lisi 则仅有权限对 design 工作组的所有文件有权限进行快照、tag 等操作。
三、分配默认组
——————————————————————————
当一个用户拥有了多个组之后,需要对用户分配一个默认组,否则用户将以定义的第一个工作组为默认组 (sosd.cfg 文件自上而下)
如何为分配一个默认组:
USER user1 { DEFAULT_GROUP test;}
在这里,我们将 user1 的默认用户组分配为 test。
此操作的前提:工作组 GROUP 必须先定义好,并且用户属于这个工作组。
网友留言:
ACL {
READ group; -- can be owner, group or world
WRITE group; -- can be owner, group or world
MODIFY_ACL yes; -- can be yes or no (if no then even owner cannot change ACL)
}
sosd.cfg配置如下:
OPEN_WORLD no;
set groupa {test1 test2}
ADMIN admin, cad;
ACL {
READ world; -- can be owner, group or world
WRITE group; -- can be owner, group or world
MODIFY_ACL yes;
}
GROUP design {
MEMBER cad;
MEMBER $groupa;
}
报错信息如下:
Error
@@ Error: Server: '{can't read "groupa": no such variable} {can't read "groupa": no such variable
while executing "error Serr'1
(procedure "Config::source" line 29) invoked from within
"Config::source $cfgFilePath"
(procedure "parseConfigRead" line 2) invoked from within
"parseConfigRead ScfgFilePath"}' while reading the configuration file '/xxx/sos_test.rep/sos1/setup/sosd.cfg' for project 'sos1'.