Класс SecurityManager
- java.lang.Object
-
- java.lang.SecurityManager
- Прямые известные подклассы:
- RMISecurityManager
public class SecurityManager extends Object
Менеджер безопасности — это класс, который позволяет приложениям реализовывать политику безопасности. Он позволяет приложению определить, прежде чем выполнять потенциально небезопасную или чувствительную операцию, что это за операция и выполняется ли она в контексте безопасности, который позволяет выполнить эту операцию. Приложение может разрешить или запретить выполнение операции.
Класс SecurityManager содержит множество методов, имена которых начинаются со слова check. Эти методы вызываются различными методами в библиотеках Java перед выполнением этих методов определенных потенциально чувствительных операций. Вызов такого метода check обычно выглядит следующим образом:
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
} Таким образом, менеджеру безопасности предоставляется возможность предотвратить завершение операции, выбросив исключение. Процедура менеджера безопасности просто возвращает значение, если операция разрешена, но выбросит исключение SecurityException, если операция не разрешена. Единственное исключение из этого соглашения — checkTopLevelWindow, который возвращает значение boolean.
Текущий менеджер безопасности устанавливается методом setSecurityManager в классе System. Текущий менеджер безопасности извлекается методом getSecurityManager.
Специальный метод checkPermission(java.security.Permission) определяет, следует ли разрешить или отклонить запрос доступа, указанный заданным разрешением. Реализация по умолчанию вызывает
AccessController.checkPermission(perm);
Если запрос доступа разрешен, checkPermission возвращает значение без каких-либо действий. Если доступ запрещён, выбрасывается исключение SecurityException.
Начиная с Java 2 SDK v1.2, реализация по умолчанию каждого из других методов check в SecurityManager заключается в вызове метода SecurityManager checkPermission для определения, обладает ли вызывающая нить разрешением на выполнение запрошенной операции.
Обратите внимание, что метод checkPermission с единственным аргументом разрешения всегда выполняет проверки безопасности в контексте текущей выполняющейся нити. Иногда проверку безопасности, которая должна быть выполнена в данном контексте, необходимо выполнить в другом контексте (например, в потоке-обработчике). Для этой ситуации предоставляются метод getSecurityContext и метод checkPermission, включающий аргумент контекста. Метод getSecurityContext возвращает "снимок" текущего контекста вызова. (Реализация по умолчанию возвращает объект AccessControlContext.) Пример вызова:
Object context = null; SecurityManager sm = System.getSecurityManager(); if (sm != null) context = sm.getSecurityContext();
Метод checkPermission, принимающий объект контекста в дополнение к разрешению, принимает решения о доступе на основе этого контекста, а не на основе контекста текущей нити выполнения. Таким образом, код в другом контексте может вызвать этот метод, передавая разрешение и ранее сохраненный объект контекста. Пример вызова, используя менеджер безопасности sm , полученный, как в предыдущем примере:
if (sm != null) sm.checkPermission(permission, context);
Разрешения делятся на эти категории: Файл, Сокет, Сеть, Безопасность, Выполнение, Свойство, AWT, Рефлексия и Сериализация. Классы, управляющие этими различными категориями разрешений, — это java.io.FilePermission, java.net.SocketPermission, java.net.NetPermission, java.security.SecurityPermission, java.lang.RuntimePermission, java.util.PropertyPermission, java.awt.AWTPermission, java.lang.reflect.ReflectPermission, и java.io.SerializablePermission.
Все, кроме первых двух (FilePermission и SocketPermission), являются подклассами java.security.BasicPermission, который сам по себе является абстрактным подклассом верхнего уровня класса для разрешений, а именно java.security.Permission. BasicPermission определяет функциональность, необходимую для всех разрешений, которые содержат имя, соответствующее иерархической схеме именования свойств (например, "exitVM", "setFactory", "queuePrintJob" и т. д.). Звездочка может появляться в конце имени после точки или сама по себе, чтобы обозначить сопоставление по шаблону. Например: "a.*" или "*" допустимо, "*a" или "a*b" — недопустимо.
FilePermission и SocketPermission являются подклассами класса верхнего уровня для разрешений (java.security.Permission). Такие классы, как эти, которые имеют более сложную синтаксическую структуру имени, чем та, которая используется BasicPermission, наследуются непосредственно от Permission, а не от BasicPermission. Например, для объекта java.io.FilePermission, именем разрешения является имя пути файла (или каталога).
В некоторых классах разрешений есть список "действий", который указывает разрешённые действия для объекта. Например, для объекта java.io.FilePermission список действий (например, "чтение, запись") указывает, какие действия разрешены для указанного файла (или для файлов в указанном каталоге).
Другие классы разрешений предназначены для "именованных" разрешений — таких, которые содержат имя, но не список действий; у вас есть именованное разрешение или нет.
Примечание: Существует также разрешение java.security.AllPermission , которое подразумевает все разрешения. Оно существует для упрощения работы системных администраторов, которым может потребоваться выполнение нескольких задач, требующих всех (или многих) разрешений.
См. Разрешения в JDK для получения информации о разрешениях. Этот документ включает, например, таблицу, в которой перечислены различные методы менеджера безопасности check и разрешение(я), требуемое реализацией по умолчанию каждого такого метода. Он также содержит таблицу всех методов версии 1.2, требующих разрешений, и для каждого такого метода указывает, какое разрешение оно требует.
Дополнительную информацию о SecurityManager изменениях, внесённых в JDK, и рекомендации по портированию менеджеров безопасности стиля 1.1, см. в документации по безопасности.
- С момента:
- JDK1.0
- См. также:
-
ClassLoader,SecurityException,checkTopLevelWindow,getSecurityManager,setSecurityManager,AccessController,AccessControlContext,AccessControlException,Permission,BasicPermission,FilePermission,SocketPermission,PropertyPermission,RuntimePermission,AWTPermission,Policy,SecurityPermission,ProtectionDomain
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected boolean |
inCheck Устаревшее. Этот тип проверки безопасности не рекомендуется. Вместо этого рекомендуется использовать вызов |
Конструкторы
| Конструктор и описание |
|---|
SecurityManager() Создает новый |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
checkAccept(String host,
int port) Выбрасывает |
void |
checkAccess(Thread t) Выбрасывает |
void |
checkAccess(ThreadGroup g) Выбрасывает |
void |
checkAwtEventQueueAccess() Устарело. Зависимость от |
void |
checkConnect(String host,
int port) Выбрасывает |
void |
checkConnect(String host,
int port,
Object context) Выбрасывает |
void |
checkCreateClassLoader() Выбрасывает |
void |
checkDelete(String file) Выбрасывает |
void |
checkExec(String cmd) Выбрасывает |
void |
checkExit(int status) Выбрасывает |
void |
checkLink(String lib) Выбрасывает |
void |
checkListen(int port) Выбрасывает |
void |
checkMemberAccess(Class<?> clazz,
int which) Устарело. Этот метод полагается на то, что вызывающий код находится на глубине стека 4, что небезопасно и не может быть гарантировано во время выполнения. Пользователи этого метода должны вместо этого вызвать |
void |
checkMulticast(InetAddress maddr) Выбрасывает |
void |
checkMulticast(InetAddress maddr,
byte ttl) Устарело. Используйте #checkPermission(java.security.Permission) вместо этого. |
void |
checkPackageAccess(String pkg) Выбрасывает |
void |
checkPackageDefinition(String pkg) Выбрасывает |
void |
checkPermission(Permission perm) Выбрасывает |
void |
checkPermission(Permission perm,
Object context) Выбрасывает |
void |
checkPrintJobAccess() Выбрасывает |
void |
checkPropertiesAccess() Выбрасывает |
void |
checkPropertyAccess(String key) Выбрасывает |
void |
checkRead(FileDescriptor fd) Выбрасывает |
void |
checkRead(String file) Выбрасывает |
void |
checkRead(String file,
Object context) Выбрасывает |
void |
checkSecurityAccess(String target) Определяет, следует ли разрешить или запретить разрешение с указанным именем целевого разрешения. |
void |
checkSetFactory() Выбрасывает |
void |
checkSystemClipboardAccess() Устарело. Зависимость от |
boolean |
checkTopLevelWindow(Object window) Устарело. Зависимость от |
void |
checkWrite(FileDescriptor fd) Выбрасывает |
void |
checkWrite(String file) Выбрасывает |
protected int |
classDepth(String name) Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
protected int |
classLoaderDepth() Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
protected ClassLoader |
currentClassLoader() Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
protected Class<?> |
currentLoadedClass() Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
protected Class[] |
getClassContext() Возвращает текущий стек выполнения в виде массива классов. |
boolean |
getInCheck() Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
Object |
getSecurityContext() Создаёт объект, который инкапсулирует текущую среду выполнения. |
ThreadGroup |
getThreadGroup() Возвращает группу потоков, в которую нужно создать любой новый поток во время вызова. |
protected boolean |
inClass(String name) Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
protected boolean |
inClassLoader() Устарело. Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
inCheck
@Deprecated protected boolean inCheck
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Это поле true , если в процессе проверка безопасности; false в противном случае.
Конструкторы
SecurityManager
public SecurityManager()
Создает новый SecurityManager.
Если менеджер безопасности уже установлен, этот метод сначала вызывает метод checkPermission менеджера безопасности с разрешением RuntimePermission("createSecurityManager") для проверки, имеет ли вызывающая нить разрешение на создание нового менеджера безопасности. Это может привести к исключению SecurityException.
- Исключение:
-
SecurityException- если менеджер безопасности уже существует и его методcheckPermissionне разрешает создание нового менеджера безопасности. - См. также:
-
System.getSecurityManager(),checkPermission,RuntimePermission
Методы
getInCheck
@Deprecated public boolean getInCheck()
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Проверяет, происходит ли в данный момент проверка безопасности.
- Возвращает:
- значение поля
inCheck. Это поле должно содержатьtrue, если проверка безопасности выполняется, иfalseв противном случае. - См. также:
inCheck
getClassContext
protected Class[] getClassContext()
Возвращает текущий стек вызовов в виде массива классов.
Длина массива равна количеству методов в стеке вызовов. Элемент с индексом 0 — это класс текущего выполняемого метода, элемент с индексом 1 — это класс вызывающего метода, и так далее.
- Возвращает:
- стек вызовов.
currentClassLoader
@Deprecated protected ClassLoader currentClassLoader()
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Возвращает загрузчик классов наиболее недавно выполняемого метода из класса, определенного с помощью несистемного загрузчика классов. Несистемный загрузчик классов определяется как загрузчик классов, не равный системному загрузчику классов (как возвращается ClassLoader.getSystemClassLoader()) или одному из его предков.
Этот метод вернет null в следующих трех случаях:
- Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
- Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см.
AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков. - Вызов
checkPermissionсjava.security.AllPermissionне приводит к SecurityException.
- Возвращает:
- загрузчик классов последнего на стеке метода из класса, определенного с помощью несистемного загрузчика классов.
- См. также:
-
getSystemClassLoader,checkPermission
currentLoadedClass
@Deprecated protected Class<?> currentLoadedClass()
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Возвращает класс наиболее недавно выполняемого метода из класса, определенного с помощью несистемного загрузчика классов. Несистемный загрузчик классов определяется как загрузчик классов, не равный системному загрузчику классов (как возвращается ClassLoader.getSystemClassLoader()) или одному из его предков.
Этот метод вернет null в следующих трех случаях:
- Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
- Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см.
AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков. - Вызов
checkPermissionсjava.security.AllPermissionне приводит к SecurityException.
- Возвращает:
- класс последнего на стеке метода из класса, определенного с помощью несистемного загрузчика классов.
- См. также:
-
getSystemClassLoader,checkPermission
classDepth
@Deprecated protected int classDepth(String name)
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Возвращает глубину стека для указанного класса.
- Параметры:
-
name- полное имя класса, который нужно найти. - Возвращает:
- глубину в стеке фреймов для первого вхождения метода из класса с указанным именем;
-1если такой фрейм не найден.
classLoaderDepth
@Deprecated protected int classLoaderDepth()
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Возвращает глубину стека для последнего выполняемого метода из класса, определенного с помощью несистемного загрузчика классов. Несистемный загрузчик классов определяется как загрузчик классов, не равный системному загрузчику классов (как возвращается ClassLoader.getSystemClassLoader()) или одному из его предков.
Этот метод вернет -1 в следующих трех случаях:
- Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
- Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см.
AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков. - Вызов
checkPermissionсjava.security.AllPermissionне приводит к SecurityException.
- Возвращает:
- глубину в стеке фреймов для последнего вхождения метода из класса, определенного с помощью несистемного загрузчика классов.
- См. также:
-
getSystemClassLoader,checkPermission
inClass
@Deprecated protected boolean inClass(String name)
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
Проверяет, находится ли метод из класса с указанным именем в стеке вызовов.
- Параметры:
-
name- полное имя класса. - Возвращает:
-
trueесли метод из класса с указанным именем находится в стеке вызовов;falseв противном случае.
inClassLoader
@Deprecated protected boolean inClassLoader()
Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.
В основном, проверяет, находится ли метод из класса, определенного с помощью загрузчика классов, в стеке вызовов.
- Возвращает:
-
trueесли вызовcurrentClassLoaderимеет ненулевое значение возврата. - См. также:
currentClassLoader
getSecurityContext
public Object getSecurityContext()
Создает объект, который инкапсулирует текущую среду выполнения. Результат этого метода используется, например, методом checkConnect с тремя аргументами и методом checkRead с двумя аргументами. Эти методы необходимы, потому что доверенный метод может быть вызван для чтения файла или открытия сокета от имени другого метода. Доверенный метод должен определить, разрешено ли другому (возможно, недоверенному) методу выполнить операцию самостоятельно.
По умолчанию этот метод возвращает объект AccessControlContext.
- Возвращает:
- зависимый от реализации объект, который инкапсулирует достаточную информацию о текущей среде выполнения для выполнения некоторых проверок безопасности позже.
- См. также:
-
checkConnect,checkRead,AccessControlContext
checkPermission
public void checkPermission(Permission perm)
Выбрасывает SecurityException если запрошенный доступ, указанный заданным разрешением, не разрешен в соответствии с текущей политикой безопасности.
Этот метод вызывает AccessController.checkPermission с заданным разрешением.
- Параметры:
-
perm- запрошенное разрешение. - Исключение:
-
SecurityException- если доступ не разрешен в соответствии с текущей политикой безопасности. -
NullPointerException- если аргумент permissionnull. - С:
- 1.2
checkPermission
public void checkPermission(Permission perm,
Object context) Выбрасывает SecurityException если указанный контекст безопасности получает отказ в доступе к ресурсу, указанному в данном разрешении. Контекст должен быть контекстом безопасности, возвращенным предыдущим вызовом getSecurityContext, и решение об управлении доступом основано на конфигурированной политике безопасности для этого контекста безопасности.
Если context является экземпляром AccessControlContext, тогда вызывается метод AccessControlContext.checkPermission с указанным разрешением.
Если context не является экземпляром AccessControlContext, то выбрасывается SecurityException.
- Параметры:
-
perm- указанное разрешение -
context- контекст безопасности, зависящий от системы. - Исключения:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, являетсяnull), или ему отказано в доступе к ресурсу, указанному данным разрешением. -
NullPointerException- если аргумент разрешенияnull. - С момента:
- 1.2
- См. также:
-
getSecurityContext(),AccessControlContext.checkPermission(java.security.Permission)
checkCreateClassLoader
public void checkCreateClassLoader()
Выбрасывает SecurityException если вызывающей нити не разрешено создавать новый загрузчик классов.
Этот метод вызывает checkPermission с разрешением RuntimePermission("createClassLoader").
Если вы переопределяете этот метод, то вы должны вызвать super.checkCreateClassLoader в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешено создавать новый загрузчик классов. - См. также:
-
ClassLoader(),checkPermission
checkAccess
public void checkAccess(Thread t)
Выбрасывает SecurityException если вызывающей нити не разрешено изменять переданную нить.
Этот метод вызывается текущим менеджером безопасности методами stop, suspend, resume, setPriority, setName, и setDaemon класса Thread.
Если переданная нить является системной нитью (принадлежит группе нитей с null родителем), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThread"). Если переданная нить не является системной нитью, этот метод просто возвращается без выполнения действий.
Приложения, требующие более строгой политики, должны переопределить этот метод. Если этот метод переопределён, метод, который его переопределяет, должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThread"), и если да, то возвратиться без выполнения действий. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может изменять любые нити.
Если этот метод переопределён, то super.checkAccess должен быть вызван первой инструкцией в переопределённом методе, или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.
- Параметры:
-
t- нить, подлежащая проверке. - Исключения:
-
SecurityException- если вызывающей нити не разрешено изменять нить. -
NullPointerException- если переданная нитьnull. - См. также:
-
resume,setDaemon,setName,setPriority,stop,suspend,checkPermission
checkAccess
public void checkAccess(ThreadGroup g)
Выбрасывает SecurityException если вызывающей нити не разрешено изменять переданную группу нитей.
Этот метод вызывается текущим менеджером безопасности при создании новой дочерней нити или группы нитей, а также методами setDaemon, setMaxPriority, stop, suspend, resume, и destroy класса ThreadGroup.
Если переданная группа нитей является системной группой нитей (имеет null родителя), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThreadGroup"). Если переданная группа нитей не является системной группой нитей, этот метод просто возвращается без выполнения действий.
Приложения, требующие более строгой политики, должны переопределить этот метод. Если этот метод переопределён, метод, который его переопределяет, должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThreadGroup"), и если да, то возвратиться без выполнения действий. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может изменять любые нити.
Если этот метод переопределён, то super.checkAccess должен быть вызван первой инструкцией в переопределённом методе, или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.
- Параметры:
-
g- группа нитей, подлежащая проверке. - Исключения:
-
SecurityException- если вызывающей нити не разрешено изменять группу нитей. -
NullPointerException- если переданная группа нитейnull. - См. также:
-
destroy,resume,setDaemon,setMaxPriority,stop,suspend,checkPermission
checkExit
public void checkExit(int status)
Выбрасывает SecurityException если вызывающей нити не разрешено заставить виртуальную машину Java завершиться с указанным кодом состояния.
Этот метод вызывается текущим менеджером безопасности методом exit класса Runtime . Значение 0 указывает на успех; другие значения указывают на различные ошибки.
Этот метод вызывает checkPermission с разрешением RuntimePermission("exitVM."+status).
Если вы переопределяете этот метод, то вы должны вызвать super.checkExit в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Параметры:
-
status- код завершения. - Исключения:
-
SecurityException- если вызывающей нити не разрешено завершить виртуальную машину Java с указанным кодом состояния. - См. также:
-
exit,checkPermission
checkExec
public void checkExec(String cmd)
Выбрасывает SecurityException если вызывающей нити не разрешено создать дочерний процесс.
Этот метод вызывается текущим менеджером безопасности методами exec класса Runtime.
Этот метод вызывает checkPermission с разрешением FilePermission(cmd,"execute") если cmd является абсолютным путём, иначе вызывает checkPermission с FilePermission("<<ALL FILES>>","execute").
Если вы переопределяете этот метод, то вы должны вызвать super.checkExec в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Параметры:
-
cmd- указанная системная команда. - Исключения:
-
SecurityException- если вызывающей нити не разрешено создать дочерний процесс. -
NullPointerException- если аргументcmdnull. - См. также:
-
Runtime.exec(java.lang.String),Runtime.exec(java.lang.String, java.lang.String[]),Runtime.exec(java.lang.String[]),Runtime.exec(java.lang.String[], java.lang.String[]),checkPermission
checkLink
public void checkLink(String lib)
Выбрасывает SecurityException если вызывающей нити не разрешено динамически связать код библиотеки, указанный строковым аргументом file. Аргумент может быть простым именем библиотеки или полным именем файла.
Этот метод вызывается текущим менеджером безопасности методами load и loadLibrary класса Runtime.
Этот метод вызывает checkPermission с разрешением RuntimePermission("loadLibrary."+lib).
Если вы переопределяете этот метод, то вы должны вызвать super.checkLink в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Параметры:
-
lib- имя библиотеки. - Исключения:
-
SecurityException- если вызывающей нити не разрешено динамически связать библиотеку. -
NullPointerException- если аргументlibnull. - См. также:
-
Runtime.load(java.lang.String),Runtime.loadLibrary(java.lang.String),checkPermission
checkRead
public void checkRead(FileDescriptor fd)
Выбрасывает SecurityException если вызывающей нити не разрешено читать из указанного дескриптора файла.
Этот метод вызывает checkPermission с разрешением RuntimePermission("readFileDescriptor").
Если вы переопределяете этот метод, то вы должны вызвать super.checkRead в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Параметры:
-
fd- дескриптор файла, зависящий от системы. - Исключения:
-
SecurityException- если вызывающей нити не разрешено получить доступ к указанному дескриптору файла. -
NullPointerException- если аргумент дескриптора файлаnull. - См. также:
-
FileDescriptor,checkPermission
checkRead
public void checkRead(String file)
Выбрасывает SecurityException если вызывающей нити не разрешено читать файл, указанный строковым аргументом.
Этот метод вызывает checkPermission с разрешением FilePermission(file,"read").
Если вы переопределяете этот метод, то вы должны вызвать super.checkRead в той точке, где переопределённый метод обычно выбрасывал бы исключение.
- Параметры:
-
file- имя файла, зависящее от системы. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на доступ к указанному файлу. -
NullPointerException- если аргументfileимеет значениеnull. - См. также:
checkPermission
checkRead
public void checkRead(String file,
Object context) Выбрасывает SecurityException , если указанный контекст безопасности не имеет права на чтение файла, заданного строковым аргументом. Контекст должен быть контекстом безопасности, возвращенным предыдущим вызовом getSecurityContext.
Если context является экземпляром AccessControlContext, то будет вызван метод AccessControlContext.checkPermission с разрешением FilePermission(file,"read").
Если context не является экземпляром AccessControlContext, то выбрасывается исключение SecurityException.
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkRead в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
file- имя файла, зависящее от системы. -
context- контекст безопасности, зависящий от системы. - Выбрасывает:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, являетсяnull), или не имеет разрешения на чтение указанного файла. -
NullPointerException- если аргументfileимеет значениеnull. - См. также:
-
getSecurityContext(),AccessControlContext.checkPermission(java.security.Permission)
checkWrite
public void checkWrite(FileDescriptor fd)
Выбрасывает SecurityException , если вызывающей нити запрещено записывать в указанный дескриптор файла.
Этот метод вызывает checkPermission с разрешением RuntimePermission("writeFileDescriptor").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkWrite в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
fd- дескриптор файла, зависящий от системы. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на доступ к указанному дескриптору файла. -
NullPointerException- если аргумент дескриптора файла имеет значениеnull. - См. также:
-
FileDescriptor,checkPermission
checkWrite
public void checkWrite(String file)
Выбрасывает SecurityException , если вызывающей нити запрещено записывать в файл, указанный строковым аргументом.
Этот метод вызывает checkPermission с разрешением FilePermission(file,"write").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkWrite в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
file- имя файла, зависящее от системы. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на доступ к указанному файлу. -
NullPointerException- если аргументfileимеет значениеnull. - См. также:
checkPermission
checkDelete
public void checkDelete(String file)
Выбрасывает SecurityException , если вызывающей нити запрещено удалять указанный файл.
Этот метод вызывается текущим менеджером безопасности методом delete класса File.
Этот метод вызывает checkPermission с разрешением FilePermission(file,"delete").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkDelete в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
file- имя файла, зависящее от системы. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на удаление файла. -
NullPointerException- если аргументfileимеет значениеnull. - См. также:
-
File.delete(),checkPermission
checkConnect
public void checkConnect(String host,
int port) Выбрасывает SecurityException , если вызывающей нити запрещено открывать соединение сокета с указанным хостом и номером порта.
Номер порта -1 указывает, что вызывающий метод пытается определить IP-адрес указанного имени хоста.
Этот метод вызывает checkPermission с разрешением SocketPermission(host+":"+port,"connect") если порт не равен -1. Если порт равен -1, то он вызывает checkPermission с разрешением SocketPermission(host,"resolve").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkConnect в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
host- имя хоста и порт для соединения. -
port- порт протокола для соединения. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на открытие сокет-соединения с указаннымhostиport. -
NullPointerException- если аргументhostимеет значениеnull. - См. также:
checkPermission
checkConnect
public void checkConnect(String host,
int port,
Object context) Выбрасывает SecurityException , если указанный контекст безопасности не имеет права на открытие сокет-соединения с указанным хостом и номером порта.
Номер порта -1 указывает, что вызывающий метод пытается определить IP-адрес указанного имени хоста.
Если context не является экземпляром AccessControlContext, то выбрасывается SecurityException.
В противном случае проверяется номер порта. Если он не равен -1, то вызывается метод context с разрешением SocketPermission(host+":"+port,"connect"). Если порт равен -1, то вызывается метод context с разрешением SocketPermission(host,"resolve").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkConnect в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
host- имя хоста и порт для соединения. -
port- порт протокола для соединения. -
context- контекст безопасности, зависящий от системы. - Выбрасывает:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, являетсяnull), или не имеет разрешения на открытие сокет-соединения с указаннымhostиport. -
NullPointerException- если аргументhostимеет значениеnull. - См. также:
-
getSecurityContext(),AccessControlContext.checkPermission(java.security.Permission)
checkListen
public void checkListen(int port)
Выбрасывает SecurityException , если вызывающей нити запрещено ожидать запрос соединения на указанном локальном номере порта.
Этот метод вызывает checkPermission с разрешением SocketPermission("localhost:"+port,"listen").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkListen в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
port- локальный порт. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на прослушивание указанного порта. - См. также:
checkPermission
checkAccept
public void checkAccept(String host,
int port) Выбрасывает SecurityException , если вызывающей нити запрещено принимать сокет-соединение с указанного хоста и порта.
Этот метод вызывается текущим менеджером безопасности методом accept класса ServerSocket.
Этот метод вызывает checkPermission с разрешением SocketPermission(host+":"+port,"accept").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkAccept в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
host- имя хоста сокет-соединения. -
port- номер порта сокет-соединения. - Выбрасывает:
-
SecurityException- если у вызывающей нити нет разрешения на прием соединения. -
NullPointerException- если аргументhostимеет значениеnull. - См. также:
-
ServerSocket.accept(),checkPermission
checkMulticast
public void checkMulticast(InetAddress maddr)
Выбрасывает SecurityException , если вызывающей нити запрещено использовать IP-мультипоток (подключение/отключение/отправка/прием).
Этот метод вызывает checkPermission с разрешением java.net.SocketPermission(maddr.getHostAddress(),
"accept,connect").
Если вы переопределяете этот метод, то вы должны сделать вызов super.checkMulticast в тот момент, когда переопределенный метод обычно сгенерировал бы исключение.
- Параметры:
-
maddr- адрес интернет-группы для использования. - Выбрасывает:
-
SecurityException- если вызывающей нити запрещено использовать IP-мультипоток (подключение/отключение/отправка/прием). -
NullPointerException- если аргумент адреса имеет значениеnull. - С:
- JDK1.1
- См. также:
checkPermission
checkMulticast
@Deprecated
public void checkMulticast(InetAddress maddr,
byte ttl) Устарело. Используйте #checkPermission(java.security.Permission) вместо этого
Выбрасывает исключение SecurityException, если вызывающая нить не имеет разрешения на использование (подключение/отключение/отправку/прием) IP-мультиадресной рассылки.
Этот метод вызывает checkPermission с разрешением java.net.SocketPermission(maddr.getHostAddress(),
"accept,connect").
Если вы переопределяете этот метод, то должны вызвать super.checkMulticast в тот момент, когда переопределенный метод обычно бы бросал исключение.
- Параметры:
-
maddr- интернет-адрес группы, который будет использоваться. -
ttl- значение, используемое, если это отправка мультиадресной рассылки. Примечание: данная реализация не использует параметр ttl. - Исключения:
-
SecurityException- если вызывающей нити запрещено использовать (подключение/отключение/отправку/прием) IP-мультиадресной рассылки. -
NullPointerException- если аргумент address неnull. - С тех пор:
- JDK1.1
- См. также:
checkPermission
checkPropertiesAccess
public void checkPropertiesAccess()
Выбрасывает исключение SecurityException, если вызывающая нить не имеет разрешения на доступ к системным свойствам или их изменение.
Этот метод используется методами getProperties и setProperties класса System.
Этот метод вызывает checkPermission с разрешением PropertyPermission("*", "read,write").
Если вы переопределяете этот метод, то должны вызвать super.checkPropertiesAccess в тот момент, когда переопределенный метод обычно бы бросал исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешен доступ к или изменение системных свойств. - См. также:
-
System.getProperties(),System.setProperties(java.util.Properties),checkPermission
checkPropertyAccess
public void checkPropertyAccess(String key)
Выбрасывает исключение SecurityException, если вызывающая нить не имеет разрешения на доступ к системному свойству с указанным key именем.
Этот метод используется методом getProperty класса System.
Этот метод вызывает checkPermission с разрешением PropertyPermission(key, "read").
Если вы переопределяете этот метод, то должны вызвать super.checkPropertyAccess в тот момент, когда переопределенный метод обычно бы бросал исключение.
- Параметры:
-
key- ключ системного свойства. - Исключения:
-
SecurityException- если вызывающей нити не разрешен доступ к указанному системному свойству. -
NullPointerException- если аргументkeyравенnull. -
IllegalArgumentException- еслиkeyпусто. - См. также:
-
System.getProperty(java.lang.String),checkPermission
checkTopLevelWindow
@Deprecated public boolean checkTopLevelWindow(Object window)
Устарело. Зависимость от AWTPermission создает препятствие для будущей модулизации платформы Java. Пользователи этого метода должны вместо этого напрямую вызывать checkPermission(java.security.Permission). Этот метод будет изменён в будущей версии для проверки разрешения java.security.AllPermission.
Возвращает false, если вызывающая нить имеет право создавать верхнеуровневое окно, указанное аргументом window. В этом случае вызывающий может всё равно решить показать окно, но окно должно включать некий вид визуального предупреждения. Если метод возвращает true, то окно можно показать без особых ограничений.
См. класс Window для получения дополнительной информации о доверенных и недоверенных окнах.
Этот метод вызывает checkPermission с разрешением AWTPermission("showWindowWithoutWarningBanner"), и возвращает true, если не брошено исключение SecurityException, иначе возвращает false. В случае подмножеств профилей Java SE, не включающих пакет java.awt, вместо checkPermission используется вызов для проверки разрешения java.security.AllPermission.
Если вы переопределяете этот метод, то должны вызвать super.checkTopLevelWindow в точке, где переопределенный метод обычно возвращал false, и должно быть возвращено значение super.checkTopLevelWindow.
- Параметры:
-
window- новое создаваемое окно. - Возвращает:
-
trueесли вызывающая нить имеет право отображать верхнеуровневые окна;falseв противном случае. - Исключения:
-
NullPointerException- если аргументwindowравенnull. - См. также:
-
Window,checkPermission
checkPrintJobAccess
public void checkPrintJobAccess()
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено инициировать запрос на печать.
Этот метод вызывает checkPermission с разрешением RuntimePermission("queuePrintJob").
Если вы переопределяете этот метод, то должны вызвать super.checkPrintJobAccess в тот момент, когда переопределенный метод обычно бы бросал исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешено инициировать запрос на печать. - С тех пор:
- JDK1.1
- См. также:
checkPermission
checkSystemClipboardAccess
@Deprecated public void checkSystemClipboardAccess()
Устарело. Зависимость от AWTPermission создаёт препятствие для будущей модулизации платформы Java. Пользователи этого метода должны вместо этого напрямую вызывать checkPermission(java.security.Permission). Этот метод будет изменён в будущей версии для проверки разрешения java.security.AllPermission.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешен доступ к системному буферу обмена.
Этот метод вызывает checkPermission с разрешением AWTPermission("accessClipboard"). В случае подмножеств профилей Java SE, не включающих пакет java.awt, используется checkPermission для проверки разрешения java.security.AllPermission.
Если вы переопределяете этот метод, то должны вызвать super.checkSystemClipboardAccess в точке, где переопределённый метод обычно бы бросал исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешен доступ к системному буферу обмена. - С тех пор:
- JDK1.1
- См. также:
checkPermission
checkAwtEventQueueAccess
@Deprecated public void checkAwtEventQueueAccess()
Устарело. Зависимость от AWTPermission создает препятствие для будущей модулизации платформы Java. Пользователи этого метода должны вместо этого напрямую вызывать checkPermission(java.security.Permission). Этот метод будет изменен в будущей версии для проверки разрешения java.security.AllPermission.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешен доступ к очереди событий AWT.
Этот метод вызывает checkPermission с разрешением AWTPermission("accessEventQueue"). В случае подмножеств профилей Java SE, не включающих пакет java.awt, используется checkPermission для проверки разрешения java.security.AllPermission.
Если вы переопределяете этот метод, то должны вызвать super.checkAwtEventQueueAccess в точке, где переопределённый метод обычно бы бросал исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешен доступ к очереди событий AWT. - С тех пор:
- JDK1.1
- См. также:
checkPermission
checkPackageAccess
public void checkPackageAccess(String pkg)
Выбрасывает исключение SecurityException, если вызывающей нити не разрешен доступ к пакету, указанному в аргументе.
Этот метод используется загрузчиками классов.
Этот метод сначала получает список запрещенных пакетов, получив список, разделенный запятыми, из вызова java.security.Security.getProperty("package.access"), и проверяет, начинается ли pkg или совпадает ли с любым из запрещенных пакетов. Если это так, то checkPermission вызывается с разрешением RuntimePermission("accessClassInPackage."+pkg).
Если этот метод переопределяется, то super.checkPackageAccess должен вызываться как первая строка переопределённого метода.
- Параметры:
-
pkg- имя пакета. - Исключения:
-
SecurityException- если вызывающей нити не разрешен доступ к указанному пакету. -
NullPointerException- если аргумент имени пакета равенnull. - См. также:
-
loadClass,getProperty,checkPermission
checkPackageDefinition
public void checkPackageDefinition(String pkg)
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено определять классы в пакете, указанном в аргументе.
Этот метод используется некоторыми загрузчиками классов.
Этот метод сначала получает список запрещенных пакетов, получив список, разделенный запятыми, из вызова java.security.Security.getProperty("package.definition"), и проверяет, начинается ли pkg или совпадает ли с любым из запрещенных пакетов. Если это так, то checkPermission вызывается с разрешением RuntimePermission("defineClassInPackage."+pkg).
Если этот метод переопределяется, то super.checkPackageDefinition должен вызываться как первая строка переопределённого метода.
- Параметры:
-
pkg— имя пакета. - Исключения:
-
SecurityException— если у вызывающей потоковой нити нет разрешения определить классы в указанном пакете. - См. также:
-
ClassLoader.loadClass(java.lang.String, boolean),getProperty,checkPermission
checkSetFactory
public void checkSetFactory()
Выбрасывает SecurityException , если вызывающей потоковой нити не разрешено задать сокет-фабрику, используемую ServerSocket или Socket, или фабрику обработчика потоков, используемую URL.
Этот метод вызывает checkPermission с разрешением RuntimePermission("setFactory").
Если вы переопределяете этот метод, вы должны вызвать super.checkSetFactory в том месте, где переопределённый метод обычно бы выбросил исключение.
- Исключения:
-
SecurityException— если у вызывающей потоковой нити нет разрешения указать сокет-фабрику или фабрику обработчика потоков. - См. также:
-
setSocketFactory,setSocketImplFactory,setURLStreamHandlerFactory,checkPermission
checkMemberAccess
@Deprecated
public void checkMemberAccess(Class<?> clazz,
int which) Устарело. Этот метод полагается на то, что вызывающая сторона находится на глубине стека 4, что подвержено ошибкам и не может быть обеспечено во время выполнения. Пользователи этого метода должны вместо этого напрямую вызвать checkPermission(java.security.Permission). Этот метод будет изменён в будущей версии, чтобы проверять разрешение java.security.AllPermission.
Выбрасывает SecurityException , если вызывающей потоковой нити не разрешено получить доступ к членам.
По умолчанию разрешен доступ к общедоступным членам, а также к классам, у которых загрузчик классов совпадает с загрузчиком вызывающей стороны. Во всех остальных случаях этот метод вызывает checkPermission с разрешением RuntimePermission("accessDeclaredMembers")
.
Если этот метод переопределён, то вызов super.checkMemberAccess сделать нельзя, так как стандартная реализация checkMemberAccess полагается на то, что проверяемый код находится на глубине стека 4.
- Параметры:
-
clazz— класс, для которого выполняется рефлексия. -
which— тип доступа, PUBLIC или DECLARED. - Исключения:
-
SecurityException— если у вызывающей стороны нет разрешения на доступ к членам. -
NullPointerException— если аргументclazzравенnull. - С:
- JDK1.1
- См. также:
-
Member,checkPermission
checkSecurityAccess
public void checkSecurityAccess(String target)
Определяет, следует ли предоставить или запретить разрешение с указанным целевым именем разрешения.
Если запрошенное разрешение разрешено, этот метод возвращается без каких-либо действий. Если разрешение запрещено, генерируется SecurityException.
Этот метод создаёт объект SecurityPermission для заданного целевого имени разрешения и вызывает checkPermission с ним.
См. документацию для для получения списка возможных целевых имён разрешений.SecurityPermission
Если вы переопределяете этот метод, вы должны вызвать super.checkSecurityAccess в том месте, где переопределённый метод обычно бы выбросил исключение.
- Параметры:
-
target— целевое имяSecurityPermission. - Исключения:
-
SecurityException— если у вызывающей потоковой нити нет разрешения на запрашиваемый доступ. -
NullPointerException— еслиtargetравно null. -
IllegalArgumentException— еслиtargetпусто. - С:
- JDK1.1
- См. также:
checkPermission
getThreadGroup
public ThreadGroup getThreadGroup()
Возвращает группу потоков, в которую следует инициализировать любой новый создаваемый поток в момент вызова. По умолчанию возвращает группу потоков текущего потока. Это должно быть переопределено конкретным менеджером безопасности для возврата соответствующей группы потоков.
- Возвращает:
- Группа потоков, в которую инициализируются новые потоки
- С:
- JDK1.1
- См. также:
ThreadGroup
© 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.