プロテクションの実装のしくみ
このセクションでは、Helixサーバがプロテクションの実装で用いる2段階アルゴリズムについて説明します。
パスはいずれも、一番下の行から一番上の行に向かって進みます。
最初のパス
|
ユーザが、ファイルが存在するかどうかを知ることを許可されているかどうかを決定します(ユーザのアクセスレベルは考慮されません)。 この検索は一番下の行から始まり、ユーザ名、ホストIPアドレス、およびファイル引数に一致する1つ目の行を探します。 最初に一致する行が検出された場合:
Helixサーバは2番目のパスに進みます。 逆に、最初に見つかった該当するプロテクションが除外マッピングになっていた場合、または該当するプロテクションが見つからないままプロテクションテーブルの一番上まで行った場合には、そのユーザはファイルのlist権限もなく、 |
2番目のパス | 最初のパスが成功した場合、2番目のパスがユーザのアクセスレベルを考慮します。 |
-
例最初のパスでプロテクションテーブルのマッピングの順序を解釈します
プロテクションテーブルが次のようになっているものとします。
write user * * //... read user edk * -//... read user edk * //depot/elm_proj/...
エドが
p4 print //depot/file.c
を実行すると、Helixサーバはプロテクションテーブルを下から上へ検証し、最初に最終行にぶつかります。ここに指定されたファイルはエドが印刷したいファイルとは異なるため、この行は関係ありません。次に、最後から2番目の行が調べられます。この行は、エドのユーザ名、IPアドレス、および印刷するファイルと一致します。この行は除外マッピングであるため、エドはファイルを一覧表示することはできません。 -
最初のパスが成功した場合、Helixサーバはプロテクションテーブルで2番目のパスを実行します。
2番目のパスは、最初のパスと同じですが、アクセスレベルが考慮される点が異なります。
ユーザ名、IPアドレス、ファイルの引数が合致した最初の行が包含的なプロテクション行であり、かつアクセスレベルが与えられたコマンドの実行に必要なレベル以上であれば、ユーザにはそのコマンドを実行する権限が与えられます。
ユーザ名、IPアドレス、ファイルの引数が合致した最初の行が除外マッピングの場合、あるいは合致する行が見つからないままプロテクションテーブルの一番上まで行った場合には、そのユーザにはコマンド実行の権限は与えられず、次のようなメッセージが表示されます。
You don't have permission for this operation
例2番目のパスを含むプロテクションテーブルのマッピングの順序の解釈
p4 groupで設定されているように、ユーザの
joe
は、devgroup
およびbuggroup
グループのメンバーであり、組織ではIPv4接続のみを使用し、プロテクションテーブルは以下のようになっていることとします。super user bill * //... write group devgroup * //depot/... write group buggroup * -//depot/proj/... write user joe 192.168.100.0/24 //...
ジョーはいくつかの操作を試みます。各操作が成功するか失敗するかは次のとおりです。
操作元IPアドレス... ジョーの試行... 結果 10.14.10.1
p4 print //depot/misc/...
成功します。2番目の行では、ジョーにはこれらのファイルの
write
アクセス権限が付与されています。write
アクセス権限には、read
アクセス権限が含まれており、以降のどの行でもこのプロテクションは除外されていません。10.14.10.1
p4 print //depot/proj/README
失敗します。3行目で、このディレクトリ中のあらゆるファイルに対するジョーのすべての権限が除去されています。
-//depot/proj/...が2番目の行で、//depot/...が3番目の行であれば、3番目の行が2番目の行を上書きし、ジョーは成功していました。
192.168.100.123
p4 print //depot/proj/README
成功します。ジョーのワークステーションは、4行目でこのパーミッションを与えられたIPアドレスに位置しています。
192.168.100.123
p4 verify //depot/misc/...
失敗します。2番目のパスでは、アルゴリズムはアクセスレベルを考慮します。p4 verifyコマンドを実行するには
super
のアクセス権が必要です。どのIPアドレスからアクセスした場合でもジョーはこのアクセスレベルの権限を持っていません。