Manual:利用者権限
利用者権限は、異なる利用者グループに割り当てられるアクセス(ページの編集や利用者の投稿ブロックなど)許可です。 MediaWikiには既定の利用者権限と利用者グループが付属していますが、これらはカスタマイズできます。 このページでは既定の利用者権限と利用者グループ、そしてそれらのカスタマイズについて説明します。
個別のウィキ利用者をグループに追加/除去する方法については、Help:利用者権限と利用者グループ と Manual:MediaWiki での利用者グループの設定 を参照してください。
グループの権限の変更
既定の MediaWiki インストレーションでは、特定の権限を既定のグループに割り当てます (下記参照)。 LocalSettings.php 内の $wgGroupPermissions 配列を以下の構文で編集することで既定の権限を変更できます。
$wgGroupPermissions['group']['right'] = true /* または false */;
$wgGroupPermissions
は includes/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 group'
という利用者グループを作りたい場合は'random-group'
や'random_group'
といった名前を使って下さい。 さらに、グループの作成には小文字のみを使用することをお勧めします。例えば、次のようなページを作ろうと考えるかもしれません。
- 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で利用可能です。 古いバージョンをお使いの場合、ウィキ上の"Special:Version"を参照して、お使いのバージョンが"バージョン"列に記載されているかご確認ください。
権限 | 説明 | 既定でこの権限を持つ利用者グループ | バージョン |
---|---|---|---|
閲覧 | |||
read | ページを閲覧 - falseに設定すると、$wgWhitelistRead で特定のページを上書きする
|
*, user | 1.5+ |
編集 | |||
applychangetags | 自身の編集にタグを適用 - edit 権限が必要
|
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 | 細部の編集の印を付ける - edit 権限が必要
|
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 インターフェイスの使用を禁止できるようにします - block 権限が必要 | 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でdeleterevision とdeletelogentry に分割されました
|
suppress | 1.6+ |
editcontentmodel | ページのコンテンツモデルを編集 - 「edit」権限が必要 | user | 1.23.7+ |
editinterface | ユーザーインターフェースを編集 - インターフェイス メッセージを含みます。 サイト全般の CSS/JSON/JS の編集には以下のような分離権限が必要となりました。 - 「edit」権限が必要 | sysop, interface-admin | 1.5+ |
editmyoptions | 自身の個人設定を編集 | * | 1.22+ |
editmyprivateinfo | 自身の非公開データ (例: メールアドレス、本名) を編集 - 「パスワードの変更」も秘匿しますが、パスワードを変える方法はほかにありません。 - viewmyprivateinfo の権利が必要
|
* | 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」権限が必要
無効にするには |
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+ |
グループの一覧
次のグループは最新バージョンの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 | 登録アカウント。 Does not include temporary accounts. | 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 | Users who can change the rights of other users by default and therefore have full access of the entire wiki. | noratelimit, userrights | 1.5+ |
suppress | deletelogentry, deleterevision, hideuser, suppressionlog, suppressrevision, viewsuppressed |
MW 1.12 から、$wgAutopromote を使用して、利用者が(自動認証されメールの認証に関して)自動的に昇進する独自のグループ情報を作ることができます。 権限を割り当てるだけで、任意のカスタム グループを作成することもできます。
既定の権限
既定の権限は MainConfigSchema.php で定義されています。
- HEAD バージョンでの既定値: https://phabricator.wikimedia.org/diffusion/MW/browse/master/includes/MainConfigSchema.php
- 最新の安定版リリースであるバージョン 1.42 での既定値は、以下で利用できます: https://phabricator.wikimedia.org/diffusion/MW/browse/REL1_42/includes/MainConfigSchema.php
- その他の権限:
PermissionManager::getAllRights()
を実行するとご利用のウィキで利用者に付与されたすべての権限を一覧できるはずです。
新しい権限の追加
コーダ限定の情報を以下に示します。
新規の権限をコアに、例えば新規の特別ページを制御する権限を追加する場合、存在する権限として 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-* メッセージの使用例は、「……する権限がありません」などの文章です。
関連項目
- Special:ListGroupRights – このヘルプページにリンク。文書化未満の権限が含まれる場合あり。
- Help:利用者権限と利用者グループ – Special:Userrightsのインターフェイスの使用方法を解説(ビューロクラット向け)
- Manual:MediaWiki での利用者グループの設定 – 管理や利用者グループの割り当てについての解説。
- Manual:$wgNamespaceProtection
- Manual:$wgAutopromote
- Manual:$wgAddGroups , Manual:$wgRemoveGroups
- Manual:アクセス制限 – 例
- Manual:Establishing a hierarchy of bureaucrats
- カテゴリ:利用者権限の拡張機能 – 利用者権限に関連する多数の拡張機能