[SCM]源码管理 - perforce的权限管理


一 使用p4admin.exe GUI工具来管理

1) 创建用户

[SCM]源码管理 - perforce的权限管理_第1张图片 

2) 创建group

通常地我们使用group来管理user对某个产品的访问权限,例如对于projectA,我们创建group projectA,将projectA的所有users加入到group projectA中。 通常地我们还有readonly和service groups来设置只读权限和后台运行的密码不过期的用户组。

[SCM]源码管理 - perforce的权限管理_第2张图片 

3) 权限管理

通过权限管理表来管理用户或组的权限的分配,而且可以很直观地在右边预览到所分配的权限。 权限表中所有的字符需要区分大小写,且表的行有先后的顺序,后面的覆盖前面的。

[SCM]源码管理 - perforce的权限管理_第3张图片 

 

二 权限的解释

1)高等级的权限自动地包含了低等级的权限,review权限除外。例如write权限中包含了open,read和list权限。

[SCM]源码管理 - perforce的权限管理_第4张图片 

2) 特殊权限=read, =open, =write, 和 =branch,分别用来表示只读,只打开,只写,只branch。一般与排除符号(-)一起使用,用来排除某些文件的某项权限。

3) p4的命令都需要有相应的权限才可以执行,例如add,branch, change, delete, edit, integrate等都需要open权限,submit需要write权限。

4) 注意: 权限表中的多行共同决定了user的权限,但是如果多行中的设置有冲突,则冲突的部分以最后一行为准。

 

5)总结实例

#group prjectB对//Depot/ProjectB/...有写权限,且自动地包含了权限open,read和list
write group ProjectB * //Depot/ProjectB/...

#group prjectB对//Depot/ProjectB/...只有写权限
=write group ProjectB * //Depot/ProjectB/...

#group prjectB对//Depot/ProjectB/...的写权限及以下的权限(open,read,list)都被排除。
write group ProjectB * -//Depot/ProjectB/...
#group prjectB对//Depot/ProjectB/...的写权限被排除。
=write group ProjectB * -//Depot/ProjectB/...

 

 

6)下例中joe对//depot/build/...以外的文件有管理权限,但是对于//depot/build/...只有list和read的权限,因为open和write的权限被排除了。

admin       user      joe      *             //...
=write     user      joe       *             -//depot/build/...
=open      user      joe       *             -//depot/build/...

 

7)下示例中演示了多行共同决定了Lisa的权限,lisa在机器195.42.39.17上对//depot/elm_proj/doc/...有写权限,但是对其他的文件只有读权限。且在其他的机器上对所有的文件都只有读权限。
read      user    *        195.42.39.17    //...
write     user    lisag    195.42.39.17    //depot/elm_proj/doc/...
read      user    lisag    *               //...
 

三 p4的权限保护是如何实现的?


1) 用权限表存储了所有的对用户和组所分配的权限,例如:
super user AAA * //...
write group ProjectA * //Depot/ProjectA/...
write group ProjectB * //Depot/ProjectB/...
=write group ProjectB * -//Depot/ProjectB/...

2)首先确定命令所需要的最低的权限,每个命令都有对应的权限, 例如:
add,delete,edit等需要open权限,但是submit需要write权限。

3)对权限表进行第一轮遍历,遍历是从最后一行开始向前,通过遍历查找是否权限表中允许对要求的文件操作。如果找到不允许对要求的文件操作的权限表行,或者遍历结束仍然没有找到允许操作的权限表行,则报错“File not on client”。

4)如果3)遍历后的结果为对所要求的文件允许操作,则对权限表进行第二次遍历,遍历任然是从最后一行开始向前,通过遍历查找是否权限表中允许的权限高于命令所需要的最小权限,如果找到不允许该权限操作的权限表行,或是遍历结束了仍然没有找到高于命令所要求的最小权限,则报错“You don’t have permission for this operation”,否则授权成功命令执行。

 

完!

你可能感兴趣的:([SCM]源码管理 - perforce的权限管理)