Интерфейс 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, 2020, 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/11/docs/api/java.base/java/nio/file/attribute/AclFileAttributeView.html