Spec-Zone.ru › OpenJDK 21

Класс SecurityManager

java.lang.Object
java.lang.SecurityManager
Прямые известные подклассы:
RMISecurityManager
@Deprecated(since="17", forRemoval=true) public class SecurityManager extends Object
Устаревшее, подлежит удалению: Этот элемент API подлежит удалению в будущей версии.
Управляющая безопасность устарела и подлежит удалению в будущей версии выпуска. Замены для управляющей безопасности нет. См. JEP 411 для обсуждения и альтернатив.
Управляющая безопасность — это класс, позволяющий приложениям реализовывать политику безопасности. Он позволяет приложению определить, прежде чем выполнить потенциально небезопасную или чувствительную операцию, что представляет собой операция и выполняется ли она в контексте безопасности, который позволяет выполнить операцию. Приложение может разрешить или запретить операцию.

Класс 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
См. также:
  • ClassLoader
  • SecurityException
  • getSecurityManager
  • setSecurityManager
  • AccessController
  • AccessControlContext
  • AccessControlException
  • Permission
  • BasicPermission
  • FilePermission
  • SocketPermission
  • PropertyPermission
  • RuntimePermission
  • Policy
  • SecurityPermission
  • ProtectionDomain

Краткое описание конструкторов

Конструктор Описание
SecurityManager()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Создаёт новый SecurityManager.

Краткое описание методов

Модификатор и тип Метод Описание
void checkAccept(String host, int port)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет разрешения принимать соединение сокета от указанного хоста и номера порта.
void checkAccess(Thread t)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права изменять аргумент потока.
void checkAccess(ThreadGroup g)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права изменять аргумент группы потоков.
void checkConnect(String host, int port)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права открывать соединение сокета с указанным хостом и номером порта.
void checkConnect(String host, int port, Object context)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если указанный контекст безопасности не имеет права открывать соединение сокета с указанным хостом и номером порта.
void checkCreateClassLoader()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права создавать новый загрузчик классов.
void checkDelete(String file)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права удалить указанный файл.
void checkExec(String cmd)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права создавать подпроцесс.
void checkExit(int status)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права принудительно останавливать виртуальную машину Java с указанным кодом состояния.
void checkLink(String lib)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права динамически подключать библиотечный код, указанный строковым аргументом file.
void checkListen(int port)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права ожидать запроса на соединение на указанном локальном номере порта.
void checkMulticast(InetAddress maddr)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права использовать (join/leave/send/receive) IP-мультикаст.
void checkMulticast(InetAddress maddr, byte ttl)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
void checkPackageAccess(String pkg)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права доступа к указанному пакету.
void checkPackageDefinition(String pkg)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права определять классы в указанном пакете.
void checkPermission(Permission perm)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если запрашиваемый доступ, указанный данным разрешением, не разрешен на основе текущей политики безопасности.
void checkPermission(Permission perm, Object context)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если указанному контексту безопасности отказано в доступе к ресурсу, указанному данным разрешением.
void checkPrintJobAccess()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права инициировать запрос на задание печати.
void checkPropertiesAccess()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права доступа или изменения системных свойств.
void checkPropertyAccess(String key)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права доступа к системному свойству с указанным именем key.
void checkRead(FileDescriptor fd)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права чтения из указанного дескриптора файла.
void checkRead(String file)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права читать файл, указанный строковым аргументом.
void checkRead(String file, Object context)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если указанный контекст безопасности не имеет права читать файл, указанный строковым аргументом.
void checkSecurityAccess(String target)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Определяет, следует ли предоставить или отказать в разрешении с указанным именем целевого объекта разрешения.
void checkSetFactory()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права устанавливать фабрику сокетов, используемую ServerSocket или Socket, или фабрику обработчиков потоков, используемую URL.
void checkWrite(FileDescriptor fd)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права записи в указанный дескриптор файла.
void checkWrite(String file)
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права записи в файл, указанный строковым аргументом.
protected Class<?>[] getClassContext()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Возвращает текущий стек выполнения в виде массива классов.
Object getSecurityContext()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Создает объект, инкапсулирующий текущую среду выполнения.
ThreadGroup getThreadGroup()
Устарело, будет удалено: Этот элемент API будет удален в будущей версии.
Возвращает группу потоков, в которую необходимо создавать любой новый поток, создаваемый в момент вызова этого метода.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

SecurityManager

public SecurityManager()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Создаёт новый SecurityManager.

Если менеджер безопасности уже установлен, этот метод сначала вызывает метод checkPermission менеджера безопасности с разрешением RuntimePermission("createSecurityManager"), чтобы убедиться, что вызывающая нить имеет разрешение на создание нового менеджера безопасности. Это может привести к исключению SecurityException.

Исключения:
SecurityException - если менеджер безопасности уже существует, и его метод checkPermission не разрешает создание нового менеджера безопасности.
См. также:
  • System.getSecurityManager()
  • checkPermission
  • RuntimePermission

Подробное описание методов

getClassContext

protected Class<?>[] getClassContext()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Возвращает текущую стек вызовов в виде массива классов.

Длина массива соответствует количеству методов в стеке вызовов. Элемент с индексом 0 — класс текущего выполняемого метода, элемент с индексом 1 — класс вызывающего метод и т. д.

Возвращает:
стек вызовов.

getSecurityContext

public Object getSecurityContext()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Создаёт объект, который инкапсулирует текущую среду выполнения. Результат этого метода используется, например, методом checkConnect с тремя аргументами и методом checkRead с двумя аргументами. Эти методы необходимы, потому что доверенный метод может быть вызван для чтения файла или открытия сокета от имени другого метода. Доверенному методу необходимо определить, разрешено ли другому (возможно, недоверенному) методу выполнить операцию самостоятельно.

По умолчанию этот метод возвращает объект AccessControlContext.

Возвращает:
зависимый от реализации объект, содержащий достаточную информацию о текущей среде выполнения для выполнения проверок безопасности позже.
См. также:
  • checkConnect
  • checkRead
  • AccessControlContext

checkPermission

public void checkPermission(Permission perm)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает SecurityException, если запрошенный доступ, указанный данным разрешением, не разрешён в соответствии с политикой безопасности, действующей в настоящее время.

Этот метод вызывает AccessController.checkPermission с заданным разрешением.

Параметры:
perm - запрошенное разрешение.
Исключения:
SecurityException - если доступ не разрешён в соответствии с текущей политикой безопасности.
NullPointerException - если аргумент разрешения является null.
С тех пор:
1.2

checkPermission

public void checkPermission(Permission perm, Object context)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает 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()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает SecurityException, если вызывающей нити не разрешено создавать новый загрузчик классов.

Этот метод вызывает checkPermission с разрешением RuntimePermission("createClassLoader").

Если вы переопределяете этот метод, то вы должны вызвать super.checkCreateClassLoader в точке, в которой переопределённый метод обычно бы бросил исключение.

Исключения:
SecurityException - если вызывающей нити не разрешено создавать новый загрузчик классов.
См. также:
  • ClassLoader()
  • checkPermission

checkAccess

public void checkAccess(Thread t)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает SecurityException, если вызывающей нити не разрешено изменять аргумент нити.

Этот метод вызывается текущим менеджером безопасности методами setPriority, setName и setDaemon класса Thread.

Если аргумент нити является системной нитью (принадлежит группе нитей с родительским элементом null), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThread"). Если аргумент нити не является системной нитью, этот метод просто возвращается бездействием.

Приложения, которые хотят более жёсткой политики, должны переопределить этот метод. Если этот метод переопределён, переопределяющий метод должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThread"), и если да, то возвращается бездействием. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может манипулировать любой нитью.

Если этот метод переопределён, то super.checkAccess должен вызываться первой инструкцией в переопределённом методе или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.

Параметры:
t - нить, подлежащая проверке.
Исключения:
SecurityException - если вызывающей нити не разрешено изменять нить.
NullPointerException - если аргумент нити является null.
См. также:
  • setDaemon
  • setName
  • setPriority
  • checkPermission

checkAccess

public void checkAccess(ThreadGroup g)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает SecurityException, если вызывающей нити не разрешено изменять аргумент группы нитей.

Этот метод вызывается для текущего менеджера безопасности при создании новой дочерней нити или дочерней группы нитей и методами setDaemon и setMaxPriority класса ThreadGroup.

Если аргумент группы нитей является системной группой нитей (имеет родительский элемент null), то этот метод вызывает checkPermission с разрешением RuntimePermission("modifyThreadGroup"). Если аргумент группы нитей не является системной группой нитей, этот метод просто возвращается бездействием.

Приложения, которые хотят более жёсткой политики, должны переопределить этот метод. Если этот метод переопределён, переопределяющий метод должен дополнительно проверить, обладает ли вызывающая нить разрешением RuntimePermission("modifyThreadGroup"), и если да, то возвращается бездействием. Это гарантирует, что код, которому предоставлено это разрешение (например, сам JDK), может манипулировать любой нитью.

Если этот метод переопределён, то super.checkAccess должен вызываться первой инструкцией в переопределённом методе или эквивалентная проверка безопасности должна быть размещена в переопределённом методе.

Параметры:
g - группа нитей, подлежащая проверке.
Исключения:
SecurityException - если вызывающей нити не разрешено изменять группу нитей.
NullPointerException - если аргумент группы нитей является null.
См. также:
  • setDaemon
  • setMaxPriority
  • checkPermission

checkExit

public void checkExit(int status)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права принудительно завершить работу виртуальной машины Java с указанным кодом состояния.

Этот метод вызывается для текущего менеджера безопасности методом exit класса Runtime. Значение 0 указывает на успех; другие значения указывают на различные ошибки.

Этот метод вызывает checkPermission с разрешением RuntimePermission("exitVM."+status).

Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkExit в точке, где переопределенный метод обычно выбрасывает исключение.

Параметры:
status - код завершения работы.
Исключения:
SecurityException - если вызывающий поток не имеет разрешения на принудительное завершение работы виртуальной машины Java с указанным кодом состояния.
См. также:
  • exit
  • checkPermission

checkExec

public void checkExec(String cmd)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает 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)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает 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)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права на чтение из указанного дескриптора файла.

Этот метод вызывает checkPermission с разрешением RuntimePermission("readFileDescriptor").

Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkRead в точке, где переопределенный метод обычно выбрасывает исключение.

Параметры:
fd - дескриптор файла, зависящий от системы.
Исключения:
SecurityException - если вызывающий поток не имеет разрешения на доступ к указанному дескриптору файла.
NullPointerException - если аргумент дескриптора файла является null.
См. также:
  • FileDescriptor
  • checkPermission

checkRead

public void checkRead(String file)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права на чтение файла, указанного строковым аргументом.

Этот метод вызывает checkPermission с разрешением FilePermission(file,"read").

Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkRead в точке, где переопределенный метод обычно выбрасывает исключение.

Параметры:
file - имя файла, зависящее от системы.
Исключения:
SecurityException - если вызывающий поток не имеет разрешения на доступ к указанному файлу.
NullPointerException - если аргумент file является null.
См. также:
  • checkPermission

checkRead

public void checkRead(String file, Object context)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает 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)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права на запись в указанный дескриптор файла.

Этот метод вызывает checkPermission с разрешением RuntimePermission("writeFileDescriptor").

Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkWrite в точке, где переопределенный метод обычно выбрасывает исключение.

Параметры:
fd - дескриптор файла, зависящий от системы.
Исключения:
SecurityException - если вызывающий поток не имеет разрешения на доступ к указанному дескриптору файла.
NullPointerException - если аргумент дескриптора файла является null.
См. также:
  • FileDescriptor
  • checkPermission

checkWrite

public void checkWrite(String file)
Устарело, предназначено для удаления: Этот элемент API будет удален в будущей версии.
Выбрасывает SecurityException, если вызывающий поток не имеет права на запись в файл, указанный строковым аргументом.

Этот метод вызывает checkPermission с разрешением FilePermission(file,"write").

Если вы переопределяете этот метод, то вы должны выполнить вызов super.checkWrite в точке, где переопределенный метод обычно выбрасывает исключение.

Параметры:
file - имя файла, зависящее от системы.
Исключения:
SecurityException - если вызывающий поток не имеет разрешения на доступ к указанному файлу.
NullPointerException - если аргумент file является null.
См. также:
  • checkPermission

checkDelete

public void checkDelete(String file)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено удалить указанный файл.

Этот метод вызывается текущим менеджером безопасности методом delete класса File.

Этот метод вызывает checkPermission с разрешением FilePermission(file,"delete").

Если вы переопределяете этот метод, вам следует вызвать super.checkDelete в том месте, где переопределённый метод обычно бы бросил исключение.

Parameters:
file - имя файла, зависящее от системы.
Throws:
SecurityException - если вызывающей нити не разрешено удалять файл.
NullPointerException - если аргумент file имеет значение null.
See Also:
  • File.delete()
  • checkPermission

checkConnect

public void checkConnect(String host, int port)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение 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:
  • checkPermission

checkConnect

public void checkConnect(String host, int port, Object context)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение 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:
  • getSecurityContext()
  • AccessControlContext.checkPermission(java.security.Permission)

checkListen

public void checkListen(int port)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено ожидать запрос подключения на указанном локальном номере порта.

Этот метод вызывает checkPermission с разрешением SocketPermission("localhost:"+port,"listen").

Если вы переопределяете этот метод, вам следует вызвать super.checkListen в том месте, где переопределённый метод обычно бы бросил исключение.

Parameters:
port - локальный порт.
Throws:
SecurityException - если вызывающей нити не разрешено прослушивать указанный порт.
See Also:
  • checkPermission

checkAccept

public void checkAccept(String host, int port)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено принять сокетное соединение с указанным хостом и номером порта.

Этот метод вызывается текущим менеджером безопасности методом accept класса ServerSocket.

Этот метод вызывает checkPermission с разрешением SocketPermission(host+":"+port,"accept").

Если вы переопределяете этот метод, вам следует вызвать super.checkAccept в том месте, где переопределённый метод обычно бы бросил исключение.

Parameters:
host - имя хоста сокетного соединения.
port - номер порта сокетного соединения.
Throws:
SecurityException - если вызывающей нити не разрешено принять соединение.
NullPointerException - если аргумент host имеет значение null.
See Also:
  • ServerSocket.accept()
  • checkPermission

checkMulticast

public void checkMulticast(InetAddress maddr)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа.

Этот метод вызывает checkPermission с разрешением java.net.SocketPermission(maddr.getHostAddress(), "accept,connect").

Если вы переопределяете этот метод, вам следует вызвать super.checkMulticast в том месте, где переопределённый метод обычно бы бросил исключение.

Parameters:
maddr - адрес интернет-группы для использования.
Throws:
SecurityException - если вызывающей нити не разрешено использовать (присоединяться/отсоединяться/отправлять/получать) IP-мультимедиа.
NullPointerException - если аргумент адреса имеет значение null.
Since:
1.1
See Also:
  • checkPermission

checkMulticast

@Deprecated(since="1.4", forRemoval=true) public void checkMulticast(InetAddress maddr, byte ttl)
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение 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:
  • checkPermission

checkPropertiesAccess

public void checkPropertiesAccess()
Deprecated, for removal: This API element is subject to removal in a future version.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено получать доступ к системным свойствам или изменять их.

Этот метод используется методами getProperties и setProperties класса System.

Этот метод вызывает checkPermission с разрешением PropertyPermission("*", "read,write").

Если вы переопределяете этот метод, вам следует вызвать super.checkPropertiesAccess в том месте, где переопределённый метод обычно бы бросил исключение.

Throws:
SecurityException - если вызывающей нити не разрешено получать доступ к системным свойствам или изменять их.
See Also:
  • System.getProperties()
  • System.setProperties(java.util.Properties)
  • checkPermission

checkPropertyAccess

public void checkPropertyAccess(String key)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено получить доступ к системной переменной с указанным именем key.

Этот метод используется методом getProperty класса System.

Этот метод вызывает checkPermission с разрешением PropertyPermission(key, "read").

Если вы переопределяете этот метод, вам необходимо вызвать super.checkPropertyAccess в том месте, где переопределенный метод обычно выбрасывает исключение.

Parameters:
key - ключ системной переменной.
Throws:
SecurityException - если вызывающей нити нет разрешения на доступ к указанной системной переменной.
NullPointerException - если аргумент key является null.
IllegalArgumentException - если аргумент key пустой.
See Also:
  • System.getProperty(java.lang.String)
  • checkPermission

checkPrintJobAccess

public void checkPrintJobAccess()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено инициировать запрос на печать.

Этот метод вызывает checkPermission с разрешением RuntimePermission("queuePrintJob").

Если вы переопределяете этот метод, вам необходимо вызвать super.checkPrintJobAccess в том месте, где переопределенный метод обычно выбрасывает исключение.

Throws:
SecurityException - если вызывающей нити нет разрешения на инициирование запроса на печать.
Since:
1.1
See Also:
  • checkPermission

checkPackageAccess

public void checkPackageAccess(String pkg)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешен доступ к указанному пакету.

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

Этот метод проверяет, начинается ли указанный пакет с любого из пакетов в свойстве безопасности package.access. Реализация также может проверить пакет против дополнительного списка ограниченных пакетов, как указано ниже. Если пакет ограничен, вызывается checkPermission(Permission) с разрешением RuntimePermission("accessClassInPackage."+pkg).

Если этот метод переопределен, то super.checkPackageAccess должен быть вызван в первой строке переопределенного метода.

Implementation Note:
Эта реализация также ограничивает все неэкспортируемые пакеты модулей, загружаемых загрузчиком платформы или его предками. «Неэкспортируемый пакет» — это пакет, который не экспортируется во все модули. В частности, это пакет, который либо вообще не экспортируется содержащим его модулем, либо экспортируется квалифицированным способом содержащим его модулем.
Parameters:
pkg - имя пакета.
Throws:
SecurityException - если вызывающей нити нет разрешения на доступ к указанному пакету.
NullPointerException - если аргумент имени пакета является null.
See Also:
  • loadClass
  • getProperty
  • checkPermission

checkPackageDefinition

public void checkPackageDefinition(String pkg)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено определять классы в указанном пакете.

Этот метод вызывается методом loadClass некоторых загрузчиков классов.

Этот метод проверяет, начинается ли указанный пакет с любого из пакетов в свойстве безопасности package.definition. Реализация также может проверить пакет против дополнительного списка ограниченных пакетов, как указано ниже. Если пакет ограничен, вызывается checkPermission(Permission) с разрешением RuntimePermission("defineClassInPackage."+pkg).

Если этот метод переопределен, то super.checkPackageDefinition должен быть вызван в первой строке переопределенного метода.

Implementation Note:
Эта реализация также ограничивает все неэкспортируемые пакеты модулей, загружаемых загрузчиком платформы или его предками. «Неэкспортируемый пакет» — это пакет, который не экспортируется во все модули. В частности, это пакет, который либо вообще не экспортируется содержащим его модулем, либо экспортируется квалифицированным способом содержащим его модулем.
Parameters:
pkg - имя пакета.
Throws:
SecurityException - если вызывающей нити нет разрешения на определение классов в указанном пакете.
NullPointerException - если аргумент имени пакета является null.
See Also:
  • ClassLoader.loadClass(String, boolean)
  • getProperty
  • checkPermission

checkSetFactory

public void checkSetFactory()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Выбрасывает исключение SecurityException, если вызывающей нити не разрешено установить сокет-фабрику, используемую ServerSocket или Socket, или фабрику обработчика потока, используемую URL.

Этот метод вызывает checkPermission с разрешением RuntimePermission("setFactory").

Если вы переопределяете этот метод, вам необходимо вызвать super.checkSetFactory в том месте, где переопределенный метод обычно выбрасывает исключение.

Throws:
SecurityException - если вызывающей нити нет разрешения на указание сокет-фабрики или фабрики обработчика потока.
See Also:
  • setSocketFactory
  • setSocketImplFactory
  • setURLStreamHandlerFactory
  • checkPermission

checkSecurityAccess

public void checkSecurityAccess(String target)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Определяет, должно ли быть разрешено или запрещено разрешение с указанным целевым именем разрешения.

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

Этот метод создает объект SecurityPermission для данного целевого имени разрешения и вызывает checkPermission с ним.

См. документацию для SecurityPermission для списка возможных целевых имен разрешений.

Если вы переопределяете этот метод, вам необходимо вызвать super.checkSecurityAccess в том месте, где переопределенный метод обычно выбрасывает исключение.

Parameters:
target - целевое имя разрешения SecurityPermission.
Throws:
SecurityException - если вызывающей нити нет разрешения на запрашиваемый доступ.
NullPointerException - если target равно null.
IllegalArgumentException - если target пустое.
Since:
1.1
See Also:
  • checkPermission

getThreadGroup

public ThreadGroup getThreadGroup()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Возвращает группу потоков, в которую нужно инициализировать любой новый поток, созданный в момент вызова. По умолчанию возвращает группу потоков текущего потока. Это должно быть переопределено конкретным менеджером безопасности для возврата соответствующей группы потоков.
Returns:
Группа потоков, в которую инициализируются новые потоки
Since:
1.1
See Also:
  • ThreadGroup

© 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

Spec-Zone.ru

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