public interface AclFileAttributeView extends 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" という name と、AclEntry オブジェクトのリストである value を含む FileAttribute として、createFile または createDirectory などのメソッドに提供されることがあります。
実装が NFSv4 で定義された ACL モデルとは異なる ACL モデルをサポートしている場合は、ファイル作成時の初期 ACL の設定で、その ACL をファイルシステムでサポートされているモデルに変換する必要があります。ファイルを作成するメソッドは、その変換の結果として安全性が低くなるファイルを作成する試みをすべて (IOException をスローすることにより) 拒否します。
String name()
"acl" という名前です。name、インタフェース: AttributeViewname、インタフェース: FileOwnerAttributeViewList<AclEntry> getAcl() throws IOException
ファイルシステムが NFSv4 で定義された ACL モデルとは異なる ACL モデルを使用する場合、このメソッドはその ACL を NFSv4 ACL モデルに変換したものである ACL を返します。
返されたリストは、既存の ACL への変更が容易になるように変更可能になっています。setAcl メソッドは、ファイルの ACL 属性を更新するために使用されます。
エントリの順序付けられたリストIOException - 入出力エラーが発生した場合SecurityException - デフォルトプロバイダで、セキュリティーマネージャーがインストールされていて、それが RuntimePermission("accessUserInformation") を拒否するか、またはその checkRead メソッドがファイルへの読み取りアクセスを拒否する場合。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 メソッドがファイルへの書き込みアクセスを拒否する場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.