public final class FilePermission extends Permission implements Serializable
パス名には、指定したアクションを許可するファイルまたはディレクトリのパス名を指定します。「/*」(「/」はファイル区切り文字File.separatorChar
)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとディレクトリを表します。「/-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリを(再帰的に)表します。パス名に特殊なトークン「<<ALL FILES>>」を指定した場合は、すべてのファイルに一致します。
注: 1つの「*」で構成されるパス名は、現在のディレクトリのすべてのファイルを示し、1つの「-」で構成されるパス名は、現在のディレクトリのすべてのファイル、および(再帰的に)現在のディレクトリに格納されているすべてのファイルおよびサブディレクトリを示します。
許可するアクションは、カンマで区切られた1個以上のキーワードのリストを内容とする文字列としてコンストラクタに引き渡されます。指定できるキーワードは、「read」、「write」、「execute」、「delete」、および「readlink」です。それぞれの意味は、次のように定義されます。
Runtime.exec
の呼出しを許可します。SecurityManager.checkExec
に対応します。
File.delete
の呼出しを許可します。SecurityManager.checkDelete
に対応します。
readSymbolicLink
メソッドを呼び出すことにより、シンボリック・リンクのターゲットを読み取ることができます。
アクション文字列は、処理の前に小文字に変換されます。
FilePermissionを許可する場合には注意してください。さまざまなファイルやディレクトリへの読取りアクセス、特に書込みアクセスを許可するとどうなるかをよく検討してください。writeアクションに対して「<<ALL FILES>>」アクセス権を指定するのは特に危険です。これは、ファイル・システム全体に対する書込みを許可するということです。このような指定をすると、事実上、JVM実行環境を含め、システム・バイナリを置き換えることが可能になってしまいます。
注: コードは同一ディレクトリ(またはそのディレクトリのサブディレクトリ)内のファイルを常に読み取ることができるので、読取り時のアクセス権を明示する必要はありません。
Permission
, Permissions
, PermissionCollection
コンストラクタと説明 |
---|
FilePermission(String path, String actions)
指定されたアクションを持つ新しいFilePermissionオブジェクトを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
boolean |
equals(Object obj)
2つのFilePermissionオブジェクトが等しいかどうかを判定します。
|
String |
getActions()
アクションの「正規の文字列表現」を返します。
|
int |
hashCode()
このオブジェクトのハッシュ・コード値を返します。
|
boolean |
implies(Permission p)
このFilePermissionオブジェクトに、指定されたアクセス権が含まれているかどうかを判定します。
|
PermissionCollection |
newPermissionCollection()
FilePermissionオブジェクトを格納するための新しいPermissionCollectionオブジェクトを返します。
|
checkGuard, getName, toString
public FilePermission(String path, String actions)
「/*」(「/」はファイル区切り文字File.separatorChar
)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとディレクトリを表します。「/-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリを(再帰的に)表します。特殊なパス名「<<ALL FILES>>」は、すべてのファイルに一致します。
1つの「*」で構成されるパス名は、現在のディレクトリのすべてのファイルを示し、1つの「-」で構成されるパス名は、現在のディレクトリのすべてのファイル、および(再帰的に)現在のディレクトリに格納されているすべてのファイルおよびサブディレクトリを示します。
空の文字列を含むパス名は、空のパスを表します。
path
- ファイルまたはディレクトリのパス名。actions
- アクション文字列。IllegalArgumentException
- アクションがnull
の場合、空の場合、または指定された有効なアクション以外のアクションを含む場合。public boolean implies(Permission p)
つまり、このメソッドは次の場合にtrueを返します。
implies
、クラス: Permission
p
- チェック対象のアクセス権。null
ではなく、このオブジェクトに含まれている場合はtrue
。それ以外の場合はfalse
。public boolean equals(Object obj)
equals
、クラス: Permission
obj
- このオブジェクトと等しいかどうかが判定されるオブジェクト。true
。それ以外の場合はfalse
。Object.hashCode()
、HashMap
public int hashCode()
hashCode
、クラス: Permission
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String getActions()
getActions
を呼び出すと、「read,write」という文字列が返されます。getActions
、クラス: Permission
public PermissionCollection newPermissionCollection()
FilePermissionオブジェクトは、任意の順序でコレクションに挿入されるように、さらにPermissionCollectionのimplies
メソッドが効率的に(および安定して)実装されるように格納される必要があります。
たとえば、次の2つのFilePermissionがあり、
"/tmp/-", "read"
"/tmp/scratch/foo", "write"
そして次のFilePermissionでimplies
メソッドを呼び出す場合
"/tmp/scratch/foo", "read,write",
implies
関数は、「/tmp/-」および「/tmp/scratch/foo」の両方のアクセス権を考慮しなければならず、そのため、実質的なアクセス権は「read,write」であり、implies
はtrueを返します。FilePermissionの「implies」セマンティックスは、このnewPermissionCollection
メソッドによって返されるPermissionCollectionオブジェクトによって正しく処理されます。newPermissionCollection
、クラス: Permission
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.