Manual:利用者権限
利用者権限は、異なる利用者グループに割り当てられるアクセス(ページの編集や利用者の投稿ブロックなど)許可です。 MediaWikiには既定の利用者権限と利用者グループが付属していますが、これらはカスタマイズできます。 このページでは既定の利用者権限と利用者グループ、そしてそれらのカスタマイズについて説明します。
個別のウィキ利用者をグループに追加/除去する方法については、Help:利用者権限と利用者グループ と Manual:MediaWiki での利用者グループの設定 を参照してください。
グループの権限の変更
A default MediaWiki installation assigns certain rights to default groups (see table at #List of permissions).
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;
グループの新規作成とそのグループへの権限の割り当て
Custom groups can be created. A group is created implicitly, by just assigning it rights in $wgGroupPermissions[ 'group-name' ] where group-name is the actual name of the group.
MW 1.12 以降、$wgAutopromote を使用して、(autoconfirmed のように) 利用者が自動的に昇進する独自のグループを作成できます。
権限を割り当てるだけでなく、次の3つのページを適切な内容で作るべきです。
- MediaWiki:Group-<group-name> (内容:
グループ名) - MediaWiki:Group-<group-name>-member (内容:
グループのメンバーの名前) - MediaWiki:Grouppage-<group-name> (内容:
グループ ページのページ名)
標準では、ビューロクラットは誰に対しても権限を付与し、あるいは除去することができます。
しかしながら、$wgAddGroups や $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」というグループ解説ページを設定します。
この例では、編集権限(ページの編集や作成)を標準で無効にして、writer と名付けられた利用者グループを作成し、そのグループに編集権限を付与します。
利用者は 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で利用可能です。 古いバージョンをお使いの場合、ウィキ上の"Special:Version"を参照して、お使いのバージョンが"バージョン"列に記載されているかご確認ください。
| 権限 | 説明 | 既定でこの権限を持つ利用者グループ | バージョン |
|---|---|---|---|
| 閲覧 | |||
| read | ページを閲覧 – falseに設定すると、$wgWhitelistReadで特定のページを上書きする
利用者権限
'read' (ページの閲覧を許可) を false に設定すると ウィキ (記事、トーク、...) ページのみが保護されますが、{{$1|アップロードされた ''ファイル'' ($UploadPath 下位ディレクトリ内の画像、ファイル、文書...) は常に、既定では直接アクセス経由で読み取り可能なままです}}。 Uploaded files (including images, files, docs) under the $wgUploadPath subdirectories will always remain publicly accessible via direct URL access by default.画像の閲覧やファイルのダウンロードのアクセスをログイン利用者のみに制限したい場合は、Manual:画像認証 および img_auth.php の各ページの情報を使用してください。 |
*, 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 | ページを編集 – read 権限が必要
|
*, user | 1.5+ |
| editsemiprotected | 「Allow only autoconfirmed users」の保護が設定されたページを編集 – カスケード保護なし – edit 権限が必要
|
autoconfirmed, bot, sysop | 1.22+ |
| editprotected | 「Allow only administrators」の保護が設定されたページを編集 – カスケード保護なし – edit 権限が必要
|
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 権限も必要
|
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+ |
| マネジメント | |||
| autopatrol | Modifies certain actions performed by the permission holder, automatically marking them as "patrolled" – Depends on $wgUseRCPatrol、$wgUseNPPatrol、$wgUseFilePatrol
|
bot, sysop | 1.9+ |
| 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 | 1.16+ |
| 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 | 自身のウォッチリストを編集 (注: この権限がなくてもページを追加できる権限が他にもあります) – viewmywatchlist 権限が必要
|
user | 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+ |
| ignore-restricted-groups | 特定の制限された利用者グループの編集に関する条件を回避する – Only applies to groups the user would be otherwise able to change, based on userrights right and the contents of $wgAddGroups.
|
— | 1.46+ |
| markbotedits | 巻き戻しをボットの編集として扱う – Manual:巻き戻し を参照してください – rollback 権限が必要
|
sysop | 1.12+ |
| mergehistory | ページの履歴を統合 – edit 権限が必要
|
sysop | 1.12+ |
| pagelang | ページの言語を変更 – $wgPageLanguageUseDB が true でなければなりません
|
— | 1.24+ |
| patrol | Mark certain actions as "patrolled" – depends on $wgUseRCPatrol、$wgUseNPPatrol、$wgUseFilePatrol
|
sysop | 1.5+ |
| patrolmarks | 最近の更新で巡回済み印を閲覧 (note that this is not needed if the group already has the patrol right)
|
— | 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 | 全利用者権限を編集 – 任意の利用者に対してあらゆる(*)グループを付与/除去できるようにします * |
bureaucrat | 1.5+ |
| userrights-interwiki | 他のウィキの利用者の利用者権限を編集 – userrights 権限が必要
|
— | 1.12+ |
| viewmyprivateinfo | 自身の非公開データ (例: メールアドレス、本名) を閲覧 | * | 1.22+ |
| viewmywatchlist | ウォッチリストを閲覧 | user | 1.22+ |
| viewsuppressed | すべての利用者から隠された版を閲覧 – つまり、suppressrevision の権限をより狭めたものです (注記: suppressrevision 権限があるグループでは不要)
|
suppress | 1.24+ |
| 管理 | |||
| deletechangetags | データベースからタグを削除 – 現在拡張機能によって使用されています | sysop | 1.28+ |
| import | 他のウィキからページを取り込み – "transwiki" (ウィキ間転送) – edit 権限が必要
|
sysop | 1.5+ |
| importupload | ファイルアップロードでページを取り込み – この権限はバージョン1.5までは、importrawと呼ばれていました。 – edit 権限が必要
|
sysop | 1.5+ |
| managechangetags | タグを作成および有効化/無効化 – 現在は拡張機能では使用されていません | sysop | 1.25+ |
| renameuser | 利用者名を変更 (formerly was part of the Renameuser extension) | bureaucrat | 1.40+ |
| 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 | 自動処理と認識させる – edits and logged actions are hidden from recent changes. オプションで閲覧できます | 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です。
|
— | 1.15+ |
| suppressredirect | 転送ページを作成せずにページを移動 – move 権限が必要
|
bot, sysop | 1.12+ |
グループの一覧
次のグループは最新バージョンのMediaWikiで利用可能です。 古いバージョンではこれらの機能の一部が実装されていないものがあります。
| グループ | 説明 | 既定の権限 | バージョン |
|---|---|---|---|
| * | すべての利用者 (匿名利用者を含む)。 | createaccount, createpage, createtalk, edit, editmyoptions, editmyprivateinfo, read, viewmyprivateinfo | 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, editmywatchlist, minoredit, move, move-categorypages, move-rootuserpages, move-subpages, movefile, purge, read, reupload, reupload-shared, sendemail, upload, viewmywatchlist | 1.13+ |
| autoconfirmed | 少なくとも $wgAutoConfirmAge の期間は活動していて少なくとも $wgAutoConfirmCount 回編集している登録済みアカウント。
|
autoconfirmed, editsemiprotected | 1.6+ |
| bot | bot権限を持つロボット(自動化スクリプトを目的とします)。 | autoconfirmed, autopatrol, apihighlimits, bot, editsemiprotected, nominornewtalk, suppressredirect | 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, renameuser, userrights | 1.5+ |
| suppress | deletelogentry, deleterevision, hideuser, suppressionlog, suppressrevision, viewsuppressed | 1.13+ |
定義済み利用者グループの除去
MediaWikiでは、定義済みのグループが多く、用意されています。 これらのグループのほとんどは $wgGroupPermissions[ 'グループ名' ] の中で配列のキーをアンセットすることで除去できます。 詳細は下記を参照してください。
例
この例では bureaucrat グループをすべて除外しています。
重要ポイントは、Special:ListGroupRightsから除去するグループでは、上記6件の変数をすべて必ずアンセットしたか確認することです。しかしながら $wgGroupPermissions のみアンセットするだけでも、Special:UserRightsの対象から除去するには十分です。
unset( $wgGroupPermissions['bureaucrat'] );
unset( $wgRevokePermissions['bureaucrat'] );
unset( $wgAddGroups['bureaucrat'] );
unset( $wgRemoveGroups['bureaucrat'] );
unset( $wgGroupsAddToSelf['bureaucrat'] );
unset( $wgGroupsRemoveFromSelf['bureaucrat'] );
このコードは、Extension:AntiSpoof のように、bureaucrat グループの既定の権限を変更する拡張機能がインストールされている場合、機能しません。
より広範には、拡張機能によって作成された利用者グループを無効にするには、上記のコードはすべての拡張機能が登録された後に実行する必要があります。
This used to be possible by registering an extension function in LocalSettings.php:
$wgExtensionFunctions[] = function() use ( &$wgGroupPermissions ) {
unset( $wgGroupPermissions['oversight'] );
unset( $wgGroupPermissions['flow-bot'] );
};
However, this no longer works reliably due to T275334.
上記のメカニズムを使用すると、sysop、bureaucrat、bot、interface-admin、suppress のグループを除去できます。これらのグループを使用する場合は、通常の利用者許可システムを通じて割り当てられます。
しかし、現在 user グループを除去することは不可能です。
このグループは、通常の権限システムでは割り当てられません。
代わりに、ログインしているすべてのユーザーは自動的にそのグループのメンバーです。
既定の権限
既定の権限は MainConfigSchema.php で定義されています。
- 現在のアルファ版 (HEAD、バージョン 1.46) における既定値
- 最新の安定版 (ブランチ REL1_45、バージョン 1.45) における既定値
- その他の権限:
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
- カテゴリ:利用者権限の拡張機能 – 利用者権限に関連する多数の拡張機能