Manual:Preventing access/ja
From MediaWiki.org
MediaWikiはページの閲覧および編集するための利用者の機能を制限する、多くの機能を持っている。編集権限は非常に細かくなっていて、ページレベルであり、多くの便利な自動的な方法で適用される。しかしながら、MediaWikiは企業環境、グループコラボレーションの組織化、あるいは細かなアクセスコントロールが必要なその他の場合にむけてデザインされていないことに留意すること。もしもそれが期待しているものであれば、大規模な修正なしにMediaWikiは期待したとおりに動作しないことが分かるだろう。このページはマニュアルページで、関連するものにリンクが提供されていたとしても、特定の拡張を明示的に扱うものでないことに注意。
ここでのほとんどの変更はLocalSettings.phpへの変更を必要とする。関連しない命令無しで、任意のコードの断片を影響させるために追加しなければならない。もしも、 LocalSettingsにアクセスできないならば、その多くが実現できない。ファイルはであるが、心配することはない。1行又は複数行のファイルへの追加は、以下の簡単な手順で行なう:
- もしも、ファイルの終わりに
?>があるならば、それを取り去る。それは不必要で邪魔になる。 - ファイルの末尾に適当なエディタを使って行を追加する。その周りに空白行があっても気にしないこと。を追加し、ゴミをまき散らしてしまうため、Windowsのメモ帳は使わないこと。一般的なBOMの兆候は何もないページとすでに送ったヘッダについてのエラーを含む。BOMを取り去るために、hex editorを使って編集しなければならない。
Contents |
[edit] シンプルなプライベートなwiki
"自分自身と承認した人だけのプライベートなwiki"の共通のユーザーケースに関して、次の作業が必要です:
- 異なるソフトウェアを利用することを考えて下さい。これはMediaWikiの意図するところではありません。この目的のために設計されたwikiもしくはCMSを探して下さい。概要に関してはComparison of wiki software、List of content management systems、とopensourcecms.comをご覧下さい。あなたのニーズに合わせてMediaWikiを修正してその設定によって引き起こされる制限と不便さを我慢する準備ができているのであれば進めて下さい。
- 閲覧の制限
- 編集の制限
- アカウント作成の制限
Warning: 下記のセクションの警告をご覧下さい; これは"一般的な使い方"のコードで、あなたの要件にマッチしないかもしれません。
[edit] 1.5以前
# 匿名(ログインしていない)ユーザーが閲覧できるページ $wgWhitelistRead = array( ":Main Page", "Special:Userlogin", "Wikipedia:Help" ); # 匿名編集を無効にする $wgWhitelistEdit = true; # 管理者以外の新しいユーザー登録を制限する $wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
[edit] 1.5以降
# 匿名ユーザーによる閲覧を無効にする $wgGroupPermissions['*']['read'] = false; # しかし例えば以下のページの閲覧は許可する: $wgWhitelistRead = array ( "Main Page", "Special:Userlogin", "Wikipedia:Help"); # 匿名編集を無効にする $wgGroupPermissions['*']['edit'] = false; # 管理者以外に新しいユーザーの登録を防止する $wgGroupPermissions['*']['createaccount'] = false;
[edit] アカウント作成を制限する
[edit] 1.5以前
# sysop以外の新しいユーザー登録を防止する $wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
or
# 匿名による新しいユーザー登録を防止する $wgWhitelistAccount = array ( "user" => 0, "sysop" => 0, "developer" => 0 );
[edit] 1.5以降
# 管理者による設定以外で新しい利用者の登録を制限する $wgGroupPermissions['*']['createaccount'] = false;
Note: 新しい利用者は管理者によって以下の方法で引き続き作成できる:
Note: sysopは、次の方法で、新しいユーザーを作ることができます:
- 管理者としてログインし、[[Special:Userlogin]]にいく。
- アカウント作成フォームを出すために"アカウントの作成"をクリックする。
- 利用者名と、電子メールアドレスを入力し、"メールで送信"ボタンをクリックする。
- アカウントは指定されたメールアドレスにランダムなパスワード付きで送られて作成される。
非利用者がログインしようとしたときに表示されるテキストは適した形に修正できる。これは、管理者としてログインしたときに [[MediaWiki:Nosuchuser]]で行なうことが出来る。フォーマットが無視され、テキストがその通りに描画されるため、特別な形式を使わないで、平文テキストを使うこと。
管理者でもアカウントを作成できないようにするためには:
# Prevent new user registrations by anyone $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['sysop']['createaccount'] = false;
[edit] 全てのページの編集制限
利用者は引き続きそれらの変更と共にページを読むことが出来、Special:Export/Article nameかその他の方法(bug 1859を参照)を使うことによってソースを閲覧できる。
[edit] 1.5以前
# Disable anonymous editing $wgWhitelistEdit = true;
[edit] 1.5以降
いくつかの例に関してはManual:User rights/ja と$wgGroupPermissionsを参照して下さい:
[edit] 匿名編集を制限する
$wgGroupPermissions['*']['edit'] = false;
[edit] sysopではないすべてのユーザーの編集を制限する
$wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['sysop']['edit'] = true;
[edit] Restrict editing by absolutely everyone
$wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['sysop']['edit'] = false;
[edit] 全ての名前空間での編集の無効化
[edit] 1.10以前
1.10以前のコアソフトウェア中ではこの機能は提供されていない。meta:User:PyneJ/Hacks/PageWhiteListのようにハックする必要がある。
[edit] 1.10以降
MediaWiki 1.10中では、$wgNamespaceProtection変数を使うことで全ての名前空間に対して制限をかけられる。例:
# 自動的に認証された利用者のみプロジェクト名前空間を編集可能にする $wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' ); # 電子メールアドレスで認証されるまで会話ページ以外の編集を許可しない # (電子メールで認証されていない利用者の練習のために、特に編集を許す # 固有の名前空間を用意していないことを仮定している) # 1.13に関するノート: emailconfirmedグループと権限はデフォルトで除去されました # 使いたいのであれば、セットアップして、手動で再び有効にしなければなりません $wgNamespaceProtection[NS_MAIN] = $wgNamespaceProtection[NS_USER] = $wgNamespaceProtection[NS_PROJECT] = $wgNamespaceProtection[NS_IMAGE] = $wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP] = $wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' ); # 管理者のみ"Policy"名前空間の編集を許可する $wgGroupPermissions['sysop']['editpolicy'] = true; $wgNamespaceProtection[NS_POLICY] = array( 'editpolicy' );
最後の例は、(Policy名前空間という) 固有の名前空間が存在し、NS_POLICYがその名前空間番号と等しい定数として定義されていることを仮定している。Manual:Using custom namespaces/jaを参照。
[edit] ある特定のページの編集制限
保護機能を使います。デフォルトでは、sysopはsysopsだけが編集できるようにページを保護できます。1.9とそれ以降において、デフォルトではsysopは(設定された期間よりも古いアカウントを持つ)"autoconfirmed"ユーザーのみが編集できるようにページを保護することもできます。
これは設定ファイルを編集する必要はありません。
[edit] 一部を除いてほとんど全ての編集を制限
すべてのページに対して無差別な編集の制限をしたいが、より気前よく編集できるようにいくつかのページ(サンドボックス、リクエストページに参加する、など)だけ許可したい場合、EditSubpages extensionを利用できます。これは多くの事例に当てはまらないのかもしれませんが、保護されたすべての名前空間と、編集可能にしたいすべてのページを持つ誰でも編集可能な特別なもののみで、特定のページの一部の編集を制限するの方法も利用可能です。
[edit] 特定のIP範囲の編集制限
学校などの施設は特定の範囲を除いて編集ブロックをしたいと考えることが多いようです。これを行なうために、全ての他のレンジはblockedされなければならない。これを行なう現在ある、コードの変更なしに唯一の方法は、Special:Blockipに行き、編集ブロックをしたい、65536個のCIDRブロックの各々の1つをシステム的にブロックすることである。これはこれ以降の全てのMediaWikiで動作する。これは名前空間毎の基準では動かない。
代替として、継ぎ目なくこれを行なうために、コードをハックすることは可能だが、いつまでも出来るかできないかは不明である。
[edit] 特定の利用者の編集ブロック
blocking機能を使い、全ての編集アクセス権限を取り去る。そのユーザーグループを変更無しで、特定のページに対して特定の利用者の編集を認めるか、制限するかについて、コアソフトウェアが行なう方法はない。
[edit] ページ作成の制限
# 匿名利用者はページを作成できない $wgGroupPermissions['*']['createpage'] = false; # 4日以上たった利用者のみページを作成できる # (like Wikipedia!). Requires MW 1.6 or higher. $wgGroupPermissions['*' ]['createpage'] = false; $wgGroupPermissions['user' ]['createpage'] = false; $wgGroupPermissions['autoconfirmed']['createpage'] = true; $wgAutoConfirmAge = 86400 * 4; # Four days times 86400 seconds/day
[edit] 全てのページの閲覧制限
Note: もしも匿名利用者にwikiの閲覧制限をかけたいならば、任意のページの編集を許可しないようにすべきである(上記の#全てのページの編集制限を参照)。もしも任意のページを編集できるならば、template inclusion を使ってページが編集できないのに見ることが出来るようになる。これは1.10中では、$wgNonincludableNamespacesを使うことによって防げるが、まだ広くテストされていない。
Note: この方法は、訪問者が、アカウント作成後にwikiを閲覧可能にすることが可能になることを期待する限り、上記の#アカウント作成の制限と組み合わせることがたぶん最もよい方法である。
Note: アップロードされた画像は画像ディレクトリ名を知っている誰でも引き続き閲覧可能である。image_auth.phpスクリプトのための場所$wgUploadPathとManual:Image Authorisation/ja中の引き続く命令、あるいは.htaccess のような画像を保護するための外部の方式を使う。
Note: もしも任意の利用者があなたのページを閲覧できないならば、検索も出来ない。Google上にインデックスされない。
[edit] 1.5以前
匿名ユーザーがwikiを閲覧もしくは編集できないようにしたいのであれば、次の行をLocalSettings.phpに追加します:
# Pages anonymous (not-logged-in) users may see $wgWhitelistRead = array( ":Main Page", "Special:Userlogin", "Wikipedia:Help" );
この方法によって匿名ユーザーはMain Page、ユーザーのログインページとヘルプページだけアクセスできます。警告: 英語とは異なる言語を利用している場合、配列でタイトルを翻訳する必要があります。例えば、スペイン語においてコードは次のようになります:
$wgWhitelistRead = array (":Portada", "Especial:Userlogin", "MiWiki:Ayuda");
より難解な言語に関しては、エディタとPHPのパーサーがファイルのエンコーディングに関して一致しないことがあります。ページの名前を入力するためにPHPのurldecode()関数を利用できます。ヘブライ語の例です:
$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") ) ;
難解ではない言語でもőのような特別な文字をエンコードする必要もあるかもしれません。
[edit] 1.5以降
# 匿名利用者の閲覧制限 $wgGroupPermissions['*']['read'] = false; # 例えば以下のページだけ閲覧することを許可する: $wgWhitelistRead = array ( "Main Page", "Special:Userlogin", "Help:Contents"); # 以前のように、ただしフランス語に対して(エンコーディングに注意!ファイルをUTF-8として保存する!) # $wgWhitelistRead = array( ":Page Principale", "Special:Userlogin", "Aide en français");
$wgWhitelistReadの設定によってユーザーはメインページとログインページを閲覧できます。この行無しでは、誰もログインできません。ページの名前が複数の単語で構成される場合、それらの間にアンダースコア("_")ではなくスペース(" ")を使います。
プライベートなサイトのメインページに加えて、"Special:Recentchanges"を$wgWhitelistReadに追加することでフィールドリーダーのためにRecentchangesページにアクセスできます(このページの内容がプライベートではないと考えるのであれば)。
何らかの理由で、サイドバー、メインページ、もしくはログインスクリーン、も保護する必要がある場合、.htpasswdもしくはそれと同等の高いレベルの認証方法を利用することをお勧めします。
[edit] 特定のページの閲覧を制限する
詳細に関しては、Security issues with authorization extensions/jaをご覧下さい
sysop以外のユーザーが閲覧できないようにするためには、削除する方法が簡単です。sysopさえも閲覧できないようにするためには、the Oversight extensionで永久に削除できます。ページのテキストを完全に破壊するためには、データベースから手動で削除します。どの場合でも、この状態にあるページは編集不可能で、大抵の目的のためにはもはや存在しません。
ページがあるユーザーに対しては普通に振る舞うがその他のユーザーに対しては見えないようにすることは、大抵のフォーラムのソフトウェアでは可能ですが、MediaWikiではとても難しいことです。MediaWikiは2つの基本的なアクセスモードのために設計されています:
- 誰でもwiki上のすべてのページにアクセスできる(いくつかの特別ページの例外はあり)。これはWikipediaと姉妹プロジェクトで使われているモードです。
- 匿名ユーザーはMain Pageとログインページのみ閲覧可能で、どのページも編集できません。技術的な実装の観点(すべてのページ閲覧の追加チェックだけ)から、これは基本的に上記のものと同じです。これは様々なWikimediaのコミッターなどで使われるプライベートなwikiで採用されるオペレーションのモードです。
それよりも多く閲覧のパーミッションを用意することを意図するのであれば、MediaWikiはその使い方のために設計されていません (bug 1924を参照)。データは名前空間、ページ名、他の基準によって必ずしも明確に線引きされず、そのようにしたいのであれば房がなければならないたくさんの情報漏れがあります(security issues with authorization extensions/jaを参照)。別のwikiソフトウェアがあなたの目的に適切かもしれません。警告はしました。MediaWikiを使うことが必須であれば、2つの基本的な可能性があります:
- 共有ユーザーのデータベースで分離されたwikiをセットアップし、1つを閲覧可能にもう一つを閲覧不可能にして(上記を参照)、それらの間にインターウィキのリンクを作ります。
- サードパーティのハックもしくは拡張機能をインストールします。ソフトウェアをアップグレードするたびに再適用しなければならず、MediaWikiのセキュリティ修正もしくはアップグレードがリリースされても即座には更新されないことがあります。サードパーティは、もちろん、MediaWikiの開発者によってサポートされるものではなく、遭遇した問題をMediaWiki-l、#mediawiki、もしくは他の公式サポートのチャネルで聞くべきではありません。ハックの1つは隠し名前空間のパッチですです; 他にもたくさんのハックのリストがCategory:Page specific user rights extensionsにあります。これらの1つを利用することを計画しているのであれば、security issues with authorization extensions/jaを読んで下さい。
[edit] ページの閲覧を認証された内容に制限する
通常は、誰かがページを編集するたびに、そのリビジョンのテキストはデータベースに追加され、ページはそれをソーステキストとして使います。このことは任意のユーザーが任意の時にページを変更できることを意味します。すべてのバージョンのページは"ページの履歴"で見ることができます。
現在のリビジョンの代わりに特定の"認証された"リビジョンを表示するためには、FlaggedRevs extensionが必要になります。許可されたユーザーはページ、とテキスト、テンプレートのリビジョンをレビューすることが可能で、その時点で示される画像のページのリビジョンはデータベースに記録されます。最近の更新はこの方法でパトロールされ、認証されたバージョンはページの履歴でマークが付けられます。
[edit] いくつかのページに対する閲覧制限
管理者以外の誰にでも閲覧制限をしたい場合、単に、deletedを使うことが出来る。管理者でも閲覧制限をしたい場合、the Oversight extensionを使ってより恒久に取り去ることが出来る。ページのテキストを完全に壊したい場合、データベースから手動で取り去ることが出来る。この場合、この状態中でページは編集できず、そしてもはや存在しない。
[edit] 認証されたバージョンのみを表示する
詳細に関しては、Security issues with authorization extensions/jaをご覧下さい
wiki上で読み手によるそれぞれのページの安定バージョン以外のすべてのページの閲覧を制限することもできます。安定バージョンを持たないページは閲覧できません。選択された閲覧の制限に関して、これは推奨されません。また、画像の認証が有効ではない場合この機能は動作しないことに注意して下さい(読者は画像を閲覧できないことがあります)。
Note: 安定バージョンを例外 にすることでこれは機能しますので、一般的には閲覧権限を無効にする必要があります。See the #すべてのページの閲覧を制限するのセクションをご覧下さい。
Note: 認証されていないテンプレートもしくは画像を使う認証されたページはこれらのテンプレートと画像も表示します。
[edit] 他の制限
作成者のみにページを編集可能か、履歴の閲覧を禁止にしたいか、そのほかのいくつかをしたいと思う。それらのどれもMediaWikiはサポートしていない。もしも、それ以上細かな許可を必要とするならば、#以下も参照節にこの目的のためにデザインされた他のwikiパッケージのリンクがあり、そのためにデザインされていないが、何らかの方法で動作するMediaWikiをゆがませるハックの試みのようなものである。
[edit] 以下も参照
There are some related manual/help pages that may be of interest:
- Manual:LocalSettings.php/ja
- Manual:$wgGroupPermissions/ja
- Manual:$wgRestrictionTypes
- Manual:$wgRestrictionLevels
- Manual:$wgNamespaceProtection
- Manual:$wgEmailConfirmToEdit
- Manual:$wgNonincludableNamespaces
- Manual:User rights/ja
- Manual:User rights management/ja
- Help:Assigning permissions/ja
他のwikiソフトウェアの中にはMediaWikiよりもきめ細かいアクセスコントロールのサポートをしているものがあります:
- MoinMoin
- GroupWikiBase based on MediaWiki (limited documentation, small project)
- TWiki
- TikiWiki has fully configuable access control to features and permission levels.
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
- meta:Page access restriction with MediaWiki
- CTLpedia hacks
- Extension:PageSecurity
- Extension:Hierarchical Namespace Permissions
- Extension:BizzWiki
- Extension:GroupPermissionsManager
- Extension:AuthorProtect