Spec-Zone.ru › OpenJDK 21

Интерфейс 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, эти специальные идентификаторы пользователей могут быть включены в 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 при создании файла должна переводить 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 - если произошла ошибка ввода-вывода
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, 2023, 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/21/docs/api/java.base/java/nio/file/attribute/AclFileAttributeView.html

Spec-Zone.ru

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