如何拒绝访问所有页面,只允许在wiki上使用

时间:2013-08-15 15:12:35

标签: mediawiki wiki

我正在使用在freebsd 7.4上运行的mediawiki 1.13.3 我对以下任务感到困惑: 如何拒绝某些用户(在我的wiki中拥有帐户)或这些用户组的所有页面的访问权限,但允许对Wiki上的某些页面进行ReadOnly访问。 实现的目标是无法访问维基上的页面,除非一些用户只允许使用少量页面。

我尝试了一些扩展程序但找不到约20000页和几百个用户的解决方案。

2 个答案:

答案 0 :(得分:2)

请参阅Manual:Preventing access on mediawiki.org, section "Restrict viewing of all pages"

具体来说,允许每个人阅读(但不能编辑)主页和名为公共内容的页面,并且只允许sysops读取和编辑所有页面,您将以下行添加到LocalSettings.php:

# prevent editing and reading by anons (except for exception listed below):
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;

# same for normal registered users:
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['read'] = false;

# allow everyone read access to these pages:
$wgWhitelistRead = array( "Main Page", "Public stuff" );

# allow sysops to read and edit normally:
$wgGroupPermissions['sysop']['edit'] = true;
$wgGroupPermissions['sysop']['read'] = true;

当然,您可以将sysop替换为您自己的custom user group;我只是在示例中使用它,因为它存在于MediaWiki安装库存中。

(一些较旧的示例代码建议在$wgWhitelistRead中也包括"Special:UserLogin"以及可能"Special:ChangePassword""Special:PasswordReset"。在现代MediaWiki版本中,这应该是不必要的,尽管仍然无害。)

答案 1 :(得分:0)

我发现一个非常接近的解决方案是使用简单的安全扩展: 所以我正在创建一个没有访问权限的用户组:

$wgGroupPermissions['user']['read'] = false;

将此组添加到 $ wgRestrictionLevels = array();

然后限制某些页面对该组的读取访问权限。

相当不错但不完全是我想要实现的解决方案。