Manual:Preventing access/ja

MediaWikiはページの閲覧および編集するための利用者の機能を制限する、多くの機能を持っている. 編集権限は非常に細かくなっていて、ページレベルであり、多くの便利な自動的な方法で適用される. しかしながら、MediaWikiは企業環境、グループコラボレーションの組織化、あるいは細かなアクセスコントロールが必要なその他の場合にむけてデザインされていないことに留意すること. もしもそれが期待しているものであれば、大規模な修正なしにMediaWikiは期待したとおりに動作しないことが分かるだろう. このページはマニュアルページで、関連するものにリンクが提供されていたとしても、特定の拡張を明示的に扱うものでないことに注意.

ここでのほとんどの変更はLocalSettings.phpへの変更を必要とする. 関連しない命令無しで、任意のコードの断片を影響させるために追加しなければならない. もしも、 LocalSettingsにアクセスできないならば、その多くが実現できない. ファイルはPHPであるが、心配することはない. 1行又は複数行のファイルへの追加は、以下の簡単な手順で行なう:


 * 1) もしも、ファイルの終わりに  があるならば、それを取り去る. それは不必要で邪魔になる.
 * 2) ファイルの末尾に適当なエディタを使って行を追加する. その周りに空白行があっても気にしないこと. バイトオーダマーク(BOM)を追加し、ゴミをまき散らしてしまうため、Windowsのメモ帳は使わないこと. 一般的なBOMの兆候は何もないページとすでに送ったヘッダについてのエラーを含む. BOMを取り去るために、hex editorを使って編集しなければならない.

LocalSettings.phpに付いての詳細な情報は、Manual:LocalSettings.phpを参照. $wgGroupPermissionsページは特に有用である;そこで与えられている一般的なパターンにカスタマイズするところを読むこと.

1.5以前

 * 訳注 1.5より前なので未翻訳

$wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
 * 1) Prevent new user registrations except by sysops

or

$wgWhitelistAccount = array ( "user" => 0, "sysop" => 0, "developer" => 0 );
 * 1) Prevent new user registrations by anyone

1.5以降
$wgGroupPermissions['*']['createaccount'] = false;
 * 1) 管理者による設定以外で新しい利用者の登録を制限する

新しい利用者は管理者によって以下の方法で引き続き作成できる:


 * 1) 管理者としてログインし、 Special:Userlogin にいく.
 * 2) アカウント作成フォームを出すために"アカウントの作成"をクリックする.
 * 3) 利用者名と、電子メールアドレスを入力し、"メールで送信"ボタンをクリックする.
 * 4) アカウントは指定されたメールアドレスにランダムなパスワード付きで送られて作成される.

非利用者がログインしようとしたときに表示されるテキストは適した形に修正できる. これは、管理者としてログインしたときに MediaWiki:Nosuchuser で行なうことが出来る. フォーマットが無視され、テキストがその通りに描画されるため、特別な形式を使わないで、平文テキストを使うこと.

管理者でもアカウントを作成できないようにするためには:

$wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['sysop']['createaccount'] = false;
 * 1) Prevent new user registrations by anyone

全てのページの編集制限
利用者は引き続きそれらの変更と共にページを読むことが出来、Special:Export/Article nameかその他の方法(bug 1859を参照)を使うことによってソースを閲覧できる.

1.5以前
$wgWhitelistEdit = true;
 * 1) Disable anonymous editing

1.5以降
$wgGroupPermissions['*']['edit'] = false;
 * 1) IPユーザの編集の無効化

$wgGroupPermissions['*']['edit'] = $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['sysop']['edit'] = true;
 * 1) 非管理者の編集の無効化

$wgGroupPermissions['*']['edit'] = $wgGroupPermissions['user']['edit'] = $wgGroupPermissions['sysop']['edit'] = false;
 * 1) すべての人の編集の無効化

1.10以前
1.10以前のコアソフトウェア中ではこの機能は提供されていない. meta:User:PyneJ/Hacks/PageWhiteListのようにハックする必要がある.

1.10以降
MediaWiki 1.10中では、$wgNamespaceProtection変数を使うことで全ての名前空間に対して制限をかけられる. 例:

$wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' );
 * 1) 自動的に認証された利用者のみプロジェクト名前空間を編集可能にする

$wgNamespaceProtection[NS_MAIN]    = $wgNamespaceProtection[NS_USER]  = $wgNamespaceProtection[NS_PROJECT] = $wgNamespaceProtection[NS_IMAGE] = $wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP] = $wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' );
 * 1) 電子メールアドレスで認証されるまで会話ページ以外の編集を許可しない
 * 2) (電子メールで認証されていない利用者の練習のために、特に編集を許す
 * 3) 固有の名前空間を用意していないことを仮定している)

$wgGroupPermissions['sysop']['editpolicy'] = true; $wgNamespaceProtection[NS_POLICY] = array( 'block' );
 * 1) 管理者のみ"Policy"名前空間の編集を許可する

最後の例は、(Policy名前空間という) 固有の名前空間が存在し、 がその名前空間番号と等しい定数として定義されていることを仮定している. Manual:Using custom namespacesを参照.

ある特定のページの編集制限
protection機能を使う. 既定値では、任意の管理者は、ページを保護できるが、他の管理者はそれを編集できる. 1.9とそれ以降では、既定値では、ページも保護でき、"自動的に認証された"利用者のみ(構成期限より古いアカウントと共に)は編集できる.

これは構成ファイルの編集は不要である.

ある特定のページの部分を保護する
はじめに編集不可能なエッセイを持つ"Brilliant prose"をあなたのページに持ちたいと共に、以下のような編集可能なコメントがあると考える. (これはblogソフトウェアのようなものではない、MediaWikiの間違った使い方であるが、簡単な例として考えることとする) ページは下記のように見える: Blah blah blah magic I am awesome blah blah blah

Comments
[ Add a comment]

ここで、 "Brilliant prose/comments" は保護されていないページで、"Brilliant prose"それ自身は保護された(保護についてはこの前の節を参照)ページである. 次に、commentsページはessayページ中に含まれ(Help:Templates参照)、他の人は、編集可能なcommentsページを編集することによってコメントを追加することが出来る. 任意の他のセクションは管理者のみか、任意のほごされたページを編集可能なグループのみ可能である.

これは構成ファイルの編集は不要である.

一部を除いてほとんど全ての編集を制限
全てのページ上に包括的な編集制限を課しつつ、一部のページ (たとえばサンドボックスや、参加希望を書くページなど) だけ制限を緩くして編集できるようにすることは、実際は不可能である. やりたければ、これを可能にするための第三者のハックを探す必要がある. (もしも見つけたならば、このセクションにリンクを追加してほしい!)

いつでも適用可能なわけではないが、上で述べたのテクニックを使って代用できるかもしれない; すべての名前空間を保護しておき、特別のひとつのページだけを誰でも編集できるようにして、そこに必要なページを全部入れるのである.

特定のIP範囲の編集制限
学校と他の学会は特定のIPアドレス範囲を除いて編集ブロックをしたいと希望している. これを行なうために、全ての他のレンジはblockedされなければならない. これを行なう現在ある、コードの変更なしに唯一の方法は、Special:Blockipに行き、編集ブロックをしたい、65536個のCIDRブロックの各々の1つをシステム的にブロックすることである. これはこれ以降の全てのMediaWikiで動作する. これは名前食う神戸すでは動かない.

代替として、継ぎ目なくこれを行なうために、コードをハックすることは可能だが、いつまでも出来るかできないかは不明である.

特定の利用者の編集ブロック
blocking機能を使い、全ての編集アクセス権限を取り去る. そのユーザーグループを変更無しで、特定のページに対して特定の利用者の編集を認めるか、制限する課について、コアソフトウェアが行なう方法はない.

ページ作成の制限
$wgGroupPermissions['*']['createpage'] = false;
 * 1) 匿名利用者はページを作成できない

$wgGroupPermissions['*'           ]['createpage'] = $wgGroupPermissions['user'        ]['createpage'] = false; $wgGroupPermissions['autoconfirmed']['createpage'] = true; $wgAutoConfirmAge = 86400 * 4; # Four days times 86400 seconds/day
 * 1) 4日以上たった利用者のみページを作成できる
 * 2) (like Wikipedia!).  Requires MW 1.6 or higher.

全てのページの閲覧制限
もしも匿名利用者にwikiの閲覧制限をかけたいならば、任意のページの編集を許可しないようにすべきである(上記のを参照). もしも任意のページを編集できるならば、template inclusion を使ってページが編集できないのに見ることが出来るようになる. これは1.10中では、$wgNonincludableNamespacesを使うことによって防げるが、まだ広くテストされていない.

この方法は、訪問者が、アカウント作成後にwikiを閲覧可能にすることが可能になることを期待する限り、上記のと組み合わせることがたぶん最もよい方法である.

アップロードされた画像は画像ディレクトリ明を知っている誰でも引き続き閲覧可能である. image_auth.phpスクリプトのための場所$wgUploadPathとManual:Image Authorisation中の引き続く命令、あるいは.htaccess のような画像を保護するための外部の方式を使う.

もしも任意の利用者があなたのページを閲覧できないならば、検索も出来ない. Google上にインデックスされない.

1.5以前

 * 訳注:未翻訳

If you want anonymous users not to be able to read or edit your MediaWiki, add this line to your LocalSettings.php:

$wgWhitelistRead = array( "Main Page", "Special:Userlogin", "Wikipedia:Help" );
 * 1) Pages anonymous (not-logged-in) users may see

This way anonymous users can only see the Main Page, the user login page and the help page. Caution: if your MediaWiki is in a language different than English, you need to translate the titles in the array. For instance, in Spanish the line will look like this one:

$wgWhitelistRead = array ("Portada", "Especial:Userlogin", "MiWiki:Ayuda");

For more esoteric languages, for which your editor and PHP parser might be in disagreement over file encoding, you could use the PHP urldecode to input the page names. For example in Hebrew you could use:

$wgWhitelistRead = array(    # "Special":Userlogin (in Hebrew)                         urldecode("%D7%9E%D7%99%D7%95%D7%97%D7%93:Userlogin"),     # "MainPage" in Hebrew     urldecode("%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99") ) ;

Also in some non-esoteric languages you might need to encode the special characters, like ő.

1.5以降
$wgGroupPermissions['*']['read'] = false;
 * 1) 匿名利用者の閲覧制限

$wgWhitelistRead = array( "Main Page", "Special:Userlogin", "-", "MediaWiki:Monobook.css" );
 * 1) しかし、メインページ、ログインページと、JS/CSSページは可能
 * 1) 上記と同じだが、フランス語用(エンコードに注意!)
 * 2) $wgWhitelistRead = array( "Page Principale", "Special:Userlogin", utf8_encode('Aide en français'));

の設定は利用者にメインページとログインページの閲覧を可能にする. この行なしに、誰もログインできない. もしも、ページ名が1つの単語以上ならば、空白 " "をそれらの間に使い、下線 "_"は使わない.

さらに追加すると、そのようなプライベートのサイトのメインページのために、feed読者がWhitelistRead中に"Special:Recentchanges"を追加することで、最近更新したページ(もしもその内容がプライベートでないと思った場合)にアクセスを与えることが出来る.

コマンドライン上で管理スクリプトを走らせることを許可するために、これはLocalSettings.phpに追加しなければならないだろう: if ($wgCommandLineMode) { $wgGroupPermissions['*']['read'] = true; }

もしも、サイドバー、メインページ、あるいはログイン画面に対して、何らかの理由で制限をかけたいならば、.htpasswdかそれと同等の高レベルの認証を使う.

いくつかのページに対する閲覧制限
管理者以外の誰にでも閲覧制限をしたい場合、単に、deletedを使うことが出来る. 管理者でも閲覧制限をしたい場合、the Oversight extensionを使ってより恒久に取り去ることが出来る. ページのテキストを完全に壊したい場合、データベースから手動で取り去ることが出来る. この場合、この状態中でページは編集できず、そしてもはや存在しない.

多くのフォーラムソフトウェアが可能なように、ある利用者のみが通常だが、他の利用者には見せないようにすることはとても難しい. MediaWikiは2つの基本的なアクセスモードのためにデザインされている:


 * 1) wiki上の全ての単一のページを誰でも閲覧できる(少数の特別なページを除く). これはWikipediaとその姉妹プロジェクトが使っているモードである.
 * 2) 匿名利用者はメインページとログインページのみを閲覧可能で、ページを編集できない. これは、基本的には上記と同じで、なぜそれが存在する課についての技術的な実装に関してである(全てのページの閲覧のために特別なチェックをする)これは多くのWikimedia委員会によって使われているようなプライベートなwikiによって動作されているモードである.

'''もしもそれに対して異なった閲覧パーミッションを持ちたいと意味しているならば、MediaWikiはその使い方に対してデザインされていない. '''(bug 1924を参照) データは名前空間、ページ名、あるいは他の基準によって明らかに詳細に概説されているというわけではなく、もしも、そうしたい場合、沢山の作業をしなければならないだろう. (例としてsecurity issues with authorization extensionsを参照). 他のwikiソフトウェアは要求に対してより適している. これは警告である. もしもMediaWikiを使わなければならないなら、2つの基本的な可能性がある:


 * 1) shared user databaseを使って分割したwikiをセットアップし、1つを閲覧可能、もう一つを閲覧不可能にし(上記参照)、それらの間でwiki間リンクを行なう
 * 2) サードパーティハックか拡張をインストールする. ソフトウェアをアップグレードした度毎に再度適用しなければならなく、MediaWikiがセキュリティの修正又はアップグレードでリリースされたときに引き続きアップデートされるとは限らない. サードパーティのハックはもちろんMediaWiki開発者によるサポートはなく、トラブルがあっても、MediaWiki-lあるいは他の公式なサポートチャネルで質問できない. 1つのハックはhidden namespaces patchである;その他はCategory:Page specific user rights extensions中にリストされる. もしも、それらのどれかを使う計画があるならば、security issues with authorization extensions/jaを読むこと.

他の制限
作成者のみにページを編集可能か、履歴の閲覧を禁止にしたいか、そのほかのいくつかをしたいと思う. それらのどれもMediaWikiはサポートしていない. もしも、それ以上細かな許可を必要とするならば、節にこの目的のためにデザインされた他のwikiパッケージのリンクがあり、そのためにデザインされていないが、何ら可能方法で動作するMediaWikiをゆがませるハックの試みのようなものである.

以下も参照
There are some related manual/help pages that may be of interest:


 * Manual:LocalSettings.php
 * Manual:$wgGroupPermissions
 * Manual:$wgRestrictionTypes
 * Manual:$wgRestrictionLevels
 * Manual:$wgNamespaceProtection
 * Manual:$wgEmailConfirmToEdit
 * Manual:$wgNonincludableNamespaces
 * meta:Help:User rights
 * Help:Protection
 * Help:Deletion

Many other wiki packages may have better support for fine-grained access control than MediaWiki:


 * MoinMoin
 * GroupWikiBase based on MediaWiki (limited documentation, small project)
 * TWiki

If you want better access control but want to use MediaWiki, this is a list of extensions and hacks to allow restrictions not possible in the software proper. These hacks may be out-of-date (check the version they're for). Please don't ask in official MediaWiki support channels if something goes wrong with a third-party hack.


 * NamespacePermissions Extension
 * PageSecurity extension
 * Hierarchical Namespace Permissions
 * Page access restriction with MediaWiki
 * CTLpedia hacks