---json
{
"canonical":"projects:big-model:manual:acl",
"title":"アクセス制限",
"description":"アクセス制限"
}
---
====== アクセス制限 ======
===== ◆ 修飾子 =====
制限の設定を行う修飾子は次の通りです。\\
SUBOP/OWNER/ALLOW/DISALLOWは本アプリケーション専用でBIG-Modelにはありません。
^ 修飾子 ^ 説明 ^
| SIGOP | シグオペ権限を付与します。\\ \\ 掲示板ユーティリティでの他者の投稿に対する削除(削除マークを付ける)ができるようになります。 |
| SYSOP | シスオペ権限を付与します。\\ \\ シスオペコマンドの全コマンドを利用することができるようになります。 |
| SUBOP | サブシスオペ権限を付与します。\\ \\ シスオペコマンドの一部コマンドが利用できるようになります。 |
| OWNER | オーナー権限を付与します。\\ \\ シスオペコマンドの一部が利用できるようになり、CUGやフォーラムを開設するためのパスの追加や\\ 掲示板やメニューチャットなどのユーティリティの配置を行うことができるようになります。 |
| MEMBER | ユーリティリティの実行権限を付与します。\\ \\ 設定されているパスへ移動したときに、対象ユーザはユーティリティを実行することができるようになりますが、\\ 対象外ユーザは「** アクセス権がありません **」と表示されて、ユーティリティを実行することができません。 |
| NMEMBER | ユーリティリティの実行権限を剥奪します。\\ \\ 設定されているパスへ移動したときに、対象ユーザは「** アクセス権がありません **」と表示され、\\ ユーティリティを実行することができませんが、対象外ユーザはユーティリティを実行することができます。 |
| READER | 掲示板ユーティリティの閲覧権限を付与します。\\ \\ 掲示板ユーティリティが実行されたとき次のように振る舞います。\\ 対象ユーザ:閲覧(見る)を選択できるようになります。\\ 対象外ユーザ:閲覧(見る)を選択することができなくなります。 |
| NREADER | 掲示板ユーティリティの閲覧権限を剥奪します。\\ \\ 掲示板ユーティリティが実行されたとき次のように振る舞います。\\ 対象ユーザ:閲覧(見る)を選択できなくなります。\\ 対象外ユーザ:閲覧(見る)を選択することができるようになります。 |
| WRITER | 掲示板ユーティリティの投稿権限を付与します。\\ \\ 掲示板ユーティリティが実行されたとき次のように振る舞います。\\ 対象ユーザ:投稿(書く)を選択できるようになります。\\ 対象外ユーザ:投稿(書く)を選択することができなくなります。 |
| NWRITER | 掲示板ユーティリティの投稿権限を剥奪します。\\ \\ 掲示板ユーティリティが実行されたとき次のように振る舞います。\\ 対象ユーザ:投稿(書く)を選択することができなくなります。\\ 対象外ユーザ:投稿(書く)を選択することができるようになります。 |
| ALLOW | パスアスクセス権限を付与します。\\ \\ パスに移動したとき、対象ユーザは立ち入りを許可し、ユーティリティを呼び出します。\\ 対象外ユーザは立ち入りを禁止し、直前のパスに戻されます。 |
| DISALLOW | パスアスクセス権限を剥奪します。\\ \\ パスに移動したとき、対象ユーザは立ち入りが禁止され、直前のパスに戻されます。\\ 対象外ユーザは立ち入りが許可され、ユーティリティを呼び出します。 |
===== ◆ 許可・拒否の対象 =====
BIG-Modelでは、おおむね掲示板に対する制限を操作することができますが、設定の方法や修飾子によって制限の効果や対象ユーザを限定することができます。\\
==== ALLOW/DISALLOW/MEMBER/NMEMBER/READER/NREADER/WRITER/NWRITER ====
ALLOW/DISALLOW/MEMBER/NMEMBER/READER/NREADER/WRITER/NWRITER修飾子は規制を行うものです。
ALLOW/DISALLOWは本アプリケーション専用でBIG-Modelにはありません。
設定の仕方により制限の対象が変わります。\\
(1) 制限ファイルが存在しないときは全てのユーザが無制限です。\\
(2) 制限ファイルを作成すると制限が有効になります。ただし、制限ファイルに対象となるユーザIDを登録すると登録されたユーザが有効になり、登録されていないユーザは無制限となります。\\
(3) 相反する制限ファイルが両方作成されると拒否を制限するファイルが優先され、許可を制限するファイルの設定は無効になります。
MEMBERとNMEMBERを例に説明します。\\
MEMBER/NMEMBERは、特定のメンバーのみが使用できる掲示板(CUG)を設置するためのもので、MEMBERファイルでは掲示板の利用を許可、NMEMBERファイルでは掲示板の利用を拒否します。\\
どちらかの制限ファイルが存在する場合、それぞれの制限の効力が有効になりますが、制限ファイルが存在しなければ、制限を施していないので無効となります。\\
制限ファイルが存在しても、対象ユーザがだれも登録されいない場合は、「全てのユーザが制限の対象外」とみなされるため、制限の効力が反転しますので、
NMEMBER(拒否対象ユーザ)の場合は「全員許可」\\
MEMBER(許可対象ユーザ)の場合は「全員拒否」
となります。
制限ファイルが存在し、対象ユーザがファイルに登録されると登録ユーザに対して制限の効力が有効になります。
反対にファイルに登録されていないユーザは制限の効力が無効となります。
NMEMBER(拒否対象ユーザ)の場合、登録ユーザは「拒否」、登録外ユーザは「許可」となります。\\
MEMBER(許可対象ユーザ)の場合、登録ユーザは「許可」、登録外ユーザは「拒否」となります。
MEMBERとNMEMBERを図解すると次の通りです。
{{:projects:big-model:note:pasted:20211110-194326.png?nolink}}\\
※許可=利用可能、拒否=利用不可能
{{:projects:big-model:note:pasted:20211110-194336.png?nolink}}\\
※許可=利用可能、拒否=利用不可能
==== SYSOP/SIGOP/SUBOP/OWNER ====
SYSOP/SIGOP/SUBOP/OWNER修飾子は権限を付与するためのもので、規制を行うものではありません。
SUBOP/OWNERは本アプリケーション専用でBIG-Modelにはありません。
設定の仕方により権限の対象が変わります。\\
(1) 権限ファイルが存在しないときは全てのユーザに権限は付与されません。\\
(2) 権限ファイルを作成すると権限の付与が有効になり、権限ファイルに権限を付与するユーザIDを登録すると登録されたユーザは権限が付与されます。登録されていないユーザは権限は付与されません。\\
{{:projects:big-model:note:pasted:20211110-221059.png?nolink}}
===== ◆ 適用範囲 =====
規制や権限の付与は設定されているレベルから最下層のレベル全てに適用されますが、対象ユーザの可否によって範囲が変わります。\\
==== ALLOW/DISALLOW/MEMBER/NMEMBER/READER/NREADER/WRITER/NWRITER ====
規制を行う修飾子(ALLOW/DISALLOW/MEMBER/NMEMBER/READER/NREADER/WRITER/NWRITER)では、次のようになります。\\
例えば、\\
;
;B
;B;1 MEMBER:{ A }
;B;1;1 MEMBER:{ B }
;B;1;1;1 MEMBER:{ A }
のような場合で、対象ユーザがAの場合は次のようになります。\\
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 許可 | 対象ユーザとして判定されているので許可 |
| ;B;1;1 | 拒否 | 対象外ユーザとして判定されているので拒否 |
| ;B;1;1;1 | ↑ | 対象ユーザとして判定されているが、上層のレベルで確定しているため、このレベルでの設定は無効 |
従って、;B;1;1からはアクセス権がなく、ルート(;)と;B、;B;1までしか移動することができません。
対象ユーザがBの場合は次のようになります。
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 拒否 | 対象外ユーザとして判定されているので拒否 |
| ;B;1;1 | ↑ | 対象ユーザとして判定されているが、上層のレベルで確定しているため、このレベルでの設定は無効 |
| ;B;1;1;1 | ↑ | 対象外ユーザとして判定されているが、上層のレベルで確定しているため、このレベルでの設定は無効 |
上位レベルでの判定が適用されます。|
従って、;B;1からはアクセス権がなく、ルート(;)と;Bまでしか移動することができません。
また、
;
;B
;B;1 MEMBER:{ A, B }
;B;1;1 NMEMBER:{ A }
;B;1;1;1 MEMBER:{ B }
のような場合で、対象ユーザがAの場合は次のようになります。\\
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 許可 | メンバー(MEMBER)の対象ユーザとして判定されているので許可 |
| ;B;1;1 | 拒否 | 非メンバー(NMEMBER)の対象ユーザとして判定されているので拒否 |
従って、;B;1;1からはアクセス権がなく、ルート(;)と;B、;B;1までしか移動することができません。
対象ユーザがBの場合は次のようになります。
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 許可 | メンバー(MEMBER)の対象ユーザとして判定されているので許可 |
| ;B;1;1 | 許可 | 非メンバー(NMEMBER)の対象外ユーザとして判定されているので許可 |
| ;B;1;1;1 | 拒否 | メンバー(MEMBER)の対象外ユーザとして判定されているので拒否 |
従って、;B;1;1;1からはアクセス権がなく、ルート(;)から(;B;1;1)までしか移動することができません。
==== SYSOP/SIGOP/SUBOP/OWNER ====
権限の付与を行う修飾子(SYSOP/SIGOP/SUBOP/OWNER)では、次のようになります。\\
例えば、\\
;
;B
;B;1 SIGOP:{ A }
;B;1;1 SIGOP:{ B }
;B;1;1;1 SIGOP:{ A }
のような場合で、対象ユーザがAの場合は次のようになります。\\
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 許可 | 対象ユーザとして判定されている |
| ;B;1;1 | ↑ | 対象外ユーザとして判定されているが、上層のレベルで判定されているため、このレベルでの設定は無効 |
| ;B;1;1;1 | ↑ | 対象ユーザとして判定されているが、上層のレベルで判定されているため、このレベルでの設定は無効 |
上記のように、単一ユーザへの権限付与を、導線上のパスにいくつか設定することは可能ですが、上層で設定されていれば下層で設定していなくても有効となるので、下層に設定を行っても無意味です。
従って、;B;1から最下層までSIGOP権限が付与されていることになります。
対象ユーザがBの場合は次のようになります。
^ パス ^ 判定 ^ 説明 ^
| ;B;1 | 拒否 | 対象外ユーザとして判定されている |
| ;B;1;1 | ↑ | 対象ユーザとして判定されているが、上層のレベルで判定されているため、このレベルでの設定は無効 |
| ;B;1;1;1 | ↑ | 対象外ユーザとして判定されているが、上層のレベルで判定されているため、このレベルでの設定は無効 |
従って、SIGOP権限は一切付与されていないことになります。
本アプリケーションでは次のように処理しています。\\
判定評価はルートパスから終点となる下層パスに向かって、レベルごとに行います。\\
規制を行う修飾子(ALLOW/DISALLOW/MEMBER/NMEMBER/READER/NREADER/WRITER/NWRITER)では、各レベルで拒否判定が出た場合は判定を確定して評価を終了しますが、許可判定となった場合は確定せず下層のレベルで評価します。\\
もし、終点となるパスに辿り着いた場合はその時点での判定で確定します。\\
権限の付与を行う修飾子(SYSOP/SIGOP/SUBOP/OWNER)では、各レベルで対象ユーザ判定が出た場合は判定を確定して評価を終了しますが、
対象外ユーザ判定となった場合は確定せず下層のレベルで評価します。\\
もし、終点となるパスに辿り着いた場合はその時点での判定で確定します。\\