Интерфейс Acl
- Все суперинтерфейсы:
- Owner
public interface Acl extends Owner
Интерфейс, представляющий список управления доступом (ACL). Список управления доступом — это структура данных, используемая для защиты доступа к ресурсам.
ACL можно рассматривать как структуру данных с несколькими записями ACL. Каждая запись ACL, имеющая тип интерфейса AclEntry, содержит набор разрешений, связанных с определённым принципалом. (Принципал представляет собой сущность, такую как отдельный пользователь или группа). Кроме того, каждая запись ACL указывается как положительная или отрицательная. Если положительная, разрешения предоставляются связанному принципалу. Если отрицательная, разрешения запрещаются.
Записи ACL в каждом ACL соблюдают следующие правила:
- Каждый принципал может иметь не более одной положительной записи 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. Например, только владелец может вызвать метод addEntry ACL для добавления новой записи 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 (указывающей разрешения, которые должны быть предоставлены принципалу) и одной отрицательной записи ACL (указывающей разрешения, которые должны быть запрещены). Если в ACL уже есть запись того же типа (отрицательная или положительная) для того же принципала, возвращается false.
- Параметры:
-
caller- принципал, вызывающий этот метод. Он должен быть владельцем этого ACL. -
entry- запись ACL, которая должна быть добавлена в этот ACL. - Возвращает:
- true при успехе, false, если запись того же типа (положительная или отрицательная) для того же принципала уже присутствует в этом ACL.
- Исключения:
-
NotOwnerException- если вызывающий принципал не является владельцем этого ACL.
removeEntry
boolean removeEntry(Principal caller,
AclEntry entry)
throws NotOwnerException
Удаляет запись ACL из этого ACL.
- Параметры:
-
caller- принципал, вызывающий этот метод. Он должен быть владельцем этого ACL. -
entry- запись ACL, которая должна быть удалена из этого ACL. - Возвращает:
- true при успехе, false, если запись не входит в состав этого ACL.
- Исключения:
-
NotOwnerException- если вызывающий принципал не является владельцем данного Acl.
getPermissions
Enumeration<Permission> getPermissions(Principal user)
- Если в этом списке управления доступом нет записи для указанного принципала, возвращается пустой набор разрешений.
- В противном случае определяются наборы разрешений группы принципала. (Принципал может принадлежать одной или нескольким группам, где группа — это группа принципалов, представленная интерфейсом Group.) Положительный набор разрешений группы — это объединение всех положительных разрешений каждой группы, к которой принадлежит принципал. Отрицательный набор разрешений группы — это объединение всех отрицательных разрешений каждой группы, к которой принадлежит принципал. Если существует конкретное разрешение, которое встречается как в положительном, так и в отрицательном наборе разрешений, оно удаляется из обоих.
Также определяются индивидуальные положительные и отрицательные наборы разрешений. Положительный набор разрешений содержит разрешения, указанные в положительной записи ACL (если таковая имеется) для принципала. Аналогично, отрицательный набор разрешений содержит разрешения, указанные в отрицательной записи ACL (если таковая имеется) для принципала. Индивидуальный положительный (или отрицательный) набор разрешений считается пустым, если для принципала в этом ACL нет записи положительного (отрицательного) ACL.
Набор разрешений, предоставленных принципалу, вычисляется с помощью простого правила, что индивидуальные разрешения всегда переопределяют групповые разрешения. То есть, индивидуальный отрицательный набор разрешений принципала (конкретный отказ от разрешений) переопределяет положительный набор разрешений группы, а индивидуальный положительный набор разрешений принципала переопределяет отрицательный набор разрешений группы.
- Параметры:
-
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.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.