サーバーMOD > CraftBukkit > Bukkitプラグイン > PermissionEx

プラグイン名 PermissionEx ※開発停止
製作者 zml2008 他
配布場所 PermissionEx(BukkitDev)
前提プラグイン なし
最新バージョン 1.23.4
最新対応バージョン 1.12.2(動作確認)
生成されるファイル PemrmissionEx(フォルダ)>config.yml,permission.yml
ライセンス GNU General Public License version 2 (GPLv2)
ソースコード https://github.com/PEXPlugins/PermissionsEx
関連サイト 公式Wiki,フォーラム
備考 ここではPermissionExの短縮を公式Wikiと同じように「PEX」と表記することにします。(短縮はPEX,PEx,Pexと様々ありますが)

目次


PermissonExについて

PermissionExは、サーバーのユーザーの権限を設定するプラグインです。
権限設定プラグインの中では定番です。そのため、他プラグインとの連携も多くされています。
しかしながら、2017年12月24日にGitHubのREADME.mdにて開発中止と、以降はPermissionExの設定をインポート(意訳: 引き継ぎ)出来るLuckPermsを利用するよう宣言されました。
BSJW版: PermissionExプラグイン解説

名称の説明

Permissionとは権限という意味です。
短縮では、PEXやPex,PExと表記されることがありますが、このページでは短縮を公式Wikiと同じ「PEX」とします。

また、PEX等で使われる権限をpermission(パーミッション)と、ファイルに書き込む文字列の事をpermission node(パーミッションノード)と呼びます。

更新情報

PermissionEx v1.23.4
  • Improve performance at the cost of removing per-user debug mode
  • Fix issue with UUID lookup in /pex user <user> group set <group>

+過去の更新情報
過去の更新情報
PermissionEx v1.23.3
  • Revert earlier changes in CachingData to fix some people's issues
PermissionEx v.23.2
  • Fix timed groups check + possibly concurrent modification exception
  • Fix a few CMEs, other bugs
  • Fix rank ladder fetching
  • Preserve group position when swapping groups

既知の不具合

PermissionExの導入方法

CraftBukkitSpigotを参考にしてサーバーを立てて下さい。
サーバー起動用のjarがある階層にあるpluginsフォルダに突っ込んで、サーバーを起動して下さい。

対応環境(確認済みで)

PermissionEx v1.23.3
  • ◆Bukkit-1.8.x,Spigot-1.8.x'1.7.10

+過去の対応環境
(MOD名) ver
  • ◆Bukkit-x.x.x,Spigot-x.x.x

設定ファイルの初期設定/記述

※人やバージョンによって差異があることがあります。

config.ymlの初期記述(ver:1.23.3)

multiserver:
  use-netevents: true
permissions:
  debug: false
  allowOps: false
  user-add-groups-last: false
  log-players: false
  createUserRecords: false
  backend: file
  informplayers:
    changes: false
  basedir: plugins/PermissionsEx
  backends:
    file:
      type: file
      file: permissions.yml
updater: true
alwaysUpdate: false


permission.ymlの初期記述(ver:1.23.3)

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
schema-version: 1

コマンド一覧

管理コマンド一覧

正しくしてくれる翻訳者はぜひ直して下さい。
翻訳元:公式(en)-Commands
コマンド パーミッションノード 説明
pex permissions.manage ヘルプを表示します。
pex toggle debug permissions.debug デバッグモードを有効/無効化します。(注意:有効化するとサーバーログが大きくなってしまうため、デバッグするときのみ有効化して下さい。)
pex user <user> toggle debug permissions.manage.<user> 特定のユーザーのデバッグモードを有効/無効化します。(注意:This can still produce **many** entries in your server.log file. Best used immediately _before_ and _after_ a user executes an action or command.)訳して
pex user <user> check <permission> permissions.manage.<user> 特定のユーザーのパーミッションを調べます。
pex reload permissions.manage.reload Pexの環境をリロード(再読み込み)します。
pex config <node> [value] permissions.manage.config configからの<node>の値を表示します。 新しい指定の[value]を設定します。(?)
pex backend permissions.manage.backend 現在の使われているbackend(?)を表示します。
pex backend <backend> permissions.manage.backend Change the permissions backend on-the-fly (注意して使用して下さい) Note that this will only change the backend on-the-fly, it will not save the change in the config file, nor will it convert anything. This is for testing only.)
pex hierarchy permissions.manage.users 完了されたuser/groupの階層を表示します。
pex import <backend> permissions.manage.dump users/groups選択したフォーマットをインポートし(取り込み)ます。
pex users cleanup <group> [threshold] permissions.manage.users.cleanup Remove "dead" users from the file. [threshold] is in days and defaults to 30

ワールド管理系コマンド一覧

pex worlds permissions.manage.worlds サーバーとPEXが読み込んでいるワールド一覧を表示します。
pex world <world> permissions.manage.worlds <world>のPEXの情報を表示します。
pex world <world> inherit <parentWorlds> permissions.manage.worlds.inheritance 親<world>のワールドを設定します。<parentWorlds> は一つか","でワールドを分けて複数指定します。

ユーザー管理コマンド一覧

pex users list permissions.manage.users permission.ymlに記述されているユーザーの一覧を表示します。
pex users permissions.manage.users permission.ymlに記述されているユーザーの一覧を表示します。※上と同じ
pex user permissions.manage.users permission.ymlに記述されているユーザーの一覧を表示します。※上と同じ

ユーザーの権限管理コマンド一覧

pex user permissions.manage.users 新しいユーザーを表示します。

チュートリアル

このファイルの記述を間違えるとプラグインは正常に動作せず、権限設定も有効になりません。
結果的に荒らし行為の標的となってしまう恐れがあります。
当Wikiや編集者は一切の責任を負いません。必ず自己責任で設定してください。

権限の設定方法


権限を設定する方法は二つあります。
1.権限をコマンドで追加していく方法
2.permission.ymlを編集する方法

1のコマンドで追加する人は一つ一つ追加する必要があるため、かなり大変です。
ですが、YAML形式の書き方を知らなくても可能なため簡単です。

2の編集をしていく方法は、YAML形式の書き方を知る必要があり、ミスをしてしまう事もあり、ミスをした時にエラーログを読む必要もあります。
ですが1に比べて多くの追加を一度に出来るため、楽ではあります。
プラグイン導入後に生成されるplugins/PermissionEx内のpermission.ymlを書き変えることで、権限を設定出来ます。
またそのファイルは、他プラグインのようにYAML形式が使用されています。
ですので先にYAMLファイルのページを見ておくことを推薦します。

→ どちらを選ぶのかは好みです。

権限をコマンドで追加していく方法

コマンド一覧からやりたいことの中で適応するコマンドを、実行して下さい。
それにより勝手にpermission.ymlに変更が加えられます。

permission.ymlを編集する方法(基礎)

YAMLファイルについて書いたのでそちらを参照した上で見てください。

permission.ymlを編集する際の注意

YAML形式は空白が大切です。ですので非公式フォーラム等で質問をする際には空白が回答者にわかるようにして下さい。

  • YAMLでは既に「'」「-」「:」「#」「%」「.」が予約文字として使われています。そのためそれらの文字を予約文字として使用されないようにするには「"」で囲む必要があります。
例:「%prefix%player%suffix> &e%message」では無効で「"%prefix%player%suffix> &e%message"」で有効となります。

  • 数字で構成されているのは「'」で囲む必要があります。
例:「rank: 1000」や「45625:」では無効で「rank: '1000'」や「'45625': 」では有効となります。

  • またYAML形式の仕様ではありませんが、PEXでは「}」「{」「)」「(」「?」「*」も予約文字として使われています。

  • ファイル内でTAB文字を使用できません。TAB文字を使用せず、スペース2つで字下げを行わなくてはいけません。

  • それぞれのグループはラインの初めから始める必要があります。また、そのセクション内に含まれる各セクションでは、字下げを行う必要があります。

この項目ではModifyworld(Wiki)を使用して説明します。
※Modifyworldとは、PEXと組み合わせて使用し、権限を付与しないかぎり、許可した以外の操作(他のプラグイン等は含まない)が出来ないようにするプラグインです。

permission.ymlの初期記述の理解

編集するにはまず何が書いてあるかを理解しなくてはいけません。
初期記述を説明します。

groups:    <--グループの設定を始めるという目印。
  default:    <--defaultという名前のグループの設定を始めるという目印。
    options:       <--oprion(オプション)の設定を始めるという目印。
      default: true    <--標準でこのグループに所属するかの設定。
    permissions:    <--Permission(権限)の設定をはじめるという目印。
    - modifyworld.*    <--実際の権限(この場合はmodifyworld.以下の権限をすべて与えるという意味)
schema-version: 1    <--触らないで下さい。どの形式で書くのかを宣言。

※「.*」とは、「.」以下のもの全てという意味のワイルドカードです。

設定変更(管理者グループの追加)

次に管理者のグループを追加してみましょう。
追加する場合はgroups:の下に次のような形の文を挿入します。

 グループ名:
   options:
     default: false
   permissions:

では実際に管理者権限を持つAdminグループを作成してみます。

groups:
  default:
    permissions:
    - modifyworld.*
    options:
      default: true
  Admin:
    options:
      default: false    <--default設定がfalseなので標準では属さないようになります。
    permissions:
    - '*'    <--ワイルドカードですべての権限を与える。

Adminグループは標準では誰も属さず、全ての権限があります。
注意ですが、Adminのpermissionsのところに

- '*'

と書いていますが、これがもし

- '*

だとエラーで動作しませんので注意してください。

設定変更(モデレーターグループの追加)

今回モデレーターグループと書きましたが、名前はなんでもいいです。
以下の権限を与えてみます。

  • BanとBan解除コマンドの使用
  • ゲームモードの変更
  • tpコマンドの使用

まず権限を与えるにはその権限に対応したPermissionを知る必要があります。
Bukkit標準のコマンドのPermissionはこちらに記載してあります。

では書いていきましょう。

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
  Admin:
    options:
      default: false
    permissions:
    - '*'
  Moderator:
    options:
      default: false
    inheritance:
    - default
    permissions:
    - bukkit.command.ban.player
    - bukkit.command.unban.player
    - bukkit.command.gamemode
    - bukkit.command.teleport

今回また新しい設定が出てきました。

inheritance:
- default

これはdefaultグループの権限を継承するという意味です。
つまりModeratorグループはdefaultグループの権限も持っているという意味です。

設定変更(ユーザーの権限グループ変更)

このままだと管理者が入った場合でもdefaultグループになってしまいます。
なのでユーザーにグループを設定します。
今まで書いてきたpermissions.ymlファイルの下に以下の内容を追記してくだい。

users:
  自分のMinecraftIDのUUID:
    group:
    - Admin
    options:
      name: 自分のMinecraftID

現時点でこうなっているはずです。

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
  Admin:
    options:
      default: false
    permissions:
    - '*'
  Moderator:
    options:
      default: false
    inheritance:
    - default
    permissions:
    - bukkit.command.ban.player
    - bukkit.command.unban.player
    - bukkit.command.gamemode
    - bukkit.command.teleport
users:
  自分のMinecraftIDのUUID:
    group:
    - Admin
    options:
      name: 自分のMinecraftID

これで自分をAdminグループに設定しました。
これ以降ユーザを追加する場合は
  自分のMinecraftIDのUUID:
    group:
    - Admin
    options:
      name: 自分のMinecraftID
を追記します。

以上で簡単な説明は終わりです。
更に設定することが出来ますが、それは次の項目(高度)の方で説明します。

permission.ymlを編集する方法(高度)

前の項目(基礎)が終わっていることが前提です。
まず、「高度」な設定なので慣れてない人はおすすめしません。
それは、間違えてしまった場合に権限がしっかり消せていなかったりする可能性があるからです。
またエラーログも読んでいく必要があるからです。

※一部分を抜き出して記載している事があります。

この項目でもModifyworld(Wiki)を使用して説明します。
※Modifyworldとは、PEXと組み合わせて使用し、権限を付与しないかぎり、許可した以外の操作(他のプラグイン等は含まない)が出来ないようにするプラグインです。

特定の権限を剥奪する

(一部分を抜き出して記載しています)

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*

例えばこの権限からチャットする権限を剥奪するとしましょう。

このように記述します。

groups:
  default:
    options:
      default: true
    permissions:
    - -modifyworld.chat
    - modifyworld.*

これでdefaultグループはチャットが出来ないはずです。
この時注意すべき点は許可する権限の前に記述する事です。

これだと動作しません。(チャットが出来てしまう)

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
    - -modifyworld.chat

ですので、許可する権限の前に記述して下さい。

ワールド毎に権限設定

(一部分を抜き出して記載しています)

groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*

では例として以下の条件を適応したものを作ります。

  • defaultグループはsurvivalワールドにてmodifyworldの全権限を得る。
  • defaultグループはcreativeワールドにてmodifyworldの全権限とゲームモードを変更する権限を得る。
  • memberグループはsurvivalワールドにてdefaultグループの権限を継承しつつTPコマンドを実行する権限を得る。
  • memberグループはcreativeワールドにてdefaultグループの権限を継承しつつチャットが出来ないようにする。

このように記述します。

groups:
  default:
    options:
      default: true
    permissions:
      worlds:
        survival:
          permissions:
          - modifyworld.*
        creative:
          permissions:
          - modifyworld.*
          - bukkit.command.gamemode
  member:
    inheritance:
      - default
    permissions:
      worlds:
        survival:
          permissions:
          - bukkit.command.teleport
        creative:
          permissions:
          - -modifyworld.chat

configファイルでの設定変更

Plugin導入後に生成されるplugins/プラグイン名フォルダのconfigの中身を書き変えることで、設定を変更できる。
※(t/f)と書かれているものはtrueで有効、falseで無効となるという意味です。

permissions:
    backends:    <--バックエンドの定義の設定。
        file:    <-- 基本的なバックエンドファイルの種類の設定。
            file: permissions.yml    <-- 使うためのファイルの名前の指定。
    backend: file    <--開始時にバックエンドファイルを使用する設定
    createUserRecords: false    <--他の設定(t/f)
    allowOps: false    <--?(t/f)
    debug: false    <--デバッグモードを利用するのか。(有効にした場合ログが大変なことになるらしいです)(t/f)
    user-add-groups-last: false    <--?(t/f)
    basedir: plugins/PermissionsEx    <--指定したいファイルの場所(バックエンドファイルのみ)
    informplayers:
        changes: false    <-- Whether to notify players when they have their permissions changed(t/f)
multiserver:
    use-netevents: true    <--?(t/f)
updater: true    <--起動時のアップデートを利用するか。(t/f)
alwaysUpdate: false    <--いつもアップデートを利用するのか。(t/f)

その他

エラーの解決法とか

簡易的なものとしてエラーが出た時の解決法を書いておきます。
+長かったりするので隠しておきます
(見やすくするため一部分を抜き出しています)
※使用環境 PEX:v1.23.4 Spigot:1.8.8

PEXコードは初期記述のまま利用します。

[PermissionsEx]
========== UNABLE TO LOAD PERMISSIONS BACKEND =========
Your configuration must be fixed before PEX will enable
Details: Error loading permissions file!
=======================================================
(~省略~)
Caused by: org.bukkit.configuration.InvalidConfigurationException: mapping values are not allowed here
in 'string', line 3, column 16:
       permissions:
                  ^
(~以下省略~)
エラー全文(外部サイト)
この場合は permissions より上のどこかに「:」(コロン)がないことが原因です。
「:」(コロン)がない場所があるかと思われますので探し出してみましょう。
groups:
 default
   permissions:
   - modifyworld.*
   options:
     default: true
schema-version: 1
の様になっていることがあります。
主に、権限の追加やグループ追加時によく見ます。注意しましょう。

in 'string', line 3, column 16:
       permissions:
                  ^
物にもよりますが、エラーの大体が「何行目」の「何文字目」の「どこでエラーが出ている」か、が書かれています。
上の場合、「3行目」の「16文字目」の「permissions: 後の『:(コロン)』でエラーが出ている」ということになっています。
しかし、少し上に書いたPEXコードではちゃんと「:」(コロン)が書いてあります。
しかし、出ているということは、その上の「default」でエラーが出ているということになります。

本当によくあることであるため、保存してリロードする前によく確かめましょう。
また、エラーが出ても非公式フォーラム等の質問サイトなどで質問をする前に「解決」させる努力をしましょう!

UUIDのサポート

PEXはver:1.21よりUUIDをサポートしています。ログインまたはその他のPermissionsEx機能によって参照されるUUIDをかけてユーザーを移行します。

The player's last known name will be stored under the name option, which can allow for reverting changes (though this is still complicated, so read this section before proceeding) However, there are some things to take note of if your server is run in offline mode for any reason.
(訳して)

サーバーがオフラインモードで実行されると、UUIDの名前のみに基づき実行されます。
これにより、ユーザーは、ユーザーが認証できるようになる場合であっても、自分の名前を変更した場合、デフォルトでは、そのUUIDが変更されることを意味します。
ただし、一部のプロキシでは、この制限を回避する方法があります。

BungeeCordでの利用

BungeeCordサーバー上でUUIDを取得するには、サーバーがSpigotであり、なおかつspigot.yml内のbungecordがtrueになっている事で可能となります。

LilyPad

LilyPadサーバー上でUUIDを取得するには、"LilyPad Bukkit-Connect plugin"を導入するだけで可能です。

参考にしたリンク集

以下のサイトを翻訳またはコピーして使用しています。
→翻訳させて頂いてます。
  • BukkitJapanWiki/PermissionEx解説ページ(リンク切れ/運営停止)
→許可を頂き、引用に近い形で使用させて頂いてます。

編集用コメント

コメント欄の方針に関してはコメント欄方針を参照して下さい。
wikiの編集が苦手な方は、以下のコメントフォームへ書き込んで頂ければ有志でページに取り込みます。
※コメントを投稿する際は、以下の点を確認して下さい※
  • 編集に関わらない内容のコメント・質問・雑談は一律して削除されます。
    Wiki運営に関してはWiki運営掲示板、質問は質問掲示板、雑談等は非公式フォーラムにてお願いします。
  • 投稿の前に、一度コメントログや、バージョンアップ直後はパッチノートにも目を通し、既に同じ内容が載っていないか確認して下さい。
  • 投稿されているコメントへの返信の際は、返信したいコメント横の○にチェックを入れて返信して下さい。
    表示できる親コメントの数は限られます。新規投稿をむやみに行うことは、他のコメントが流れてしまう要因になります。
  • 初版(MODテンプレを改変して来ました)です。次には記述方法を書きます。 - smk7758 2015-12-11 23:42:43
  • 記述は大変なので、先にコマンド一覧を追加していきたいと思います。 - smk7758 2015-12-14 17:35:57
  • ちょっと更新。(主にYAMLの部分) - smk7758 2015-12-22 23:11:54
  • BukkitJapanWikiからのコピーが可能と許可を頂いたので、参考にして作成していきます。 - smk7758 2015-12-23 14:52:56
  • 簡易的なエラーの解決法の追加と最新版(1.23.4)が公開されていたので書き換えました - yamagami 2016-02-24 22:50:21
    • 若干編集をしました。編集をしていただき嬉しいです! - smk7758 2016-03-11 23:36:53
  • 更新情報にv1.23.4の情報を書きました。また、PEXがSpigot1.9の互換性があるようです(?) - yamagami 2016-04-04 14:25:27
  • PEX開発停止とのことなので、更新しました。 - smk7758 2018-01-21 14:21:15
名前: