p4 protect
概要
ユーザによるファイル、ディレクトリ、コマンドへのアクセスを管理します。
構文
p4 [g-opts] protect
p4 [g-opts] protect -o
p4 [g-opts] protect -i
解説
p4 protectは、Perforceパーミッションを制御します。以下のようにp4 protectを使用できます。
-
どのユーザがどのファイルにアクセスできるかを制御します。
-
どのユーザがどのコマンドを使用できるかを制御します。
-
上記の2点を組み合わせると、あるユーザに対して、あるファイルセットへは書き込み可能で他のファイルは読み取りのみ、という制御ができます。
-
p4 groupで定義したユーザグループにパーミッションを与えます。
-
ユーザに対して特定のアクセス権限を付与または拒否するには、
=read、=open、=write、=branchの各権限を使用します。それより下位の権限を再度付与する必要はありません。 -
特定のIPアドレス上のユーザのみがPerforceを実行できるよう、アクセスをこのIPアドレスに限定します。
一般的に、ユーザまたはグループごとにアクセスレベルが1つ与えられ、さらにより細かい制御が必要であれば、1つ以上の特定の権限を選択的に拒否することができます。
以下に、Perforceのパーミッションレベルとアクセス権限を示します。
|
パーミッションレベル/権限 |
ユーザが実行できること |
|---|---|
|
|
すべてのPerforceメタデータにアクセスできますが、ファイルの内容にはアクセスできません。p4 files、p4 client、p4 job、p4 describe、p4 branchなどのPerforceオブジェクトを記述するコマンドをすべて実行できます。 |
|
|
|
|
|
|
|
|
|
|
|
この権限が拒否されると、ユーザはp4 add、p4 edit、p4 delete、p4 integrateによってファイルを作業状態にすることができません。 |
|
|
上記のすべてを実行できます。さらに、p4 submitによるファイルへの書き込み、p4 lockによるファイルのロックを実行できます。 |
|
|
この権限が拒否されると、ユーザは作業状態のファイルをサブミットできません。 |
|
|
この権限が拒否されると、ユーザはファイルをp4 integrateの反映元として使用できません。 |
|
|
Perforceにアクセスする外部プログラム専用のパーミッションです。 |
|
|
上記すべてに加え、メタデータへの変更をオーバライドする管理者用コマンドが含まれますが、サービスの動作に影響することはありません。 これに該当するのは、p4 branch -f、p4 change -f、p4 client -f、p4 job -f、p4 jobspec、p4 label -f、p4 obliterate、p4 shelve -f -d、p4 typemap、p4 unlock -fおよびp4 verifyです。 |
|
|
上記のすべてに加え、さらにp4 admin、p4 counter、p4 triggers、p4 protect、およびp4 user -fによるユーザ作成機能などのスーパーユーザコマンドにもアクセスできます。 |
フォームフィールド
p4 protectを実行すると、PerforceはProtections:フィールドだけのフォームを表示します。各パーミッションは、[Protections:]の見出しに対してインデントされた、専用の行に指定されます。各行には次の5つの設定値があります。
|
列 |
解説 |
|---|---|
|
アクセスレベル |
前項で定義された、 |
|
ユーザまたはグループ |
プロテクションが適用されるのは、 |
|
グループ名またはユーザ名 |
ユーザ名またはp4 groupで定義したグループ名。すべてのユーザにこのパーミッションを与えるときは、ワイルドカード「 |
|
Host |
クライアントホストのIPアドレス。IPv6アドレスおよびIPv4アドレスがサポートされています。また、CIDR表記を使用していない場合にのみ、すべてのIPアドレスを参照するためにワイルドカード「
IPv6アドレスに
システムは、
|
|
ディポファイルのパス |
Perforceのディポシンタックスで、このパーミッションが与えられているディポファイルのパス。ファイルの指定は、Perforceのワイルドカードを含むことができます。
このマッピングをパーミッションセットから除外するには、設定値の頭にダッシュ( ディポが除外された場合、アクセスを拒否されたユーザはp4 depotsの出力でそのディポを見ることができなくなります。また、このユーザに対してデフォルトのブランチビュー、クライアントビュー、ラベルビューでそのディポは表示されません。 |
除外マッピングが設定されていない場合、各ユーザにはユーザ、ユーザのIPアドレス、およびユーザがアクセスしようとしているファイルと適合するすべてのマッピングにリストされたパーミッションレベルの中で最高のレベルが与えられます。この場合、マッピングの順序は関係ありません。
除外マッピングが設定されている場合、マッピングの順序が関係します。除外マッピングは、それより上の行にリストされているプロテクションのうち適合するものはすべて無効にします。除外プロテクションでどのアクセスレベルが拒否されていても、適合するユーザ、ファイル、IPアドレスに対するすべてのアクセスレベルが拒否されます。
除外マッピングを使用して、group1のメンバーに対してディポのある領域へのアクセスを拒否し、group2のメンバーに対してはディポの同じ領域へのアクセスを許可した場合、group1とgroup2の両方のメンバーであるユーザは、プロテクションテーブル内でどちらの行が後に記述されているかによってアクセスの可否が決まります。
オプション
|
|
エディタを起動せずに、標準出力からフォームを読み取ります |
|
|
エディタを起動せずに、フォームを標準出力に書き出します |
|
|
「“グローバルオプション”」を参照してください。 |
使用上の留意点
|
ファイル引数にリビジョン指定子を使えるか? |
ファイル引数にリビジョン範囲を使えるか? |
最低限必要なアクセスレベル |
|---|---|---|
|
使用不可 |
使用不可 |
|
-
下図のように、各パーミッションのレベルはその下にあるすべてのアクセスレベルを含みます。

-
特殊な権限である
=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 addは少なくとも
openのアクセス権を必要とするため、open、write、admin、またはsuperのアクセス権があればp4 addを実行できます。コマンド
アクセスレベル
備考
add
openadmin
superannotate
readarchive
adminattribute
writeサブミットされたファイルに属性を設定するための
-fオプションには、admin権限が必要です。branch
open既存のメタデータや他のユーザのデータをオーバライドするための
-fオプションには、admin権限が必要ですbranches
listchange
open-oオプション(変更を標準出力に表示)にはlist権限さえあれば十分です。既存のメタデータや他のユーザのデータをオーバライドするための-fオプションには、admin権限が必要ですchanges
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
client
list既存のメタデータや他のユーザのデータをオーバライドするための
-fオプションには、admin権限が必要ですclients
listconfigure
supercopy
listコピー元ファイルには
list権限、コピー先ファイルにはopen権限が必要です。counter
review既存のカウンターの値を表示するには、ディポ内の1つ以上のファイルに対する
listのアクセス権が必要です。カウンターの値を変更する、または新しいカウンターを作成するには、reviewのアクセス権が必要です。counters
listcstat
listdbschema
superdbstat
superdbverify
superdelete
opendepot
superこのコマンドに対する
-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。depots
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
describe
readこのコマンドに対する
-sオプションは、ファイルの内容を表示しません。listのアクセス権があれば十分です。diff
readdiff2
readdirs
listdiskspace
superedit
openexport
superfilelog
listfiles
listfix
openfixes
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
flush
listfstat
listgrep
readgroup
superこのコマンドに対する
-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。このコマンドに対する
-aオプションは、ユーザがグループ所有者としてリストされている場合、listのアクセス権があれば十分です。-Aオプションには、adminアクセス権が必要です。groups
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
have
listhelp
noneinfo
noneintegrate
openユーザは対象ファイルの
openのアクセス権と、ソースファイルのreadのアクセス権が必要です。integrated
listinterchanges
lististat
listjob
openこのコマンドに対する
-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。既存のメタデータや他のユーザのデータをオーバライドするための
-fオプションには、adminアクセス権が必要ですjobs
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
journaldbchecksums
superkey
review既存のキーの値を表示するには、ディポ内の1つ以上のファイルに対する
listのアクセス権が必要です。キーの値を変更する、または新しいキーを作成するには、reviewのアクセス権が必要です。key
listdm.keys.hide構成可能変数が2に設定されている場合、adminのアクセス権が必要です。keys
listdm.keys.hide構成可能変数が1または2に設定されている場合、adminのアクセス権が必要です。label
openこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
既存のメタデータや他のユーザのデータをオーバライドするための
-fオプションには、adminアクセス権が必要ですlabels
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
labelsync
openlicense
superライセンス使用量を表示する
-uオプションには、adminのアクセス権のみが必要です。list
openlock
writelockstat
superlogappend
listlogger
reviewlogin
listlogout
listlogparse
superlogrotate
superlogschema
superlogstat
superlogtail
supermerge
openmonitor
list処理を終了または取り消す、あるいは引数を参照するには
superのアクセス権が必要です。move
openobliterate
adminopened
listpasswd
listping
adminpopulate
openprint
readprotect
superprotects
list-a、-g、-uオプションを使用するには、superのアクセス権が必要です。property
list読み取りには
list、新しいプロパティの追加または削除、およびプロパティ設定の表示や全ユーザおよびグループの表示にはadminの権限が必要です。proxy
nonePerforceプロキシに接続している必要があります。
pull
superreconcile
openreload
openp4 reload -fを使用して他のユーザのワークスペースとラベルをリロードするには、
adminのアクセス権が必要です。reopen
openreplicate
superresolve
openresolved
openrestore
adminrevert
listreview
reviewこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
reviews
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
server
superserverid
listサーバIDを設定するには、
super権限が必要です。set
noneshelve
openp4 shelve -f -dにより保留状態のファイルを強制的に削除するには、
adminのアクセス権が必要です。sizes
liststatus
openstream
openstreams
listsubmit
writesync
readtag
listtickets
nonetriggers
supertypemap
adminこのコマンドに対する
-oオプションは、フォームの編集ではなく読み取りを可能にするもので、listのアクセス権があれば十分です。unload
openp4 unload -fを使用して他のユーザのワークスペースとラベルをアンロードするには、
adminのアクセス権が必要です。unlock
open既存のメタデータや他のユーザのデータをオーバライドするための
-fオプションには、adminアクセス権が必要ですunshelve
openupdate
listuser
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
-fオプション(ユーザの作成と編集に使用)には、superのアクセス権が必要です。users
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
構成可能変数
run.users.authorizeが1に設定されている場合、p4 usersを実行するためにはユーザ自身がサーバの認証を受ける必要があります。verify
adminwhere
listこのコマンドは特定のファイルに作用するものではありません。つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
-
新しいPerforceをインストールしたときは、Perforceを使用したい人すべてがサービスに接続でき、すべてのPerforceユーザがスーパーユーザとなります。p4 protectを最初に実行すると、その実行したユーザがスーパーユーザとなり、他のユーザにすべてのファイルに対する
writeパーミッションが与えられます。インストール後すぐにp4 protectを実行してください。 -
通常の操作で与えられるアクセスレベルは、主に
list、read、writeおよびsuperです。openとreviewはあまり使用されません。 -
p4 describeのようなファイルを一覧表示するコマンドは、ユーザが最低
listアクセス権を持っているファイルのみを一覧表示します。 -
いくつかのコマンド(例えば、p4 changeで以前サブミットされたチェンジリストを編集する場合など)では
-fオプションをとりますが、これはadminもしくはsuperアクセス権が必要です。 -
openアクセスレベルでは、ユーザにファイル変更を許可しますが、ディポへのファイルのサブミットは行いません。一時的にコードラインを凍結させたいが開発者の作業を止めたくない場合や、試験担当者に対し、個人使用のためのコード変更は認めるがコードラインに永久的な変更を加えることは認めないような場合などに、open権限を使用してください。 -
reviewアクセスレベルは、カウンタ値にアクセスする必要のあるレビューデーモンを意図しています。 -
review権限とwrite権限の両方を必要とするがsuper権限は必要としないレビューデーモンを記述する場合、プロテクションテーブルの別々の行でreview権限とwrite権限の両方をデーモンに付与してください。 -
あるサーバ上のファイルを別のサーバからのリモートディポとして使用する(p4 depotで定義)のを制限したり排除するには、
remoteユーザ(または別のサーバが認証に用いるサービスユーザ)に対するプロテクションを作成してください。リモートディポは、ユーザのPerforceサービスに関連付けられたサービスユーザか、remoteという名前の仮想ユーザによってアクセスされます。 -
詳細については、『Perforceサーバ管理者ガイド: 基本』の「プロテクション」を参照してください。
例
ユーザjoeがp4 groupによってdevgroupグループとbuggroupグループのメンバーに設定されており、この組織がIPv4接続のみを使用していると仮定すると、プロテクションテーブルは次のようになります。
super user bill * //... write group devgroup * //depot/... write group buggroup * -//depot/proj/... write user joe 192.168.100.0/24 //...
Joeはいくつかの操作を試みます。各操作が成功するか失敗するかは次のとおりです。
|
操作元IPアドレス |
試みる操作 |
結果 |
|---|---|---|
|
|
p4 print //depot/misc/... |
成功します。2行目で、これらのファイルへの |
|
|
p4 print //depot/proj/README |
失敗します。3行目で、このディレクトリ中のあらゆるファイルに対するJoeのすべてのパーミッションが除去されています。(2番目と3番目のプロテクションが入れ替わっていた場合、以降のプロテクションが除去を無効にするので、Joeはこの操作に成功します。) |
|
|
p4 print //depot/proj/README |
成功します。Joeのワークステーションは、4行目でこのパーミッションを与えられたIPアドレスに位置しています。 |
|
|
p4 verify //depot/misc/... |
失敗します。p4
verifyは |