-
- All Superinterfaces:
-
Owner
已过时。自1.2版本以来,该软件包已被java.security.Policy
和相关类替代。
@Deprecated(since="9") public interface Acl extends Owner
接口表示访问控制列表(ACL)。 访问控制列表是用于保护对资源的访问的数据结构。ACL可以被认为是具有多个ACL条目的数据结构。 接口类型为AclEntry的每个ACL条目包含与特定主体相关联的一组权限。 (主体代表单个用户或组的实体)。 另外,每个ACL条目被指定为正或负。 如果为正,将授予相关委托人的权限。 如果是否定的,那么权限将被拒绝。
每个ACL中的ACL条目遵循以下规则:
- 每个主体最多可以有一个正的ACL条目和一个负条目; 也就是说,对于任何主体,不允许使用多个正或负的ACL条目。 每个条目指定要授予(如果为正)或拒绝(如果为否定)的一组权限。
- 如果没有特定主体的条目,则认为主体具有空(空)权限集。
- 如果有一个肯定的条目授予一个委托人一个特定的权限,而一个拒绝主体相同的权限的否定条目,结果就好像这个权限从未被授予或被拒绝。
- 个人权限总是覆盖个人所属的组的权限。 也就是说,个人的否定权限(特定拒绝权限)会覆盖组的正面权限。 个人积极的权限会覆盖组的负权限。
java.security.acl
包提供了ACL和相关数据结构(ACL条目,组,权限等)的接口。java.security.acl.Acl
接口扩展了java.security.acl.Owner
接口。 所有者界面用于维护每个ACL的所有者列表。 只允许所有者修改ACL。 例如,只有拥有者可以调用ACL的addEntry
方法向ACL添加新的ACL条目。- 从以下版本开始:
- 1.1
- 另请参见:
-
AclEntry
,Owner
,getPermissions(java.security.Principal)
-
-
方法摘要
所有方法 接口方法 抽象方法 弃用的方法 Modifier and Type 方法 描述 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内容的字符串表示形式。-
Methods inherited from interface java.security.acl.Owner
addOwner, deleteOwner, isOwner
-
-
-
-
方法详细信息
-
setName
void setName(Principal caller, String name) throws NotOwnerException
已过时。设置此ACL的名称。- 参数
-
caller
- 调用此方法的主体。 它必须是此ACL的所有者。 -
name
- 要提供给此ACL的名称。 - 异常
-
NotOwnerException
- 如果调用者主体不是此ACL的所有者。 - 另请参见:
-
getName()
-
getName
String getName()
已过时。返回此ACL的名称。- 结果
- 该ACL的名称。
- 另请参见:
-
setName(java.security.Principal, java.lang.String)
-
addEntry
boolean addEntry(Principal caller, AclEntry entry) throws NotOwnerException
已过时。向此ACL添加ACL条目。 条目将主体(例如,个人或组)与一组权限相关联。 每个主体最多可以有一个正的ACL条目(指定授予主体的权限)和一个否定的ACL条目(指定要拒绝的权限)。 如果ACL中已经存在相同类型(负或正)的ACL条目,则返回false。- 参数
-
caller
- 调用此方法的主体。 它必须是此ACL的所有者。 -
entry
- 要添加到此ACL的ACL条目。 - 结果
- 在成功时为true,如果同一主体的相同类型(正或负)的条目已经存在于此ACL中,则为false。
- 异常
-
NotOwnerException
- 如果调用者主体不是此ACL的所有者。
-
removeEntry
boolean removeEntry(Principal caller, AclEntry entry) throws NotOwnerException
已过时。从此ACL中删除ACL条目。- 参数
-
caller
- 调用此方法的主体。 它必须是此ACL的所有者。 -
entry
- 要从此ACL删除的ACL条目。 - 结果
- 成功时为true,如果条目不属于此ACL,则为false。
- 异常
-
NotOwnerException
- 如果调用者主体不是此Acl的所有者。
-
getPermissions
Enumeration<Permission> getPermissions(Principal user)
已过时。返回指定主体的一组允许权限的枚举(表示一个实体,如个人或组)。 这组允许的权限计算如下:- 如果此访问控制列表中没有指定主体的条目,则返回空的权限集。
- 否则,确定主体的组权限集。 (主体可以属于一个或多个组,其中组是由组接口表示的一组主体。)组正面权限集合是主体所属的每个组的所有正面权限的并集。 组负权限集是主体所属的每个组的所有负权限的并集。 如果在正面的权限集和负权限集都有一个特定的权限,它将从两者中移除。
也确定了个人的正面和负面的权限集。 正面的权限集包含主体的正面ACL条目(如果有)中指定的权限。 同样,负权限集包含在主体的负ACL条目(如果有)中指定的权限。 如果此ACL中的主体不存在正(负)ACL条目,那么单个正(或否)权限集将被视为null。
然后,使用简单规则计算授予主体的权限集,即单个权限始终覆盖组权限。 也就是说,委托人的个人否定权限集(特定拒绝权限)将覆盖组正面权限集,并且主体的单个正面权限集覆盖组负权限集。
- 参数
-
user
- 其权限集将被归还的主体。 - 结果
- 权限集指定允许主体的权限。
-
entries
Enumeration<AclEntry> entries()
已过时。返回此ACL中条目的枚举。 枚举中的每个元素都是AclEntry类型。- 结果
- 枚举此ACL中的条目。
-
checkPermission
boolean checkPermission(Principal principal, Permission permission)
已过时。检查指定的委托人是否具有指定的权限。 如果是,则返回true,否则返回false。 更具体地说,该方法检查所传递的许可是否是指定主体的允许权限集的成员。 允许权限集由与getPermissions
方法使用的算法相同的算法确定。- 参数
-
principal
- 被认为是有效的认证委托人。 -
permission
- 有待检查的权限。 - 结果
- 如果主体具有指定的权限,则为true,否则为false。
- 另请参见:
-
getPermissions(java.security.Principal)
-
-