Spec-Zone.ru › OpenJDK 17

Интерфейс 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 в модель NFSv4 ACL.

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

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

setAcl

void setAcl(List<AclEntry> acl) throws IOException
Обновляет (заменяет) список управления доступом.

Если файловая система поддерживает списки управления доступом (ACL), и она использует модель 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, 2021, 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.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/attribute/AclFileAttributeView.html

Spec-Zone.ru

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