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
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
Perforceプロキシに接続している必要があります。
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
権限が必要です。set
none
shelve
open
p4 shelve -f -dにより保留状態のファイルを強制的に削除するには、
admin
のアクセス権が必要です。sizes
list
status
open
stream
open
streams
list
submit
write
sync
read
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.authorize
が1に設定されている場合、p4 usersを実行するためにはユーザ自身がサーバの認証を受ける必要があります。verify
admin
where
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は |