我正在使用在 freebsd 7.4 上运行的 mediawiki 1.13.3 我对以下任务感到困惑:如何拒绝某些用户(在我的 wiki 中有帐户)或这些用户组对所有页面的访问但允许只读访问对于 wiki 上的某些页面。实现的目标是无法访问 wiki 上的页面,除非某些用户只允许很少的页面。
我已经尝试了一些扩展,但找不到约 20000 个页面和数百个用户的解决方案。
参见手册: mediawiki.org 上的阻止访问,“限制查看所有页面”部分。
具体来说,为了让每个人都可以阅读(但不能编辑)主页和名为Public stuff的页面,并且只允许管理员阅读和编辑所有页面,您可以在 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
上面替换为您自己的自定义用户组;我只是在示例中使用它,因为它存在于库存 MediaWiki 安装中。
(一些较旧的示例代码建议还包括"Special:UserLogin"
并且可能"Special:ChangePassword"
和"Special:PasswordReset"
在中$wgWhitelistRead
。在现代 MediaWiki 版本中,这应该是不必要的,尽管仍然无害。)
我发现一个非常接近的解决方案是使用简单的安全扩展:所以我正在创建一个没有访问权限的用户组:
$wgGroupPermissions['user']['read'] = false;
将此组添加到$wgRestrictionLevels = array();
然后将某些页面的读取权限限制为该组。
相当不错,但不完全是我想要实现的解决方案。