Manual:利用者権限

From mediawiki.org
This page is a translated version of the page Manual:User rights and the translation is 95% complete.
Outdated translations are marked like this.

利用者権限は、異なる利用者グループに割り当てられるアクセス(ページの編集や利用者の投稿ブロックなど)許可です。 MediaWikiには既定の利用者権限と利用者グループが付属していますが、これらはカスタマイズできます。 このページでは既定の利用者権限と利用者グループ、そしてそれらのカスタマイズについて説明します。

個別のウィキ利用者をグループに追加/除去する方法については、Help:利用者権限と利用者グループ Manual:MediaWiki での利用者グループの設定 を参照してください。

グループの権限の変更

既定の MediaWiki インストレーションでは、特定の権限を既定のグループに割り当てます (下記参照)。 LocalSettings.php 内の $wgGroupPermissions 配列を以下の構文で編集することで既定の権限を変更できます。

$wgGroupPermissions['group']['right'] = true /* または false */;
既定では $wgGroupPermissionsincludes/DefaultSettings.php に設定されていますが、LocalSettings.php にはありません。 その場合はそのファイルにそれを追加する必要があります。

メンバーが複数のグループを持つときは、任意のグループの最も順位が高い権限を取得します。 匿名利用者を含む、すべての利用者は '*' グループに所属します。また、登録利用者はすべて 'user' グループに所属します。 既定のグループに加えて、同じ配列を使用して新しい任意のグループを作成できます。

以下の例では $wgWhitelistRead に挙げられたページ以外のページをすべて閲覧不可能にした上で、登録利用者のみに対しては再び閲覧許可しています:

$wgGroupPermissions['*']['read'] = false;
# 以下の1行は既定値に含まれているため実際には必要ありません。'*' に false を設定しても、個別に true を設定した権限を持つグループに対しては無効になりません!
$wgGroupPermissions['user']['read'] = true;

次の例ではすべてのページの編集を無効にして、メールアドレスで確認された利用者に対してのみ再び有効にします。

# すべての利用者に対して無効にする
$wgGroupPermissions['*']['edit'] = false;
# user に対しても無効にする: 既定では '*' は編集を許可されていないが、'user' は編集できる
$wgGroupPermissions['user']['edit'] = false;
# メールアドレスの確認が済んだ利用者をグループに属させる
$wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
# グループを利用者一覧から隠す
$wgImplicitGroups[] = 'emailconfirmed';
# 最後に、お望みのグループに true を設定する
$wgGroupPermissions['emailconfirmed']['edit'] = true;

グループの新規作成とそのグループへの権限の割り当て

利用者グループの権限を定義することで新しい利用者グループを作ることができます。コードの $wgGroupPermissions[ 'group-name' ] で、group-name の所に利用者グループの実際の名前を入力してください。

権限を割り当てるだけでなく、次の3つのページを適切な内容で作るべきです。

  • MediaWiki:Group-<group-name> (内容: グループ名)
  • MediaWiki:Group-<group-name>-member (内容: グループのメンバーの名前)
  • MediaWiki:Grouppage-<group-name> (内容: グループ ページのページ名)

標準では、ビューロクラットは誰に対しても権限を付与し、あるいは除去することができます。 しかしながら、Manual:$wgAddGroups Manual:$wgRemoveGroups を使用している場合は、代わりにカスタマイズする必要がある場合があります。

次の例では任意の「projectmember」グループを作成します。利用者をブロックしたりページを削除することができ、そのグループの編集は既定で最新の更新には表示されません:

$wgGroupPermissions['projectmember']['bot'] = true;
$wgGroupPermissions['projectmember']['block'] = true;
$wgGroupPermissions['projectmember']['delete'] = true;
利用者グループ名には、スペースを含めることは出来ません。例えば、'random user'という利用者グループを作りたい場合は'random-user''random_user'と言った名前を使って下さい。 さらに、グループの作成には小文字のみを使用することをお勧めします。

例えば、次のようなページを作ろうと考えるかもしれません。

  • MediaWiki:Group-projectmember (内容: Project members)
  • MediaWiki:Group-projectmember-member (内容: Project members)
  • MediaWiki:Grouppage-projectmember (内容: Project:Project Members)

これは当該グループを、インタフェースに「Project Members」と呼ばせ、メンバーは「Project Member」と呼ばせ、「Project:Project members」というグループ解説ページを設定します。

この例では、編集権限(ページの編集や作成)を標準で無効にして、Write と名付けられた利用者グループを作成し、そのグループに編集権限を付与します。利用者は Special:UserRights を通して、手作業でこのグループに追加することができます。

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['writer']['edit'] = true;
$wgGroupPermissions['writer']['createpage'] = true;

この例では、次のページを作ることになるかもしれません。

  • MediaWiki:Group-writer (内容: Writers)
  • MediaWiki:Group-writer-member (内容: Writer)
  • MediaWiki:Grouppage-writer (内容: Project:Write)

定義済み利用者グループの削除

MediaWikiでは、定義済みのグループが多く、用意されています。 これらのグループのほとんどは $wgGroupPermissions[ '<グループ名>' ] の中で配列のキーをアンセットすることで除去できます。 詳細は下記を参照してください。

この例ではビューロクラットグループをすべて除外しています。 重要ポイントは、Special:ListGroupRightsから除去するグループでは、上記6件の変数をすべて必ずアンセットしたか確認することです。しかしながら$wgGroupPermissionsのみアンセットするだけでも、Special:UserRightsの対象から除去するには十分です。 このコードはすべての require_once 行の後に置く必要があり、Extension:AntiSpoof などの拡張機能の追加を防止し、ビューロクラットグループに既定でパーミッションを付与するコードを取り込まないようにします。

unset( $wgGroupPermissions['bureaucrat'] );
unset( $wgRevokePermissions['bureaucrat'] );
unset( $wgAddGroups['bureaucrat'] );
unset( $wgRemoveGroups['bureaucrat'] );
unset( $wgGroupsAddToSelf['bureaucrat'] );
unset( $wgGroupsRemoveFromSelf['bureaucrat'] );

一部の拡張機能 (Flow、Semantic MediaWikiほか) では、拡張機能の登録段階または登録機能を利用すると、権限が付与されるものがあります。こういう事例ではLocalSettings.phpにある登録機能を使い、既定で設定された利用者グループを解除することになるかもしれません。

$wgExtensionFunctions[] = function() use ( &$wgGroupPermissions ) {
    unset( $wgGroupPermissions['oversight'] );
    unset( $wgGroupPermissions['flow-bot'] );
};


「user」というグループに関する注意

上記のメカニズムを使用すると、管理者、ビューロクラット、およびボットグループを削除できます。これらのグループを使用する場合は、通常の利用者許可システムを通じて割り当てることができます。 しかし、現在userグループを削除することは不可能です。 このグループは、通常の権限システムでは割り当てられません。 代わりに、ログインしているすべてのユーザーは自動的にそのグループのメンバーです。 これはMediaWikiでハードコードされており、現在は簡単に変更できません。

権限の一覧

以下の利用者権限は最新のバージョンのMediaWikiで利用可能です。 古いバージョンを利用している場合、wiki上の"Special:Version"を見て、"バージョン"カラムでカバーされているバージョンであるかご覧ください。

権限 説明 既定でこの権限を持つ利用者グループ バージョン
閲覧
read ページを閲覧 - falseに設定すると、$wgWhitelistRead で特定のページを上書きする
警告 警告: 利用者権限 「読み取り」 (ページの閲覧を許可) を false に設定すると ウィキ (記事、トーク、...) ページのみが保護されますが、アップロードされた ファイル ($wgUploadPath 下位ディレクトリ内の画像、ファイル、文書...) は常に、既定では直接アクセス経由で読み取り可能なままです
画像の閲覧やファイルのダウンロードのアクセスをログイン利用者のみに制限したい場合は、Manual:画像認証 および img_auth.php の各ページの情報を使用してください。
*, user 1.5+
編集
applychangetags 自身の編集にタグを適用 - requires the edit right user 1.25+
autocreateaccount 外部利用者アカウントで自動的にログイン - より限定されたバージョンの createaccount 1.27+
createaccount 新しい利用者アカウントを作成 - register / registration *, sysop 1.5+
createpage ページ (議論ページ以外) を作成 - edit 権限が必要 *, user 1.6+
createtalk 議論ページを作成 - edit 権限が必要 *, user 1.6+
delete-redirect 単一の版のリダイレクトページを削除 (ご注意:グループに既に delete 権限が付与されている場合は不要です) 1.36+
edit ページを編集 *, user 1.5+
editsemiprotected 「Allow only autoconfirmed users」の保護が設定されたページを編集 - カスケード保護なし - requires the edit right autoconfirmed, bot, sysop 1.22+
editprotected 「Allow only administrators」の保護が設定されたページを編集 - カスケード保護なし - requires the edit right sysop 1.13+
minoredit 細部の編集の印を付ける - requires the edit right user 1.6+
move ページを移動 - edit 権限が必要 user, sysop 1.5+
move-categorypages カテゴリのページを移動 - move 権限が必要 user, sysop 1.25+
move-rootuserpages 利用者ページ本体を移動 - move 権限が必要 user, sysop 1.14+
move-subpages 下位ページを含めてページを移動 - move 権限が必要 user, sysop 1.13+
movefile ファイルを移動 - move 権限が必要で、$wgAllowImageMoving が true である必要があります user, sysop 1.14+
reupload 既存のファイルに上書き - upload 権限が必要 user, sysop 1.6+
reupload-own 自身がアップロードした既存のファイルに上書き - upload 権限が必要 (グループに reupload 権限が既にある場合は不要であることにご注意ください) 1.11+
reupload-shared 共有メディアリポジトリ上のファイルにローカルで上書き - (設定されている場合は)ローカルファイルを使用する (upload 権限が必要) user, sysop 1.6+
sendemail 他の利用者にメールを送信 user 1.16+
upload ファイルをアップロード - edit 権限が必要で、$wgEnableUploads を true にする必要がある user, sysop 1.5+
upload_by_url URL からファイルをアップロード - upload 権限が必要 (1.20以前は管理者に割り当てられていました) 1.8+
マネジメント
bigdelete 大量の履歴があるページを削除 ($wgDeleteRevisionsLimit によって決定される) - 「delete」権限が必要 sysop 1.12+
block 他の利用者による編集をブロックまたはブロック解除 - ブロックの選択肢は、編集ブロック、アカウント新規作成のブロック、同一IPアドレスの他の利用者の自動ブロックを含みます sysop 1.5+
blockemail 利用者によるメール送信をブロックまたはブロック解除 - ブロックされている利用者による Special:Emailuser インターフェイスの使用を禁止できるようにします - ブロック 権限が必要 sysop 1.11+
browsearchive 削除されたページを検索 - Special:Undelete を使用します - 「deletedhistory」権限が必要 sysop 1.13+
changetags 個々の版と記録項目に任意のタグを追加/除去 - 現在は拡張機能では使用されていません user 1.25+
delete ページを削除 1.5–1.11: ページを削除/復元できるようにする。
1.12+: ページを削除できるようにする。 復元については 'undelete' 権限が必要 (下記参照)
sysop 1.5+
deletedhistory 削除された履歴項目 (関連する本文を除く) を閲覧 sysop 1.6+
deletedtext 削除された本文と削除された版間の差分を閲覧 sysop
deletelogentry 特定の記録項目を削除/復元 - 特定の記録項目の情報(操作の記録・要約欄・ある操作をした利用者名)を削除・復元できるようにします - 版指定削除 権限が必要 suppress 1.20+
deleterevision ページの特定の版を削除/復元 - 特定の版の情報(版のテキスト、編集の要約、編集をした利用者)を削除または復元することを許可する(既定では利用できない、実験的な機能です) バージョン1.20でdeleterevisiondeletelogentryに分割されました suppress 1.6+
editcontentmodel ページのコンテンツモデルを編集 - 「edit」権限が必要 user 1.23.7+
editinterface ユーザーインターフェースを編集 - インターフェイス メッセージを含みます。 サイト全般の CSS/JSON/JS の編集には以下のような分離権限が必要となりました。 - 「edit」権限が必要 sysop, interface-admin 1.5+
editmyoptions 自身の個人設定を編集 * 1.22+
editmyprivateinfo 自身の非公開データ (例: メールアドレス、本名) を編集 - 「パスワードの変更」も秘匿しますが、パスワードを変える方法はほかにありません。 - requires the viewmyprivateinfo right * 1.22+
editmyusercss 自身のCSSファイルを編集 - 1.31 以前は誰でも権限を付与されました (つまり「*」) (注意点としてグループがすでにeditusercss権限を得ている場合、この処理は不要) - 「edit」権限が必要 user 1.22+
editmyuserjs 自身のJavaScriptファイルを編集 - 1.31 以前は誰でも付与の対象でした (つまり「*」) (グループがすでにedituserjs権限を付与されている場合は不要)。 - 「edit」権限が必要 user 1.22+
editmyuserjsredirect 自身のリダイレクトではないJavaScriptファイルを編集 (ご注意:グループに既に edituserjs 権限が付与されている場合は不要です) - 「edit」権限が必要 1.34+
editmyuserjson 自身のJSONファイルを編集 (ご注意:グループに既に edituserjson 権限が付与されている場合は不要です) - 「edit」権限が必要 user 1.31+
editmywatchlist 自身のウォッチリストを編集 (注: この権限がなくてもページを追加できる権限が他にもあります) - requires the viewmywatchlist right * 1.22+
editsitecss サイト全体のCSSを編集 - 「editinterface」権限が必要 interface-admin 1.32+
editsitejs サイト全体のJavaScriptを編集 - 「editinterface」権限が必要 interface-admin 1.32+
editsitejson サイト全体のJSONを編集 - 「editinterface」権限が必要 sysop, interface-admin 1.32+
editusercss 他の利用者のCSSファイルを編集 - 「edit」権限が必要 interface-admin 1.16+
edituserjs 他の利用者のJavaScriptファイルを編集 - 「edit」権限が必要 interface-admin 1.16+
edituserjson 他の利用者のJSONファイルを編集 - 「edit」権限が必要 sysop, interface-admin 1.31+
hideuser 利用者名をブロックまたはブロック解除し、公開記録から非表示または表示 - 既定では、編集数が1000以下のユーザーのみ非表示にできます。 - 「block」権限が必要

無効にするには$wgHideUserContribLimit を使用します。

suppress 1.10+
markbotedits 巻き戻しをボットの編集として扱う - Manual:巻き戻し を参照してください - 「rollback」権限が必要 sysop 1.12+
mergehistory ページの履歴を統合 - 「edit」権限が必要 sysop 1.12+
pagelang ページの言語を変更 - $wgPageLanguageUseDB true でなければなりません 1.24+
patrol 他の利用者の編集を巡回済みにする - $wgUseRCPatrol true でなければなりません sysop 1.5+
patrolmarks 最近の更新で巡回済み印を閲覧 1.16+
protect 保護設定を変更し、カスケード保護されたページを編集 - 「edit」権限が必要 sysop 1.5+
rollback 特定ページを最後に編集した利用者の編集を即時巻き戻し - 「edit」権限が必要 sysop 1.5+
suppressionlog 非公開記録を閲覧 suppress 1.6+
suppressrevision あらゆる利用者の特定の版を閲覧、非表示および非表示解除 - バージョン1.13以前、この権限はhiderevisionという名前でした - 「deleterevision」権限が必要 suppress 1.6+
unblockself 自身に対するブロックを解除 - この権限なしに、ブロック権限を有する管理者は他の管理者からブロックされたときにこれを解除することができません。 sysop 1.17+
undelete ページを復元 - 「deletedhistory」権限が必要 sysop 1.12+
userrights 全利用者権限を編集 - 任意の利用者に対してあらゆる(*)グループを付与/除去できるようにします

* $wgAddGroups $wgRemoveGroups によって、allの代わりに特定のグループを追加または除去できる機能を設定できます

bureaucrat 1.5+
userrights-interwiki 他のウィキの利用者の利用者権限を編集 - requires the userrights right 1.12+
viewmyprivateinfo 自身の非公開データ (例: メールアドレス、本名) を閲覧 * 1.22+
viewmywatchlist ウォッチリストを閲覧 * 1.22+
viewsuppressed すべての利用者から隠された版を閲覧 - つまり、"suppressrevision" の権限をより狭めたものです (注記:suppressrevision権限を備えたグループでは不用) suppress 1.24+
管理
autopatrol 自身の編集を自動で巡回済みにする - $wgUseRCPatrol true でなければなりません bot, sysop 1.9+
deletechangetags データベースからタグを削除 - 現在拡張機能によって使用されています sysop 1.28+
import 他のウィキからページを取り込み - "transwiki" (ウィキ間転送) - 「edit」権限が必要 sysop 1.5+
importupload ファイルアップロードでページを取り込み - この権限はバージョン1.5までは、importrawと呼ばれていました。 - 「edit」権限が必要 sysop 1.5+
managechangetags タグを作成および有効化/無効化 - 現在は拡張機能では使用されていません sysop 1.25+
siteadmin データベースをロックおよびロック解除 - ウェブサイトへの閲覧以外のインタラクションをすべてブロックします (既定では利用できません) 1.5+
unwatchedpages ウォッチされていないページ一覧を閲覧 - 利用者がウォッチリストに登録していないページを一覧表示します sysop 1.6+
技術的
apihighlimits API要求でより高い制限値を使用 bot, sysop 1.12+
autoconfirmed IPベースの速度制限を受けない - 'autoconfirmed'グループに対して使用される。詳細な情報は下記のテーブルを参照。 (note that this is not needed if the group already has the noratelimit right) autoconfirmed, bot, sysop 1.6+
bot 自動処理と認識させる - オプションで閲覧できます bot 1.5+
ipblock-exempt IPブロック、自動ブロック、広域ブロックを回避 sysop 1.9+
nominornewtalk 議論ページの細部の編集をした際に、新着メッセージとして通知しない - 「minoredit」権限が必要 bot 1.9+
noratelimit 速度制限を受けない - レート制限の影響を受けません (この権限が導入される前は、設定変数 $wgRateLimitsExcludedGroups がこの目的のために使用されていました) sysop, bureaucrat 1.13+
override-export-depth リンク先ページを5階層まで含めて書き出す
この権限はリンクする対象ページの深さをSpecial:Exportで定義できます。無指定の場合は$wgExportMaxLinkDepth 値を採用、規定値は 0です。
?
suppressredirect 転送ページを作成せずにページを移動 - 「move」権限が必要 bot, sysop 1.12+
writeapi 書き込み API を使用 - 「edit」権限が必要 *, user, bot 1.13+
これらの権限はすべて別々のものを制御しますが、特定の操作を実行するために複数の権限が必要な場合もあります。 例えば編集は許可、閲読は不許可では合理性に欠け、ページを編集するにはまず内容を読まなければならないからです (当該ページがホワイトリスト化されていないという前提。) アップロードは許可、編集は不許可では合理性がなく、画像の投稿には必ず画像の説明などの記入を求められ、編集行為が欠かせないからです。

グループの一覧

次のグループは最新バージョンのMediaWikiで利用可能です。 古いバージョンではこれらの機能の一部が実装されていないものがあります。

グループ 説明 既定の権限 バージョン
* すべての利用者 (匿名利用者を含む)。 createaccount, createpage, createtalk, edit, editmyoptions, editmyprivateinfo, editmywatchlist, read, viewmyprivateinfo, viewmywatchlist, writeapi 1.5+
temp Temporary user accounts (T330816) Similar to * group 1.41+
user 登録アカウント。 applychangetags, changetags, createpage, createtalk, edit, editcontentmodel, editmyusercss, editmyuserjs, editmyuserjson, minoredit, move, move-categorypages, move-rootuserpages, move-subpages, movefile, purge, read, reupload, reupload-shared, sendemail, upload, writeapi
autoconfirmed 少なくとも $wgAutoConfirmAge の期間は活動していて少なくとも $wgAutoConfirmCount 回編集している登録済みアカウント。 autoconfirmed, editsemiprotected 1.6+
bot bot権限を持つロボット(自動化スクリプトを目的とします)。 autoconfirmed, autopatrol, apihighlimits, bot, editsemiprotected, nominornewtalk, suppressredirect, writeapi 1.5+
sysop 既定でページの削除や復元、利用者のブロックやブロック解除などをできる利用者。 apihighlimits, autoconfirmed, autopatrol, bigdelete, block, blockemail, browsearchive, createaccount, delete, deletedhistory, deletedtext, editinterface, editprotected, editsemiprotected, editsitejson, edituserjson, import, importupload, ipblock-exempt, managechangetags, markbotedits, mergehistory, move, move-categorypages, move-rootuserpages, move-subpages, movefile, noratelimit, patrol, protect, reupload, reupload-shared, rollback, suppressredirect, unblockself, undelete, unwatchedpages, upload 1.5+
interface-admin サイト共通CSS/JSの編集権限がある利用者。 editinterface, editsitecss, editsitejs, editsitejson, editusercss, edituserjs, edituserjson 1.32+
bureaucrat 既定で他の利用者の権限を変更できる利用者。 noratelimit, userrights 1.5+
suppress deletelogentry, deleterevision, hideuser, suppressionlog, suppressrevision, viewsuppressed

MW 1.12 から、$wgAutopromote を使用して、利用者が(自動認証されメールの認証に関して)自動的に昇進する独自のグループ情報を作ることができます。 権限を割り当てるだけで、任意のカスタム グループを作成することもできます。

既定の権限

既定の権限は DefaultSettings.php で定義されています。

新しい権限の追加

コーダ限定の情報を以下に示します。

新規の権限をコアに、例えば新規の特別ページを制御する権限を追加する場合、存在する権限として PermissionManager.php $coreRights の一覧への追加は必須 です。(サンプル)。 処理の対象が拡張機能の場合 $wgAvailableRights のもとで実行します。

上記で説明した$wgGroupPermissions を編集し、特定の利用者グループに付与することもできます。

外部のアプリケーションからOAuth もしくは ボット パスワードを使ってこの権限にアクセスを開くには、$wgGrantPermissions を編集して許諾を与えます。

// プロジェクト管理者権限 projectmember-powers right を作成
$wgAvailableRights[] = 'projectmember-powers';

// projectmember-powers を projectmember-group に付与
$wgGroupPermissions['projectmember']['projectmember-powers'] = true;

// 「基本」の同意に projectmember-powers を追加し、個別の  API リクエストに projectmember 権限を使えるようにします
$wgGrantPermissions['basic']['projectmember-powers'] = true;

合わせて /languages/i18n/en.json にはインターフェースメッセージのright-[name]及びaction-[name] を追加します(説明文書はqqq.jsonに記述)。 right-* メッセージはSpecial:ListGroupRightsに提示し、action-* メッセージの使用例は、「……する権限がありません」などの文章です。

関連項目