Extension:Lockdown/ja

From MediaWiki.org
Jump to navigation Jump to search
MediaWiki 拡張機能マニュアル
OOjs UI icon advanced.svg
Lockdown
リリースの状態: 安定
実装 利用者権限
説明 Implements per-namespace group permissions
作者 Daniel Kinzler (Duesentriebtalk)
MediaWiki 1.31+
PHP 5.5+
データベースの変更 いいえ
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
README

  • $wgNamespacePermissionLockdown
  • $wgSpecialPageLockdown
  • $wgActionLockdown
translatewiki.net で翻訳を利用できる場合は、Lockdown 拡張機能の翻訳にご協力ください
使用状況とバージョン マトリクスを確認してください。
問題点 未解決のタスク · バグを報告

Lockdown拡張機能は、指定した利用者グループに対して特定の名前空間と特別なページに対するアクセスを制限する方法を実装します。これはデフォルトの$wgGroupPermissions$wgNamespaceProtection設定によって提供されたものよりも粒度が細かいセキュリティモデルを提供します。

デフォルトでMediaWikiが使用しているセキュリティモデルを理解するためには下記の手引きが手助けになるでしょう:

インストール[edit]

  • ダウンロードして、ファイルを extensions/ フォルダー内の Lockdown という名前のディレクトリ内に配置します。
Due to issues (see also this topic) this extension seems not to work as expected with MediaWiki 1.27.x to 1.30.x. These issues have however been resolved for MediaWiki 1.31 and later!

[edit]

To use Lockdown to

  • prevent access to Special:Export to logged in users (registered user) ; and
  • restrict editing of the project namespace to logged in users (registered users),

you can then use the following:

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

See below for an explanation and more examples.

構成[edit]

Lockdown 拡張機能は権限を与えるのではなくアクセスを制限するためのみに使われることに注意してください。MediaWiki の設定によって最初からアクセスが拒否されている場合には、Lockdown 拡張機能の使用に意味はありません。

$wgSpecialPageLockdown[edit]

$wgSpecialPageLockdown によって利用者グループがアクセス権限を持つ特別ページを個別に指定できるようになります。例えば、Special:Exportの使用をログイン利用者に限定する場合、次の設定をLocalSettings.phpで使います。

$wgSpecialPageLockdown['Export'] = [ 'user' ];

特別ページの中には「ネイティブに」特定の権限を要求するものがあることに注意してください。例えば、Special:Userrightsは利用者グループを割り当てするために使用されますが、"userrights"権限が要求されます(デフォルトでは"bureaucrat"グループのみに付与されます)。この制限はLockdown拡張機能を利用してオーバーライドすることはできません。

Some special page titles are not capitalized the way they appear on-wiki. For instance, Special:RecentChanges is Recentchanges internally, so to restrict it you need:

$wgSpecialPageLockdown['Recentchanges'] = [ 'user' ];

A full list of special page titles is available in the "MessagesEn.php" file ($specialPageAliases array)

$wgActionLockdown[edit]

$wgActionLockdownを使用すると、任意の利用者グループがアクションをとることに制限を掛けることができます。この例では、非登録利用者の履歴ページの使用を制限しています。

$wgActionLockdown['history'] = [ 'user' ];

注意:制限を掛けられないアクションもあります。特に、Ajaxを使っているアクションの制限を掛けることはできません。

$wgNamespacePermissionLockdown[edit]

$wgNamespacePermissionLockdown によって利用者グループがどの名前空間のどの権限を利用できるか制限できます。例えば、project名前空間に対する書き込み権限をsysopグループのメンバーのみに付与するためには、次の設定を使用します:

$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'sysop' ];

名前空間もしくは権限のどちらか(一度に両方はできません)に対してワイルドカードがサポートされます。より詳細な定義が優先されます:

$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ '*' ];

$wgNamespacePermissionLockdown['*']['move'] = [ 'autoconfirmed' ];

最初の2つの行はproject名前空間でのすべてのパーミションをsysopグループに対して制限しますが、まだ誰でも読み込みできます。三番目の行はすべての名前空間におけるページの移動をautoconfirmedグループに制限します。

組み込みの$wgGroupPermissions設定によって許可されない権限を付与できないことに注意してください。次の行は通常の利用者がmainの名前空間で編集をパトロールすることを許可*していません*:

$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

代わりに、最初に$wgGroupPermissionsでこの権限を付与して、$wgNamespacePermissionLockdownを使用して再び制限しなければなりません:

$wgGroupPermissions['user']['patrol'] = true;

$wgNamespacePermissionLockdown['*']['patrol'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

名前空間に対する閲覧権限を制限するとき、利用者が別の名前空間に対して書き込み権限を持つ場合、制限は簡単に回避できます: 閲覧が制限されたページをテンプレートとしてインクルードすることによって、簡単に見えるようになります。これを回避するために、名前空間のIDを$wgNonincludableNamespacesに追加することで、その名前空間をテンプレートとしてページに利用することを禁止しなければなりません(この機能はMediaWiki 1.10のリビジョン19934で導入されました):

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

$wgExtraNamespacesを利用してカスタムの名前空間と一緒にLockdownを使用することもできます:

#カスタムの名前空間を定義する
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';

#"read"権限をログイン利用者に制限する
$wgNamespacePermissionLockdown[100]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[101]['read'] = [ 'user' ];

#指定した名前空間からページをインクルードできないようにする
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;

カスタムの名前空間は常にペア、対象となる名前空間(偶数のid)と関連したtalk名前空間(奇数の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'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = [ 'user' ];

#指定した名前空間からページをインクルードできないようにする
$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'  ] ] );

グループの保守[edit]

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 Manual:$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.

追加の方法[edit]

画像と他のアップロードされたファイル

画像と他のアップロードされたファイルは閲覧可能でどのページにもインクルードできます。Image名前空間の保護ではインクルードを防止できません。画像に対して認証されていないアクセスを防止する方法に関してはManual:Image Authorisation/jaを参照してください。See also:

Known issues[edit]

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.

関連項目[edit]