Spec-Zone.ru › OpenJDK 8

Класс FilePermission

  • java.lang.Object
    • java.security.Permission
      • java.io.FilePermission
Все реализованные интерфейсы:
Serializable, Guard

public final class FilePermission
extends Permission
implements Serializable

Этот класс представляет доступ к файлу или каталогу. FilePermission состоит из пути к файлу или каталогу и набора действий, допустимых для этого пути.

Путь — это путь к файлу или каталогу, которому предоставлены указанные действия. Путь, заканчивающийся на «/*/» (где «/» — разделитель пути, File.separatorChar) указывает на все файлы и каталоги, содержащиеся в этом каталоге. Путь, заканчивающийся на «/-», указывает (рекурсивно) все файлы и подкаталоги, содержащиеся в этом каталоге. Такой путь называется путём с подстановочными знаками. В противном случае это простой путь.

Путь, состоящий из специального обозначения «<<ВСЕ ФАЙЛЫ>>», соответствует любому файлу.

Примечание: Путь, состоящий из одного символа «*», указывает на все файлы в текущем каталоге, а путь, состоящий из одного символа «-», указывает на все файлы в текущем каталоге и (рекурсивно) на все файлы и подкаталоги, содержащиеся в текущем каталоге.

Действия, которые должны быть предоставлены, передаются в конструктор в строке, содержащей список одного или нескольких ключевых слов, разделенных запятыми. Возможные ключевые слова — «read», «write», «execute», «delete» и «readlink». Их значение определяется следующим образом:

read
право на чтение
write
право на запись
execute
право на выполнение. Разрешает вызов Runtime.exec. Соответствует SecurityManager.checkExec.
delete
право на удаление. Разрешает вызов File.delete. Соответствует SecurityManager.checkDelete.
readlink
право на чтение ссылки. Разрешает чтение целевого объекта символической ссылки, вызывая метод readSymbolicLink .

Строка действий преобразуется в нижний регистр перед обработкой.

Будьте осторожны при предоставлении прав FilePermission. Подумайте о последствиях предоставления прав на чтение и, особенно, на запись для различных файлов и каталогов. Права «<<ВСЕ ФАЙЛЫ>>» с действием «запись» особенно опасны. Это даёт право на запись во всю файловую систему. Это, в частности, позволяет заменить системные двоичные файлы, включая среду выполнения JVM.

Обратите внимание: код всегда может читать файл из того же каталога, где он находится (или из подкаталога этого каталога); ему не нужно явное разрешение для этого.

С тех пор:
1.2
См. также:
Permission, Permissions, PermissionCollection

Конструкторы

Конструктор и описание
FilePermission(String path, String actions)

Создаёт новый объект FilePermission с указанными действиями.

Методы

Модификатор и тип Метод и описание
boolean equals(Object obj)

Проверяет равенство двух объектов FilePermission.

String getActions()

Возвращает «каноническое строковое представление» действий.

int hashCode()

Возвращает хэш-код для этого объекта.

boolean implies(Permission p)

Проверяет, «подразумевает» ли этот объект FilePermission указанное разрешение.

PermissionCollection newPermissionCollection()

Возвращает новый объект PermissionCollection для хранения объектов FilePermission.

Методы, унаследованные от класса java.security.Permission

checkGuard, getName, toString

Методы, унаследованные от класса java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

FilePermission

public FilePermission(String path,
                      String actions)

Создаёт новый объект FilePermission с указанными действиями. path — это путь к файлу или каталогу, а actions содержит список желаемых действий, разрешённых для файла или каталога, разделённый запятыми. Возможные действия — «read», «write», «execute», «delete» и «readlink».

Путь, заканчивающийся на «/*/» (где «/» — разделитель пути, File.separatorChar) указывает на все файлы и каталоги, содержащиеся в этом каталоге. Путь, заканчивающийся на «/-», указывает (рекурсивно) все файлы и подкаталоги, содержащиеся в этом каталоге. Специальный путь «<<ВСЕ ФАЙЛЫ>>» соответствует любому файлу.

Путь, состоящий из одного символа «*», указывает на все файлы в текущем каталоге, а путь, состоящий из одного символа «-», указывает на все файлы в текущем каталоге и (рекурсивно) на все файлы и подкаталоги, содержащиеся в текущем каталоге.

Путь, содержащий пустую строку, представляет пустой путь.

Параметры:
path — путь к файлу/каталогу.
actions — строка действий.
Исключения:
IllegalArgumentException — Если actions пуста, содержит пустую строку или содержит действие, отличное от указанных возможных действий.

Методы

implies

public boolean implies(Permission p)

Проверяет, «подразумевает» ли этот объект FilePermission указанное разрешение.

Точнее, этот метод возвращает true, если:

  • p является экземпляром FilePermission,
  • действия p являются надмножеством действий этого объекта, и
  • путь p подразумевается путём этого объекта. Например, «/tmp/*» подразумевает «/tmp/foo», поскольку «/tmp/*» охватывает все файлы в каталоге «/tmp», включая файл с именем «foo».

Точно, простой путь подразумевает другой простой путь, если и только если они равны. Простой путь никогда не подразумевает путь с подстановочными знаками. Путь с подстановочными знаками подразумевает другой путь с подстановочными знаками, если и только если все простые пути, подразумеваемые последним, подразумеваются первым. Путь с подстановочными знаками подразумевает простой путь, если и только если

  • Если флаг подстановочных знаков — «*», путь простого пути должен находиться непосредственно внутри пути пути с подстановочными знаками.
  • Если флаг подстановочных знаков — «-», путь простого пути должен находиться рекурсивно внутри пути пути с подстановочными знаками.

«<<ВСЕ ФАЙЛЫ>>» подразумевает каждый другой путь. Ни один путь, кроме самого «<<ВСЕ ФАЙЛЫ>>», не подразумевает «<<ВСЕ ФАЙЛЫ>>».

Указано в:
implies в классе Permission
Параметры:
p — разрешение для проверки.
Возвращает:
true если указанное разрешение не null и подразумевается этим объектом, false в противном случае.

equals

public boolean equals(Object obj)

Проверяет равенство двух объектов FilePermission. Проверяет, что obj является FilePermission и имеет тот же путь и те же действия, что и этот объект.

Указано в:
equals в классе Permission
Примечание для реализации:
Точнее, два пути одинаковы тогда и только тогда, когда у них одинаковый флаг подстановочных знаков и их npath равны. Или оба они «<<ВСЕ ФАЙЛЫ>>».
Параметры:
obj — объект, с которым мы проверяем равенство.
Возвращает:
true если obj является FilePermission и имеет тот же путь и те же действия, что и этот объект FilePermission, false в противном случае.
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хэш-код для этого объекта.

Указано в:
hashCode в классе Permission
Возвращает:
значение хэш-кода для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

getActions

public String getActions()

Возвращает «каноническое строковое представление» действий. То есть этот метод всегда возвращает присутствующие действия в следующем порядке: read, write, execute, delete, readlink. Например, если этот объект FilePermission разрешает действия write и read, вызов getActions вернёт строку «read,write».

Указано в:
getActions в классе Permission
Возвращает:
каноническое строковое представление действий.

newPermissionCollection

public PermissionCollection newPermissionCollection()

Возвращает новый объект PermissionCollection для хранения объектов FilePermission.

Объекты FilePermission должны храниться таким образом, чтобы их можно было вставлять в коллекцию в любом порядке, но это также позволяет реализовать метод PermissionCollection implies эффективным (и согласованным) способом.

Например, если у вас есть два FilePermission:

  1. "/tmp/-", "read"
  2. "/tmp/scratch/foo", "write"

и вы вызываете метод implies с FilePermission:

"/tmp/scratch/foo", "read,write",
тогда функция implies должна учитывать как разрешения «/tmp/-», так и «/tmp/scratch/foo», поэтому эффективным разрешением будет «read,write», и implies возвращает true. Семантика «implies» для FilePermission должным образом обрабатывается объектом PermissionCollection, возвращаемым этим методом newPermissionCollection.
Переопределяет:
newPermissionCollection в классе Permission
Возвращает:
новый объект PermissionCollection, подходящий для хранения FilePermission.

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

Spec-Zone.ru

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