PermissionsEXのModifyworldに対する設定が反映されない

サーバー運用される方はこちらで情報交換されてはいかがでしょうか?
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.34384)

PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by 十六夜瑞希 » 2012年4月14日(土) 21:09

■状況
permissions.ymlの一部設定が反映され無い状況となっています。

具体的には下記の記述の部分が反映されず、
ブロックの設置・破壊、アイテムの保有・使用が許されない状態になっています。
「pex reload」を実行した際に特にエラーなどはでていません。

□反映されない設定
- modifyworld.blocks.(destroy|place).(1-9|12-22|24-74|77-92|95-124)
- modifyworld.items.(pickup|drop|have).(256-258|260-326|328-355|357-384|2256-2266)

また、文法等の誤りが無いか確認するためブロックとアイテムのIDを指定せずに、
*を指定した場合は設定が機能しました。

□反映された設定
- modifyworld.blocks.(destroy|place).*
- modifyworld.items.(pickup|drop|have).*

ただ、一部のアイテム(溶岩や火打石など)は使用しないようにしたいため、
ブロック毎、アイテム毎の設定をしたいです。
どのように修正すればよいでしょうか。

ご回答宜しくお願い致します。

□設定を編集するに当たって参考にしたページ
https://github.com/PEXPlugins/Permissio ... ions-setup
https://github.com/PEXPlugins/Permissio ... odifyworld

■環境
Windows 7
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
CraftBukkit version git-Bukkit-1.2.5-R1.0-b2149jnks (MC: 1.2.5) (Implementing API version 1.2.5-R1.0)
PermissionsEx v1.19.1
Multiverse-Core v2.4-b527
Modifyworld v1.19
Multiverse-Portals v2.4-b546
Safe Creeper v0.5
Multiverse-SignPortals v2.4-b523
Multiverse-NetherPortals v2.4-b529
ChatManager v1.19
Safe Creeper v0.5

■plugins/PermissionsEx/config.yml
コード: 全て選択
permissions:
  backend: file
  backends:
    file:
      file: permissions.yml
  superperms: {}



■plugins/PermissionsEx/permissions.yml
コード: 全て選択
groups:
  default:
    default: true
    options:
      rank: '1000'
    permissions:
    - modifyworld.login
    - modifyworld.chat
    - modifyworld.sneak
    - modifyworld.sprint
    - modifyworld.digestion
    - modifyworld.damage.take.*
    - modifyworld.mobtarget.*
    - multiverse.portal.access.*
    worlds:
      testworld:
        permissions:
        - modifyworld.*
  Member:
    prefix: '&0(&8M&7ember&0)&7 '
    options:
      rank: '900'
    inheritance:
    - default
    permissions:
    - modifyworld.bucket.(empty|fill).(water|air)
    - modifyworld.blocks.(destroy|place).(1-9|12-22|24-74|77-92|95-124)
    - modifyworld.items.(pickup|drop|have).(256-258|260-326|328-355|357-384|2256-2266)
    - modifyworld.item.use.*
    - modifyworld.damage.deal.*
    - modifyworld.interact.*
    - modifyworld.tame.*
  Admins:
    prefix: '&0(&4Admins&0)&7 '
    permissions:
    - '*'
    options:
      rank: '0'
users:
  *****:
    group:
    - Member


■plugins/Modifyworld/config.yml
コード: 全て選択
enable: true
itemRestrictions: true
informPlayers: true
item-use-check: true
whitelist: false
check-metadata: true
messages:
  whitelistMessage: You are not allowed to join this server. Goodbye!
  prohibitedItem: You have prohibited item "%s".
  permissionDenied: Sorry, you don't have enough permissions
十六夜瑞希
ID:dfe31aab
 

  • (PostNo.34446)

Re: PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by udonya » 2012年4月15日(日) 01:04

こんばんは。

ModifyWorldは設定項目が多くて複雑すぎるため仕方ないのですが、
(十分詳しく書いて下さっていますが)ご質問の文書ですと希望の設定が少し曖昧だったので・・・
以下は、多分こうしたいのだろう的解釈で解説させてもらいました。

permissions.ymlの内容が、
"defaultグループに対して、指定アイテムに関する破壊・設置・取捨・所持・利用、忍び足etc・・・を許可し、その他の全てを許可しない。"内容になっていますが、
十六夜瑞希 さんが書きました:- modifyworld.login
- modifyworld.chat
- modifyworld.sneak
- modifyworld.sprint
- modifyworld.digestion
- modifyworld.damage.take.*
- modifyworld.mobtarget.*
- multiverse.portal.access.*


希望の設定は、
"defaultグループに対して、指定のアイテムに関する破壊・設置・取捨・所持・利用を禁止し、その他の操作を許可する。"内容かと思います。
十六夜瑞希 さんが書きました:ただ、一部のアイテム(溶岩や火打石など)は使用しないようにしたいため、
ブロック毎、アイテム毎の設定をしたいです。


この場合、多くを許可し少数を禁止する設定になりますが、
PEXは許可権限よりも禁止権限が優先される仕様なため、
"全ての操作を許可せずに、特定の操作を許可する"方法よりも、
"全ての操作を許可した上で、特定の操作を禁止する"方法で設定する方が、
単純な設定になり良いと思います。

具体例
例えばdefaultグループに対して次の1~9の禁止のみを行いつつ他を許可したい場合は・・・
コード: 全て選択
 0.modifyworldの権限を全て許可する
 1.バケツに溶岩を汲むことを禁止する
 2.バケツから水を流すことを禁止する
 3.ItemID=3(Dirt)の破壊を禁止する
 4.ItemID=2(Grass)の設置を禁止する
 5.ItemID=1(Stone)の拾得を禁止する
 6.ItemID=281(Bowl)のドロップを禁止する
 7.ItemID=46(TNT)の所持を禁止する
 8.ItemID=61(Furnace)の利用を禁止する
 9.ItemID=259(Flint and Steel)の全ブロックに対する利用を禁止する

のような設定を行う事とし、

permissions.ymlには以下のように設定します。
コード: 全て選択
groups:
    default:
        default: true
        permissions:
        # 0
        - modifyworld.*
        # 1
        - -modifyworld.bucket.fill.lava
        # 2
        - -modifyworld.bucket.empty.water
        # 3
        - -modifyworld.blocks.destroy.3
        # 4
        - -modifyworld.blocks.place.2
        # 5
        - -modifyworld.items.pickup.1
        # 6
        - -modifyworld.items.drop.281
        # 7
        - -modifyworld.items.have.46
        # 8
        - -modifyworld.items.use.61.on.block.*
        # 9
        - -modifyworld.items.use.259.on.block.*

こうする事で、当たり前に行わせたいが項目数が膨大なsprintやsneakやその他諸々・・・の権限を、
都度明示的に許可してやる必要がなくなり、シンプルで管理しやすい設定ファイルとなります。

その他参考情報:
・禁止権限はハイフンを権限に付加する必要がありますので、yml上はハイフン2個になります。
・上記0番の許可を行わない場合は、アイテムの設置許可に、placeだけではなくinteract権限も一緒に許可する必要が発生します。
アバター
udonya
ID:45b66b23
鉄鉱掘り
 
記事: 292
登録日時: 2011年11月03日(木) 01:16

  • (PostNo.34496)

Re: PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by 十六夜瑞希 » 2012年4月15日(日) 14:44

ご回答ありがとうございます。
また、曖昧な記述があって申し訳ございません。

>希望の設定は、
>"defaultグループに対して、指定のアイテムに関する破壊・設置・取捨・所持・利用を禁止し、その他の操作を許可する。"内容かと思います。
この点についてはNoです。
Memberグループに対して”安全と認められるブロックとアイテムのみ破壊・設置・取捨・所持・利用を許可する”という設定を望んでいます。
理由としてはMinecraftは更新の頻度が高いためブロックやアイテムが安全かどうかを判断する前にサーバのバージョンアップを行って、
その後安全と認められたブロックやアイテムの使用を許可するスタンスで運営をしたいためです。
#それにより設定ファイルが複雑になる事は理解しています。

そこで問題となっているのが、下記の部分でブロックID、アイテムIDによる設定が機能しない事です。
- modifyworld.blocks.(destroy|place).(1-9|12-22|24-74|77-92|95-124)
- modifyworld.items.(pickup|drop|have).(256-258|260-326|328-355|357-384|2256-2266)

問題きりわけのために、下記のように全てのアイテムとブロックを設定する指定を試したところ設定が機能しました。
- modifyworld.blocks.(destroy|place).*
- modifyworld.items.(pickup|drop|have).*

以上の事から何かしらの設定漏れ、Plug-inのインストール漏れを疑っておりますが、
原因となる箇所が見つけられないためお知恵を拝借したい次第です。
十六夜瑞希
ID:dfe31aab
 

  • (PostNo.34586)

Re: PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by udonya » 2012年4月15日(日) 23:50

十六夜瑞希 さんが書きました:...
>希望の設定は、
>"defaultグループに対して、指定のアイテムに関する破壊・設置・取捨・所持・利用を禁止し、その他の操作を許可する。"内容かと思います。
この点についてはNoです。
Memberグループに対して”安全と認められるブロックとアイテムのみ破壊・設置・取捨・所持・利用を許可する”という設定を望んでいます。
...

以上の事から何かしらの設定漏れ、Plug-inのインストール漏れを疑っておりますが、
原因となる箇所が見つけられないためお知恵を拝借したい次第です。

解説ありがとうございます、設定の要件がよく理解できました。

結論から書きますと、ModifyWorldのconfig.ymlに
コード: 全て選択
use-material-names: false

を追記すれば期待通りに動くのではないかと思います。

なぜこうなるかと言うと、
use-material-names項目がtrue(デフォルト値)の場合、
ブロックやアイテムに関わる権限ノードのチェックにアイテム名を利用したチェックが行われるためです。
つまり、stoneの所持を考えた場合、
実際に要求される権限は"modifyworld.items.have.stone"ですが、
permissions.ymlで開放している権限が"modifyworld.items.have.1"であり、マッチしない事が原因です。
前者の要求権限はPexのデバッグモードで得られるメッセージから、
後者の開放権限はpex user <myusername>コマンドから確認できます。

なお、こちらの環境では
十六夜さんの希望を抜粋した下記のconfigファイルを作成して動作確認し、
期待の動作が行える事を確認しました。
ModifyWorld/config.yml
コード: 全て選択
enable: true
itemRestrictions: true
informPlayers: true
item-use-check: true
whitelist: false
check-metadata: true
use-material-names: false
messages:
  prohibitedItem: You have prohibited item "%s".
  whitelistMessage: You are not allowed to join this server. Goodbye!
  permissionDenied: Sorry, you don't have enough permissions
  whitelist: You are not allowed to join this server. Goodbye!


pex/config.yml
コード: 全て選択
permissions:
  backend: file
  backends:
    file:
      file: permissions.yml
  superperms: {}


pex/permissions.yml
コード: 全て選択
groups:
  default:
    default: true
    permissions:
    - modifyworld.mobtarget.*
    - modifyworld.damage.take.*
    - modifyworld.digestion
    - modifyworld.sprint
    - modifyworld.sneak
    - modifyworld.chat
    - modifyworld.login
  Member:
    inheritance:
    - default
    permissions:
    - modifyworld.tame.*
    - modifyworld.interact.*
    - modifyworld.damage.deal.*
    - modifyworld.item.use.*
#    - modifyworld.blocks.(destroy|place).*
#    - modifyworld.items.(pickup|drop|have).*
    - modifyworld.items.(pickup|drop|have).(256-258|260-326|328-355|357-384|2256-2266)
    - modifyworld.blocks.(destroy|place).(1-9|12-22|24-74|77-92|95-124)
    - modifyworld.blocks.interact.*
    - modifyworld.bucket.(empty|fill).(water|air)
users:
  myusername:
    group:
    - Member


※ymlファイルの引用のインデントが崩れているので解析に苦労しました・・・
ymlを添える際はquoteよりもcodeタグをお勧めします。
アバター
udonya
ID:45b66b23
鉄鉱掘り
 
記事: 292
登録日時: 2011年11月03日(木) 01:16

  • (PostNo.34632)

Re: PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by izayoimizuki » 2012年4月16日(月) 12:45

ご回答ありがとうございます。

use-material-names: falseを設定した所、予定していた動作となりました。
ありがとうございます。

>※ymlファイルの引用のインデントが崩れているので解析に苦労しました・・・
>ymlを添える際はquoteよりもcodeタグをお勧めします。
失礼したしました。以後注意いたします。

■以下、備忘用兼同じような設定をしたい方へのメモ

□ブロックを指定する際の注意
1行目のように一部のブロック操作を許可した場合、2行目の設定を忘れない事。
インベントリ内に格納されている物は全てアイテムとして扱われているため、
2行目の設定を忘れると破壊や設置は出来るが拾う事が出来なくなる。
(例:丸石を破壊したり設置したりはできるが、破壊した丸石を拾えない。)
コード: 全て選択
    - modifyworld.blocks.(destroy|place).(1-9|12-22|24-74|77-92|95-124)
    - modifyworld.items.(pickup|drop|have).(1-9|12-22|24-74|77-92|95-124)


□種類があるブロックやアイテムに対する権限を設定する場合の注意
種類があるブロックやアイテム(苗木やピックアックス、シャベルなど)に対する権限を設定する場合、
ModifywoldのWikiでは:*という記述を末尾に追加するように書かれているが、
この記述ではオリジナルのアイテム(苗木で言えばりんごの苗木、道具類で言えば未使用の物)が含まれない。
下記の例では「白樺・松・ジャングルの木」の苗木は壊したり設置したりできるが、「りんご」の苗木のみ壊したり設置したり出来ない。
コード: 全て選択
    - modifyworld.blocks.(destroy|place).6:*


逆に種類の記述を外すとオリジナルではないアイテム(苗木で言えばりんご以外の木の苗木、道具類で言えば使用済みの物)が含まれない。
下記の例では「りんご」の苗木のみ壊したり設置したりできるが、「白樺・松・ジャングルの木」の苗木は壊したり設置したり出来ない。
コード: 全て選択
    - modifyworld.blocks.(destroy|place).6


全ての種類(「りんご・白樺・松・ジャングルの木」の苗木)で壊したり設置したりできるようにするには下記のように記述する。
コード: 全て選択
    - modifyworld.blocks.(destroy|place).6*


苗木のブロックIDは下記のようになっている。
りんごの苗木は6:0でも6:でもなく6のため、ModifywoldのWikiで紹介されている方法では権限設定の対象外となってしまう。
コード: 全て選択
りんごの苗木: 6
松の苗木: 6:1
白樺の苗木: 6:2
ジャングルの木の苗木 : 6:3


#それはさておきReCaptchaで読める画像に当たる確率が殆ど無い。つまり私の文字を読む能力はOCRと同等かそれ以下って事だ。

十六夜瑞希
izayoimizuki
ID:dfe31aab
木を殴ってる
 
記事: 18
登録日時: 2012年4月16日(月) 12:41

  • (PostNo.34941)

Re: PermissionsEXのModifyworldに対する設定が反映されない

投稿記事by udonya » 2012年4月19日(木) 00:01

izayoimizuki さんが書きました:■以下、備忘用兼同じような設定をしたい方へのメモ


フィードバックありがとうございます。
pexは少し前にPermissionNodesのsyntaxが拡張された(括弧やパイプを使った表記)ので
設定例、参考になりました。
アバター
udonya
ID:45b66b23
鉄鉱掘り
 
記事: 292
登録日時: 2011年11月03日(木) 01:16


Return to 質問:マルチサーバー運用

x