Класс 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:
-
"/tmp/-", "read" -
"/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.