public interface Acl
表示访问控制列表 (ACL) 的接口。访问控制列表是一种数据结构,用于保护对资源的访问。
可将一个 ACL 看作是具有多个 ACL 项的数据结构。每个接口类型为 AclEntry 的 ACL 项都包含一组与特定主体相关联的权限。(主体表示一个实体,如单独用户或一个用户组)。另外,可以将每个 ACL 项指定为 positive 或 negative 的。如果为 positive,则将权限授予相关联的主体。如果为 negative,则拒绝该权限。
每个 ACL 中的 ACL 项都遵循以下规则:
java.security.acl
包为 ACL 和相关的数据结构(ACL 项、组、权限等等)提供了接口,
sun.security.acl
类则提供了该接口的默认实现。例如,
java.security.acl.Acl
为 ACL 提供了接口,而
sun.security.acl.AclImpl
类则提供了该接口的默认实现。
java.security.acl.Acl
接口扩展了 java.security.acl.Owner
接口。该 Owner 接口用于维护每个 ACL 的所有者列表。只允许 ACL 的所有者修改该 ACL。例如,只有所有者才能调用 ACL 的 addEntry
方法来向 ACL 中添加新的 ACL 项。
方法摘要 | |
---|---|
boolean |
addEntry(Principal caller, AclEntry entry) 向此 ACL 中添加 ACL 项。 |
boolean |
checkPermission(Principal principal, Permission permission) 检查指定的主体是否具有指定的权限。 |
Enumeration<AclEntry> |
entries() 返回此 ACL 中各项的枚举。 |
String |
getName() 返回此 ACL 的名称。 |
Enumeration<Permission> |
getPermissions(Principal user) 返回一个指定主体(表示一个实体,如个体或组)的许可权限集合的枚举。 |
boolean |
removeEntry(Principal caller, AclEntry entry) 从此 ACL 中移除 ACL 项。 |
void |
setName(Principal caller, String name) 设置此 ACL 的名称。 |
String |
toString() 返回 ACL 内容的字符串表示形式。 |
从接口 java.security.acl.Owner 继承的方法 |
---|
addOwner, deleteOwner, isOwner |
方法详细信息 |
---|
void setName(Principal caller, String name) throws NotOwnerException
caller
- 调用此方法的主体。必须是此 ACL 的所有者。
name
- 赋予此 ACL 的名称。
NotOwnerException
- 如果调用方主体不是此 ACL 的所有者。
getName()
String getName()
setName(java.security.Principal, java.lang.String)
boolean addEntry(Principal caller, AclEntry entry) throws NotOwnerException
caller
- 调用此方法的主体。必须是此 ACL 的所有者。
entry
- 要添加到此 ACL 中的 ACL 项。
NotOwnerException
- 如果调用方主体不是此 ACL 的所有者。
boolean removeEntry(Principal caller, AclEntry entry) throws NotOwnerException
caller
- 调用此方法的主体。必须是此 ACL 的所有者。
entry
- 要从此 ACL 中移除的 ACL 项。
NotOwnerException
- 如果调用方主体不是此 ACL 的所有者。
Enumeration<Permission> getPermissions(Principal user)
还要确定个体 positive 和 negative 权限集合。positive 权限集合包含该主体的 positive ACL 项(如果有的话)中所指定的权限。类似地,negative 权限集合包含该主体的 negative ACL 项(如果有的话)中所指定的权限。如果此 ACL 中没有针对该主体的 positive(negative)ACL 项,则认为个体 positive(或 negative )权限集合为 null。
然后使用个体权限总是覆盖组权限这一简单规则来计算授予该主体的权限集合。也就是说,该主体的个体 negative 权限集合(特定权限的拒绝)覆盖组的 positive 权限集合,该主体的个体 positive 权限集合则覆盖组的 negative 权限集合。
user
- 要返回其权限集合的主体。
Enumeration<AclEntry> entries()
boolean checkPermission(Principal principal, Permission permission)
getPermissions
方法所使用的相同算法来确定该许可权限集合。
principal
- 主体,假定是一个有效的、已进行身份验证的 Principal。
permission
- 要检查的权限。
getPermissions(java.security.Principal)
String toString()