Trac 权限
Trac 使用一个简单且区分大小写的权限系统来控制用户可以和不可以访问的内容。
权限可以通过 trac-admin 工具或在 Web 界面的管理选项卡中的通用 / 权限面板进行管理。
除了本页描述的默认权限策略之外,还可以通过启用插件并将其列在 [trac] permission_policies 中来激活其他权限策略。详见 TracFineGrainedPermissions。
访问系统的未认证用户被分配名称 anonymous。为 anonymous 用户分配权限可设置匿名/访客用户的特权。用户没有权限的 Trac 部分将不会在导航中显示。除了这些特权外,用户在认证并登录系统后还可以获得额外的个人权利。所有登录用户都属于虚拟组 authenticated,该组继承 anonymous 的权限。
图形管理选项卡
要访问此选项卡,用户必须拥有以下权限之一:TRAC_ADMIN
、PERMISSION_ADMIN
、PERMISSION_GRANT
、PERMISSION_REVOKE
。权限可以使用 trac-admin
命令授予,详情见下文。
$ trac-admin /path/to/projenv permission add bob TRAC_ADMIN
然后,用户 bob
将能够看到管理选项卡,并可以访问权限菜单。此菜单将允许您执行所有以下操作,但通过浏览器而不是需要服务器的 root 权限。用户名中至少使用一个小写字符,因为全大写名称保留给权限使用。
在图形管理选项卡中,拥有 PERMISSION_GRANT
权限的用户只能授予其自身拥有的权限,而拥有 PERMISSION_REVOKE
权限的用户只能撤销其自身拥有的权限。例如,用户除非拥有 PERMISSION_GRANT
和 MILESTONE_ADMIN
权限,否则无法授予 MILESTONE_ADMIN
;除非拥有 PERMISSION_REVOKE
和 MILESTONE_ADMIN
权限,否则无法撤销 MILESTONE_ADMIN
。PERMISSION_ADMIN
仅仅授予用户 PERMISSION_GRANT
和 PERMISSION_REVOKE
两种权限,而拥有 TRAC_ADMIN
权限的用户可以授予或撤销任何权限。
可用权限
要为用户启用所有权限,请使用 TRAC_ADMIN
权限。此权限就像在 *NIX 系统上拥有 root
权限一样:它将允许您执行任何操作。
否则,可以为用户分配 Trac 不同功能区域的单独权限,并请注意,权限名称为大写
仓库浏览器
BROWSER_VIEW | 在仓库浏览器中查看目录列表 |
FILE_VIEW | 在仓库浏览器中查看文件 |
CHANGESET_VIEW | 查看仓库签入 |
LOG_VIEW | 在仓库浏览器中查看文件和目录的修订日志 |
工单系统
TICKET_VIEW | 查看现有工单并执行工单查询 |
TICKET_CREATE | 创建新工单 |
TICKET_APPEND | 为工单添加评论和附件,并编辑用户创建的工单描述 |
TICKET_CHGPROP | 修改工单属性(优先级、指派、关键词等),但有以下例外:编辑他人创建的工单描述,登录后在抄送字段中添加/移除其他用户 |
TICKET_MODIFY | 包含 TICKET_APPEND 和 TICKET_CHGPROP 两种权限,此外,还允许在默认工作流中解决工单。当可能的负责人列表受限时,可以通过下拉列表将工单分配给用户。 |
TICKET_EDIT_CC | 完全修改抄送字段 |
TICKET_EDIT_DESCRIPTION | 修改描述字段。拥有 TICKET_APPEND 或 TICKET_CHGPROP 权限的用户可以修改其创建的工单描述。 |
TICKET_EDIT_COMMENT | 修改其他用户的评论。任何用户默认都可以修改自己的评论。 |
TICKET_BATCH_MODIFY | 批量修改工单 |
TICKET_ADMIN | 所有 TICKET_* 权限,删除工单附件以及修改报告者字段,这允许代表另一个用户创建工单,并看起来像是另一个用户创建的工单。它还允许通过网络管理模块管理工单属性。 |
路线图
MILESTONE_VIEW | 查看里程碑并将工单分配给里程碑。 |
MILESTONE_CREATE | 创建新里程碑 |
MILESTONE_MODIFY | 修改里程碑 |
MILESTONE_DELETE | 删除里程碑 |
MILESTONE_ADMIN | 所有 MILESTONE_* 权限 |
ROADMAP_VIEW | 查看路线图页面,这与 MILESTONE_VIEW 权限尚不相同,详见 #4292。 |
ROADMAP_ADMIN | 将随 #3022 一并移除,由 MILESTONE_ADMIN 替代。 |
报告
REPORT_VIEW | 查看报告,即查看工单链接。 |
REPORT_SQL_VIEW | 查看报告的 SQL 查询 |
REPORT_CREATE | 创建新报告 |
REPORT_MODIFY | 修改报告 |
REPORT_DELETE | 删除报告 |
REPORT_ADMIN | 所有 REPORT_* 权限 |
维基系统
WIKI_VIEW | 查看维基页面 |
WIKI_CREATE | 创建新维基页面 |
WIKI_MODIFY | 修改维基页面 |
WIKI_RENAME | 重命名维基页面 |
WIKI_DELETE | 删除维基页面和附件 |
WIKI_ADMIN | 所有 WIKI_* 权限,以及 只读 页面的管理。 |
权限
PERMISSION_GRANT | 添加/授予权限 |
PERMISSION_REVOKE | 移除/撤销权限 |
PERMISSION_ADMIN | 所有 PERMISSION_* 权限 |
其他
TIMELINE_VIEW | 查看时间线页面 |
SEARCH_VIEW | 查看并执行搜索查询 |
CONFIG_VIEW | 在关于 Trac中启用额外部分,显示当前配置和已安装插件列表 |
EMAIL_VIEW | 显示电子邮件地址,即使 trac show_email_addresses 配置选项为 false |
附件权限
附件权限由 LegacyAttachmentPolicy
处理,与目前讨论的权限不同,LegacyAttachmentPolicy
提供的权限并非直接授予。相反,创建、查看和删除附件的能力由附件的父领域以及用户在该领域拥有的权限决定。
附件操作由工单、维基和里程碑领域中的以下权限决定
授予者 | 工单 | 维基 | 里程碑 |
---|---|---|---|
ATTACHMENT_CREATE | TICKET_APPEND | WIKI_MODIFY | MILESTONE_MODIFY
|
ATTACHMENT_VIEW | TICKET_VIEW | WIKI_VIEW | MILESTONE_VIEW
|
ATTACHMENT_DELETE | TICKET_ADMIN | WIKI_DELETE | MILESTONE_DELETE
|
已认证用户可以删除他们添加的附件,而无需拥有授予 ATTACHMENT_DELETE
的权限。
如果首选显式附件权限,可以使用 ExtraPermissionsProvider 创建 ATTACHMENT_CREATE
、ATTACHMENT_DELETE
和 ATTACHMENT_VIEW
权限。最简单的实现是仅定义操作。
[extra-permissions] _perms = ATTACHMENT_CREATE, ATTACHMENT_DELETE, ATTACHMENT_VIEW
另一种配置是添加一个 ATTACHMENT_ADMIN
元权限,该权限授予其他 3 种权限。
[extra-permissions] ATTACHMENT_ADMIN = ATTACHMENT_CREATE, ATTACHMENT_DELETE, ATTACHMENT_VIEW
显式权限可以与 LegacyAttachmentPolicy
结合使用,或者可以将 LegacyAttachmentPolicy
从 permission_policies
中移除,在这种情况下,只有被显式授予相应附件操作权限的用户才能创建、删除和查看附件。
授予权限
您可以使用 trac-admin 向用户授予权限。当前的权限集可以通过以下命令列出
$ trac-admin /path/to/projenv permission list
此命令将允许用户 bob 删除报告
$ trac-admin /path/to/projenv permission add bob REPORT_DELETE
permission add
命令也接受多个权限名称
$ trac-admin /path/to/projenv permission add bob REPORT_DELETE WIKI_CREATE
或添加所有权限
$ trac-admin /path/to/projenv permission add bob TRAC_ADMIN
权限组
有两个内置组:authenticated 和 anonymous。任何未登录的用户都会自动加入 anonymous 组。任何已登录的用户也属于 authenticated 组。authenticated 组继承 anonymous 组的权限。例如,如果 anonymous 组拥有 WIKI_MODIFY 权限,则无需再将 WIKI_MODIFY 权限添加到 authenticated 组。
可以定义继承这两个内置组权限的自定义组。
权限可以组合起来形成角色,例如 developer、admin 等。
$ trac-admin /path/to/projenv permission add developer WIKI_ADMIN $ trac-admin /path/to/projenv permission add developer REPORT_ADMIN $ trac-admin /path/to/projenv permission add developer TICKET_MODIFY $ trac-admin /path/to/projenv permission add bob developer $ trac-admin /path/to/projenv permission add john developer
组的成员身份可以通过不带额外参数的 permission list
命令进行检查;结果输出将包含组的成员身份。组名中至少使用一个小写字符,因为全大写名称保留给权限使用。
添加新组和权限
权限组可以通过将用户分配到您希望创建的组来创建,然后为该组分配权限。
以下操作会将 bob 添加到名为 beta_testers 的新组,然后将 WIKI_ADMIN
权限分配给该组。因此,bob 将继承 WIKI_ADMIN
权限。
$ trac-admin /path/to/projenv permission add bob beta_testers $ trac-admin /path/to/projenv permission add beta_testers WIKI_ADMIN
移除权限
权限可以使用“remove”命令移除。
此命令将阻止用户 bob 删除报告
$ trac-admin /path/to/projenv permission remove bob REPORT_DELETE
就像 permission add
命令一样,此命令接受多个权限名称。
您还可以移除特定用户的所有权限
$ trac-admin /path/to/projenv permission remove bob '*'
或为所有用户移除一个权限
$ trac-admin /path/to/projenv permission remove '*' REPORT_ADMIN
创建新权限
要创建自定义权限(例如用于自定义工作流),请在“插件”管理面板中启用可选的 tracopt.perm.config_perm_provider.ExtraPermissionsProvider 组件,并将所需的权限添加到您的 trac.ini 文件中的 [extra-permissions]
部分。更多信息,请在启用该组件后参考 TracIni 页面的文档。
默认权限
默认情况下,在新 Trac 安装中,anonymous 用户将拥有 Trac 中所有内容的查看权限,但无法创建或修改任何内容。另一方面,authenticated 用户将拥有创建和修改工单和维基页面的权限。
anonymous
BROWSER_VIEW CHANGESET_VIEW FILE_VIEW LOG_VIEW MILESTONE_VIEW REPORT_SQL_VIEW REPORT_VIEW ROADMAP_VIEW SEARCH_VIEW TICKET_VIEW TIMELINE_VIEW WIKI_VIEW
authenticated
TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY