Кому что разрешено в системном реестре¶
Автор: Владимир Меркулов
Компания: Janet systems
- Создавать, удалять, и производить какие-либо изменяющие действия с элементами реестра, имеющими статус "системных", нельзя никому, даже Администратору;
- За исключением первого правила, Администратор в системе может выполнять любые действия, вне зависимости от настроек прав доступа. Даже если в настройках доступа пользователю "Администратор" явно запрещено выполнять те или иные действия, он все равно может их совершать.
Ниже подробно описаны все действия над элементами системного реестра и условия, необходимые для их выполнения.
Работа со схемой данных (пакеты, классы)¶
Основное правило работы со схемой: изменять схему данных системного реестра может только администратор.
Управление пакетами
| Действие | Кто может выполнять |
| Создать новый пакет верхнего уровня | Администратор |
| Создать вложенный пакет | Администратор, если родительский пакет не системный. В противном случае вложенный пакет создать нельзя |
| Изменить имя пакета | никто |
| Удалить пакет | Администратор, если пакет не системный. А противном случае пакет удалить нельзя |
Управление классами
| Действие | Кто может выполнять |
| Создать новый класс | Администратор, если пакет, в котором создается класс не системный. В противном случае класс создать нельзя |
| Изменить имя класса | никто |
| Изменить родительский класс | никто |
| Переместить класс в другой пакет | никто |
| Удалить класс | Администратор, если класс не системный. А противном случае класс удалить нельзя |
| Создать новое свойство | Администратор, если класс не системный. А противном случае свойства создавать нельзя |
| Переименовать свойство | Администратор, если класс не системный. А противном случае свойства переименовывать нельзя |
| Изменить тип свойства | никто |
| Удалить свойство | Администратор, если класс не системный. А противном случае свойства удалять нельзя |
| Создать новое разрешение | Администратор, если класс не системный. А противном случае разрешения создавать нельзя |
| Переименовать разрешение | Администратор, если класс не системный. А противном случае разрешения переименовывать нельзя |
| Удалить разрешение | Администратор, если класс не системный. А противном случае разрешения удалять нельзя |
| Изменить права доступа в отношении класса | Администратор |
Работа с данными (объекты, группы)¶
Каждый элемент данных (объект или группы объектов) имеет владельца (owner) и дополнительный флаг видимости (is_public), который определяет, является ли данный элемент публично доступным, или он доступен только для своего владельца.
Понятие "доступен" применительно к группам объектов означает:- Создание и удаление группы;
- Переименование группы;
- Добавление и удаление дочерних групп
- Назначение прав доступа для группы
- Чтение значений свойств данного объекта
Остальные действия, которые могут быть совершены над объектами, определяются настройками прав доступа, заданными для следующих разрешений (см. http://ijanet.org/projects/janet/repository/entry/trunk/java/src/janet/services/registry/RegPermission.java):
| Разрешение | Описание |
System.Object:Create |
Определяет разрешение на создание объектов. При задании на уровне класса означает разрешение создавать объекты данного класса. При задании на уровне типизированной группы объектов означает разрешение добавлять объекты в эту группу |
System.Object:View |
Определяет разрешение на чтение значений свойств объектов. При задании на уровне класса означает разрешение читать значения свойств любого объекта данного класса. При задании на уровне типизированной группы объектов означает разрешение читать значения свойств любого объекта в данной группе. При задании на уровне конкретного объекта означает разрешение читать значения его свойств |
System.Object:Edit |
Определяет разрешение на редактирование объектов. При задании на уровне класса означает разрешение редактировать любой объект данного класса. При задании на уровне типизированной группы объектов означает разрешение редактировать любой объект в данной группе. При задании на уровне конкретного объекта означает разрешение редактировать данный объект |
System.Object:Delete |
Определяет разрешение на удаление объектов. При задании на уровне класса означает разрешение удалять любой объект данного класса. При задании на уровне типизированной группы объектов означает разрешение исключать любой объект из данной группы. При задании на уровне конкретного объекта означает разрешение на удаление данного объекта |
System.Object:ManageAccess |
Определяет разрешение на управление доступом к объектам. При задании на уровне класса означает разрешение назначать права доступа для любого объекта данного класса. При задании на уровне типизированной группы объектов означает разрешение назначать права доступа для любого объекта в данной группе. При задании на уровне конкретного объекта означает разрешение управлять доступом к данному объекту |
Управление объектами
| Действие | Кто может выполнять | |
Объект публичный (is_public = true) |
Объект приватный (is_public = false) |
|
| Создать объект | Администратор, а также любой пользователь, имеющий разрешение System.Object:Create на класс создаваемого объекта. Пользователь, создавший объект, становится его Владельцем |
|
| Получить (увидеть) объект | Любой пользователь | |
| Получить значения свойств объекта | Любой пользователь | Администратор или Владелец, а также любой пользователь, имеющий разрешение System.Object:View на данный объект |
| Изменить значения свойств объекта | Администратор или Владелец, а также любой пользователь, имеющий разрешение System.Object:Edit на данный объект |
|
| Удалить объект | Администратор, Владелец, а также любой пользователь, имеющий разрешение System.Object:Delete на данный объект |
|
| Изменить права доступа в отношении объекта | Администратор, Владелец, а также любой пользователь, имеющий разрешение System.Object:ManageAccess на данный объект |
|
Управление группами
Группы объектов в системном реестре образуют набор деревьев, где корень каждого дерева - группа верхнего уровня.Смысл ограничений, накладываемых на работу с группами, сводится к следующему:
- Если корень дерева публичный (
is_public = true), то все элементы дерева также должны быть публичными; - Если корень дерева приватный (
is_public = false), то все элементы дерева также должны быть приватными, причем все должны принадлежать одному и тому же Владельцу; - Управление публичными группами может осуществлять любой пользователь;
- Управление приватными группами может осуществлять только Владелец или Администратор;
- Публичные группы не могут использоваться для назначения прав доступа.
| Действие | Кто может выполнять | |
Группа публичная (is_public = true) |
Группа приватная (is_public = false) |
|
| Создать группу | Любой пользователь, если создается группа верхнего уровня или если родительская группа публичная. В остальных случаях группу создать нельзя | Любой пользователь, если создается группа верхнего уровня. Владелец родительской группы, если родительская группа приватная и не является системной. В остальных случаях группу создать нельзя |
| Просмотреть группу (ее свойства и список входящих объектов) | Любой пользователь | |
| Переименовать группу | Любой пользователь | Администратор или Владелец, если группа не является системной. В противном случае переименовать группу нельзя |
| Добавить объект в группу и удалить объект из группы | Любой пользователь | Администратор или Владелец, если он имеет разрешение System.Object:ManageAccess на данный объект |
| Удалить группу | Любой пользователь | Администратор или Владелец, если группа не является системной. В противном случае удалить группу нельзя |
| Изменить права доступа в отношении группы | Никто | Администратор или Владелец |