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, 2013, Oracle and/or its affiliates. All rights reserved.