public interface AclFileAttributeView extends FileOwnerAttributeView
ACL是用于指定文件系统对象的访问权限。ACL是access-control-entries
有序列表,每个指定UserPrincipal
和为用户主体的访问级别。这个文件属性视图定义getAcl
,和setAcl
方法读写基于指定的RFC 3530: Network File System (NFS) version 4 Protocol ACL ACL模型。这个文件的属性视图是用于文件系统的实现,支持NFSv4 ACL模型或定义一个NFSv4 ACL模型和文件系统所使用的ACL模型之间的映射。这种映射的细节是依赖于实现的,因此未指定。
这个类也延伸FileOwnerAttributeView
以定义的方法来获取和设置文件的所有者。
文件系统提供了一套file-systems
不均匀的只有一些文件系统可以支持的时候。的supportsFileAttributeView
方法可以用来测试是否有文件系统支持的ACL。
OWNER@
”、“
GROUP@
”、和“
EVERYONE@
”。当两
AclFileAttributeView
和
PosixFileAttributeView
支持这些特殊用户的身份可能包括在ACL
entries
,读或写。文件系统的
UserPrincipalLookupService
可以用来获得一个
UserPrincipal
借用
lookupPrincipalByName
方法表示这些特殊身份。
使用示例:假设我们希望添加一个条目到一个现有的ACL授予“乔”访问:
/ /查找“乔”UserPrincipal乔=文件。getfilesystem()。getuserprincipallookupservice()lookupprincipalbyname(“乔”);/获得视图aclfileattributeview观=文件。getfileattributeview(文件,aclfileattributeview。类);/创建王牌给“乔”读访问aclentry入门= aclentry。newbuilder()。设备(aclentrytype。允许)setprincipal(乔)。(aclentrypermission.read_data。时设置权限,aclentrypermission。read_attributes)build();/ /读ACL,ACL插入ACE,重新写< > ACL列表aclentry getacl() =视图;ACL。添加(0,录入);//前插入任何否认条目setacl(ACL)的观点;
当需要动态访问文件属性时,此属性视图支持的属性如下:
Name Type "acl" List
<AclEntry
>"owner" UserPrincipal
的getAttribute
方法可以用来读取ACL或所有者属性,如果通过调用getAcl
或getOwner
方法。
的setAttribute
方法可用于更新ACL或所有者属性,如果通过调用setAcl
或setOwner
方法。
实现支持这个属性视图还可以支持设置初始ACL创建一个文件或目录的时候。最初的ACL可以提供方法如createFile
或createDirectory
与name
"acl:acl"
和value
是AclEntry
对象列表中的一个FileAttribute
。
在一个实施支持ACL模型不同于NFSv4 ACL模型定义并设置初始ACL创建文件时,必须将ACL的文件系统支持的模型。方法创建一个文件应该拒绝(投掷IOException
)任何试图创建一个文件,将作为结果的翻译更不安全。
String name()
"acl"
观点。
name
接口
AttributeView
name
接口
FileOwnerAttributeView
List<AclEntry> getAcl() throws IOException
当文件系统使用一个ACL模型不同于NFSv4 ACL模型定义,那么这个方法返回一个ACL,ACL的NFSv4 ACL模型的翻译。
返回的列表是可变的,方便修改现有的ACL。的setAcl
方法用于更新文件的ACL属性。
entries
代表ACL的有序列表
IOException
如果I/O错误发生
SecurityException
在默认提供程序的情况下,安装安全管理器,它否认
RuntimePermission
("accessUserInformation")或其
checkRead
法否认对文件的读访问。
void setAcl(List<AclEntry> acl) throws IOException
在文件系统支持访问控制列表,并使用ACL模型不同于nfsv4定义ACL模型,此方法必须将ACL的文件系统支持的模型。这种方法应该拒绝(投掷IOException
)任何试图写一个ACL,似乎使文件更安全的情况要比如果ACL进行更新。在一个实现不支持一个AclEntryType.AUDIT
或AclEntryType.ALARM
条目映射,则此方法忽略这些条目写ACL时。
如果一个ACL条目包含一个user-principal
不同供应商联系该属性视图然后ProviderMismatchException
抛出。额外的验证,如果有的话,是依赖于实现的。
如果文件系统支持其他与安全相关的文件属性(例如一个文件access-permissions
),更新访问控制列表也可能导致这些安全相关的属性被更新。
acl
-新的访问控制列表
IOException
-如果发生I/O错误或ACL是无效的
SecurityException
在默认提供程序的情况下,安装安全管理器,它否认
RuntimePermission
("accessUserInformation")或其
checkWrite
方法拒绝写访问文件。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.