モジュール 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
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    アクセス制御リストを読み取ります。
    属性ビューの名前を返します。
    void
    setAcl​(List<AclEntry> acl)
    アクセス制御リストを更新(置換)します。

    インタフェース 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メソッドがファイルへの書込みアクセスを拒否する場合。