Spec-Zone.ru › OpenJDK 27

Интерфейс 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. Для проверки поддержки ACL файловой системой можно использовать метод supportsFileAttributeView.

Совместимость

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, отличную от модели ACL, определённой NFSv4, при задании начальной ACL во время создания файла ACL должна быть преобразована в модель, поддерживаемую файловой системой. Методы создания файла должны отклонять (выбрасывая IOException) любую попытку создать файл, который после преобразования окажется менее защищённым.

Начиная с:
1.7
Внешние спецификации
  • RFC 3530: протокол сетевой файловой системы (NFS) версии 4

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

Модификатор и тип Метод Описание
List<AclEntry> getAcl()
Считывает список контроля доступа.
String name()
Возвращает имя представления атрибутов.
void setAcl(List<AclEntry> acl)
Обновляет (заменяет) список контроля доступа.

Методы, объявленные в интерфейсе FileOwnerAttributeView

getOwner, setOwner
Модификатор и тип Метод Описание
UserPrincipal getOwner()
Считывает владельца файла.
void setOwner(UserPrincipal owner)
Обновляет владельца файла.

Подробное описание методов

name

String name()
Возвращает имя представления атрибутов. Представления атрибутов этого типа имеют имя "acl".
Определено в:
name в интерфейсе AttributeView
Определено в:
name в интерфейсе FileOwnerAttributeView
Возвращает:
имя представления атрибутов

getAcl

List<AclEntry> getAcl() throws IOException
Считывает список контроля доступа.

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

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

Возвращает:
упорядоченный список 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 недействительна

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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