Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制自定义组编辑mediawiki上的页面?_Mediawiki - Fatal编程技术网

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

如何限制自定义组编辑mediawiki上的页面?,mediawiki,Mediawiki,我试图限制组“测试”的编辑功能,但无法执行此操作。以下是我到目前为止所做的更改: $wgGroupPermissions['test']['read'] = true; $wgGroupPermissions['test']['edit'] = false; 问题是,您创建了一个新组,并且希望撤消此组的权限。不是用来撤销权限的。通过$wgGroupPermissions授予的权限是累积的,这意味着用户所属的所有组的权限都反映了用户拥有的权限。如果将某个组的编辑权限设置为false,而另一个组(

我试图限制组“测试”的编辑功能,但无法执行此操作。以下是我到目前为止所做的更改:

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

问题是,您创建了一个新组,并且希望撤消此组的权限。不是用来撤销权限的。通过
$wgGroupPermissions
授予的权限是累积的,这意味着用户所属的所有组的权限都反映了用户拥有的权限。如果将某个组的
编辑
权限设置为false,而另一个组(例如
用户
)具有
编辑
权限(设置为true),则该用户(属于两个组)将具有编辑权限。这(也许)在手册页面上有更好的解释(见上面的链接)

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

  • 从用户中删除具有“编辑”权限的任何其他组(这不是一个好主意,如果您有任何具有特殊权限的其他组,您将得到一个非常混乱和复杂的权限管理结构)
  • 请改用,请参阅有关如何撤销组的
    编辑
    权限的示例
实现您想要的示例:

// 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;
我希望这有帮助

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

要删除这些自动编辑权限,首先需要在LocalSettings.php中添加以下行:

$wgGroupPermissions['*']['edit']=false;
$wgGroupPermissions['user']['edit']=false;
现在,只有组中具有
edit
权限设置为
true
的用户才能编辑页面。默认情况下没有这样的组,所以要让任何人编辑wiki上的任何内容,您必须在LocalSettings.php中再添加几行。例如,下面介绍如何让管理员(即组
sysop
中的用户)编辑页面:

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

或者,正如Florian所指出的,您可以使用删除某些用户的编辑权限。例如,下面介绍了如何允许所有注册用户(组
中被阻止的用户除外)编辑:

$wgGroupPermissions['*']['edit']=false;//Anon无法编辑
$wgGroupPermissions['user']['edit']=true;//普通用户可以编辑
$wgRevokePermissions['blocked']['edit']=true;//“被阻止”的用户不能
(当然,MediaWiki中的内置功能可以更好地实现这一点。)


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

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

ok,这样组测试仍然可以编辑,是吗?您是否为组测试分配了用户?请确保,“测试”是该用户拥有的唯一组。wgGroupPermissions是累积的,因此如果一个组(用户也属于该组)已授予权限,则不能通过将该组中的权限设置为false来撤销该权限。读取并用于撤销权限。是的,我已将用户“t1”分配给组“test”。默认情况下,用户“t1”是否为默认组“user”的成员?如果是,那么如何让他只留在新的团队中?好的。通过使用mediawiki.org/wiki/Manual:$wgRevokePermissions获得它。Thx弗洛里安。