Spec-Zone.ru › OpenJDK 8

Класс 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

Устаревшее.

Этот тип проверки безопасности не рекомендуется. Вместо этого рекомендуется использовать вызов checkPermission.

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

Конструктор и описание
SecurityManager()

Создает новый SecurityManager.

Методы

Модификатор и тип Метод и описание
void checkAccept(String host, int port)

Выбрасывает SecurityException, если вызывающей нити не разрешено принимать подключение к сокету с указанного хоста и порта.

void checkAccess(Thread t)

Выбрасывает SecurityException, если вызывающей нити не разрешено изменять аргумент потока.

void checkAccess(ThreadGroup g)

Выбрасывает SecurityException, если вызывающей нити не разрешено изменять аргумент группы потоков.

void checkAwtEventQueueAccess()

Устарело.

Зависимость от AWTPermission создаёт препятствие для будущей модульной организации платформы Java. Пользователи этого метода должны вместо этого вызвать checkPermission(java.security.Permission) напрямую. В будущей версии этот метод будет проверять разрешение java.security.AllPermission.

void checkConnect(String host, int port)

Выбрасывает SecurityException, если вызывающей нити не разрешено открыть соединение сокета с указанным хостом и портом.

void checkConnect(String host, int port, Object context)

Выбрасывает SecurityException, если указанному контексту безопасности не разрешено открыть соединение сокета с указанным хостом и портом.

void checkCreateClassLoader()

Выбрасывает SecurityException, если вызывающей нити не разрешено создавать новый загрузчик классов.

void checkDelete(String file)

Выбрасывает SecurityException, если вызывающей нити не разрешено удалить указанный файл.

void checkExec(String cmd)

Выбрасывает SecurityException, если вызывающей нити не разрешено создавать дочерний процесс.

void checkExit(int status)

Выбрасывает SecurityException, если вызывающей нити не разрешено остановить виртуальную машину Java с указанным кодом состояния.

void checkLink(String lib)

Выбрасывает SecurityException, если вызывающей нити не разрешено динамически связать код библиотеки, указанный в строковом аргументе file.

void checkListen(int port)

Выбрасывает SecurityException, если вызывающей нити не разрешено ожидать запрос подключения на указанном локальном номере порта.

void checkMemberAccess(Class<?> clazz, int which)

Устарело.

Этот метод полагается на то, что вызывающий код находится на глубине стека 4, что небезопасно и не может быть гарантировано во время выполнения. Пользователи этого метода должны вместо этого вызвать checkPermission(java.security.Permission) напрямую. В будущей версии этот метод будет проверять разрешение java.security.AllPermission.

void checkMulticast(InetAddress maddr)

Выбрасывает SecurityException, если вызывающей нити не разрешено использовать (подключаться/отключаться/отправлять/получать) IP-мультимедиа.

void checkMulticast(InetAddress maddr, byte ttl)

Устарело.

Используйте #checkPermission(java.security.Permission) вместо этого.

void checkPackageAccess(String pkg)

Выбрасывает SecurityException, если вызывающей нити не разрешено получить доступ к пакету, указанному в аргументе.

void checkPackageDefinition(String pkg)

Выбрасывает SecurityException, если вызывающей нити не разрешено определять классы в пакете, указанном в аргументе.

void checkPermission(Permission perm)

Выбрасывает SecurityException, если запрашиваемый доступ, указанный предоставленным разрешением, не разрешён в соответствии с политикой безопасности, действующей в данный момент.

void checkPermission(Permission perm, Object context)

Выбрасывает SecurityException, если указанному контексту безопасности запрещён доступ к ресурсу, указанному в предоставленном разрешении.

void checkPrintJobAccess()

Выбрасывает SecurityException, если вызывающей нити не разрешено инициировать запрос на печать.

void checkPropertiesAccess()

Выбрасывает SecurityException, если вызывающей нити не разрешено получить доступ к или изменить системные свойства.

void checkPropertyAccess(String key)

Выбрасывает SecurityException, если вызывающей нити не разрешено получить доступ к системному свойству с указанным key именем.

void checkRead(FileDescriptor fd)

Выбрасывает SecurityException, если вызывающей нити не разрешено читать из указанного дескриптора файла.

void checkRead(String file)

Выбрасывает SecurityException, если вызывающей нити не разрешено прочитать файл, указанный строковым аргументом.

void checkRead(String file, Object context)

Выбрасывает SecurityException, если указанному контексту безопасности не разрешено прочитать файл, указанный строковым аргументом.

void checkSecurityAccess(String target)

Определяет, следует ли разрешить или запретить разрешение с указанным именем целевого разрешения.

void checkSetFactory()

Выбрасывает SecurityException, если вызывающей нити не разрешено установить фабрику сокетов, используемую ServerSocket или Socket, или фабрику обработчиков потока, используемую URL.

void checkSystemClipboardAccess()

Устарело.

Зависимость от AWTPermission создаёт препятствие для будущей модульной организации платформы Java. Пользователи этого метода должны вместо этого вызвать checkPermission(java.security.Permission) напрямую. В будущей версии этот метод будет проверять разрешение java.security.AllPermission.

boolean checkTopLevelWindow(Object window)

Устарело.

Зависимость от AWTPermission создаёт препятствие для будущей модульной организации платформы Java. Пользователи этого метода должны вместо этого вызвать checkPermission(java.security.Permission) напрямую. В будущей версии этот метод будет проверять разрешение java.security.AllPermission.

void checkWrite(FileDescriptor fd)

Выбрасывает SecurityException, если вызывающей нити не разрешено писать в указанный дескриптор файла.

void checkWrite(String file)

Выбрасывает SecurityException, если вызывающей нити не разрешено писать в файл, указанный строковым аргументом.

protected int classDepth(String name)

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

protected int classLoaderDepth()

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

protected ClassLoader currentClassLoader()

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

protected Class<?> currentLoadedClass()

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

protected Class[] getClassContext()

Возвращает текущий стек выполнения в виде массива классов.

boolean getInCheck()

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

Object getSecurityContext()

Создаёт объект, который инкапсулирует текущую среду выполнения.

ThreadGroup getThreadGroup()

Возвращает группу потоков, в которую нужно создать любой новый поток во время вызова.

protected boolean inClass(String name)

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

protected boolean inClassLoader()

Устарело.

Такой тип проверки безопасности не рекомендуется. Рекомендуется вместо этого использовать вызов checkPermission.

Методы, унаследованные от класса 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 в следующих трех случаях:

  1. Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  2. Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см. AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  3. Вызов checkPermission с java.security.AllPermission не приводит к SecurityException.
Возвращает:
загрузчик классов последнего на стеке метода из класса, определенного с помощью несистемного загрузчика классов.
См. также:
getSystemClassLoader, checkPermission

currentLoadedClass

@Deprecated
protected Class<?> currentLoadedClass()

Устарело. Этот тип проверки безопасности не рекомендуется. Рекомендуется использовать вызов checkPermission вместо него.

Возвращает класс наиболее недавно выполняемого метода из класса, определенного с помощью несистемного загрузчика классов. Несистемный загрузчик классов определяется как загрузчик классов, не равный системному загрузчику классов (как возвращается ClassLoader.getSystemClassLoader()) или одному из его предков.

Этот метод вернет null в следующих трех случаях:

  1. Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  2. Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см. AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  3. Вызов 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 в следующих трех случаях:

  1. Все методы в стеке вызовов принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  2. Все методы в стеке вызовов до первого «привилегированного» вызывающего метода (см. AccessController.doPrivileged(java.security.PrivilegedAction<T>)) принадлежат классам, определенным с помощью системного загрузчика классов или одного из его предков.
  3. Вызов 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 - если аргумент permission null.
С:
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 - если аргумент cmd null.
См. также:
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 - если аргумент lib null.
См. также:
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.

Spec-Zone.ru

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