Класс SecurityManager
- Прямые известные подклассы:
RMISecurityManager
@Deprecated(since="17", forRemoval=true) public class SecurityManager extends Object
Класс SecurityManager содержит множество методов с именами, начинающимися со слова check. Эти методы вызываются различными методами в библиотеках Java перед выполнением этими методами определенных потенциально чувствительных операций. Вызов такого метода check обычно выглядит так:
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
}
Таким образом, управляющей безопасности предоставляется возможность предотвратить завершение операции путём выброса исключения. Процедура управляющей безопасности просто возвращает, если операция разрешена, но выбросит исключение SecurityException, если операция не разрешена.
Установка управляющей безопасности
Окружения, использующие управляющую безопасность, обычно устанавливают управляющую безопасность при запуске. В реализации JDK это делается путём установки системной переменнойjava.security.manager в командной строке в имя класса управляющей безопасности. Также её можно установить в пустую строку ("") или специальный маркер "default" для использования значения по умолчанию java.lang.SecurityManager. Если задано имя класса, оно должно быть java.lang.SecurityManager или его общедоступным подклассом и иметь общедоступный конструктор без аргументов. Класс загружается встроенным системным загрузчиком классов classloader, если он не java.lang.SecurityManager. Если системная переменная java.security.manager не установлена, значение по умолчанию — null, что означает, что управляющая безопасность не будет установлена при запуске. Java-среда выполнения также может позволить, но не обязана позволить, установить управляющую безопасность динамически, вызвав метод setSecurityManager. В реализации JDK, если Java-виртуальная машина запущена со системной переменной java.security.manager, установленной в специальный маркер "allow", управляющая безопасность не будет установлена при запуске, но может быть установлена динамически. Если Java-виртуальная машина запущена с системной переменной java.security.manager, не установленной или установленной в специальный маркер "disallow", управляющая безопасность не будет установлена при запуске и не может быть установлена динамически (метод setSecurityManager выбросит исключение UnsupportedOperationException). Наконец, если системная переменная java.security.manager установлена в имя класса управляющей безопасности или в пустую строку ("") или специальный маркер "default", управляющая безопасность устанавливается при запуске (как описано ранее) и также может быть позже заменена (или отключена) динамически (в зависимости от политики текущей установленной управляющей безопасности). Следующая таблица иллюстрирует поведение реализации JDK для различных настроек системной переменной java.security.manager:
| Значение свойства | Управляющая безопасность, установленная при запуске | Поведение run-time System.setSecurityManager |
|---|---|---|
| null | Нет | Выбрасывает UnsupportedOperationException
|
| пустая строка ("") | java.lang.SecurityManager | Успех или выброс SecurityException, если это не разрешено текущей установленной управляющей безопасностью |
| "default" | java.lang.SecurityManager | Успех или выброс SecurityException, если это не разрешено текущей установленной управляющей безопасностью |
| "disallow" | Нет | Выбрасывает UnsupportedOperationException
|
| "allow" | Нет | Успех или выброс SecurityException, если это не разрешено текущей установленной управляющей безопасностью |
| имя класса | класс с указанным именем | Успех или выброс SecurityException, если это не разрешено текущей установленной управляющей безопасностью |
Текущая управляющая безопасность возвращается методом getSecurityManager.
Проверка разрешений
Специальный методcheckPermission(java.security.Permission) определяет, должно ли запрос доступа, указанный указанным разрешением, быть предоставлено или отклонено. Реализация по умолчанию вызывает AccessController.checkPermission(perm);
Если запрошенный доступ разрешен, checkPermission возвращается без действий. Если доступ запрещен, выбрасывается исключение SecurityException.
Реализация по умолчанию каждого из других 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, которое подразумевает все разрешения. Оно существует, чтобы упростить работу системных администраторов, которым может потребоваться выполнить несколько задач, требующих всех (или многих) разрешений.
См. Разрешения в Java Development Kit (JDK) для получения информации о разрешениях. В этом документе приводится таблица, перечисляющая различные методы управляющей безопасности check и разрешения(я), которые требуются реализацией по умолчанию для каждого такого метода. Он также содержит таблицу методов, требующих разрешений, и для каждого такого метода указывает, какое разрешение оно требует.
- С:
- 1.0
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SecurityManager() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Создаёт новый SecurityManager. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
checkAccept |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет разрешения принимать соединение сокета от указанного хоста и номера порта. |
void |
checkAccess |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права изменять аргумент потока. |
void |
checkAccess |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права изменять аргумент группы потоков. |
void |
checkConnect |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права открывать соединение сокета с указанным хостом и номером порта. |
void |
checkConnect |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если указанный контекст безопасности не имеет права открывать соединение сокета с указанным хостом и номером порта. |
void |
checkCreateClassLoader() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права создавать новый загрузчик классов. |
void |
checkDelete |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права удалить указанный файл. |
void |
checkExec |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права создавать подпроцесс. |
void |
checkExit |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права принудительно останавливать виртуальную машину Java с указанным кодом состояния. |
void |
checkLink |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права динамически подключать библиотечный код, указанный строковым аргументом file. |
void |
checkListen |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права ожидать запроса на соединение на указанном локальном номере порта. |
void |
checkMulticast |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права использовать (join/leave/send/receive) IP-мультикаст. |
void |
checkMulticast |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. |
void |
checkPackageAccess |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права доступа к указанному пакету. |
void |
checkPackageDefinition |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права определять классы в указанном пакете. |
void |
checkPermission |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если запрашиваемый доступ, указанный данным разрешением, не разрешен на основе текущей политики безопасности. |
void |
checkPermission |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если указанному контексту безопасности отказано в доступе к ресурсу, указанному данным разрешением. |
void |
checkPrintJobAccess() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права инициировать запрос на задание печати. |
void |
checkPropertiesAccess() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права доступа или изменения системных свойств. |
void |
checkPropertyAccess |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права доступа к системному свойству с указанным именем key. |
void |
checkRead |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права чтения из указанного дескриптора файла. |
void |
checkRead |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права читать файл, указанный строковым аргументом. |
void |
checkRead |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если указанный контекст безопасности не имеет права читать файл, указанный строковым аргументом. |
void |
checkSecurityAccess |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Определяет, следует ли предоставить или отказать в разрешении с указанным именем целевого объекта разрешения. |
void |
checkSetFactory() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права устанавливать фабрику сокетов, используемую ServerSocket или Socket, или фабрику обработчиков потоков, используемую URL. |
void |
checkWrite |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права записи в указанный дескриптор файла. |
void |
checkWrite |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Выбрасывает SecurityException, если вызывающий поток не имеет права записи в файл, указанный строковым аргументом. |
protected Class<?>[] |
getClassContext() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Возвращает текущий стек выполнения в виде массива классов. |
Object |
getSecurityContext() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Создает объект, инкапсулирующий текущую среду выполнения. |
ThreadGroup |
getThreadGroup() |
Устарело, будет удалено: Этот элемент API будет удален в будущей версии. Возвращает группу потоков, в которую необходимо создавать любой новый поток, создаваемый в момент вызова этого метода. |
Подробное описание конструкторов
SecurityManager
public SecurityManager()
SecurityManager. Если менеджер безопасности уже установлен, этот метод сначала вызывает метод checkPermission менеджера безопасности с разрешением RuntimePermission("createSecurityManager"), чтобы убедиться, что вызывающая нить имеет разрешение на создание нового менеджера безопасности. Это может привести к исключению SecurityException.
- Исключения:
-
SecurityException- если менеджер безопасности уже существует, и его методcheckPermissionне разрешает создание нового менеджера безопасности. - См. также:
Подробное описание методов
getClassContext
protected Class<?>[] getClassContext()
Длина массива соответствует количеству методов в стеке вызовов. Элемент с индексом 0 — класс текущего выполняемого метода, элемент с индексом 1 — класс вызывающего метод и т. д.
- Возвращает:
- стек вызовов.
getSecurityContext
public Object getSecurityContext()
checkConnect с тремя аргументами и методом checkRead с двумя аргументами. Эти методы необходимы, потому что доверенный метод может быть вызван для чтения файла или открытия сокета от имени другого метода. Доверенному методу необходимо определить, разрешено ли другому (возможно, недоверенному) методу выполнить операцию самостоятельно. По умолчанию этот метод возвращает объект AccessControlContext.
- Возвращает:
- зависимый от реализации объект, содержащий достаточную информацию о текущей среде выполнения для выполнения проверок безопасности позже.
- См. также:
checkPermission
public void checkPermission(Permission perm)
SecurityException, если запрошенный доступ, указанный данным разрешением, не разрешён в соответствии с политикой безопасности, действующей в настоящее время. Этот метод вызывает AccessController.checkPermission с заданным разрешением.
- Параметры:
-
perm- запрошенное разрешение. - Исключения:
-
SecurityException- если доступ не разрешён в соответствии с текущей политикой безопасности. -
NullPointerException- если аргумент разрешения является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
- См. также:
checkCreateClassLoader
public void checkCreateClassLoader()
SecurityException, если вызывающей нити не разрешено создавать новый загрузчик классов. Этот метод вызывает checkPermission с разрешением RuntimePermission("createClassLoader").
Если вы переопределяете этот метод, то вы должны вызвать super.checkCreateClassLoader в точке, в которой переопределённый метод обычно бы бросил исключение.
- Исключения:
-
SecurityException- если вызывающей нити не разрешено создавать новый загрузчик классов. - См. также:
checkAccess
public void checkAccess(Thread t)
SecurityException, если вызывающей нити не разрешено изменять аргумент нити. Этот метод вызывается текущим менеджером безопасности методами setPriority, setName и setDaemon класса Thread.
Если аргумент нити является системной нитью (принадлежит группе нитей с родительским элементом null), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThread"). Если аргумент нити не является системной нитью, этот метод просто возвращается бездействием.
Приложения, которые хотят более жёсткой политики, должны переопределить этот метод. Если этот метод переопределён, переопределяющий метод должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThread"), и если да, то возвращается бездействием. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может манипулировать любой нитью.
Если этот метод переопределён, то super.checkAccess должен вызываться первой инструкцией в переопределённом методе или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.
- Параметры:
-
t- нить, подлежащая проверке. - Исключения:
-
SecurityException- если вызывающей нити не разрешено изменять нить. -
NullPointerException- если аргумент нити являетсяnull. - См. также:
checkAccess
public void checkAccess(ThreadGroup g)
SecurityException, если вызывающей нити не разрешено изменять аргумент группы нитей. Этот метод вызывается для текущего менеджера безопасности при создании новой дочерней нити или дочерней группы нитей и методами setDaemon и setMaxPriority класса ThreadGroup.
Если аргумент группы нитей является системной группой нитей (имеет родительский элемент null), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThreadGroup"). Если аргумент группы нитей не является системной группой нитей, этот метод просто возвращается бездействием.
Приложения, которые хотят более жёсткой политики, должны переопределить этот метод. Если этот метод переопределён, переопределяющий метод должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThreadGroup"), и если да, то возвращается бездействием. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может манипулировать любой нитью.
Если этот метод переопределён, то super.checkAccess должен вызываться первой инструкцией в переопределённом методе или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.
- Параметры:
-
g- группа нитей, подлежащая проверке. - Исключения:
-
SecurityException- если вызывающей нити не разрешено изменять группу нитей. -
NullPointerException- если аргумент группы нитей являетсяnull. - См. также:
checkExit
public void checkExit(int status)
SecurityException, если вызывающий поток не имеет права принудительно завершить работу виртуальной машины Java с указанным кодом состояния. Этот метод вызывается для текущего менеджера безопасности методом exit класса Runtime. Значение 0 указывает на успех; другие значения указывают на различные ошибки.
Этот метод вызывает checkPermission с разрешением RuntimePermission("exitVM."+status).
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkExit в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
status- код завершения работы. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на принудительное завершение работы виртуальной машины Java с указанным кодом состояния. - См. также:
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. - См. также:
checkLink
public void checkLink(String lib)
SecurityException, если вызывающий поток не имеет права динамически подключать код библиотеки, указанный строковым аргументом file. Аргумент представляет собой либо простое имя библиотеки, либо полное имя файла. Этот метод вызывается для текущего менеджера безопасности методами load и loadLibrary класса Runtime.
Этот метод вызывает checkPermission с разрешением RuntimePermission("loadLibrary."+lib).
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkLink в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
lib- имя библиотеки. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на динамическое подключение библиотеки. -
NullPointerException- если аргументlibявляетсяnull. - См. также:
checkRead
public void checkRead(FileDescriptor fd)
SecurityException, если вызывающий поток не имеет права на чтение из указанного дескриптора файла. Этот метод вызывает checkPermission с разрешением RuntimePermission("readFileDescriptor").
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkRead в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
fd- дескриптор файла, зависящий от системы. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на доступ к указанному дескриптору файла. -
NullPointerException- если аргумент дескриптора файла являетсяnull. - См. также:
checkRead
public void checkRead(String file)
SecurityException, если вызывающий поток не имеет права на чтение файла, указанного строковым аргументом. Этот метод вызывает checkPermission с разрешением FilePermission(file,"read").
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkRead в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
file- имя файла, зависящее от системы. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на доступ к указанному файлу. -
NullPointerException- если аргументfileявляетсяnull. - См. также:
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. - См. также:
checkWrite
public void checkWrite(FileDescriptor fd)
SecurityException, если вызывающий поток не имеет права на запись в указанный дескриптор файла. Этот метод вызывает checkPermission с разрешением RuntimePermission("writeFileDescriptor").
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkWrite в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
fd- дескриптор файла, зависящий от системы. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на доступ к указанному дескриптору файла. -
NullPointerException- если аргумент дескриптора файла являетсяnull. - См. также:
checkWrite
public void checkWrite(String file)
SecurityException, если вызывающий поток не имеет права на запись в файл, указанный строковым аргументом. Этот метод вызывает checkPermission с разрешением FilePermission(file,"write").
Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkWrite в точке, где переопределенный метод обычно выбрасывает исключение.
- Параметры:
-
file- имя файла, зависящее от системы. - Исключения:
-
SecurityException- если вызывающий поток не имеет разрешения на доступ к указанному файлу. -
NullPointerException- если аргументfileявляетсяnull. - См. также:
checkDelete
public void checkDelete(String file)
SecurityException, если вызывающей нити не разрешено удалить указанный файл. Этот метод вызывается текущим менеджером безопасности методом delete класса File.
Этот метод вызывает checkPermission с разрешением FilePermission(file,"delete").
Если вы переопределяете этот метод, вам следует вызвать super.checkDelete в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
file- имя файла, зависящее от системы. - Throws:
-
SecurityException- если вызывающей нити не разрешено удалять файл. -
NullPointerException- если аргументfileимеет значениеnull. - See Also:
checkConnect
public void checkConnect(String host, int port)
SecurityException, если вызывающей нити не разрешено открыть сокетное соединение с указанным хостом и номером порта. Номер порта -1 указывает, что вызывающий метод пытается определить IP-адрес указанного имени хоста.
Этот метод вызывает checkPermission с разрешением SocketPermission(host+":"+port,"connect"), если порт не равен -1. Если порт равен -1, то он вызывает checkPermission с разрешением SocketPermission(host,"resolve").
Если вы переопределяете этот метод, вам следует вызвать super.checkConnect в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
host- имя хоста и порт для подключения. -
port- порт протокола для подключения. - Throws:
-
SecurityException- если вызывающей нити не разрешено открыть сокетное соединение с указаннымhostиport. -
NullPointerException- если аргументhostимеет значениеnull. - See Also:
checkConnect
public void checkConnect(String host, int port, Object context)
SecurityException, если указанный контекст безопасности не разрешен для открытия сокетного соединения с указанным хостом и номером порта. Номер порта -1 указывает, что вызывающий метод пытается определить IP-адрес указанного имени хоста.
Если context не является экземпляром AccessControlContext, то выбрасывается исключение SecurityException.
В противном случае проверяется номер порта. Если он не равен -1, вызывается метод checkPermission контекста context с разрешением SocketPermission(host+":"+port,"connect"). Если порт равен -1, то вызывается метод checkPermission контекста context с разрешением SocketPermission(host,"resolve").
Если вы переопределяете этот метод, вам следует вызвать super.checkConnect в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
host- имя хоста и порт для подключения. -
port- порт протокола для подключения. -
context- контекст безопасности, зависящий от системы. - Throws:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, этоnull) или не имеет разрешения на открытие сокетного соединения с указаннымhostиport. -
NullPointerException- если аргументhostимеет значениеnull. - See Also:
checkListen
public void checkListen(int port)
SecurityException, если вызывающей нити не разрешено ожидать запрос подключения на указанном локальном номере порта. Этот метод вызывает checkPermission с разрешением SocketPermission("localhost:"+port,"listen").
Если вы переопределяете этот метод, вам следует вызвать super.checkListen в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
port- локальный порт. - Throws:
-
SecurityException- если вызывающей нити не разрешено прослушивать указанный порт. - See Also:
checkAccept
public void checkAccept(String host, int port)
SecurityException, если вызывающей нити не разрешено принять сокетное соединение с указанным хостом и номером порта. Этот метод вызывается текущим менеджером безопасности методом accept класса ServerSocket.
Этот метод вызывает checkPermission с разрешением SocketPermission(host+":"+port,"accept").
Если вы переопределяете этот метод, вам следует вызвать super.checkAccept в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
host- имя хоста сокетного соединения. -
port- номер порта сокетного соединения. - Throws:
-
SecurityException- если вызывающей нити не разрешено принять соединение. -
NullPointerException- если аргументhostимеет значениеnull. - See Also:
checkMulticast
public void checkMulticast(InetAddress maddr)
SecurityException, если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа. Этот метод вызывает checkPermission с разрешением java.net.SocketPermission(maddr.getHostAddress(),
"accept,connect").
Если вы переопределяете этот метод, вам следует вызвать super.checkMulticast в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
maddr- адрес интернет-группы для использования. - Throws:
-
SecurityException- если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа. -
NullPointerException- если аргумент адреса имеет значениеnull. - Since:
- 1.1
- See Also:
checkMulticast
@Deprecated(since="1.4", forRemoval=true) public void checkMulticast(InetAddress maddr, byte ttl)
SecurityException, если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа. Этот метод вызывает checkPermission с разрешением java.net.SocketPermission(maddr.getHostAddress(),
"accept,connect").
Если вы переопределяете этот метод, вам следует вызвать super.checkMulticast в том месте, где переопределённый метод обычно бы бросил исключение.
- Parameters:
-
maddr- адрес интернет-группы для использования. -
ttl- значение в использовании, если это отправка мультимедиа. Примечание: эта конкретная реализация не использует параметр ttl. - Throws:
-
SecurityException- если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа. -
NullPointerException- если аргумент адреса имеет значениеnull. - Since:
- 1.1
- See Also:
checkPropertiesAccess
public void checkPropertiesAccess()
SecurityException, если вызывающей нити не разрешено получать доступ к системным свойствам или изменять их. Этот метод используется методами getProperties и setProperties класса System.
Этот метод вызывает checkPermission с разрешением PropertyPermission("*", "read,write").
Если вы переопределяете этот метод, вам следует вызвать super.checkPropertiesAccess в том месте, где переопределённый метод обычно бы бросил исключение.
- Throws:
-
SecurityException- если вызывающей нити не разрешено получать доступ к системным свойствам или изменять их. - See Also:
checkPropertyAccess
public void checkPropertyAccess(String key)
SecurityException, если вызывающей нити не разрешено получить доступ к системной переменной с указанным именем key. Этот метод используется методом getProperty класса System.
Этот метод вызывает checkPermission с разрешением PropertyPermission(key, "read").
Если вы переопределяете этот метод, вам необходимо вызвать super.checkPropertyAccess в том месте, где переопределенный метод обычно выбрасывает исключение.
- Parameters:
-
key- ключ системной переменной. - Throws:
-
SecurityException- если вызывающей нити нет разрешения на доступ к указанной системной переменной. -
NullPointerException- если аргументkeyявляетсяnull. -
IllegalArgumentException- если аргументkeyпустой. - See Also:
checkPrintJobAccess
public void checkPrintJobAccess()
SecurityException, если вызывающей нити не разрешено инициировать запрос на печать. Этот метод вызывает checkPermission с разрешением RuntimePermission("queuePrintJob").
Если вы переопределяете этот метод, вам необходимо вызвать super.checkPrintJobAccess в том месте, где переопределенный метод обычно выбрасывает исключение.
- Throws:
-
SecurityException- если вызывающей нити нет разрешения на инициирование запроса на печать. - Since:
- 1.1
- See Also:
checkPackageAccess
public void checkPackageAccess(String pkg)
SecurityException, если вызывающей нити не разрешен доступ к указанному пакету. Во время загрузки класса этот метод может вызываться методами загрузчиков классов и виртуальной машиной Java для проверки, разрешен ли вызывающей стороне доступ к пакету загружаемого класса.
Этот метод проверяет, начинается ли указанный пакет с любого из пакетов в свойстве безопасности package.access. Реализация также может проверить пакет против дополнительного списка ограниченных пакетов, как указано ниже. Если пакет ограничен, вызывается checkPermission(Permission) с разрешением RuntimePermission("accessClassInPackage."+pkg).
Если этот метод переопределен, то super.checkPackageAccess должен быть вызван в первой строке переопределенного метода.
- Implementation Note:
- Эта реализация также ограничивает все неэкспортируемые пакеты модулей, загружаемых загрузчиком платформы или его предками. «Неэкспортируемый пакет» — это пакет, который не экспортируется во все модули. В частности, это пакет, который либо вообще не экспортируется содержащим его модулем, либо экспортируется квалифицированным способом содержащим его модулем.
- Parameters:
-
pkg- имя пакета. - Throws:
-
SecurityException- если вызывающей нити нет разрешения на доступ к указанному пакету. -
NullPointerException- если аргумент имени пакета являетсяnull. - See Also:
checkPackageDefinition
public void checkPackageDefinition(String pkg)
SecurityException, если вызывающей нити не разрешено определять классы в указанном пакете. Этот метод вызывается методом loadClass некоторых загрузчиков классов.
Этот метод проверяет, начинается ли указанный пакет с любого из пакетов в свойстве безопасности package.definition. Реализация также может проверить пакет против дополнительного списка ограниченных пакетов, как указано ниже. Если пакет ограничен, вызывается checkPermission(Permission) с разрешением RuntimePermission("defineClassInPackage."+pkg).
Если этот метод переопределен, то super.checkPackageDefinition должен быть вызван в первой строке переопределенного метода.
- Implementation Note:
- Эта реализация также ограничивает все неэкспортируемые пакеты модулей, загружаемых загрузчиком платформы или его предками. «Неэкспортируемый пакет» — это пакет, который не экспортируется во все модули. В частности, это пакет, который либо вообще не экспортируется содержащим его модулем, либо экспортируется квалифицированным способом содержащим его модулем.
- Parameters:
-
pkg- имя пакета. - Throws:
-
SecurityException- если вызывающей нити нет разрешения на определение классов в указанном пакете. -
NullPointerException- если аргумент имени пакета являетсяnull. - See Also:
checkSetFactory
public void checkSetFactory()
SecurityException, если вызывающей нити не разрешено установить сокет-фабрику, используемую ServerSocket или Socket, или фабрику обработчика потока, используемую URL. Этот метод вызывает checkPermission с разрешением RuntimePermission("setFactory").
Если вы переопределяете этот метод, вам необходимо вызвать super.checkSetFactory в том месте, где переопределенный метод обычно выбрасывает исключение.
- Throws:
-
SecurityException- если вызывающей нити нет разрешения на указание сокет-фабрики или фабрики обработчика потока. - See Also:
checkSecurityAccess
public void checkSecurityAccess(String target)
Если запрашиваемое разрешение разрешено, этот метод возвращается без выброса исключений. Если разрешение запрещено, возникает исключение SecurityException.
Этот метод создает объект SecurityPermission для данного целевого имени разрешения и вызывает checkPermission с ним.
См. документацию для для списка возможных целевых имен разрешений. SecurityPermission
Если вы переопределяете этот метод, вам необходимо вызвать super.checkSecurityAccess в том месте, где переопределенный метод обычно выбрасывает исключение.
- Parameters:
-
target- целевое имя разрешенияSecurityPermission. - Throws:
-
SecurityException- если вызывающей нити нет разрешения на запрашиваемый доступ. -
NullPointerException- еслиtargetравно null. -
IllegalArgumentException- еслиtargetпустое. - Since:
- 1.1
- See Also:
getThreadGroup
public ThreadGroup getThreadGroup()
- Returns:
- Группа потоков, в которую инициализируются новые потоки
- Since:
- 1.1
- See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/SecurityManager.html