- すべてのスーパー・インタフェース:
AttributeView
,FileAttributeView
,FileOwnerAttributeView
ACLは、ファイル・システム・オブジェクトへのアクセス権を指定するために使用されます。 ACLはアクセス制御エントリ
の順序付けられたリストであり、それぞれはUserPrincipal
およびそのユーザー主体のアクセス・レベルを指定します。 このファイル属性ビューは、RFC 3530: Network File System (NFS) version 4 Protocolに指定されたACLモデルに基づいてACLの読取りと書込みを行うためのgetAcl
およびsetAcl
メソッドを定義します。 このファイル属性ビューは、NFSv4 ACLモデルをサポートしているか、NFSv4 ACLモデルと、ファイル・システムによって使用されるACLモデル間の明確に定義されたマッピングを備えているファイル・システム実装用です。 そのようなマッピングの詳細は実装に依存しているため、特定できません。
このクラスは、ファイル所有者の取得と設定を行うメソッドを定義するためにFileOwnerAttributeView
も拡張します。
ファイル・システムが同種ではない一連のファイル・システム
へのアクセスを提供する場合、それらのファイル・システムの一部しかACLをサポートしていないことがあります。 supportsFileAttributeView
メソッドを使用すると、ファイル・システムがACLをサポートしているかどうかを判定できます。
相互運用性
RFC 3530では、POSIXで定義されたアクセス権をサポートしているプラットフォームで特殊なユーザー識別情報を使用できるようにします。 特殊なユーザー識別情報は、「OWNER@
」、「GROUP@
」、および「EVERYONE@
」です。 AclFileAttributeView
およびPosixFileAttributeView
の両方がサポートされている場合は、読み取られるか書き込まれるACL エントリ
にこれらの特殊なユーザー識別情報が含まれていることがあります。 ファイル・システムのUserPrincipalLookupService
を使用すると、lookupPrincipalByName
メソッドを呼び出してこれらの特殊な識別情報を表すUserPrincipal
を取得できます。
使用例: 「joe」アクセスを付与するエントリを既存のACLに追加するとします。
// lookup "joe" UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService() .lookupPrincipalByName("joe"); // get view AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class); // create ACE to give "joe" read access AclEntry entry = AclEntry.newBuilder() .setType(AclEntryType.ALLOW) .setPrincipal(joe) .setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES) .build(); // read ACL, insert ACE, re-write ACL List<AclEntry> acl = view.getAcl(); acl.add(0, entry); // insert before any DENY entries view.setAcl(acl);
動的アクセス
ファイル属性への動的アクセスが必要な場合、この属性ビューによってサポートされている属性は次のとおりです。
名前 型 "acl" List
<AclEntry
>"owner" UserPrincipal
getAttribute
メソッドは、getAcl
またはgetOwner
メソッドを呼び出したかのように、ACLまたは所有者属性を読み取るために使用できます。
setAttribute
メソッドは、setAcl
またはsetOwner
メソッドを呼び出したかのように、ACLまたは所有者属性を更新するために使用できます。
ファイル作成時のACLの設定
この属性ビューをサポートしている実装では、ファイルまたはディレクトリ作成時の初期ACLの設定もサポートする場合があります。 初期ACLは、"acl:acl"
というname
と、AclEntry
オブジェクトのリストであるvalue
を含むFileAttribute
として、createFile
またはcreateDirectory
などのメソッドに提供されることがあります。
実装がNFSv4で定義されたACLモデルとは異なるACLモデルをサポートしている場合は、ファイル作成時の初期ACLの設定で、そのACLをファイル・システムでサポートされているモデルに変換する必要があります。 ファイルを作成するメソッドは、その変換の結果として安全性が低くなるファイルを作成する試みをすべて(IOException
をスローすることにより)拒否します。
- 導入されたバージョン:
- 1.7
-
メソッドのサマリー
インタフェース java.nio.file.attribute.FileOwnerAttributeViewで宣言されたメソッド
getOwner, setOwner
-
メソッドの詳細
-
name
String name()属性ビューの名前を返します。 この型の属性ビューは"acl"
という名前です。- 定義:
name
、インタフェース:AttributeView
- 定義:
name
、インタフェース:FileOwnerAttributeView
- 戻り値:
- 属性ビューの名前
-
getAcl
List<AclEntry> getAcl() throws IOExceptionアクセス制御リストを読み取ります。ファイル・システムがNFSv4で定義されたACLモデルとは異なるACLモデルを使用する場合、このメソッドはそのACLをNFSv4 ACLモデルに変換したものであるACLを返します。
返されたリストは、既存のACLへの変更が容易になるように変更可能になっています。
setAcl
メソッドは、ファイルのACL属性を更新するために使用されます。- 戻り値:
- ACLを表す
エントリ
の順序付けられたリスト - 例外:
IOException
- 入出力エラーが発生した場合SecurityException
- デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission
("accessUserInformation")
を拒否するか、またはそのcheckRead
メソッドがファイルへの読取りアクセスを拒否する場合。
-
setAcl
void setAcl(List<AclEntry> acl) throws IOExceptionアクセス制御リストを更新(置換)します。ファイル・システムがアクセス制御リストをサポートしており、NFSv4で定義されたACLモデルとは異なるACLモデルを使用する場合、このメソッドではそのACLをファイル・システムでサポートされているモデルに変換する必要があります。 このメソッドは、ACLが更新された場合よりもファイルの安全性が高くなると思われるACLを書き込む試みをすべて(
IOException
をスローすることにより)拒否します。AclEntryType.AUDIT
またはAclEntryType.ALARM
エントリのマッピングが実装でサポートされていない場合、このメソッドはACLの書込み時にこれらのエントリを無視します。この属性ビューと同じプロバイダに関連付けられていない
ユーザー主体
がACLエントリに含まれている場合は、ProviderMismatchException
がスローされます。 その他の検証(存在する場合)は実装に依存します。ファイル・システムがほかのセキュリティ関連のファイル属性(ファイル
・アクセス権
など)をサポートしている場合、アクセス制御リストを更新すると、これらのセキュリティ関連属性も更新されることがあります。- パラメータ:
acl
- 新しいアクセス制御リスト- 例外:
IOException
- 入出力エラーが発生したか、ACLが無効な場合SecurityException
- デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、それがRuntimePermission
("accessUserInformation")
を拒否するか、またはそのcheckWrite
メソッドがファイルへの書込みアクセスを拒否する場合。
-