モジュール java.base
パッケージ java.nio.file.attribute

インタフェースAclFileAttributeView

すべてのスーパー・インタフェース:
AttributeView, FileAttributeView, FileOwnerAttributeView

public interface AclFileAttributeView extends FileOwnerAttributeView
ファイルのアクセス制御リスト(ACL)またはファイル所有者属性の読み取りまたは更新をサポートするファイル属性ビューです。

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
外部仕様