如何限制自定义组在mediawiki上编辑页面?

时间:2015-08-03 10:44:16

标签: mediawiki

我正在尝试限制群组的编辑功能' test'但无法这样做。以下是我到目前为止所做的更改:

$wgGroupPermissions['test']['read'] = true;
$wgGroupPermissions['test']['edit'] = false;

2 个答案:

答案 0 :(得分:2)

问题是,您创建了一个新组,并且想要撤消该组的权限。 $wgGroupPermissions不会撤消权限。通过$wgGroupPermissions授予的权限是累积的,这意味着,用户所属的所有组的权限反映了用户拥有的权限。如果将组的edit权限设置为false,而另一个组(例如user)具有edit权限(设置为true),则该用户(属于这两个组)将拥有编辑权限。在手册页面上(可能)更好地解释了这一点(参见上面的链接)。

要实现您的目标,您需要:

  • 使用用户的编辑权限删除任何其他组(这不是一个好主意,如果您有任何其他具有特殊权限的组,您将获得一个非常混乱和复杂的权限管理结构)
  • 请改用$wgRevokePermissions,查看有关如何取消群组edit权限的示例

实现您想要的实例:

// inherit all rights from the user group
$wgGroupPermissions['test'] = $wgGroupPermissions['user'];
// revoke the edit permission for users in the group test
$wgRevokePermissions['test']['edit'] = true;

我希望有所帮助!

答案 1 :(得分:1)

在MediaWiki中,所有用户(包括匿名访问者)自动属于组*,所有注册的用户(即非匿名用户)属于组userBy default,这两个自动组都将edit权限设置为true,因此每个用户都可以自动编辑网页。

restrict editing to only certain users,您首先需要通过将以下行添加到LocalSettings.php来删除这些自动编辑权限:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;

现在,只有edit权限设置为true的群组中的用户才能编辑网页。默认情况下没有这样的组,所以要让任何人编辑维基上的任何内容,您必须在LocalSettings.php中添加更多行。例如,以下是如何让管理员(即组sysop中的用户)编辑页面:

$wgGroupPermissions['sysop']['edit'] = true;

或者,正如Florian已经指出的那样,您可以使用$wgRevokePermissions删除某些用户的编辑权限。例如,以下是如何允许所有注册用户blocked中的那些用户进行编辑:

$wgGroupPermissions['*']['edit'] = false;        // anons can't edit
$wgGroupPermissions['user']['edit'] = true;      // normal users can edit
$wgRevokePermissions['blocked']['edit'] = true;  // "blocked" users cannot

(当然,MediaWiki中的内置user blocking功能可以更好地完成此任务。)

如果您希望仅在某些名称空间中限制编辑,则另一个选项是使用$wgNamespaceProtection,这可以让您定义在某些名称空间中编辑页面所需的自定义用户权限。例如,要仅允许自定义组editor中的用户编辑主命名空间中的页面,您可以使用:

$wgNamespaceProtection[NS_MAIN] = array( 'edit-main' );
$wgGroupPermissions['editor']['edit-main'] = true;