【问题标题】:Revoke user permission in perforce在 perforce 中撤销用户权限
【发布时间】:2021-05-20 11:42:39
【问题描述】:

例如,P4 保护命令返回用户的权限,如下所示。

p4 protects

read group user_group * //PROJECT1/...
list group user_group * //CENTER/USA/Connect/...,*
write user daniel.richter  * //APPS/Auto/Source/CENTER/China/Areos.csv
write user daniel.richter  * //APPS/Auto//Source/CENTER/China/NFE/CoreAs.csv
write group CENTER_CHINA_HP_NW_WRITE * //CENTER/China/HP_NW/ENGINE_SUB/...
list group user_group * -//POST/3G/...
list group user_group * -//PROJ/2005/DevTools/...
list group user_group * -//PROJ/STACK/Flow/...
list group user_group * -//GROUP1/OMR/EXAMPLE/...
list group user_group * -//APPS/Protect/APPS/...
list group user_group * -//APPS/Protect/Group/Apps.txt

使用上述输出,是否可以使用 p4 命令在 perforce 中删除/撤销对用户的权限?手动编辑保护表是一个耗时的过程,因为我需要撤销多个用户的权限。所以,我需要帮助。谢谢!

【问题讨论】:

    标签: perforce


    【解决方案1】:

    由于您已设置使用群组的权限(daniel.richter 的特殊情况除外),您可能只想从群组user_group 和/或CENTER_CHINA_HP_NW_WRITE 中删除该用户,而不是添加特定的每个用户对保护表本身的排除。你可以运行:

    p4 groups USERNAME
    

    查看用户属于哪个组,然后:

    p4 group GROUPNAME
    

    编辑组。

    上述两个命令都可以在任何脚本语言中轻松实现自动化。使用 P4Python 从所有组中删除用户的简单脚本可能如下所示:

    from P4 import P4
    import sys
    
    user = sys.argv[1]
    
    p4 = P4()
    with p4.connect():
        for line in p4.run_groups(user):
            group = p4.fetch_group(line['group'])
            group['Users'].remove(user)
            p4.save_group(group)
    
    C:\Perforce\test\python>p4 groups bob
    mygroup
    
    C:\Perforce\test\python>python remove_from_groups.py bob
    
    C:\Perforce\test\python>p4 groups bob
    
    C:\Perforce\test\python>
    

    【讨论】:

    • 我手边没有 Unix 环境,但我拼凑了一个快速的 Python 脚本。任何语言的基本策略都是相同的,除非您将其作为纯 shell 进行操作,否则您需要使用 sed 将用户名从明文形式中过滤出来,而不是能够将其从漂亮的数据中弹出结构。
    • 可能类似于p4 groups USER | xargs -i p4 group -o {} | sed -s "s/USER$//" | p4 group -i -- 我不确定您是否需要在其中的某些部分加上引号才能让 xargs 运行包括管道在内的整个内容,或者是否有一些其他一些管道需要让每行p4 groups 输出导致一个p4 group -o | sed | p4 group -i 调用。不过,这是一般的想法。
    • 我们在 Windows 和 Ubuntu(Linux) 上都使用 p4 和 P4V。因此,以下remove_from_groups.py 脚本正在从所有组中删除用户。此外,我将检查以从特定/指定组中删除用户。
    • 这样的脚本的一个很好的用途是作为用户删除的触发器——这样你可以从 P4V(或任何地方)删除用户,服务器会自动将其从组中删除。如果您手动调用它,我不确定它是否会比正常编辑组规范为您节省那么多时间。
    • 实际上我们有多个用户,他们是多个组的一部分,因此寻找脚本方法从某些组中删除用户。
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多