Helix Core P4コマンドリファレンス (2019.1)

p4 protect

ユーザによるファイル、ディレクトリ、コマンドへのアクセスを管理します。

注意

ここで説明するアクセス権限は、p4 grant-permission (グラフ)に記載されているグラフディポの権限とは異なっていることに注意してください。

構文

p4 [g-opts] protect
p4 [g-opts] protect -o
p4 [g-opts] protect --convert-p4admin-comments -o | -i

説明

重要

インストールが完了したら、すぐにp4 protectコマンドを実行することをお勧めします。

新しいHelixサーバをインストールすると、以下の処理が可能になります。

  • Helixサーバを使用するすべてのユーザに対して、サービスへの接続を許可する
  • すべてのHelixサーバユーザをスーパーユーザとして設定する

p4 protectコマンドを初めて実行したユーザがスーパーユーザになり、その他すべてのユーザには、すべてのファイルに対するwrite権限が設定されます。 p4 protectコマンドを使用して追加のコントロールを作成することをお勧めします。

p4 [g-opts] protect コマンドを実行すると、superアクセス権限を持つユーザが、プロテクションテーブルをテキスト形式で編集できるようになります。

p4 protectコマンドを使用してHelixサーバの権限を設定すると、以下の処理が可能になります。

  • 特定のユーザがアクセスできるコマンドを制御する
  • 特定のユーザが実行できるコマンドを制御する
  • 次のコマンドを使用して定義されたユーザグループに対して権限を付与する: p4 group
  • ユーザまたはグループの特定のパスについて、p4 protectコマンドへのアクセス権限を付与する
  • ユーザに対して特定のアクセス権限を付与または拒否するには、=read=open=write=branchの各権限を使用します。それより下位の権限を再度付与する必要はありません。
  • 特定のIPアドレスへのアクセスを制限し、そのIPアドレスを使用するユーザのみがHelixサーバコマンドを実行できるようにする

通常の操作で与えられるアクセスレベルは、主にlistreadwriteownersuperです。 openreviewアクセスレベルはあまり使用されません。

通常は、以下のような運用方法になります。

  1. 特定のユーザやグループに対して、特定のアクセスレベルを付与する。
  2. アクセスレベルを詳細に制御する必要がある場合は、1つ以上のアクセス権限を個別に除外する。

詳細については、『Helix Coreサーバ管理者ガイド: 基本』の「安全なサーバの確立」の章を参照してください。

権限レベルとアクセス権限

ヒント

ユーザのコマンドに対する権限の評価方法の例については、『Helix Coreサーバ管理者ガイド: 基本』の「プロテクションの実装のしくみ」を参照してください。

権限レベル/アクセス権限 ユーザが実行できること

list

すべてのHelixサーバメタデータにアクセスできますが、ファイルの内容にはアクセスできません。 p4 filesp4 clientp4 jobp4 describep4 branchなどのHelixサーバオブジェクトを記述するコマンドをすべて実行できます。

p4 describeのようなファイルを一覧表示するコマンドは、ユーザが最低listアクセス権を持っているファイルのみを一覧表示します。

read

list権限で許可されていることをすべて実行できます。さらに、ファイルのデータの読み取りを伴うコマンド(p4 printp4 diffp4 syncなど)もすべて実行できます。

=read

この権限が拒否されている場合、ユーザはファイルに対してp4 printp4 diffp4 syncを使用できません。

open

read権限で実行できることをすべて許可します。また、ファイルをp4 addp4 editp4 deletep4 integrateするパーミッションを与えます。 ただし、ファイルのロックやディポへのサブミットは許可されていません。

openアクセスレベルでは、ユーザにファイル変更を許可しますが、ディポへのファイルのサブミットは行いません。 一時的にコードラインを凍結させたいが開発者の作業を止めたくない場合や、試験担当者に対し、個人使用のためのコード変更は認めるがコードラインに永久的な変更を加えることは認めないような場合などに、このレベルの権限を割り当ててください。

=open

この権限が拒否されている場合、ユーザはp4 addp4 editp4 deletep4 integrateを使用してファイルを開くことはできません。

write

上記のすべてを実行できます。さらに、p4 submitによるファイルへの書き込み、p4 lockによるファイルのロックを実行できます。

=write

この権限が拒否されている場合、ユーザは開いているファイルをサブミットできません。

=branch

この権限が拒否されると、ユーザはファイルをp4 integrateの反映元として使用できません。

review

Helixサーバにアクセスする外部プログラム専用のパーミッションです。 list権限とread権限で実行できることすべてのパーミッションを外部プログラムに与えます。また、p4 reviewp4 counterを実行するパーミッションを与えます。 ただし、openおよびwrite権限は含まれません。

admin

上記すべてに加え、メタデータへの変更をオーバーライドする管理者用コマンドが含まれますが、サービスの動作に影響することはありません。

これには、p4 branch -fp4 change -fp4 client -fp4 job -fp4 jobspecp4 label -fp4 obliteratep4 shelve -f -dp4 typemapp4 unlock -fp4 verifyが含まれます。

super

上記のすべてに加え、さらにp4 adminp4 counterp4 triggersp4 protect、およびp4 user -fによるユーザ作成機能などのスーパーユーザコマンドにもアクセスできます。

owner

この権限を使用して、特定パスに対してp4 protectを実行するパーミッションを特定のユーザまたはグループに割り当てます。 詳細については、『Helix Coreサーバ管理者ガイド: 基本』の「アクセスの認証」を参照してください。

フォームフィールド

p4 protectを実行すると、HelixサーバProtections:フィールドのみのフォームを表示します。 各パーミッションは、Protections:に見出しの下でインデントされた専用の行に指定され、次の5つの値を使用してプロテクションを定義します。

説明

アクセスレベルまたはモード

前項で定義された、listreadopenwriteadminsuperownerreviewのいずれかのアクセスレベル、または=read=open=write=branchのいずれかの権限です。

ユーザまたはグループ

このプロテクションがuserまたはgroupに適用されるかを指定します。

グループ名またはユーザ名

ユーザ名またはp4 groupで定義したグループ名。 すべてのユーザにこのパーミッションを与えるときは、ワイルドカード「*」を使用します。

ホスト

クライアントホストのIPアドレス。 IPv6アドレスおよびIPv4アドレスがサポートされています。 また、CIDR表記を使用していない場合にのみ、すべてのIPアドレスを参照するためにワイルドカード「*」を使用できます。

IPv6アドレスに*ワイルドカードを使用する場合は、IPv6アドレス全体を角括弧で囲む必要があります。 例えば、[2001:db8:1:2:*][2001:db8:1:2::]/64に相当します。 CIDR表記を使用し、IPV6アドレスを角括弧で囲み、*ワイルドカードの使用を避けることをお勧めします。

システムは、dm.proxy.protects変数の設定によりどのようにしてホストのアドレスを作成するのでしょうか。 デフォルトでは、この変数は1に設定されています。 これは、クライアントのホストが中間サーバ(プロキシ、ブローカ、レプリカ)を使用してサーバにアクセスしている場合、プレフィックスproxy-がクライアントホストアドレスの前に付き、その接続が直接ではないことを示すことを意味します。 proxy-*Hostフィールドに指定した場合、プロキシ、ブローカ、レプリカを経由するすべての接続に影響します。 proxy-10.0.0.5のような値は、IPアドレスが10.0.0.5のクライアントマシンが中間サーバを通してサーバにアクセスしていると認識します。

dm.proxy.protects変数を0に設定すると、プレフィックスproxy-が削除され、プロテクションエントリを1セット書き込むことができます。これは、直接接続しているクライアントと中間サーバを経由して接続しているクライアントの両方に適用されます。 これは便利ですが、中継サーバを経由して接続することに問題がある場合、安全性が低下します。 この設定を使用する場合は、すべての中継サーバがリリース2012.1以降になっている必要があります。

ディポファイルのパス

Helixサーバディポシンタックスで、このパーミッションが与えられているディポファイルのパス。 ファイルの指定は、Helixサーバワイルドカードを含むことができます。

このマッピングをパーミッションセットから除外するには、設定値の頭にダッシュ(-)を付けます。

ディポが除外された場合、アクセスを拒否されたユーザはp4 depotsの出力でディポを見ることができなくなります。 また、このユーザに対してデフォルトのブランチビュー、クライアントビュー、ラベルビューでディポは表示されません。

サブパス

 

サブプロテクションテーブルのルートパス。

このフィールドは、プロテクションテーブルには含まれていません。

更新

 

この仕様が最後に変更された日付(読み取り専用)。

  • この日付を変更すると、プロテクションテーブルが保存されなくなります。
  • このフィールドを省略すると、変更チェックがスキップされます。

このフィールドは、プロテクションテーブルには含まれていません。

除外マッピング

除外マッピングが設定されていない場合、 除外マッピングが設定されている場合、

マッピングの順序は関係ありません。

ユーザ、ユーザのIPアドレス、およびユーザがアクセスしようとしているファイルと適合するすべてのマッピングにリストされた権限レベルの中で最高のレベルがユーザに付与されます。

順序が関係します。

除外マッピングは、それより上の行にリストされているプロテクションのうち適合するものはすべて無効にします。 除外プロテクションでどのアクセスレベルが拒否されていても、適合するユーザ、ファイル、IPアドレスに対するすべてのアクセスレベルが拒否されます。

以下に例を示します。

除外マッピングを使用して、group1のメンバーに対してディポのある領域へのアクセスを拒否し、group2のメンバーに対してはディポの同じ領域へのアクセスを許可した場合、group1group2の両方のメンバーであるユーザは、プロテクションテーブル内でどちらの行が後に記述されているかによってアクセスの可否が決まります。

注釈

プロテクションテーブルは解釈やデバッグが難しくなる場合があります。 そのような場合にコメントを付け加えることで、分かりやすくすることができます。

  • ##記号を使用することで、行の最後にコメントを追加することができます。

    write user *   10.1.1.1   //depot/test/...  ## robinson crusoe
  • または、行の先頭に##を付けることで、コメント行を作成できます。

    ## robinson crusoe
    write user *   10.1.1.1   //depot/test/...
警告

P4Adminツールを使用して作成したコメントはp4 protectのバージョン2016.1を使用して作成されたコメントと互換性がありません。 次のコマンドを使用することで、P4Adminで作成されたコメントを含むファイルをp4 protectタイプのコメントを含むファイルに変換することができます。

$ p4 protect --convert-p4admin-comments -o

その後、変換後のファイルを保存します。

コメントの変換が完了したら、p4 protectを使用してプロテクションを定義および管理する必要があります。P4Adminではp4 protectのコメントが解析できないため、変換後は使用することができません。

オプション

-i

エディタを起動せずに、標準出力からフォームを読み取ります。

-o

エディタを起動せずに、フォームを標準出力に書き出します。

--convert-p4admin-comments

P4Adminツールを使用して作成された既存のプロテクション形式(およびコメント)を、p4 protectで使用可能な形式に変換します。

g-opts

詳細については、「グローバルオプション」を参照してください。

使用上の留意点

ファイル引数にリビジョン指定子を使えるか? ファイル引数にリビジョン範囲を使えるか? 最低限必要なアクセスレベル

使用不可

使用不可

super

各パーミッションのレベルはその下にあるすべてのアクセスレベルを含みます。

特殊な権限である=read=open=write=branchを使用して、下位のアクセスレベルを自動的に包含しないようにオーバーライドできます。 これにより、個々の権限を無効にすることができます。後で下位の権限を再度付与する必要はありません。

例えば、管理者に管理コマンドの実行権限を与えつつ、ディポの特定の部分に対する変更権限を拒否したいという場合、権限テーブルを次のように設定することができます。

admin       user      joe       *       //...
=write      user      joe       *       -//depot/build/...
=open       user      joe       *       -//depot/build/...

この例では、ユーザjoeは管理機能を実行でき、この権限はシステム内のすべてのディポに適用されます。 admin権限レベルでは暗黙的にそれより下位にあるすべてのアクセスレベルが認められるため、joe//depot/build/を含むシステム内のどのファイルにも、開く操作、書き込み、読み取り、一覧表示が可能です。 buildの階層をプロテクトするには、=writeおよび=openの排他行をテーブルに追加します。 ユーザjoeは、build階層にあるすべてのファイルを編集目的で開くことができなくなります。 また、既に開いている可能性のある、この階層で加えられた変更はサブミットすることができません。 ファイルの作成および変更は引き続き可能ですが、プロテクトされた階層//depot/build/...の外にそれらのファイルがある場合に限られます。

あるサーバ上のファイルを別のサーバからのリモートディポとして使用する(p4 depotで定義)のを制限または排除するには、remoteユーザ(または別のサーバが認証に用いるサービスユーザ)に対するプロテクションを作成してください。 リモートディポは、ユーザのPerforceサービスに関連付けられたサービスユーザか、remoteという名前の仮想ユーザによってアクセスされます。

使用できるコマンドは、アクセスレベルによって決まります。

下表は、各コマンドで最低限必要なアクセスレベルを示しています。 例えば、p4 addは少なくともopenのアクセス権を必要とするため、openwriteadmin、またはsuperのアクセス権があればp4 addを実行できます。

いくつかのコマンド(例えば、p4 changeで、以前サブミットされたチェンジリストを編集するとき)は、管理者権限またはスーパーアクセス権限が必要な-fオプションを使用します。

コマンド アクセスレベル 備考

add

open

 

admin

super

 

annotate

read

 

archive

admin

 

attribute

write

サブミットされたファイルに属性を設定するための-fオプションには、admin権限が必要です。

branch

open

既存のメタデータや他のユーザのデータをオーバーライドするための-fオプションには、adminアクセス権が必要です。

branches

list

 

change

open

-oオプション(変更を標準出力に表示)にはlist権限さえあれば十分です。 既存のメタデータや他のユーザのデータをオーバーライドするための-fオプションには、adminアクセス権が必要です。

changes

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

client

list

既存のメタデータや他のユーザのデータをオーバーライドするための-fオプションには、adminアクセス権が必要です。

clients

list

 

configure

super

 

copy

list

ソースファイルに対するlistアクセス権、コピー先ファイルに対するopenアクセス権が必要です。

counter

review

既存のカウンタの値を表示するには、ディポ内の1つ以上のファイルに対するlistのアクセス権が必要です。カウンタの値を変更する、または新しいカウンタを作成するには、reviewのアクセス権が必要です。

counters

list

 

cstat

list

 

dbschema

super

 

dbstat

super

 

dbverify

super

 

delete

open

 

depot

super

このコマンドに対する-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。

depots

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

describe

read

このコマンドに対する-sオプションは、ファイルの内容を表示しません。listのアクセス権があれば十分です。

diff

read

 

diff2

read

 

dirs

list

 

diskspace

super

 

edit

open

 

export

super

 

filelog

list

 

files

list

 

fix

open

 

fixes

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

flush

list

 

fstat

list

 

grep

read

 

group

super

このコマンドに対する-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。

このコマンドに対する-aオプションは、ユーザがグループ所有者としてリストされている場合、listのアクセス権があれば十分です。

-Aオプションには、adminアクセス権が必要です。

groups

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

have

list

 

help

none

 

info

none

 

integrate

open

ユーザは反映先ファイルのopenのアクセス権と、ソースファイルのreadのアクセス権が必要です。

integrated

list

 

interchanges

list

 

istat

list

 

job

open

このコマンドに対する-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。

既存のメタデータや他のユーザのデータをオーバライドするための-fオプションには、adminアクセス権が必要です。

jobs

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

journaldbchecksums

super

 

key

review

既存のキーの値を表示するには、ディポ内の1つ以上のファイルに対するlistのアクセス権が必要です。キーの値を変更する、または新しいキーを作成するには、reviewのアクセス権が必要です。

key

list

dm.keys.hide構成可能変数が2に設定されている場合、adminのアクセス権限が必要です。

keys

list

dm.keys.hide構成可能変数が1または2に設定されている場合、adminのアクセス権が必要です。

label

open

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

既存のメタデータや他のユーザのデータをオーバーライドするための-fオプションには、adminアクセス権が必要です。

labels

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

labelsync

open

 

license

super

ライセンス使用量を表示する-uオプションには、adminのアクセス権のみが必要です。

list

open

 

lock

write

 

lockstat

super

 

logappend

list

 

logger

review

 

login

list

 

logout

list

 

logparse

super

 

logrotate

super

 

logschema

super

 

logstat

super

 

logtail

super

 

merge

open

 

monitor

list

処理を終了または取り消す、あるいは引数を参照するにはsuperのアクセス権限が必要です。

move

open

 

obliterate

admin

 

opened

list

 

passwd

list

 

ping

admin

 

populate

open

 

print

read

 

protect

super

 

protects

list

-a-g-uオプションを使用するには、superのアクセス権限が必要です。

property

list

読み取りにはlist、新しいプロパティの追加または削除、およびプロパティ設定の表示や全ユーザおよびグループの表示にはadminの権限が必要です。

proxy

none

Helixプロキシに接続されている必要があります。

pull

super

 

reconcile

open

 

reload

open

p4 reload-fを使用して他のユーザのワークスペースとラベルを再ロードするには、adminのアクセス権限が必要です。

reopen

open

 

replicate

super

 

resolve

open

 

resolved

open

 

restore

admin

 

revert

list

 

review

review

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

reviews

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

server

super

 

serverid

list

サーバIDを設定するには、superのアクセス権限が必要です。

重要

構成の問題を回避するには、serverIDの値をP4NAMEの値と常に一致させる必要があります(どちらも設定されている場合)。 serverIDを設定することをお勧めしますが、下位互換性を維持するため、P4NAMEもサポートされています。

set

none

 

shelve

open

p4 shelve -f -dにより保留状態のファイルを強制的に削除するには、adminのアクセス権限が必要です。

sizes

list

 

status

open

 

stream

open

 

streams

list

 

submit

write

 

sync

read

注意

マスターが使用できない状態で、syncコマンドを使用してレプリカのディポを自分のレプリカワークスペースに同期すると、コマンドが失敗します。 これは、レプリカを使用して、マスター上のdb.haveテーブルを更新する必要があるためです。

sync -p

read

sync -pオプションを指定してreadコマンドを実行すると、db.haveテーブルが更新されなくなります。

tag

list

 

tickets

none

 

triggers

super

 

typemap

admin

このコマンドに対する-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。

unload

open

p4 unload -fを使用して他のユーザのワークスペースとラベルをアンロードするには、adminのアクセス権限が必要です。

unlock

open

既存のメタデータや他のユーザのデータをオーバーライドするための-fオプションには、adminアクセス権が必要です。

unshelve

open

 

update

list

 

user

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

-fオプション(ユーザの作成と編集に使用)には、superのアクセス権が必要です。

users

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

構成可能変数run.users.authorize1に設定されている場合、p4 usersを実行するためにはユーザ自身がサーバの認証を受ける必要があります。

verify

admin

 

where

list

このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。

関連コマンド

ユーザグループを作成または編集する

p4 group

すべてのユーザグループを一覧表示する

p4 groups

グラフタイプのディポとリポジトリに対する権限を許可する p4 grant-permission (グラフ)