Spec-Zone.ru › OpenJDK 25

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

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

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

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

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

getOwner, setOwner

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/attribute/AclFileAttributeView.html

Spec-Zone.ru

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