|
在1.5版本之后,MediaWiki增加了用户权限管理功能,允许创建或修改用户组。mediawiki通过设定用户组的权限、指定用户所在用户组来实现对用户权限的控制。
要更改一个用户所属的用户组, 请使用管理员(sysop)身份登录,然后到Special:Userrights(用户权限管理)。每个用户组都可以被赋予以下权限(许可)的一个组合。
权限的设定
在哪里设定?
权限的设定应该在localsettings.php中添加、修改代码。参见localsettings.php的修改方法。
(mediawiki的初始权限设定保存在includes/defaultsettings.php中,可以参考这里的写法,但不要直接改动这里)
如何设定权限?
权限设定代码如下:
$wgGroupPermissions['用户组']['权限名称'] = 取值;
* 用户组:设定权限的目标范围,*代表所有用户组,user代表登录用户,sysop代表管理员。更详细的介绍参见mediawiki的用户组。
注意:没有单独的匿名用户组。
* 权限名称:用户注册、页面访问、页面修改等都有单独的权限名称,参见下文说明。
* 取值:true代表允许,false代表禁止。二者取一。
一旦你更新了localsettings.php,修改内容会即时生效。
Image:zhuyi.jpg要将语句紧跟在“require_once( "includes/DefaultSettings.php" )”语句之后。
设定实例:
例如禁止匿名用户修改页面:
- $wgGroupPermissions['*']['edit'] = false;
- $wgGroupPermissions['user']['edit'] = true;
复制代码
说明:由于无法单独控制匿名用户组,所以采用*首先对所有用户进行修改限制;然后单独对登录用户打开修改权限。
由于管理员也是登录用户,所以不必单独继续设置?(欢迎补充资料)
可用的权限
mediawiki已经内置了很多权限,到mediawiki 1.6基本完善,后续版本仍有少量补充。例如,用户注册、页面访问、页面修改、文件上传等都有单独的权限可供配置,从而使站点有良好的权限控制。常用权限如下:
* read:页面浏览
* edit:编辑页面
* createpage:创建新文章
* createaccount:创建帐户
* move:页面移动/文章改名
* upload:图片及文件上传
此外,mediawiki的权限具有良好的扩展性,可以增加细分的权限并进行扩展(extension)进行控制。
更多权限及详细介绍请参见Mediawiki的权限说明。
在数据库中手工改变用户组
用户权限包含在user_groups表中,该表有两个字段,分别是ug_user和ug_group。对用户所属的每一个组,都必须有一行插入。您必须从用户表(users)中获知用户的ID。以下的SQL查询语句将能完成此功能。在下例中将 1 替换为从users表中得到的ID号.
- INSERT INTO user_groups (ug_user, ug_group) VALUES ('1', 'bureaucrat');
- INSERT INTO user_groups (ug_user, ug_group) VALUES ('1', 'sysop');
复制代码
测试
管理组权限
要改变已有组的访问等级或添加新组,您需要能通过shell/ftp访问MediaWiki所运行的机器。您可以如下例所示在LocalSettings.php中将许可移除或添加到一个组.
禁止匿名访问者创建帐号(它取代了1.4中的 $wgWhitelistAccount)
$wgGroupPermissions['*']['createaccount'] = false;
要求用户登录后才能编辑(它取代了1.4中的$wgWhitelistEdit)
$wgGroupPermissions['*']['edit'] = false;
以下设置尽管不值得做,但可能您还是要做
$wgShowIPinHeader = false; # 对于没有登录的用户
它将对没有登录的用户移除页面顶部的讨论页链接,这从1.4以来没有改变.
如果设置了$wgWhitelistRead,您必须同时禁用'read'许可。这将作用在匿名帐户上。首页和登录页所用的任何CSS和JS页面也是可访问的,这将防止IE的脚本错误对话框出现.
- $wgWhitelistRead = array( "首页", "Special:Userlogin", "-", "MediaWiki:Monobook.css" );
- $wgGroupPermissions['*']['read'] = false;
复制代码
在此列表中,首页并不是强制性的。要避免"请先登录"的重定向页,您可以改变includes/OutputPage.php中的loginToUse():
- function loginToUse() {
- $titleObj = Title::makeTitle( NS_SPECIAL, "Userlogin" );
- $this->redirect( $titleObj->getFullURL() );
- }
复制代码
您也可以定义新组,随后可以通过Special:Userrights(用户权限管理)为它添加用户:
- $wgGroupPermissions['ninja']['delete'] = true;
- $wgGroupPermissions['ninja']['block'] = true;
- $wgGroupPermissions['ninja']['bot'] = true;
复制代码
默认
作为参考,这里是在1.6中默认的组/许可(在includes/DefaultSettings.php中):
- // 所有访问者隐含所在的组
- $wgGroupPermissions['*' ]['createaccount'] = true;
- $wgGroupPermissions['*' ]['read'] = true;
- $wgGroupPermissions['*' ]['edit'] = true;
- $wgGroupPermissions['*' ]['createpage'] = true;
- $wgGroupPermissions['*' ]['createtalk'] = true;
- // 所有登录用户隐含所在的组
- $wgGroupPermissions['user' ]['move'] = true;
- $wgGroupPermissions['user' ]['read'] = true;
- $wgGroupPermissions['user' ]['edit'] = true;
- $wgGroupPermissions['user' ]['createpage'] = true;
- $wgGroupPermissions['user' ]['createtalk'] = true;
- $wgGroupPermissions['user' ]['upload'] = true;
- $wgGroupPermissions['user' ]['reupload'] = true;
- $wgGroupPermissions['user' ]['reupload-shared'] = true;
- $wgGroupPermissions['user' ]['minoredit'] = true;
- // 所有通过 $wgAutoConfirmAge 的用户隐含所在的组
- $wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;
- // 具有机器人特权的用户可使他们的编辑默认在各种日志页面隐藏起来
- $wgGroupPermissions['bot' ]['bot'] = true;
- $wgGroupPermissions['bot' ]['autoconfirmed'] = true;
- // 大多数额外的许可功能都在这里
- $wgGroupPermissions['sysop']['block'] = true;
- $wgGroupPermissions['sysop']['createaccount'] = true;
- $wgGroupPermissions['sysop']['delete'] = true;
- // 可以查看被删除的条目,但不能查看或重新载入被删除的文本
- $wgGroupPermissions['sysop']['deletedhistory'] = true;
- $wgGroupPermissions['sysop']['editinterface'] = true;
- $wgGroupPermissions['sysop']['import'] = true;
- $wgGroupPermissions['sysop']['importupload'] = true;
- $wgGroupPermissions['sysop']['move'] = true;
- $wgGroupPermissions['sysop']['patrol'] = true;
- $wgGroupPermissions['sysop']['protect'] = true;
- $wgGroupPermissions['sysop']['rollback'] = true;
- $wgGroupPermissions['sysop']['upload'] = true;
- $wgGroupPermissions['sysop']['reupload'] = true;
- $wgGroupPermissions['sysop']['reupload-shared'] = true;
- $wgGroupPermissions['sysop']['unwatchedpages'] = true;
- $wgGroupPermissions['sysop']['autoconfirmed'] = true;
复制代码
|
|