Атрибуты безопасности

We use cookies. Read the Privacy and Cookie Policy

Атрибуты безопасности

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

Почти для всех объектов, создаваемых при помощи системного вызова Create, предусмотрен параметр атрибутов безопасности (security attributes). Следовательно, программы могут защищать файлы, процессы, потоки, события, семафоры, именованные каналы и так далее. Первым шагом является включение указателя на структуру SECURITY_ATTRIBUTES в вызов Create. До сих пор мы всегда указывали в своих программах значение NULL для этого указателя или же использовали структуру SECURITY_ATTRIBUTES просто для создания наследуемых дескрипторов (глава 6). В реализации защиты объекта важную роль играет элемент lpSecurityDescriptor структуры SECURITY_ATTRIBUTES, являющийся указателем на дескриптор безопасности (security descriptor), который содержит описание владельца объекта и определяет, каким пользователям предоставлены те или иные права доступа или в каких правах им отказано.

Структура SECURITY_ATTRIBUTES была введена в главе 6, но для удобства мы еще раз приведем ее полное определение.

typedef struct _SECURITY_ATTRIBUTES {

 DWORD nLength;

 LPVOID lpSecurityDescriptor;

 BOOL bInheritHandle;

} SECURITY ATTRIBUTES;

Значение параметра nLength следует устанавливать равным:

sizeof(SECURITY_ATTRIBUTES)

Параметр bInheritHandle управляет свойствами наследования дескриптора объекта другими процессами.

Отдельные компоненты дескриптора безопасности описываются в следующем разделе.