Lockdown

Материал из Викиреальностя
Перейти к: навигация, поиск
Crystal Clear action run.svg
Lockdown
Расширение MediaWiki


Статус:
бета
Фунциональность:
Права доступа
Описание:
Управление доступом групп участников по пространствам имён
Автор(ы):
Duesentrieb


MediaWiki:
1.31+
Лицензия:
Нет лицензии
Загрузка:
Загрузить расширение
SVN [Help]
Исходный код
README
log



Используемые функции:
userCan

Lockdown — расширение, позволяющее ограничивать доступ участников к определённым пространствам имён и служебным страницам с использованием механизма групп участников. Расширение позволяет более тонко управлять доступом к страницам, чем при помощи имеющихся в ядре настроек $wgGroupPermissions и $wgNamespaceProtection. Настройка прав доступа производится на стороне сервера.

Предупреждение Предупреждение: не работает в версии 1.12! Работает в 1.13+, существует патч для 1.12.

Чтоб лучше понять, как работает это расширение и как его настраивать, вы можете прочитать следующие статьи о стандартных настройках безопасности MediaWiki:

Содержание


[править] Установка

Поместите файлы расширения, находящиеся в папке Lockdown, в папку /extensions. Затем добавьте следующую строку в конец файла LocalSettings.php: wfLoadExtension( 'Lockdown' );. В устаревших версиях MediaWiki: require_once( "$IP/extensions/Lockdown/Lockdown.php" );

Чтобы при помощи расширения ограничить доступ к странице Special:Export и разрешить редактирование пространства имён проекта только зарегистрированным участникам, используйте следующий код:

  $wgSpecialPageLockdown['Export'] = array('user');
 
  $wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = array('user');

См. ниже пояснения и другие примеры.

[править] Настройка

Имейте в виду, что это расширение может быть использовано только для ограничения доступа, оно не может применяться для разрешения. Если доступ запрещён при помощи стандартных средств MediaWiki, он не может быть разрешён при помощи расширения Lockdown.

[править] $wgSpecialPageLockdown

$wgSpecialPageLockdown позволяет ограничить доступ к любой из служебных страниц для определённых групп участников. Например, чтобы разрешить использовать Special:Export только зарегистрированным пользователям, добавьте следующий код в LocalSettings.php:

  $wgSpecialPageLockdown['Export'] = array('user');

Этот код разрешит доступ ко всем служебным страницам только зарегистрированным пользователям.

  $wgSpecialPageLockdown[] = array('user');

Некоторые служебные страницы имеют ограничения доступа по умолчанию. Например, для доступа к Special:Userrights необходимо обладать правами «userrights» (по умолчанию имеются только у бюрократов). Это ограничение не может быть изменено при помощи расширения Lockdown.

[править] $wgActionLockdown

Введено в версии: 45703

$wgActionLockdown позволяет ограничить доступ к определённым действиям для некоторых групп участников. Например, чтобы разрешить просматривать историю версий только зарегистрированным участникам, добавьте следующий код в LocalSettings.php:

  $wgActionLockdown['history'] = array('user');

Доступ к некоторым действиям не может быть запрещён при помощи этой настройки. В частности, она не будет работать для действий, связанных с ajax.

[править] $wgNamespacePermissionLockdown

$wgNamespacePermissionLockdown позволяет изменить права доступа к определённому пространству имён. Например, чтобы разрешить только администраторам править пространство имён проекта, используйте следующий код:

  $wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = array('sysop');

Поддерживаются маски для пространства имён или разрешения (но не для них одновременно). Например, работает следующий код:

  $wgNamespacePermissionLockdown[NS_PROJECT]['*'] = array('sysop');
  $wgNamespacePermissionLockdown[NS_PROJECT]['read'] = array('*');
 
  $wgNamespacePermissionLockdown['*']['move'] = array('autoconfirmed');

Первые две строки разрешают все действия в пространстве имён проекта только администраторам, кроме права их просматривать. Третья строка разрешает переименовывать страницы только автоподтверждённым участникам.

При помощи этого расширения нельзя присвоить новые права, не разрешённые при помощи стандартной настройки $wgGroupPermissions. Следующая строка не позволит всем участникам патрулировать правки в основном пространстве имён:

  $wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = array('user');

Вместо этого, вы должны сначала присвоить эти права при помощи $wgGroupPermissions, и только затем ограничить их использование при помощи $wgNamespacePermissionLockdown:

  $wgGroupPermissions['user']['patrol'] = true;
 
  $wgNamespacePermissionLockdown['*']['patrol'] = array('sysop');
  $wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = array('user');

Обратите внимание, что при ограничении чтения определённого пространства имён, это ограничение можно легко обойти, если участник имеет доступ к редактированию любого другого пространства имён: при включении защищённой страницы в качестве шаблона она страновится видимой. Чтобы предотвратить это, вы должны запретить включение страниц из этого пространства имён в другие страницы, добавив ID этого пространства имён в $wgNonincludableNamespaces (эта возможность добавлена в 1.10, ревизии 19934, и доступна в виде расширения для более ранних версий):

  $wgNamespacePermissionLockdown[NS_PROJECT]['read'] = array('user');
  $wgNonincludableNamespaces[] = NS_PROJECT;

Вы также можете использовать Lockdown с дополнительными пространствами имён, определяемыми при помощи $wgExtraNamespaces:

  # определение собственных пространств имён
  $wgExtraNamespaces[100] = 'Private';
  $wgExtraNamespaces[101] = 'Private_talk';
 
  # ограничение разрешения «read» для залогиненных пользователей
  $wgNamespacePermissionLockdown[100]['read'] = array('user');
  $wgNamespacePermissionLockdown[101]['read'] = array('user');
 
  # предотвращение включения страниц из этого пространства имён
  $wgNonincludableNamespaces[] = 100;
  $wgNonincludableNamespaces[] = 101;

Собственные пространства имён всегда должны добавляться парами: пространство имён (с чётным ID) и связанное с ним пространство обсуждения (с нечётным ID).

Если вы хотите использовать константы для обозначения ваших пространств имён, вы должны определить их:

  # определение констант для собственных пространств имён для расширенной настройки
  define('NS_PRIVATE', 100);
  define('NS_PRIVATE_TALK', 101);
 
  # определение собственных пространств имён
  $wgExtraNamespaces[NS_PRIVATE] = 'Private';
  $wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';
 
  # ограничение разрешения «read» для залогиненных пользователей
  $wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = array('user');
  $wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = array('user');
 
  # предотвращение включения страниц из этого пространства имён
  $wgNonincludableNamespaces[] = NS_PRIVATE;
  $wgNonincludableNamespaces[] = NS_PRIVATE_TALK;

[править] Управление группами

Вы можете управлять группами википроекторов при помощи страницы Special:Userrights. С её помощью можно присвоить только существующие группы, чтобы создать новую группу, вы должны добавить запись о ней с использованием $wgGroupPermissions (даже если вам не надо устанавливать здесь разрешения, оно должно быть помещено в левой части массива). Например:

$wgGroupPermissions['somegroupname']['read'] = true;

[править] Дополнительные меры защиты

[править] Сокрытие страниц

Расширение позволяет предотвратить просмотр содержимого страниц, но не удаляет их из различных списков. Чтобы их скрыть, необходимо установить несколько патчей для MediaWiki. Некоторые неофициальные решения можно посмотреть на странице Extension:Lockdown/hiding_pages. См. также [1].

[править] Изображения и другие загружаемые файлы

Изображения и другие загружаемые файлы могут быть просмотрены и включены в любую страницу. Защита пространства имён «Файл» не предотвращает этого. Информацию об ограничении доступа к изображениям вы можете прочитать на странице Manual:Image Authorisation. См. также:

[править] Перенаправления

Версия MediaWiki: 1.10 и более ранние

Для MediaWiki 1.10 и более ранних версий: если перенаправление #REDIRECT [[PNS:P]] на страницу P в защищённом пространстве имён PNS будет размещено на любую незащищённую страницу и участник откроет её, он сможет попасть на защищённую страницу вне зависимости от настроек доступа.

Эта проблема отсутствует в MediaWiki 1.11+.

Lockdown относится к теме «MediaWiki»   ±