uVersion
简体中文
下载 →

Wiki

权限

为群组或用户授予对仓库文件夹的 read / write / none 访问权限。模式、优先级、默认解析、权限测试。

简介

Permissions 选项卡为指定的仓库定义谁可以读取或写入哪些文件夹。 权限的对象是 一个群组或一个用户,适用于某个 路径模式, 并带有一个 级别(write / read / none)。角色说明一个账户能做什么,权限说明 针对哪些文件。

访问与角色

此选项卡对 超级管理员(所有仓库)和 project_admin (其管理的仓库)开放。规则始终附加到所选仓库。

三个级别

级别效果
write对所覆盖路径的读取和写入(检出、签入)。
read只读: 可以同步,不能修改。
none无访问权限: 即使有更宽泛的规则允许,也会显式隐藏某个文件夹。

授予访问权限

带有三态复选框、群组/用户选择器以及 write/read/none 级别栏的文件夹树。
  1. 选择仓库,然后打开 Permissions 选项卡。
  2. 在选择器中选择 对象: 一个群组 一个用户("Groups"和"Users" 两个子列表)。一条规则只针对其中之一,绝不同时针对两者。
  3. 文件夹树 中勾选相关文件夹(复选框有三种状态: 全部 / 部分 / 无)。搜索框可筛选树。
  4. 在出现的栏中选择级别(write / read / none), 然后点击 Apply

对象的活动规则显示在一个表格(模式、级别、优先级)中,你可以逐条删除。

按用户名授予

"+ By username" 按钮可让你为未出现在可见列表中的人授予访问权限,方法是输入其 准确的名称。这是为通常范围之外的账户授予访问权限的方式,例如尚未持有任何权限的 playtester

名称必须 完全匹配(不支持前缀)。该字段只返回标识符和名称,绝不返回角色, 以免被用来探测现有账户。

模式与优先级

勾选的文件夹 Foo/Bar 会成为模式 Foo/Bar/**(该文件夹及其在任意深度包含的 全部内容)。仓库根目录会成为 /**

每条规则会自动获得一个 等于文件夹深度的优先级(段数,根 = 0)。 因此更 具体(更深)的规则会优先于更一般的规则。 例如: 在 Content/** 上设 write,在 Content/Secret/** 上设 none, 则在 Content/ 中处处可写,唯独 Secret/ 除外。

自动归组 如果你勾选某个文件夹的所有子项,客户端会将它们归为单条规则 Parent/** (也覆盖未来的子文件夹),并删除变得多余的子规则。

默认解析

当没有显式规则覆盖某个路径时,有效访问遵循以下模型:

  • 默认情况下,当没有规则匹配时,访问为 read(读取)。
  • adminlead 处处拥有 write(角色绕过)。
  • project_admin其管理的仓库上拥有 write,在其他地方没有特殊权限。
  • 否则,应用最具体的规则;若都不匹配,则为默认读取。

换句话说: 要 禁止 某人读取某个文件夹,仅仅不授予任何权限是不够的(默认是 read), 需要一条显式的 none 规则。

测试权限

Test Permission 面板,其结果显示有效级别以及做出判定的来源和模式。

Test Permission 面板回答「该用户对此路径拥有什么有效访问权限?」。 选择一个用户,输入一个路径(例如 /Content/Maps/Level01.umap)并运行测试。 结果会显示有效级别,以及做出判定的 来源模式, 从而让你理解为何授予或拒绝访问。

对于你无权查看的用户,测试返回与不存在账户相同的「未找到」,以免泄露账户的存在。

常见陷阱

「我什么都没授予,他却能读取」

这是 read 默认值。要关闭某个文件夹,请在其上放置一条显式的 none 规则。

两条规则相互矛盾

最具体的那条(深度最大)获胜。用 测试 查看是哪一条在决定。

尽管有 none 规则,lead 仍保持可写

adminlead 角色会绕过路径规则(处处 write)。none 规则不会限制它们。project_admin 对其自己的仓库也是如此。

通过群组访问与直接访问

访问可能来自账户本身,也可能来自其所属的 群组。如果 删除一条规则没有任何变化,请查找另一个来源(测试会指明是哪一个在起作用)。