MediaWiki/Ограничение доступа

From SysadminWiki.ru
Jump to: navigation, search

Читайте также:

  • MediaWiki - общая статья об установке и настройке MediaWiki
  • MediaWiki/Wiki family (farm) - основная статья о создании фермы вики на движке MediaWiki.


В движке MediaWiki средства ограничения доступа очень скудны, так как он проектировался и развивается как движок для общедоступных вики.

О настройках уровня доступа можно почитать в статье Preventing access и в других, на которые она ссылается.

Список групп, список уровней доступа и настройки доступа по умолчанию перечислены в статье User rights.

В MediaWiki группы имеют смысл ролей назначаемых пользователям. В какие группы пользователь входит, те права он и имеет.

  • * (звёздочка) - незарегистрированный пользователь
  • user - любой зарегистрированный пользователь

Зарегистрированные пользователи могут также входить в группы

  • bot - боты, служебные программы
  • sysop - администраторы,
  • bureaucrat - бюрократы, те кто управляют пользователями

Права всех групп можно переопределить. Что назначено по умолчанию, описано в статье User rights.


Для случая фермы вики MediaWiki/Wiki_family_(farm) доступ можно разграничить на уровне каждой вики.

Мы разграничим доступ следующим образом:

  • Общую вики (main) смогут пополнять все, даже без регистрации
  • Библиотеку (lib) смогут пополнять и редактировать только администраторы, остальные могут только читать.
  • Хранилище (pool) смогут пополнять и редактировать администраторы и ещё ряд избранный пользователей, остальные могут только читать.
  • Удалим из LocalSettings_common.php всё строки определяющие $wgGroupPermissions.
  • Создадим в общем каталоге w файлы, определяющих каждый из уровеней доступа:
  • 1. LS_access_all.php:
<?php
$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] 	  = true;
$wgGroupPermissions['*']['edit']	  = true;
$wgGroupPermissions['*']['createpage']    = true;
$wgGroupPermissions['*']['createtalk']    = true;
  • 2. LS_access_admins.php:
<?php
$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] 	  = true;
$wgGroupPermissions['*']['edit'] 	  = false;
$wgGroupPermissions['*']['createpage']    = false;
$wgGroupPermissions['*']['createtalk']    = false;

$wgGroupPermissions['user']['edit'] 	  = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['user']['createtalk'] = false;

$wgGroupPermissions['sysop']['edit'] 	   = true;
$wgGroupPermissions['sysop']['createpage'] = true;
$wgGroupPermissions['sysop']['createtalk'] = true;
  • 3. LS_access_trusted.php:
<?php
$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] 	  = true;
$wgGroupPermissions['*']['edit'] 	  = false;
$wgGroupPermissions['*']['createpage']    = false;
$wgGroupPermissions['*']['createtalk']    = false;

$wgGroupPermissions['user']['edit'] 	  = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['user']['createtalk'] = false;

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

$wgGroupPermissions['trusted']['edit']       = true;
$wgGroupPermissions['trusted']['createpage'] = true;
$wgGroupPermissions['trusted']['createtalk'] = true;
  • Сделаем в каталогах вики ссылки на эти файлы
ln -s /local_path_to_site/w/LS_access_admins.php
ln -s /local_path_to_site/w/LS_access_all.php
ln -s /local_path_to_site/w/LS_access_trusted.php

Если будем добавлять ещё вики, то эти ссылки появятся автоматически после запуска скрипта.

  • Добавляем в LocalSettings.php каждой вики соответствующие права, подключая нужный файл сразу за LS_common.php. Для вики main это будет выглядеть так:
<?php
require_once( "LS_common.php" );
require_once( "LS_access_all_.php" );

$wgSitename    = "TestWiki main";
$wgScriptPath  = "/w-main";
$wgArticlePath = "/main/$1"; 
$wgDBprefix    = "main__";
  • Пользователь, созданный во время создания самой вики автоматически получает права администратора (группа sysop). Заводим ещё двух пользователей. Они автоматически попадут в группу user. Одного из них добавляем в группу trusted через веб-интерфейс на странице Служебная:UserRights.
  • Заходим в проект по очереди всеми пользователями и проверяем, что ограничения прав действуют.

Ссылки