Extension:Lockdown
Sayfa başına veya kısmi sayfa erişim kısıtlamalarına ihtiyacınız varsa, uygun bir içerik yönetimi paketi yüklemeniz önerilir. MediaWiki, sayfa başına erişim kısıtlamaları sağlamak için yazılmadı ve bunları eklemeyi vaat eden hemen hemen tüm hackler veya yamalar, muhtemelen bir yerlerde kusurlara sahip olacak ve bu da gizli verilerin ifşasına yol açabilecek. Sızan herhangi bir şeyden sorumlu değiliz.
Daha fazla ayrıntı için Special:MyLanguage/Security issues with authorization extensions sayfasına bakın |
Lockdown Sürüm durumu: kararlı |
|
---|---|
Uygulama | Kullanıcı hakları |
Açıklama | Ad alanı başına grup izinlerini uygular |
Yazar(lar) | Daniel Kinzler (Duesentriebmesaj) |
MediaWiki | 1.31+ |
PHP | 5.5+ |
Lisans | GNU Genel Kamu Lisansı 2.0 veya üstü |
İndir | README |
|
|
Quarterly downloads | 372 (Ranked 9th) |
Translatewiki.net adresinde mevcutsa, Lockdown uzantısını çevirin | |
Sorunlar | Açık görevler · Hata bildir |
Lockdown uzantısı, belirli ad alanlarına ve özel sayfalara erişimi belirli bir kullanıcı grubu kümesiyle kısıtlamanın bir yolunu uygular. Bu, varsayılan $wgGroupPermissions ve $wgNamespaceProtection ayarlarında sağlanandan daha ince taneli bir güvenlik modeli sağlar.
MediaWiki tarafından varsayılan olarak kullanılan güvenlik modeliyle ilgili aşağıdaki sayfalar, aşağıdaki talimatların anlaşılması için yardımcı olabilir:
Kurulum
- Dosyaları indirin ve
extensions/
klasörünüzdekiLockdown
adlı dizine yerleştirin.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Lockdown - LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
wfLoadExtension( 'Lockdown' );
- Gerektiği gibi yapılandırın
- Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.
Örnek
Lockdown şu amaçlarla kullanmak için:
- oturum açan kullanıcıların (kayıtlı kullanıcı) Special:Export erişimini engelle
- proje ad alanının düzenlenmesini oturum açmış kullanıcılarla (kayıtlı kullanıcılar) kısıtla
Daha sonra aşağıdakileri kullanabilirsiniz:
$wgSpecialPageLockdown['Export'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'user' ];
Bir açıklama ve daha fazla örnek için aşağıya bakın.
Yapılandırma
Kilitleme uzantısının yalnızca erişim izni vermek için değil, erişimini kısıtlamak için kullanılabileceğini unutmayın. MediaWiki'nin bazı yerleşik ayarları tarafından erişim reddedilirse, Lockdown uzantısı kullanılarak buna izin verilemez.
$wgSpecialPageLockdown
$wgSpecialPageLockdown
, her özel sayfa için hangi kullanıcı gruplarının erişebileceğini belirlemenize olanak tanır.
Örneğin, Special:Export kullanımını oturum açmış kullanıcılarla sınırlandırmak için, bunu LocalSettings.php
cinsinden kullanın:
$wgSpecialPageLockdown['Export'] = [ 'user' ];
Bazı özel sayfaların "yerel olarak" belirli bir izin gerektirdiğini unutmayın.
Örneğin, sayfaları taşımak için kullanılabilen Special:MovePage, "move
" iznini gerektirir (varsayılan olarak yalnızca oturum açmış kullanıcılara verilir).
Bu kısıtlama, Lockdown uzantısı kullanılarak geçersiz kılınamaz.
Bazı özel sayfa başlıkları, vikide göründükleri şekilde büyük harfle yazılmaz. Örneğin, Special:RecentChanges dahili olarak Recentchanges olur, bu nedenle sınırlamak için ihtiyacınız olan:
$wgSpecialPageLockdown['Recentchanges'] = [ 'user' ];
Özel sayfa başlıklarının tam listesi "MessagesEn.php" dosyasında ($specialPageAliases
dizisi) mevcuttur veya alternatif olarak vikinizde /api.php?action=query&meta=siteinfo&siprop=specialpagealiases örneğin "siteinfo" API modülünü kullanın.
$wgActionLockdown
$wgActionLockdown
, her eylem için hangi kullanıcı gruplarının ona erişebileceğini belirlemenize izin verir.
Örneğin, geçmiş sayfasının kullanımını oturum açmış kullanıcılarla sınırlamak için, bunu LocalSettings.php olarak kullanın:
$wgActionLockdown['history'] = [ 'user' ];
Note that some actions can not be locked down this way. In particular, it will not work for the ajax
action.
$wgNamespacePermissionLockdown
$wgNamespacePermissionLockdown
lets you restrict which user groups have which permissions on which namespace. For example, to grant only members of the sysop group write access to the project namespace, use this:
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'sysop' ];
Wildcards for either the namespace or the permission (but not both at once) are supported. More specific definitions take precedence:
$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ '*' ];
$wgNamespacePermissionLockdown['*']['move'] = [ 'autoconfirmed' ];
The first two lines restrict all permissions in the project namespace to members of the sysop group, but still allow reading to anyone. The third line limits page moves in all namespaces to members of the autoconfirmed group.
Note that this way, you cannot grant permissions that have not been allowed by the build-in $wgGroupPermissions setting. The following does not allow regular users to patrol edits in the main namespace:
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];
Instead, you would have to grant this right in $wgGroupPermissions first, and then restrict it again using $wgNamespacePermissionLockdown:
$wgGroupPermissions['user']['patrol'] = true;
$wgNamespacePermissionLockdown['*']['patrol'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];
Note that when restricting read-access to a namespace, the restriction can easily be circumvented if the user has read access to any other namespace: by including a read-protected page as a template, it can be made visible. To avoid this, you would have to forbid the use of pages from that namespace as templates, by adding the namespace's ID to $wgNonincludableNamespaces :
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ 'user' ];
$wgNonincludableNamespaces[] = NS_PROJECT;
You can of course also use Lockdown with custom namespaces defined using $wgExtraNamespaces :
// define custom namespaces
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';
// restrict "read" permission to logged in users
$wgNamespacePermissionLockdown[100]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[101]['read'] = [ 'user' ];
// prevent inclusion of pages from that namespace
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;
Note that custom namespaces should always be defined in pairs, the namespace proper (with an even id), and the associated talk namespace (with an odd id).
If you want to use constants to refer to your namespaces, you need to define them:
// define constants for your custom namespaces, for a more readable configuration
define('NS_PRIVATE', 100);
define('NS_PRIVATE_TALK', 101);
// define custom namespaces
$wgExtraNamespaces[NS_PRIVATE] = 'Private';
$wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';
// restrict "read" permission to logged in users
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = [ 'user' ];
// prevent inclusion of pages from that namespace
$wgNonincludableNamespaces[] = NS_PRIVATE;
$wgNonincludableNamespaces[] = NS_PRIVATE_TALK;
You could also use array_fill() to restrict multiple namespaces at once, e.g. if you wanted to restrict namespaces 0 to 2009 to editing by sysops only:
$wgNamespacePermissionLockdown = array_fill( 0, 2010, [ 'edit' => [ 'sysop' ] ] );
$wgNamespacePermissionLockdown vs $wgActionLockdown
$wgActionLockdown
is checked considerably sooner (in the MediaWikiPerformAction hook) in the request-handling process than $wgNamespacePermissionLockdown
(which is checked in the getUserPermissionsErrors hook).
If an action that $wgActionLockdown
does not permit is attempted, a permission error is displayed. Likewise, $wgNamespacePermissionLockdown
lets the end user know which groups are allowed to perform the action.
Grupları yönetme
You can control which user belongs to which groups with the page Special:Userrights. Only existing groups will be proposed, but you can "create" a new group by creating an entry for it in $wgGroupPermissions (even if you don't actually need to set a permission there, but it has to appear on the left hand side of the array). For example:
$wgGroupPermissions['somegroupname']['read'] = true;
For more information, see Help:User rights, Manual:User rights, and Manual:User rights management.
Ek önlemler
Images and other uploaded files still can be seen and included on any page. Protections on the Image namespace do not prevent that. See Manual:Image Authorisation for information on how to prevent unauthorized access to images. See also:
Bilinen sorunlar
Lockdown is known to be broken for MW 1.27.x to 1.30.x [1]. Possible side-effects of using it include:
- Incomplete list of namespaces showing under the Advanced tab of Special:Search and on the special page for ReplaceText
- Searchbox no longer offering autocompletion for certain namespaces
A workaround may be to list all namespaces under $wgContentNamespaces , but success is not guaranteed. Another temporary solution is to use a version before the breaking commits, as detailed in Topic:Tr4xxpln3fnpz3eu.
Ayrıca bakınız
- Category:User rights extensions
- GroupManager (BlueSpice) - for adding, editing and deleting user groups
- PermissionManager (BlueSpice) - for administering user rights to user groups
- UserProtect - Allows per-user per-right per-page protection
- PageOwnership - Multi-layered permission manager, whole wiki or specific pages, with friendly interface
- AccessControl - Allows restricting access to specific pages and files
- CategoryLockdown - Allows restricting access by category and group
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |