2015-08-03 42 views
1

我试图限制组“测试”的编辑功能,但无法这样做。以下是我迄今为止所做的更改:如何限制自定义组编辑mediawiki上的页面?

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

确定,所以该组的测试仍然可以编辑,是吗?你有没有分配一个用户参加组测试?请确定,“测试”是该用户拥有的_only_组。 wgGroupPermissions是累积性的,所以如果另一个组(用户也属于)拥有授予的权利,则无法在一个组中将其设置为false来撤销权限。阅读https://www.mediawiki.org/wiki/Manual:$wgGroupPermissions并使用https://www.mediawiki.org/wiki/Manual:$wgRevokePermissions取消权利。 – Florian

+0

是的,我将用户't1'分配给组'test'。用户't1'默认会成为默认组'user'的成员吗?如果是,那么如何让他只在新的组里? –

+0

好的。通过使用mediawiki.org/wiki/Manual:$wgRevokePermissions得到它。 Thx Florian。 –

回答

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

MediaWiki内,所有用户(包括匿名用户)自动属于组*,并且所有注册用户(即,不anons)属于组userBy default,这两个自动组都具有edit权限设置为true,因此每个用户都可以自动编辑页面。

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

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

现在只有用户在拥有edit权限设置为true组可以编辑页面。默认情况下没有这样的组,所以要让任何人编辑您wiki上的任何内容,您必须再添加几行到LocalSettings.php。例如,这里是如何让管理员(即用户在组sysop)编辑页面:

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

另外,如已被弗洛里安注意,你可以使用$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; 
相关问题