手册:用户权限

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:User rights and the translation is 96% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎हिन्दी • ‎Bahasa Indonesia • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎Tagalog • ‎中文

用户权限是可分配给特定用户组的具体访问权和操作权限。 用户组可以通过Special:UserRights特殊页面分配给某用户(或从某用户移除)。 参见Help:用户权限和用户组Help:User rights and groups

访问这个界面本身受userrights权限管理,因此只有Bureaucrats组中的用户可以进行(在默认配置下)。 参见Manual:Setting user groups in MediaWikiManual:Setting user groups in MediaWiki来了解有关管理和分配用户组的内容。

更改用户组权限

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

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

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

示例

这个示例将禁止所有用户访问除$wgWhitelistReadManual:$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> (内容为:用户组页面的名称

在默认情况下,行政员可以将用户从任意用户组中添加或移除。 然而,如果您使用手册:$wgAddGroupsManual:$wgAddGroups手册:$wgRemoveGroupsManual:$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移除。 This code should be placed after any require_once lines that add extensions such as Extension:RenameuserExtension:Renameuser containing code that gives bureaucrats group permissions by default.

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() {
	unset( $wgGroupPermissions['oversight'] );
	unset( $wgGroupPermissions['flow-bot'] );
}

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

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

权限列表

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

权限 描述 默认拥有此权限的用户组 版本
阅读
read 阅读页面 - 当设置为false时,可通过$wgWhitelistReadManual:$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+
编辑
edit 编辑页面 *, user 1.5+
createpage 创建非讨论页面 - 需要edit权限 *, user 1.6+
createtalk 创建讨论页面 - 需要edit权限 *, user 1.6+
move 移动页面 - 需要edit权限 user 1.5+
movefile 移动文件 - 需要move权限且$wgAllowImageMovingManual:$wgAllowImageMoving应为真 user 1.14+
move-subpages 移动页面及其子页面 - 需要move权限 user 1.13+
move-rootuserpages 移动根用户页面 - 需要move权限 user 1.14+
move-categorypages 移动分类页面 - (需要move权限) user 1.25+
createaccount 创建账户 - register / registration * 1.5+
autocreateaccount 通过外部用户账户自动登录 - 受较大限制的“createaccount”版本 1.27+
upload 上传文件 - 需要edit权限 user 1.5+
reupload 覆盖现存文件 - 需要upload权限 user 1.6+
reupload-own 覆盖自己上传的文件 - 需要reupload权限(注意如果用户组已拥有reupload权限的话,就不需要这个) 1.11+
reupload-shared 本地覆盖共享文件库的文件 - (若一个已经存在)用本地文件覆盖 (需要upload权限) user 1.6+
upload_by_url 从URL上传文件 - 需要upload权限 1.8+
editprotected 编辑保护级别为“Allow only administrators”的页面 - 无级联保护 sysop 1.13+
editsemiprotected 编辑保护级别为“Allow only autoconfirmed users”的页面 - 无级联保护 autoconfirmed 1.22+
applychangetags 连同某人的更改一起应用标签 user 1.25+
sendemail 发送电子邮件给其他用户 user 1.16+
管理
delete 删除页面 1.5–1.11: 允许删除或取消删除页面。
1.12+: 允许删除页面。 对于取消删除,目前拥有'undelete'权限,参见下方
sysop 1.5+
bigdelete 删除有大型历史的页面 sysop 1.12+
deletedhistory 查看被删除的历史项目,不含相关文本 sysop 1.6+
deletedtext 查看已被删除的文本及已删除版本间的差异 sysop
undelete 还原页面 sysop 1.12+
browsearchive 搜索已被删除的页面 - 通过Special:Undelete sysop 1.13+
mergehistory 合并页面历史 sysop 1.12+
protect 更改保护级别和编辑受级联保护页面 sysop 1.5+
block 阻止其他用户编辑 - 阻止选项包括阻止编辑和注册新帐户,以及自动阻止同一IP地址上的其他用户。 sysop 1.5+
blockemail 阻止用户发送电子邮件 - 允许在封禁时阻止使用Special:Emailuser界面 sysop 1.11+
hideuser 封禁并隐藏用户名 - (默认不可用)

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

1.10+
unblockself 自我解封 - 若没有此权限,管理员在被其他管理员封禁时管理员不能自我解封 sysop 1.17+
userrights 编辑所有用户权限 - 允许向任何用户分配或移除所有用户组。
*使用$wgAddGroupsManual:$wgAddGroups$wgRemoveGroupsManual:$wgRemoveGroups,您可以设置添加/删除某些组而不是全部的可能性
bureaucrat 1.5+
userrights-interwiki 编辑其它wiki上用户的用户权限 1.12+
rollback 快速回退最后一名用户对特定页面的编辑 sysop 1.5+
markbotedits 标记回退编辑为机器人编辑 - 参见 手册:管理员#回退 sysop 1.12+
pagelang 更改页面语言 - $wgPageLanguageUseDBManual:$wgPageLanguageUseDB 必须为true 1.24+
patrol 标记他人的编辑为已巡查 - $wgUseRCPatrolManual:$wgUseRCPatrol 必须为true sysop 1.5+
patrolmarks 查看最近更改的巡查标记 1.16+
changetags 在个别修订和日志记录中添加和移除任意标签 - 目前未被扩展使用 user 1.25+
editcontentmodel 编辑页面的内容模型 1.23.7+
editinterface 编辑用户界面 - 包含 界面信息 sysop 1.5+
editusercssjs ⧼right-editusercssjs⧽ - 在1.16中拆分为editusercss和edituserjs,并已弃用,在1.29中被移除 1.12+
editusercss 编辑其他用户的CSS文件 sysop 1.16+
edituserjs 编辑其他用户的JavaScript文件 sysop 1.16+
editmyusercss 编辑您的用户CSS文件 * 1.22+
editmyuserjs 编辑您的用户JavaScript文件 * 1.22+
editmywatchlist 编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。 * 1.22+
viewmywatchlist 查看您的监视列表 * 1.22+
editmyprivateinfo 编辑您的私人数据(如电子邮件地址、真实姓名) * 1.22+
viewmyprivateinfo 查看您的私人数据(如电子邮件地址、真实姓名) * 1.22+
editmyoptions 编辑您的个人设置 * 1.22+
suppressrevision 查看、隐藏与取消隐藏任何用户对页面做出的特定版本 - 在版本1.13之前,被命名为hiderevision(默认不启用) 1.6+
viewsuppressed 查看被隐藏的任何用户的修订 - 即一个比 suppressrevision 更小的权限(默认不启用) 1.24+
deletelogentry 删除和恢复特定的日志项目 - 允许删除/反删除特定日志条目的信息(操作文本,摘要,进行操作的用户)(默认不启用) 1.20+
deleterevision 删除和恢复页面的特定版本 - 允许删除/反删除特定修订的信息(修订文本,编辑摘要,编辑用户) 在1.20版本中拆分为删除修订版本和删除日志记录(默认不启用) 1.6+
sendemail-new-users ⧼right-sendemail-new-users⧽ user 1.31+
管理
siteadmin 锁定和解锁数据库 - 阻止与网站的所有交互(除了访问)。 默认不启用 1.5+
import 从其他wiki导入页面 - “跨维基” sysop 1.5+
importupload 通过上传文件导入页面 - 这个权限在1.5版本及之前被称为“importraw” sysop 1.5+
trackback 已过时。 允许移除trackbacks(当$wgUseTrackbacksManual:$wgUseTrackbacks为“true”时) 1.7 - 1.18
unwatchedpages 查看未受监视页面的列表 - 列出没有用户监视的页面 sysop 1.6+
managechangetags 创建和(取消)激活标签 - 目前未被扩展使用 sysop 1.25+
技术
bot 被视为自动程序 - 可随意地查看 bot 1.5+
purge 无确认清除页面缓存 - URL参数&action=purge user 1.10+
minoredit 标记编辑为小编辑 user 1.6+
nominornewtalk 不使小编辑在讨论页面引发新信息提示 - 需要minor edit 权限 bot 1.9+
noratelimit 不受速率限制影响 - 不受速率限制影响(在引入此权限之前,配置$wgRateLimitsExcludedGroupsManual:$wgRateLimitsExcludedGroups用于实现此目的) sysop, bureaucrat 1.13+
ipblock-exempt 绕过IP封禁、自动封禁和段封禁 sysop 1.9+
proxyunbannable ⧼right-proxyunbannable⧽ sysop 1.7+
autopatrol 使自己的编辑自动标记为已巡查 - $wgUseRCPatrolManual:$wgUseRCPatrol 必须为true bot, sysop 1.9+
apihighlimits 在API查询中使用更高的上限 bot, sysop 1.12+
writeapi 使用写入API *, user, bot 1.13+
suppressredirect 移动页面时不创建来源页面的重定向 bot, sysop 1.12+
autoconfirmed 不受基于IP的速率限制 - 使用'autoconfirmed'组,有关详细信息,请参阅下表 autoconfirmed, bot, sysop 1.6+
emailconfirmed 已过时。 被用于'emailconfirmed'组,有关详细信息,请参阅下表 1.7 - 1.13
虽然这些权限都各受控制,但有时执行某些操作需要多个权限。 例如,允许人们编辑页面但不能阅读页面并没有意义,因为为了编辑页面,你必须首先能够阅读它(假设没有页面被列入白名单)。 允许上传但不允许进行编辑也没有意义,因为上传图片,必须包含创建图片说明页面等等。


用户组列表

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

用户组 描述 默认权限 版本
* 所有用户(包括匿名用户)。 createaccount, read, edit, createpage, createtalk, writeapi, editmyusercss, editmyuserjs, viewmywatchlist, editmywatchlist, viewmyprivateinfo, editmyprivateinfo, editmyoptions 1.5+
user 注册用户。 move, move-subpages, move-rootuserpages, move-categorypages, movefile, read, edit, createpage, createtalk, writeapi, upload, reupload, reupload-shared, minoredit, purge, sendemail, applychangetags, changetags
autoconfirmed 满足$wgAutoConfirmAgeManual:$wgAutoConfirmAge中设置的注册时间及$wgAutoConfirmCount中设置的编辑数量的注册用户。 autoconfirmed, editsemiprotected 1.6+
emailconfirmed 已过时,但$wgEmailAuthenticationManual:$wgEmailAuthentication仍然存在。 已确认电子邮件地址的注册用户。 1.7 - 1.13
bot 拥有机器人权限的用户(用于自动化脚本)。 bot, autoconfirmed, editsemiprotected, nominornewtalk, autopatrol, suppressredirect, apihighlimits, writeapi 1.5+
sysop 默认情况下,用户可以删除和恢复页面,阻止和取消阻止用户等等。 block, createaccount, delete, bigdelete, deletedhistory, deletedtext, undelete, editinterface, editusercss, edituserjs, import, importupload, move, move-subpages, move-rootuserpages, move-categorypages, patrol, autopatrol, protect, editprotected, proxyunbannable, rollback, upload, reupload, reupload-shared, unwatchedpages, autoconfirmed, editsemiprotected, ipblock-exempt, blockemail, markbotedits, apihighlimits, browsearchive, noratelimit, movefile, unblockself, suppressredirect, upload_by_url, mergehistory, managechangetags 1.5+
bureaucrat 默认情况下,该组用户可以更改其他用户的权限。 userrights, noratelimit 1.5+
developer “siteadmin”权限的用户组。默认情况下该组及权限被弃用。 1.5

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

默认权限

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

添加新权限

编码器信息仅供参考。

If you're adding a new right in core, for instance to control a new special page, you are required to add it to the list of available rights in User.phpManual:User.php, $mCoreRights (example). If you're doing so in an extension, you instead need to use $wgAvailableRightsManual:$wgAvailableRights.

You probably also want to also assign it to some user group by editing $wgGroupPermissionsManual:$wgGroupPermissions described above.

If you want this right to be accessible to external applications by OAuth or by bot passwords, then you will need to add it to a grant by editing $wgGrantPermissionsManual:$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;

You also need to add right-[name] and action-[name] interface messages to /languages/i18n/en.json (with documentation in qqq.json). The right-* messages can be seen on Special:ListGroupRights and the action-* messages are used in a sentence like "You do not have permission to ...".

参见

手册:日志操作Manual:Log actions 事件: 封禁Manual:Block and unblock导入Manual:Importing revisions手册:合并历史Manual:Merging historiesPage deletionManual:Page deletionPage movingManual:Page moving手册:页面恢复Manual:Page restoration手册:巡查Manual:Patrolling保护Manual:Protection重命名用户Extension:Renameuser手册:修订版本删除Manual:RevisionDelete感谢Extension:Thanks手册:上传Manual:Uploading手册:用户创建Manual:User creation用户权限管理Manual:User rightsMerging usersManual:Merging users

设置: 手册:$wgLogTypesManual:$wgLogTypes手册:$wgLogActionsManual:$wgLogActions手册:$wgLogNamesManual:$wgLogNames手册:$wgLogHeadersManual:$wgLogHeaders手册:$wgLogActionsHandlersManual:$wgLogActionsHandlers手册:$wgLogRestrictionsManual:$wgLogRestrictions$wgFilterLogTypesManual:$wgFilterLogTypes手册:$wgActionFilteredLogsManual:$wgActionFilteredLogs

杂项: Logging to Special:LogManual:Logging to Special:LogAPIAPI:Logevents登录表单Manual:Logging tableNull revisionManual:Null revision