ГОСТ Р ИСО/МЭК 17826-2015
«CDMI_ACE_LIST_CONTAINER» |0x01
acewriteitem= «CDMI_ACE_WRITE_OBJECT» |
«CDMI_ACE_ADD_OBJECT» |0x02
aceappenditem= «CDMI_ACE_APPEND_DATA» |
«CDMI_ACE_ADD_SUBCONTAINER» | 0x04
acereadmetaitem = «CDMI_ACE_READ_METADATA» | 0x08
acewritemetaitem = «CDMI_ACE_WRITE_METADATA» | 0x10
acedeleteitem= «CDMI_ACE_DELETE_OBJECT» |
«CDMI_ACE_DELETE_SUBCONTAINER» | 0x40
acedelselfitem = «CDMI_ACE_DELETE» |0x10000
acereadaclitem = «CDMT_ACE_READ_ACL» | 0x20000
acewriteaclitem
accexecuteitem
acereadattritem
= «CDMI_ACE_WRITE_ACL» |0x40000
= «CDMI_ACE_EXECUTE» | 0x80000
= «CDMI_ACE_READ_ATTRIBUTES» |0x00080
acewriteattntem = «CDMI_ACE_WRITE_ATTRIBUTES» | 0x00100
aceretentionitem = «CDMr_ACE_SET_RETENTION» | 0x10000000
Если маски АСЕ показываются в числовом формате, они должны всегда быть шестнадцатеричны
ми и начинаться с «Ох». Этот формат позволяет как серверам, так и клиентам быстро определять, какая
из двух форм использована для данной константы. Если маски представлены в строковой форме, они
должны быть преобразованы в числовой формат и затем анализироваться с использованием
стандарт ных побитовых операций.
Если при создании объекта ACL не указан и не наследуется от родительского контейнера (или
родительский контейнер отсутствует), сервер должен разместить на объекте следующий ACL:
«cdmi_acl»:
[
{
«acetype»: «ALLOW».
«identifier»: «OWNER@».
«aceflags»: «OBJECTJNHERIT. CONTAINERJNHERIT»,
«acemask»: «ALL_PERMS»
}
]
16.1.7 Пример битовых выражений АСЕ
П р и м е р ы
1 »READ_ALL» \ 0x09-0x02
вычисляет ся как 0x09
|
0x02
==
0x0
2 0x001F07FF
вычисляет ся как 0x001F07FF
==
*ALL_PERMS»
3 *RW_ALL»
|
DELETE
вычисляет ся как OxOOOOOIDF
|
0x00100000 == 0x000701DF
16.1.8 Канонический формат шестнадцатеричных параметров АСЕ
Битовые выражения АСЕ должны всегда вычисляться и приводиться к единственному шестнад
цатеричному значению перед передачей в датаграмму протокола HTTP. Приложения или утилиты, ото
бражающие их для пользователей, должны преобразовывать их в текстовое представление и прини
мать текстовый ввод от пользователя. Для этого следует использовать побитовые операторы «|» и «&».
Для разложения маски в строки следует использовать следующий алгоритм. Таблица масок и
строковых эквивалентов должна поддерживаться в порядке от большего к меньшему:
0x001 F07FF
0x00060O6F
0x0000001 F
«ALL_PERMS»«ALL_PERMS»
«RVV_ALL» «RW_ALL»
«RW»«RW*
0x00000002 «WRITE_OBJECT» «ADD_OBJECT»
0x00000001«READ_OBJECT»«LIST_CONTAINER»
Например, для маски M следует повторять следующие шаги, пока не установится М == 0:
1 Выбрать наибольшую маску m из таблицы, такую что М & m == m.
127