Каждый ACE в дескрипторе безопасности (security descriptor) содержит 32-х битную маску доступа. Что означают отдельные биты в этой маске?
Маска доступа представляет собой 32-х битное значение. Верхние (старшие) 16 бит определяются операционной системой, а нижние (младшие) 16 бит - защищаемым объектом.
Например, в качестве маски доступа рассмотрим значение $00060002. Это значение разбивается на определяемые системой правила WRITE_DAC ($00040000) и READ_CONTROL ($00020000) и одно правило, определяемое объектом: $0002.
Смысл правила доступа $0002, определяемого объектом, зависит от типа объекта. Конкретно это значение ($0002) может иметь любой из следующих смыслов:
Смысл | Если объект - это... |
---|---|
FILE_WRITE_DATA | файл |
FILE_ADD_FILE | каталог |
PROCESS_CREATE_THREAD | процесс |
THREAD_SUSPEND_RESUME | поток |
JOB_OBJECT_SET_ATTRIBUTES | задание |
EVENT_MODIFY_STATE | событие |
SEMAPHORE_MODIFY_STATE | семафор |
TIMER_MODIFY_STATE | таймер |
IO_COMPLETION_MODIFY_STATE | порт завершения ввода-вывода |
KEY_SET_VALUE | ключ реестра |
TOKEN_DUPLICATE | токен |
WINSTA_READATTRIBUTES | оконная станция |
DESKTOP_CREATEWINDOW | десктоп |
или может иметь совершенно иной смысл, если тип объекта не принадлежит этому списку.
Если вы попросите функцию ConvertSecurityDescriptorToStringSecurityDescriptor перевести дескриптор безопасности в строковое представление, она попытается угадать тип объекта. Но поскольку здесь очень мало информации, то чаще всего она ошибается. К примеру, наша маска доступа из примера будет переведена в SDDL как "DCRCWD". Права RC = READ_CONTROL и WD = WRITE_DAC являются стандартными правами для любых объектов, но для $0002 SDDL предположил, что это DC = ADS_RIGHTS_DS_DELETE_CHILD.
Заметьте, что существует ещё несколько системных кодов, содержащих "GENERIC" в своём имени - к примеру, GENERIC_READ или GENERIC_WRITE. Каждый из типов объектов по-разному определяют права доступа "на чтение", "на запись" и, возможно, "на выполнение" (например, у ключей реестра есть KEY_QUERY_VALUE и KEY_SET_VALUE). Но все эти типы должны задать соответствие: какие из их прав являются правами чтения, записи и выполнения, так что вы можете запросить только маску доступа типа GENERIC и получить соответствующий вашему выбору маски набор прав - в зависимости от типа объекта.
Комментариев нет:
Отправить комментарий
Можно использовать некоторые HTML-теги, например:
<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>
Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.
Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.
Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.
Примечание. Отправлять комментарии могут только участники этого блога.