Главная » Java » Классы семейства Permission

0

 

  Разрешения (permissions), позволяющие приложениям выполнять те или иные операции, можно поделить на несколько категорий, каждой из которых отвечает определенный класс:

 

* файлы — Java. io.FilePermission;

 

* сети — java. net. NetPermission;

 

* свойства (properties) — Java, uti 1. Property Ре rmi ssion;

 

* рефлексия (reflection) — Java, lang. reflect.ReflectPermi ssion;

 

* разрешения  на осуществление системных операций  периода выполнения

   (runtime) — Java. lang. RuntimePermi ssion;

* безопасность — Java, security.SecurityPermi ssion;

 

* сериализация (serialization) — Java, io. Seri al i zablePermi ssion;

 

* сетевые соединения (sockets) — Java, net. SocketPermi ssion.

 

 Все перечисленные классы, за исключением FilePermi ssion и SocketPermi ssion, наследуют абстрактный класс Java.security. BasicPermi ssion, который, в свою очередь, является производным от класса верхнего уровня, служащего фундаментом для всего семейства типов permission, Java.security.Permission. Класс Basicpermission определяет

объекты простых базовых (basic) разрешений, адресуемых по имени. Так, на пример, объект RuntimePermi ssion, созданный на основе строки "exitVM", представляет разрешение на вызов метода Runtime .exit, имеющего целью за крытие (shutdown) исполняющей системы. Ниже приведены некоторые другие допустимые наименования разрешений типа RuntimePermission:

 

*"createdassLoader" — вызов конструктора класса ClassLoader;

 

*"setSecurityManager" — вызов метода System.setSecurityManager;

 

* "modifyThread" — вызов методов interrupt, setpriority, setDaemon

    или setName объекта класса Thread.

 

   Базовые разрешения соответствуют правам, которыми приложение либо обладает, либо нет. Наименования базовых разрешений следуют той же иерархической схеме, которая принята для системных свойств (system properties) (см. раздел 18.1.2). В конце имени после символа точки (" . ") допускается задание символа "*" (имя может состоять и из единственной звездочки), который трактуется как маска поиска (wildcard). Так, например, строки "Java.*" и "*" воспринимаются как верные, a "*Java" или "х*у" — как некорректные.

  Классы FilePermission и SocketPermission непосредственно наследуют базовый тип Permission. Имена разрешений, используемые при создании объектов этих классов, следуют более сложным и нетрадиционным синтаксическим правилам по сравнению с базовыми. Для объекта FilePermission, например, имя разрешения представляет собой наименование пути к файлу: завершающий символ "*", которому предшествует "/", в этом случае может служить для обозначения права доступа ко всем файлам указанного каталога, а "-" — для санкционирования доступа к содержимому заданного каталога и всех его подкаталогов.

  Многим объектам разрешений может быть поставлен в соответствие и список действий (action list), уточняющий круг операций, которые позволено осуществлять. Список действий для объекта FilePermission, например, способен содержать любую комбинацию строк "read", "write", "execute" и "delete , обозначающих, какие именно функции могут быть выполнены по отношению заданному файлу или каталогу. Для многих объектов базовых разрешений списки действий не задаются, но для некоторых, таких как Property РеrmiSSion, они находят применение: имя разрешения, передаваемое при создании объекта propertyPermission, обозначает наименование системного свойства, а список действий, который может содержать строки "read" или "write", указывает, допустимо ли по отношению к названному свойству вызывать методы System. getProperty и System. setProperty соответственно. Например, объект PropertyPermission с именем свойства "Java.*" и строкой действия "read" позволяет получать информацию о содержимом всех системных свойств, названия которых начинаются с последовательности символов "Java. ".

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии