zoukankan      html  css  js  c++  java
  • [SCM]源码管理 perforce的权限管理


    一 使用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”,否则授权成功命令执行。

    完!

  • 相关阅读:
    tcp socket http(复制的)
    cas php
    占用字节
    网络基础
    Mbps MB/S Mb/s
    path_info和get_full_path()的区别
    rbac权限管理
    ORM _meta
    Django SQLite3的使用
    url的分发
  • 原文地址:https://www.cnblogs.com/itech/p/2139695.html
Copyright © 2011-2022 走看看