Spec-Zone.ru › OpenJDK 24

Интерфейс 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 или имеющих четко определенное соответствие между моделью NFSv4 ACL и моделью ACL, используемой файловой системой. Подробности такого соответствия зависят от реализации и поэтому не указаны.

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

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

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

RFC 3530 допускает использование специальных идентификаторов пользователей на платформах, поддерживающих права доступа, определенные POSIX. Специальные идентификаторы пользователей — "OWNER@", "GROUP@" и "EVERYONE@". Когда поддерживаются как AclFileAttributeView, так и PosixFileAttributeView, эти специальные идентификаторы пользователей могут быть включены в entries ACL при чтении или записи. Для получения UserPrincipal, представляющего эти специальные идентификаторы, можно использовать UserPrincipalLookupService файловой системы, вызвав метод 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
Внешние спецификации
  • RFC 3530: Протокол сети NFS версии 4

Краткое описание методов

Модификатор и тип Метод Описание
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 - если произошла ошибка ввода-вывода

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 некорректен

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/attribute/AclFileAttributeView.html

Spec-Zone.ru

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