Spec-Zone.ru › OpenJDK 8

Интерфейс AclFileAttributeView

Все суперинтерфейсы:
AttributeView, FileAttributeView, FileOwnerAttributeView

public interface AclFileAttributeView
extends FileOwnerAttributeView

Вид атрибутов файла, поддерживающий чтение или обновление списков управления доступом (ACL) файла или атрибутов владельца файла.

ACL используются для указания прав доступа к объектам файловой системы. ACL представляет собой упорядоченный список access-control-entries, каждый из которых определяет UserPrincipal и уровень доступа для этого пользователя. Этот вид атрибутов файла определяет методы getAcl и setAcl для чтения и записи ACL на основе модели ACL, описанной в RFC 3530: Протокол файловой системы NFS версии 4. Этот вид атрибутов файла предназначен для реализаций файловой системы, которые поддерживают модель ACL NFSv4 или имеют чётко определённое отображение между моделью ACL NFSv4 и моделью ACL, используемой файловой системой. Подробности такого отображения зависят от реализации и поэтому не определены.

Этот класс также расширяет FileOwnerAttributeView для определения методов получения и установки владельца файла.

Когда файловая система предоставляет доступ к набору file-systems, которые не однородны, тогда только некоторые файловые системы могут поддерживать ACL. Метод supportsFileAttributeView можно использовать для проверки поддержки ACL файловой системой.

Взаимодействие

RFC 3530 допускает использование специальных идентификаторов пользователей на платформах, которые поддерживают разрешения доступа, определённые POSIX. Специальные идентификаторы пользователей — "OWNER@", "GROUP@" и "EVERYONE@". Когда поддерживаются как AclFileAttributeView, так и PosixFileAttributeView, эти специальные идентификаторы пользователей могут быть включены в ACL entries, которые читаются или записываются. Файловая система может использовать UserPrincipalLookupService для получения UserPrincipal, представляющего эти специальные идентификаторы, вызвав метод lookupPrincipalByName.

Пример использования: Предположим, что мы хотим добавить запись в существующий ACL для предоставления доступа пользователю "joe":

// lookup "joe"
     UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService()
         .lookupPrincipalByName("joe");

     // get view
     AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class);

     // create ACE to give "joe" read access
     AclEntry entry = AclEntry.newBuilder()
         .setType(AclEntryType.ALLOW)
         .setPrincipal(joe)
         .setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES)
         .build();

     // read ACL, insert ACE, re-write ACL
     List<AclEntry> acl = view.getAcl();
     acl.add(0, entry);   // insert before any DENY entries
     view.setAcl(acl);

Динамический доступ

В случаях, когда требуется динамический доступ к атрибутам файлов, поддерживаемые этим видом атрибутов следующие:

Название Тип
"acl" List<AclEntry>
"owner" UserPrincipal

Метод getAttribute может использоваться для чтения атрибутов ACL или владельца, как будто вызывая методы getAcl или getOwner.

Метод setAttribute может использоваться для обновления атрибутов ACL или владельца, как будто вызывая методы setAcl или setOwner.

Установка ACL при создании файла

Реализации, поддерживающие этот вид атрибутов, также могут поддерживать установку начального ACL при создании файла или каталога. Начальный ACL может быть передан таким методам, как createFile или createDirectory в виде FileAttribute с name "acl:acl" и value, представляющим список объектов AclEntry.

В случае, если реализация поддерживает модель ACL, отличную от определённой моделью NFSv4, то установка начального ACL при создании файла должна переводить ACL в модель, поддерживаемую файловой системой. Методы создания файла должны отклонять (выбрасывая IOException) любые попытки создать файл, который станет менее защищенным в результате перевода.

С:
1.7

Методы

Модификатор и тип Метод и описание
List<AclEntry> getAcl()

Читает список управления доступом.

String name()

Возвращает имя вида атрибута.

void setAcl(List<AclEntry> acl)

Обновляет (заменяет) список управления доступом.

Методы, унаследованные от интерфейса java.nio.file.attribute.FileOwnerAttributeView

getOwner, setOwner

Методы

name

String name()

Возвращает имя вида атрибута. Виды атрибутов этого типа имеют имя "acl".

Указано:
name в интерфейсе AttributeView
Указано:
name в интерфейсе FileOwnerAttributeView
Возвращает:
имя вида атрибута

getAcl

List<AclEntry> getAcl()
               throws IOException

Читает список управления доступом.

Если файловая система использует модель ACL, отличную от определённой моделью NFSv4, то этот метод возвращает ACL, который является переводом ACL в модель ACL NFSv4.

Возвращаемый список можно изменять, чтобы сделать возможными изменения в существующем ACL. Метод setAcl используется для обновления атрибута ACL файла.

Возвращает:
упорядоченный список entries, представляющий ACL
Бросает:
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае с поставщиком по умолчанию, если установлен менеджер безопасности и он отклоняет RuntimePermission("accessUserInformation") или его метод checkRead отклоняет чтение файла.

setAcl

void setAcl(List<AclEntry> acl)
     throws IOException

Обновляет (заменяет) список управления доступом.

Если файловая система поддерживает списки управления доступом и использует модель ACL, отличную от определённой моделью NFSv4, то этот метод должен перевести ACL в модель, поддерживаемую файловой системой. Этот метод должен отклонить (выбросив IOException) любую попытку записать ACL, который, кажется, делает файл более защищённым, чем было бы в случае обновления ACL. Если реализация не поддерживает отображение записей AclEntryType.AUDIT или AclEntryType.ALARM, то этот метод игнорирует эти записи при записи ACL.

Если запись ACL содержит user-principal, не связанную с тем же поставщиком, что и этот вид атрибутов, то выбрасывается ProviderMismatchException. Дополнительная валидация, если есть, зависит от реализации.

Если файловая система поддерживает другие связанные с безопасностью атрибуты файлов (например, атрибуты разрешений файла access-permissions), обновление списка управления доступом также может привести к обновлению этих атрибутов, связанных с безопасностью.

Параметры:
acl - новый список управления доступом
Бросает:
IOException - если произошла ошибка ввода-вывода или ACL недействителен
SecurityException - В случае с поставщиком по умолчанию, если установлен менеджер безопасности и он отклоняет RuntimePermission("accessUserInformation") или его метод checkWrite отклоняет запись файла.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API