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をサポートしているかどうかを判定できます。
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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。