一 使用p4admin.exe GUI工具来管理
1) 创建用户
2) 创建group
通常地我们使用group来管理user对某个产品的访问权限,例如对于projectA,我们创建group projectA,将projectA的所有users加入到group projectA中。 通常地我们还有readonly和service groups来设置只读权限和后台运行的密码不过期的用户组。
3) 权限管理
通过权限管理表来管理用户或组的权限的分配,而且可以很直观地在右边预览到所分配的权限。 权限表中所有的字符需要区分大小写,且表的行有先后的顺序,后面的覆盖前面的。
二 权限的解释
1)高等级的权限自动地包含了低等级的权限,review权限除外。例如write权限中包含了open,read和list权限。
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”,否则授权成功命令执行。
完!