java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.security.acl
接口 Acl

所有超级接口:
Owner

public interface Acl
extends Owner

表示访问控制列表 (ACL) 的接口。访问控制列表是一种数据结构,用于保护对资源的访问。

可将一个 ACL 看作是具有多个 ACL 项的数据结构。每个接口类型为 AclEntry 的 ACL 项都包含一组与特定主体相关联的权限。(主体表示一个实体,如单独用户或一个用户组)。另外,可以将每个 ACL 项指定为 positive 或 negative 的。如果为 positive,则将权限授予相关联的主体。如果为 negative,则拒绝该权限。

每个 ACL 中的 ACL 项都遵循以下规则:

  • 每个主体最多有一个 positive ACL 项和一个 negative ACL 项;也就是对于任何主体,不允许有多个 positive 或 negative ACL 项。每项指定了一组要授予(如果为 positive)或要拒绝(如果为 negative)的权限。

  • 如果没有针对特定主体的 ACL 项,则认为该主体具有一个 null(空)的权限集。

  • 如果有向某个主体授予特定权限的 positive 项,并且有拒绝向该主体授予同一权限的 negative 项,则结果就如同既不授予也不拒绝该权限一样。

  • 个体权限总是覆盖该个体所属组(组群)的权限。也就是说,个体 negative 权限(特定权限的拒绝)覆盖组的 positive 权限。而个体 positive 权限则覆盖组的 negative 权限。

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 项。

另请参见:
AclEntry, Owner, getPermissions(java.security.Principal)

方法摘要
 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
 

方法详细信息

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 项将主体(例如个体或组)与一组权限关联起来。每个主体最多有一个 positive ACL 项(指定要授予该主体的权限)和一个 negative ACL 项(指定要拒绝的权限)。如果该 ACL 中已经有一个相同类型( negative 或 positive )的 ACL 项,则返回 false。

参数:
caller - 调用此方法的主体。必须是此 ACL 的所有者。
entry - 要添加到此 ACL 中的 ACL 项。
返回:
如果添加成功,则返回 true;如果此 ACL 中已经有一个针对同一主体的相同类型(negative 或 positive)的 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)
返回一个指定主体(表示一个实体,如个体或组)的许可权限集合的枚举。按以下方式计算该许可权限集合:

  • 如果此访问控制列表中没有针对指定主体的项,则返回空的权限集合。

  • 否则确定该主体的组权限集合。(一个主体可以属于一个或多个组,其中组是一个主体组,由 Group 接口表示。)该组的 positive 权限集合是该主体所属每个组的所有 positive 权限的并集。该组的 negative 权限集合是该主体所属每个组的所有 negative 权限的并集。如果某个指定的权限同时出现在 positive 权限集合和 negative 权限集合中,则将它从这两个集合中移除。

    还要确定个体 positive 和 negative 权限集合。positive 权限集合包含该主体的 positive ACL 项(如果有的话)中所指定的权限。类似地,negative 权限集合包含该主体的 negative ACL 项(如果有的话)中所指定的权限。如果此 ACL 中没有针对该主体的 positive(negative)ACL 项,则认为个体 positive(或 negative )权限集合为 null。

    然后使用个体权限总是覆盖组权限这一简单规则来计算授予该主体的权限集合。也就是说,该主体的个体 negative 权限集合(特定权限的拒绝)覆盖组的 positive 权限集合,该主体的个体 positive 权限集合则覆盖组的 negative 权限集合。

参数:
user - 要返回其权限集合的主体。
返回:
指定该主体的许可权限的权限集合。

entries

Enumeration<AclEntry> entries()
返回此 ACL 中各项的枚举。该枚举中的每个元素的类型都是 AclEntry。

返回:
此 ACL 中各项的枚举。

checkPermission

boolean checkPermission(Principal principal,
                        Permission permission)
检查指定的主体是否具有指定的权限。如果确实有,则返回 true;否则返回 false。 更明确地说,此方法检查所传入的权限是否为指定主体的许可权限集合的一个成员。由 getPermissions 方法所使用的相同算法来确定该许可权限集合。

参数:
principal - 主体,假定是一个有效的、已进行身份验证的 Principal。
permission - 要检查的权限。
返回:
如果主体具有指定的权限,则返回 true;否则返回 false。
另请参见:
getPermissions(java.security.Principal)

toString

String toString()
返回 ACL 内容的字符串表示形式。

覆盖:
Object 中的 toString
返回:
ACL 内容的字符串表示形式。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策