Open main menu
This page is a translated version of the page Manual:User rights and the translation is 97% complete.

Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Tagalog • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎српски / srpski • ‎українська • ‎हिन्दी • ‎মেইতেই লোন্ • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

用户权限是可分配给特定用户组的具体访问权和操作权限。

MediaWiki ships with a default set of user rights and user groups, but these can be customized. This page explains the default rights and groups and how to customize them.

For information about how to add and remove individual wiki users from groups, see Help:用户权限和用户组 and Manual:Setting user groups in MediaWiki .

Contents

更改用户组权限

MediaWiki安装程序会为默认用户组分配一些权限(见下文)。 你可以通过使用语法编辑LocalSettings.php 中的$wgGroupPermissions 中的数组来更改默认的权限。

$wgGroupPermissions['group']['right'] = true /* 或者为 false */;
在默认安装下,$wgGroupPermissions将在includes/DefaultSettings.php中被设置,而不是LocalSettings.php中。 你需要在这个文件中添加内容。

如果某个用户存在于多个用户组,则他将获取所在组的所有权限。 包括匿名用户在内的所有用户都在'*'用户组中,所有注册用户都在'user'用户组中。 除了默认用户组之外,您还可以用同样的方式创建新用户组。

示例

这个示例将禁止所有用户访问除$wgWhitelistRead 外的页面,但是仅对于注册用户开放。

$wgGroupPermissions['*']['read']    = false;
# 下面一行不是必须的,因为它已被设置与默认值中。对于'*'设置的禁止权限不会影响到设置为启用权限的用户组。
$wgGroupPermissions['user']['read'] = true;

下面的例子将禁止所有用户编辑页面,然后仅允许已确认的电子邮件地址的用户编辑。

# 禁止所有用户编辑。
$wgGroupPermissions['*']['edit']              = false;
# 禁止注册用户编辑(默认情况下'user'用户组将被允许编辑,即便'*'被设置为禁止)。
$wgGroupPermissions['user']['edit']           = false;
# 将已确认电子邮箱的用户加入用户组中。
$wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
# 在用户列表中隐藏该组。
$wgImplicitGroups[] = 'emailconfirmed';
# 最后,赋予该用户组编辑权限。
$wgGroupPermissions['emailconfirmed']['edit'] = true;

创建用户组并分配权限

您可以通过定义新用户组的权限$wgGroupPermissions['<group-name>']来创建新的用户组,“<group-name>”为用户组的名称。

除了分配权限,您应该创建这三个wiki页面与适合的内容:

  • MediaWiki:Group-<group-name> (内容为:用户组的名称)
  • MediaWiki:Group-<group-name>-member (内容为:用户组成员的名称
  • MediaWiki:Grouppage-<group-name> (内容为:用户组页面的名称

在默认情况下,行政员可以将用户从任意用户组中添加或移除。 然而,如果您使用手册:$wgAddGroups 手册:$wgRemoveGroups ,您或许也应该修改它们。

示例

下面的例子将会随意地添加一个名为“ninja”的用户组,且该用户组能够封禁用户、删除页面以及默认情况下隐藏更改日志。

$wgGroupPermissions['ninja']['bot']    = true;
$wgGroupPermissions['ninja']['block']  = true;
$wgGroupPermissions['ninja']['delete'] = true;
注意:用户组名称不可包含空格,因此应使用'random-group''random_group'代替'random group'

在本例中,您或许应该创建这些页面:

  • MediaWiki:Group-ninja (内容为:Ninjas
  • MediaWiki:Group-ninja-member (内容为:ninja
  • MediaWiki:Grouppage-ninja (内容为:Project:Ninjas

这确保了该组在界面中将被称为“Ninjas”,该组成员被称为“ninja”,该组的概述的页面为Project:Ninjas

下面的示例默认情况下禁止写入(页面编辑和创建),创建一个名为“Write”的组,并授予其写访问权限。用户可以通过Special:UserRights手动添加到此组:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['Write']['edit'] = true;
$wgGroupPermissions['Write']['createpage'] = true;

在本例中,您或许也应该创建这些页面:

  • MediaWiki:Group-Write (内容为:Writers)
  • MediaWiki:Group-Write-member (内容为:Writer
  • MediaWiki:Grouppage-Write (内容为:Project:Write

移除预定义用户组

MediaWiki安装完成后即用了一些预设的用户组。 大多数情况下这些组可以通过取消设置相应的数组来删除,其中包括$wgGroupPermissions['<group-name>']。 详细内容见下。

示例

这个例子将会彻底取消行政员这一用户组。 需要确保所有这6个变量未设置于任何希望从Special:ListGroupRights列举项中移除的用户组;然而仅仅取消设置$wgGroupPermissions将足以从Special:UserRights移除。 此代码应放在任何require_once行之后,这些行添加扩展名,例如Extension:Renameuser ,其中包含默认情况下赋予行政员组权限的代码。

unset( $wgGroupPermissions['bureaucrat'] );
unset( $wgRevokePermissions['bureaucrat'] );
unset( $wgAddGroups['bureaucrat'] );
unset( $wgRemoveGroups['bureaucrat'] );
unset( $wgGroupsAddToSelf['bureaucrat'] );
unset( $wgGroupsRemoveFromSelf['bureaucrat'] );

在某些扩展(例如Flow、Semantic MediaWiki等)中,在扩展注册或注册功能期间添加权限。在这种情况下,可能需要在LocalSettings.php中使用注册功能来删除一些预定义的用户组:

$wgExtensionFunctions[] = function() use ( &$wgGroupPermissions ) {
    unset( $wgGroupPermissions['oversight'] );
    unset( $wgGroupPermissions['flow-bot'] );
};

关于“user”用户组的注意事项

使用上述机制,可以移除管理员、行政员和机器人用户组,如果被使用通常可以通过 用户权限系统分配。 但是,目前无法移除user用户组。 此组不是通过通常的权限系统分配的。 相反,每个登录用户都会自动成为该组的成员。 这是MediaWiki中的硬编码,目前不能轻易更改。

权限列表

下列的用户权限在MediaWiki的最新版可用。 如果您使用的是旧版本,请查看您的维基上的“Special:Version”,并查看您使用的版本是否包含在“版本”列中。

权限 描述 默认拥有此权限的用户组 版本
阅读
read 阅读页面 - 当设置为false时,可通过$wgWhitelistRead 访问特定页面
  警告: Setting the user right "read" (allow viewing pages) to false will only protect wiki (article, talk, ...) pages, but uploaded files (images, files, docs... in the $wgUploadPath subdirectories) will always remain readable via direct access by default.
Use the information from Manual:Image Authorisation and img_auth.php pages when you have the need to restrict image views and file download access to only logged-in users.
*, user 1.5+
编辑
applychangetags 连同某人的更改一起应用标签 user 1.25+
autocreateaccount 通过外部用户账户自动登录 - 受较大限制的“createaccount”版本 1.27+
createaccount 创建账户 - register / registration *, sysop 1.5+
createpage 创建非讨论页面 - 需要edit权限 *, user 1.6+
createtalk 创建讨论页面 - 需要edit权限 *, user 1.6+
edit 编辑页面 *, user 1.5+
editsemiprotected 编辑保护级别为“Allow only autoconfirmed users”的页面 - 无级联保护 autoconfirmed, bot, sysop 1.22+
editprotected 编辑保护级别为“Allow only administrators”的页面 - 无级联保护 sysop 1.13+
minoredit 标记编辑为小编辑 user 1.6+
move 移动页面 - 需要edit权限 user, sysop 1.5+
move-categorypages 移动分类页面 - 需要move权限 user, sysop 1.25+
move-rootuserpages 移动根用户页面 - 需要move权限 user, sysop 1.14+
move-subpages 移动页面及其子页面 - 需要move权限 user, sysop 1.13+
movefile 移动文件 - 需要move权限且$wgAllowImageMoving 应为真 user, sysop 1.14+
reupload 覆盖现存文件 - 需要upload权限 user, sysop 1.6+
reupload-own 覆盖自己上传的文件 - 需要upload权限(注意如果用户组已拥有reupload权限的话,就不需要这个) 1.11+
reupload-shared 本地覆盖共享文件库的文件 - (若一个已经存在)用本地文件覆盖 (需要upload权限) user, sysop 1.6+
sendemail 发送电子邮件给其他用户 user 1.16+
upload 上传文件 - 需要edit权限及$wgEnableUploads 設定為true user, sysop 1.5+
upload_by_url 从URL上传文件 - 需要upload权限 (在1.20之前,它被賦予給管理員) 1.8+
管理
bigdelete 删除有大型历史的页面 (as determined by $wgDeleteRevisionsLimit ) sysop 1.12+
block 阻止其他用户编辑 - 阻止选项包括阻止编辑和注册新帐户,以及自动阻止同一IP地址上的其他用户。 sysop 1.5+
blockemail 阻止用户发送电子邮件 - 允许在封禁时阻止使用Special:Emailuser界面 sysop 1.11+
browsearchive 搜索已被删除的页面 - 通过Special:Undelete sysop 1.13+
changetags 在个别修订和日志记录中添加和移除任意标签 - 目前未被扩展使用 user 1.25+
delete 删除页面 1.5–1.11: 允许删除或取消删除页面。
1.12+: 允许删除页面。 对于取消删除,目前拥有'undelete'权限,参见下方
sysop 1.5+
deletedhistory 查看被删除的历史项目,不含相关文本 sysop 1.6+
deletedtext 查看已被删除的文本及已删除版本间的差异 sysop
deletelogentry 删除和恢复特定的日志项目 - 允许删除/反删除特定日志条目的信息(操作文本,摘要,进行操作的用户)(默认不启用) 1.20+
deleterevision 删除和恢复页面的特定版本 - 允许删除/反删除特定修订的信息(修订文本,编辑摘要,编辑用户) 在1.20版本中拆分为删除修订版本和删除日志记录(默认不启用) 1.6+
editcontentmodel 编辑页面的内容模型 user 1.23.7+
editinterface 编辑用户界面 - 包含界面信息。 现在要编辑全站的CSS/JSON/JS,需要隔离权限,详细见下文。 sysop, interface-admin 1.5+
editmyoptions 编辑您的个人设置 * 1.22+
editmyprivateinfo 编辑您的私人数据(如电子邮件地址、真实姓名) * 1.22+
editmyusercss 编辑您的用户CSS文件 - 在1.31之前,它被賦予給所有人(即「*」)(注意如果用戶組已經有editusercss權限則不需要) user 1.22+
editmyuserjs 编辑您的用户JavaScript文件 - 在1.31之前,它被賦予給所有人(即「*」)(注意如果用戶組已經有edituserjs權限則不需要) user 1.22+
editmyuserjson 编辑您的用户JSON文件 (注意如果用戶組已經有edituserjson權限則不需要) user 1.31+
editmywatchlist 编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。 * 1.22+
editsitecss 编辑全站CSS interface-admin 1.32+
editsitejs 编辑全站JavaScript interface-admin 1.32+
editsitejson 编辑全站JSON interface-admin 1.32+
editusercss 编辑其他用户的CSS文件 interface-admin 1.16+
edituserjs 编辑其他用户的JavaScript文件 interface-admin 1.16+
edituserjson 编辑其他用户的JSON文件 interface-admin 1.31+
hideuser 封禁并隐藏用户名 - (默认不可用)

默认仅能对于不多于1000次编辑的用户可用。 使用$wgHideUserContribLimit来禁用这一限制。

1.10+
markbotedits 标记回退编辑为机器人编辑 - 参见 手册:管理员#回退 sysop 1.12+
mergehistory 合并页面历史 sysop 1.12+
pagelang 更改页面语言 - $wgPageLanguageUseDB 必须为true 1.24+
patrol 标记他人的编辑为已巡查 - $wgUseRCPatrol 必须为true sysop 1.5+
patrolmarks 查看最近更改的巡查标记 1.16+
protect 更改保护级别和编辑受级联保护页面 sysop 1.5+
rollback 快速回退最后一名用户对特定页面的编辑 sysop 1.5+
suppressionlog 查看非公开日志 1.6+
suppressrevision 查看、隐藏与取消隐藏任何用户对页面做出的特定版本 - 在版本1.13之前,被命名为hiderevision(默认不启用) 1.6+
unblockself 自我解封 - 若没有此权限,管理员在被其他管理员封禁时管理员不能自我解封 sysop 1.17+
undelete 还原页面 - requires deletedhistory right sysop 1.12+
userrights 编辑所有用户权限 - 允许向任何用户分配或移除所有用户组。
*使用$wgAddGroups $wgRemoveGroups ,您可以设置添加/删除某些组而不是全部的可能性
bureaucrat 1.5+
userrights-interwiki 编辑其它wiki上用户的用户权限 1.12+
viewmyprivateinfo 查看您的私人数据(如电子邮件地址、真实姓名) * 1.22+
viewmywatchlist 查看您的监视列表 * 1.22+
viewsuppressed 查看被隐藏的任何用户的修订 - 即一个比「suppressrevision」更小的权限(注意如果用戶組已經有suppressrevision權限則不需要) 1.24+
管理
autopatrol 使自己的编辑自动标记为已巡查 - $wgUseRCPatrol 必须为true bot, sysop 1.9+
deletechangetags 从数据库删除标签 - 目前未被扩展使用 sysop 1.28+
import 从其他wiki导入页面 - “跨维基” sysop 1.5+
importupload 通过上传文件导入页面 - 这个权限在1.5版本及之前被称为“importraw” sysop 1.5+
managechangetags 创建和(取消)激活标签 - 目前未被扩展使用 sysop 1.25+
siteadmin 锁定和解锁数据库 - 阻止与网站的所有交互(除了访问)。 (默认情况下不可用) 1.5+
unwatchedpages 查看未受监视页面的列表 - 列出没有用户监视的页面 sysop 1.6+
技术
apihighlimits 在API查询中使用更高的上限 bot, sysop 1.12+
autoconfirmed 不受基于IP的速率限制 - 使用'autoconfirmed'组,有关详细信息,请参阅下表 autoconfirmed, bot, sysop 1.6+
bot 被视为自动程序 - 可随意地查看 bot 1.5+
ipblock-exempt 绕过IP封禁、自动封禁和段封禁 sysop 1.9+
nominornewtalk 不使小编辑在讨论页面引发新信息提示 - 需要minor edit 权限 bot 1.9+
noratelimit 不受速率限制影响 - 不受速率限制影响(在引入此权限之前,配置$wgRateLimitsExcludedGroups 用于实现此目的) sysop, bureaucrat 1.13+
purge 清除页面缓存 - URL参数&action=purge user 1.10+
suppressredirect 移动页面时不创建来源页面的重定向 bot, sysop 1.12+
writeapi 使用写入API *, user, bot 1.13+
虽然这些权限都各受控制,但有时执行某些操作需要多个权限。 例如,允许人们编辑页面但不能阅读页面并没有意义,因为为了编辑页面,你必须首先能够阅读它(假设没有页面被列入白名单)。 允许上传但不允许进行编辑也没有意义,因为上传图片,必须包含创建图片说明页面等等。

用户组列表

以下用户组在最新版本的MediaWiki中可用。 如果您使用的是旧版本,那么其中一些可能无法实现。

用户组 描述 默认权限 版本
* 所有用户(包括匿名用户)。 createaccount, createpage, createtalk, edit, editmyoptions, editmyprivateinfo, editmywatchlist, read, viewmyprivateinfo, viewmywatchlist, writeapi 1.5+
user 注册用户。 applychangetags, changetags, createpage, createtalk, edit, editcontentmodel, editmyusercss, editmyuserjs, editmyuserjson, minoredit, move, move-categorypages, move-rootuserpages, move-subpages, movefile, purge, read, reupload, reupload-shared, sendemail, upload, writeapi
autoconfirmed 满足$wgAutoConfirmAge 中设置的注册时间及$wgAutoConfirmCount中设置的编辑数量的注册用户。 autoconfirmed, editsemiprotected 1.6+
bot 拥有机器人权限的用户(用于自动化脚本)。 autoconfirmed, autopatrol, apihighlimits, bot, editsemiprotected, nominornewtalk, suppressredirect, writeapi 1.5+
sysop 默认情况下,用户可以删除和恢复页面,阻止和取消阻止用户等等。 apihighlimits, autoconfirmed, autopatrol, bigdelete, block, blockemail, browsearchive, createaccount, delete, deletedhistory, deletedtext, editinterface, editprotected, editsemiprotected, editsitejson, edituserjson, import, importupload, ipblock-exempt, managechangetags, markbotedits, mergehistory, move, move-categorypages, move-rootuserpages, move-subpages, movefile, noratelimit, patrol, protect, proxyunbannable, reupload, reupload-shared, rollback, suppressredirect, unblockself, undelete, unwatchedpages, upload 1.5+
interface-admin 可以編輯全站CSS/JS的用戶。 editinterface, editsitecss, editsitejs, editsitejson, editusercss, edituserjs, edituserjson 1.32+
bureaucrat 默认情况下,该组用户可以更改其他用户的权限。 noratelimit, userrights 1.5+

从MW 1.12开始,您可以使用$wgAutopromote 创建您自己的组,用户将自动升级到该组(使用自动确认和电子邮件确认)。 您甚至可以通过只为其分配权限来创建任何自定义用户组。

默认权限

默认权限已在DefaultSettings.php 中定义。

添加新权限

编码器信息仅供参考。

如果您在核心中添加新权限,例如控制新的特殊页面,则必须将其添加到User.php 中的可用权限列表中$mCoreRightsexample)。 如果你在扩展程序中这样做 ,则需要使用$wgAvailableRights

您可能还希望通过编辑上述$wgGroupPermissions 将其分配给某个用户组。

如果你希望該權限能夠被外部應用程式透過OAuth 機器人密碼存取,則你需要編輯$wgGrantPermissions 來加到授權中。

// create ninja-powers right
$wgAvailableRights[] = 'ninja-powers';

//add ninja-powers to the ninja-group
$wgGroupPermissions['ninja']['ninja-powers'] = true;

//add ninja-powers to the 'basic' grant so we can use our ninja powers over an API request
$wgGrantPermissions['basic']['ninja-powers'] = true;

您还需要将right-[name]action-[name]接口消息添加到/languages/i18n/en.json(包含qqq.json中的文档)。 右侧*消息可以在Special:ListGroupRights上看到,而action-*消息则用在您没有权限……这样的句子中。

参见