Класс 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 или его общедоступным подклассом и иметь общедоступный конструктор без аргументов. Класс загружается встроенным системным загрузчиком классов, если он не java.lang.SecurityManager. Если системная переменная java.security.manager не задана, значение по умолчанию — null, что означает, что менеджер безопасности не будет установлен при запуске.
Система выполнения Java также может разрешить (но не обязана разрешать) установку менеджера безопасности динамически, вызвав метод setSecurityManager. В реализации JDK, если виртуальная машина Java запущена со системной переменной java.security.manager, установленной в специальный токен "disallow", менеджер безопасности не будет установлен при запуске и не может быть установлен динамически (метод setSecurityManager выбросит UnsupportedOperationException) . Если системная переменная java.security.manager не установлена или установлена в специальный токен "allow", менеджер безопасности не будет установлен при запуске, но может быть установлен динамически. Наконец, если системная переменная java.security.manager установлена в имя класса менеджера безопасности или в пустую строку ("") или специальный токен "default", менеджер безопасности устанавливается при запуске (как описано ранее) и также может быть позднее заменён (или отключён) динамически (в зависимости от политики, установленной в данный момент менеджером безопасности). В следующей таблице показано поведение реализации JDK для различных настроек системной переменной java.security.manager:
| Значение свойства | SecurityManager установлен при запуске | Поведение System.setSecurityManager во время выполнения |
|---|---|---|
| null | Нет | Успешно или выбросит SecurityException , если не разрешено текущим установленным менеджером безопасности |
| пустая строка ("") | java.lang.SecurityManager | Успешно или выбросит SecurityException , если не разрешено текущим установленным менеджером безопасности |
| "default" | java.lang.SecurityManager | Успешно или выбросит SecurityException , если не разрешено текущим установленным менеджером безопасности |
| "disallow" | Нет | Всегда выбросит UnsupportedOperationException
|
| "allow" | Нет | Успешно или выбросит SecurityException , если не разрешено текущим установленным менеджером безопасности |
| имя класса | указанный класс | Успешно или выбросит SecurityException , если не разрешено текущим установленным менеджером безопасности |
В будущей версии JDK значение по умолчанию системной переменной java.security.manager может быть изменено на "disallow".
Текущий менеджер безопасности возвращается методом 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 , принимающий объект контекста дополнительно к разрешению, принимает решения об доступе на основе этого контекста, а не контекста текущей выполняющейся нити. Код в другом контексте может вызвать этот метод, передав разрешение и ранее сохраненный объект контекста. Пример вызова, используя SecurityManager 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) для получения информации о разрешениях. Этот документ включает таблицу, перечисляющую различные методы SecurityManager check и разрешение(я), требуемое реализацией по умолчанию для каждого такого метода. Он также содержит таблицу методов, требующих разрешений, и указывает, какое разрешение необходимо для каждого такого метода.
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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, если вызывающему потоку запрещено использовать (включаться/выключаться/отправлять/получать) 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 если вызывающей нити не разрешено изменять аргумент нити. Этот метод вызывается текущим менеджером безопасности методами stop, suspend, resume, 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, stop, suspend, resume, и destroy класса ThreadGroup.
Если аргумент – группа системных потоков (имеющая null родителя), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThreadGroup"). Если аргумент – не группа системных потоков, метод просто возвращается без выполнения каких-либо действий.
Приложения, требующие более строгой политики, должны переопределить этот метод. Если метод переопределён, переопределяющий метод должен дополнительно проверить, имеет ли вызывающая нить разрешение RuntimePermission("modifyThreadGroup"), и если имеет, вернуть управление без выполнения каких-либо действий. Это необходимо для обеспечения возможности манипулирования любыми потоками кодом, которому это разрешение предоставлено (например, самим JDK).
Если этот метод переопределён, то super.checkAccess должен быть вызван в первой строке переопределённого метода, или эквивалентная проверка безопасности должна быть добавлена в переопределённый метод.
- Parameters:
-
g- группа потоков, подлежащая проверке. - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на изменение группы потоков. -
NullPointerException- если аргумент – группа потоковnull. - See Also:
checkExit
public void checkExit(int status)
SecurityException, если вызывающей нити не разрешено завершить работу виртуальной машины Java с указанным кодом состояния. Этот метод вызывается текущим менеджером безопасности методом exit класса Runtime. Код состояния 0 указывает на успех; другие значения указывают на различные ошибки.
Этот метод вызывает checkPermission с разрешением RuntimePermission("exitVM."+status).
Если вы переопределите этот метод, то вы должны вызвать super.checkExit в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
status- код завершения. - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на завершение работы виртуальной машины Java с указанным кодом состояния. - See Also:
checkExec
public void checkExec(String cmd)
SecurityException, если вызывающей нити не разрешено создать дочерний процесс. Этот метод вызывается текущим менеджером безопасности методами exec класса Runtime.
Этот метод вызывает checkPermission с разрешением FilePermission(cmd,"execute") если cmd – абсолютный путь, иначе вызывает checkPermission с FilePermission("<<ALL FILES>>","execute").
Если вы переопределите этот метод, то вы должны вызвать super.checkExec в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
cmd- указанная системная команда. - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на создание дочернего процесса. -
NullPointerException- если аргументcmdимеет значениеnull. - See Also:
checkLink
public void checkLink(String lib)
SecurityException, если вызывающей нити не разрешено динамически подключить библиотечный код, указанный строковым аргументом file. Аргумент представляет собой либо просто имя библиотеки, либо полное имя файла. Этот метод вызывается текущим менеджером безопасности методами load и loadLibrary класса Runtime.
Этот метод вызывает checkPermission с разрешением RuntimePermission("loadLibrary."+lib).
Если вы переопределите этот метод, то вы должны вызвать super.checkLink в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
lib- имя библиотеки. - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на динамическую загрузку библиотеки. -
NullPointerException- если аргументlibимеет значениеnull. - See Also:
checkRead
public void checkRead(FileDescriptor fd)
SecurityException, если вызывающей нити не разрешено читать из указанного дескриптора файла. Этот метод вызывает checkPermission с разрешением RuntimePermission("readFileDescriptor").
Если вы переопределите этот метод, то вы должны вызвать super.checkRead в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
fd- дескриптор файла (система-зависимый). - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на доступ к указанному дескриптору файла. -
NullPointerException- если аргумент – дескриптор файлаnull. - See Also:
checkRead
public void checkRead(String file)
SecurityException, если вызывающей нити не разрешено читать файл, указанный строковым аргументом. Этот метод вызывает checkPermission с разрешением FilePermission(file,"read").
Если вы переопределите этот метод, то вы должны вызвать super.checkRead в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
file- имя файла (система-зависимое). - Throws:
-
SecurityException- если вызывающей нити не хватает разрешения на доступ к указанному файлу. -
NullPointerException- если аргументfileимеет значениеnull. - See Also:
checkRead
public void checkRead(String file, Object context)
SecurityException, если указанный контекст безопасности не имеет разрешения на чтение файла, указанного строковым аргументом. Контекст должен быть возвращён контекстом безопасности в результате предыдущего вызова getSecurityContext. Если context является экземпляром AccessControlContext, то метод AccessControlContext.checkPermission будет вызван с разрешением FilePermission(file,"read").
Если context не является экземпляром AccessControlContext, то будет брошено исключение SecurityException.
Если вы переопределите этот метод, то вы должны вызвать super.checkRead в момент, когда переопределённый метод обычно бы бросал исключение.
- Parameters:
-
file- имя файла (система-зависимое). -
context- контекст безопасности (система-зависимый). - Throws:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, являетсяnull), или не имеет разрешения на чтение указанного файла. -
NullPointerException- если аргументfileимеет значениеnull. - See Also:
checkWrite
public void checkWrite(FileDescriptor fd)
SecurityException, если вызывающей нити запрещено запись в указанный дескриптор файла. Этот метод вызывает checkPermission с разрешением RuntimePermission("writeFileDescriptor").
Если вы переопределяете этот метод, то должны вызвать super.checkWrite в том месте, где переопределённый метод обычно бросал бы исключение.
- Parameters:
-
fd- дескриптор файла, зависящий от системы. - Throws:
-
SecurityException- если вызывающей нити запрещено получить доступ к указанному дескриптору файла. -
NullPointerException- если аргумент дескриптора файлаnull. - See Also:
checkWrite
public void checkWrite(String file)
SecurityException, если вызывающей нити запрещено запись в файл, указанный строковым аргументом. Этот метод вызывает checkPermission с разрешением FilePermission(file,"write").
Если вы переопределяете этот метод, то должны вызвать super.checkWrite в том месте, где переопределённый метод обычно бросал бы исключение.
- Parameters:
-
file- имя файла, зависящее от системы. - Throws:
-
SecurityException- если вызывающей нити запрещено получить доступ к указанному файлу. -
NullPointerException- если аргументfilenull. - See Also:
checkDelete
public void checkDelete(String file)
SecurityException, если вызывающей нити запрещено удаление указанного файла. Этот метод вызывается текущим менеджером безопасности методом delete класса File.
Этот метод вызывает checkPermission с разрешением FilePermission(file,"delete").
Если вы переопределяете этот метод, то должны вызвать super.checkDelete в том месте, где переопределённый метод обычно бросал бы исключение.
- Parameters:
-
file- имя файла, зависящее от системы. - Throws:
-
SecurityException- если вызывающей нити запрещено удалить файл. -
NullPointerException- если аргументfilenull. - 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- если аргументhostnull. - See Also:
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 в том месте, где переопределённый метод обычно бросал бы исключение.
- Parameters:
-
host- имя хоста, к которому нужно подключиться. -
port- порт протокола для подключения. -
context- контекст безопасности, зависящий от системы. - Throws:
-
SecurityException- если указанный контекст безопасности не является экземпляромAccessControlContext(например, этоnull), или не имеет разрешения открыть сокетное подключение к указанномуhostиport. -
NullPointerException- если аргументhostnull. - 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- если аргументhostnull. - 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- значение в использовании, если это отправка multicast. Примечание: эта конкретная реализация не использует параметр ttl. - Throws:
-
SecurityException- если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультипоток. -
NullPointerException- если аргумент addressnull. - 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- если аргументkeynull. -
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, если вызывающей нити не разрешен доступ к указанному пакету. Во время загрузки класса этот метод может быть вызван методом loadClass загрузчиков классов и виртуальной машиной 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, 2021, 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/17/docs/api/java.base/java/lang/SecurityManager.html