Поделиться через


Права безопасности и доступа объектов синхронизации

Модель безопасности Windows позволяет управлять доступом к объектам события, мьютекса, семафора и таймера ожидания. Очереди таймера, заблокированные переменные и критически важные объекты разделов не являются защищаемыми. Дополнительные сведения см. в Access-Controlмодели.

Вы можете указать дескриптора безопасности для объекта синхронизации между процессами при вызове функции CreateEvent, CreateMutex, CreateSemaphoreили Функции CreateWaitableTimer. Если указать NULL, объект получает дескриптор безопасности по умолчанию. списковAccess-Control (списки управления доступом) в дескрипторе безопасности по умолчанию для объекта синхронизации, исходя из первичного или олицетворения создателя.

Чтобы получить или задать дескриптор безопасности объекта события, мьютекса, семафора или ожидающего таймера, вызовите GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfoили функции SetSecurityInfo.

Маркеры, возвращаемые CreateEvent, CreateMutex, CreateSemaphoreи CreateWaitableTimer имеют полный доступ к новому объекту. При вызове OpenEvent, OpenMutex, OpenSemaphoreи функции OpenWaitableTimer система проверяет запрошенные права доступа к дескриптору безопасности объекта.

Допустимые права доступа для объектов межпроцессной синхронизации включают стандартные права доступа и некоторые права доступа для конкретного объекта. В следующей таблице перечислены стандартные права доступа, используемые всеми объектами.

Ценность Значение
DELETE (0x00010000L) Требуется для удаления объекта.
READ_CONTROL (0x00020000L) Требуется для чтения сведений в дескрипторе безопасности для объекта, не включая сведения в SACL. Чтобы прочитать или записать SACL, необходимо запросить право доступа ACCESS_SYSTEM_SECURITY. Дополнительные сведения см. в разделе права доступа SACL.
СИНХРОНИЗАЦИЯ (0x00100000L) Право использовать объект для синхронизации. Это позволяет потоку ждать, пока объект не находится в сигнальном состоянии.
WRITE_DAC (0x00040000L) Требуется изменить DACL в дескрипторе безопасности для объекта.
WRITE_OWNER (0x00800000L) Требуется изменить владельца в дескрипторе безопасности для объекта.

 

В следующей таблице перечислены права доступа, относящиеся к объекту, для объектов событий. Эти права поддерживаются в дополнение к стандартным правам доступа.

Ценность Значение
EVENT_ALL_ACCESS (0x1F0003) Все возможные права доступа для объекта события. Используйте это право только в том случае, если приложению требуется доступ за рамки стандартных прав доступа и EVENT_MODIFY_STATE. Использование этого права доступа повышает вероятность того, что приложение должно запускаться администратором.
EVENT_MODIFY_STATE (0x0002) Измените доступ к состоянию, который требуется для SetEvent, ResetEvent и Функции PulseEvent.

 

В следующей таблице перечислены права доступа для объектов мьютекса, относящиеся к объекту. Эти права поддерживаются в дополнение к стандартным правам доступа.

Ценность Значение
MUTEX_ALL_ACCESS (0x1F0001) Все возможные права доступа для объекта мьютекса. Используйте это право только в том случае, если приложению требуется доступ за пределами этого уровня, предоставленного стандартными правами доступа. Использование этого права доступа повышает вероятность того, что приложение должно запускаться администратором.
MUTEX_MODIFY_STATE (0x0001) Зарезервировано для дальнейшего использования.

 

В следующей таблице перечислены права доступа для объектов семафора, относящиеся к объекту. Эти права поддерживаются в дополнение к стандартным правам доступа.

Ценность Значение
SEMAPHORE_ALL_ACCESS (0x1F0003) Все возможные права доступа для объекта семафора. Используйте это право только в том случае, если приложению требуется доступ за рамки стандартных прав доступа и SEMAPHORE_MODIFY_STATE. Использование этого права доступа повышает вероятность того, что приложение должно запускаться администратором.
SEMAPHORE_MODIFY_STATE (0x0002) Измените доступ к состоянию, который требуется для функции ReleaseSemaphore.

 

В следующей таблице перечислены права доступа для объектов таймера, предназначенных для конкретного объекта. Эти права поддерживаются в дополнение к стандартным правам доступа.

Ценность Значение
TIMER_ALL_ACCESS (0x1F0003) Все возможные права доступа для объекта таймера ожидания. Используйте это право только в том случае, если приложению требуется доступ за рамки стандартных прав доступа и TIMER_MODIFY_STATE. Использование этого права доступа повышает вероятность того, что приложение должно запускаться администратором.
TIMER_MODIFY_STATE (0x0002) Измените доступ к состоянию, который необходим для функций SetWaitableTimer и CancelWaitableTimer.
TIMER_QUERY_STATE (0x0001) Зарезервировано для дальнейшего использования.

 

Чтобы прочитать или записать SACL объекта межпроцессной синхронизации, необходимо запросить право ACCESS_SYSTEM_SECURITY доступа. Дополнительные сведения см. в Access-Control списков (ACL) и права доступа SACL.