Module  java.base
软件包  java.security.acl

Interface Acl

  • 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
    另请参见:
    AclEntryOwnergetPermissions(java.security.Principal)
    • 方法详细信息

      • setName

        void setName​(Principal caller,
                     String name)
              throws NotOwnerException
        已过时。
        设置此ACL的名称。
        参数
        caller - 调用此方法的主体。 它必须是此ACL的所有者。
        name - 要提供给此ACL的名称。
        异常
        NotOwnerException - 如果调用者主体不是此ACL的所有者。
        另请参见:
        getName()
      • 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)
      • toString

        String toString​()
        已过时。
        返回ACL内容的字符串表示形式。
        重写:
        toStringObject
        结果
        a string representation of the ACL contents.