Helix Coreサーバ管理者ガイド: 基本 (2019.1)

プロテクションの実装のしくみ

このセクションでは、Helixサーバがプロテクションの実装で用いる2段階アルゴリズムについて説明します。

パスはいずれも、一番下の行から一番上の行に向かって進みます。

最初のパス

 

ユーザが、ファイルが存在するかどうかを知ることを許可されているかどうかを決定します(ユーザのアクセスレベルは考慮されません)。

この検索は一番下の行から始まり、ユーザ名、ホストIPアドレス、およびファイル引数に一致する1つ目の行を探します。

最初に一致する行が検出された場合:

  • 包含的なプロテクションです
  • ユーザは少なくともファイルをリスト表示する権限を持っています

Helixサーバは2番目のパスに進みます。

逆に、最初に見つかった該当するプロテクションが除外マッピングになっていた場合、または該当するプロテクションが見つからないままプロテクションテーブルの一番上まで行った場合には、そのユーザはファイルのlist権限もなく、File not on clientのようなメッセージが表示されます。

2番目のパス 最初のパスが成功した場合、2番目のパスがユーザのアクセスレベルを考慮します。
  1. 最初のパスでプロテクションテーブルのマッピングの順序を解釈します

    プロテクションテーブルが次のようになっているものとします。

    write       user        *        *      //...
    read        user        edk      *      -//...
    read        user        edk      *      //depot/elm_proj/...

    エドがp4 print //depot/file.cを実行すると、Helixサーバはプロテクションテーブルを下から上へ検証し、最初に最終行にぶつかります。ここに指定されたファイルはエドが印刷したいファイルとは異なるため、この行は関係ありません。次に、最後から2番目の行が調べられます。この行は、エドのユーザ名、IPアドレス、および印刷するファイルと一致します。この行は除外マッピングであるため、エドはファイルを一覧表示することはできません。

  2. 最初のパスが成功した場合、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アドレスからアクセスした場合でもジョーはこのアクセスレベルの権限を持っていません。