我正在尝试限制群组的编辑功能' test'但无法这样做。以下是我到目前为止所做的更改:
$wgGroupPermissions['test']['read'] = true;
$wgGroupPermissions['test']['edit'] = false;
答案 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中,所有用户(包括匿名访问者)自动属于组*
,所有注册的用户(即非匿名用户)属于组user
。 By 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;