Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Права объекта и доступ к объекту



Объект, например файл, получает свои права при создании, хотя они могут быть изменены позже. Процесс запрашивает доступ к объекту в тех случаях, когда он хочет использовать дескриптор, например при обращении к CreateFile. Запрос дескриптора содержит в одном из своих параметров необходимый доступ, например GENERIC_READ. Если процесс имеет права на получение требуемого доступа, запрос проходит успешно. Разные дескрипторы одного и того же объекта могут иметь различный доступ. Для флагов доступа применяются те же значения, которые используются для предоставления или запрещения прав при создании ACL.

Инициализация описателя безопасности

Работа с дескриптором начинается с его инициализации. При этом в параметре psd необходимо указать адрес правильной структуры SECURITY_DESCRIPTOR. Эти структуры не прозрачны для программиста, и для работы с ними применяются определенные функции.

Параметру dwRevision присваивается значение константы SECURITY_DES-CRIPTOR_REVISION

BOOL InitializeSecurityDescriptor (PSECURITY_DESCRIPTOR psd, DWORD dwRevision)

Идентификаторы безопасности

Идентификаторы SID применяются в Win32 для опознания пользователей и групп. Программа может искать SID по имени учетной записи, которая соответствует пользо­вателю, группе, домену и т.д. Учетная запись может находиться в удаленной системе.

BOOL LookupAccountName (LPCTSTR lpszSystem,

LPCTSTR lpszAccount, PSID psid, LPDWORD lpcbSid,

LPTSTR lpszReferencedDomain, LPDWORD lpcchReferencedDomain,

PSID_NAME_USE psnu)

Параметры

lpszSystem и lpszAccount указывают на имена системы и учетной записи. Часто lpszSystem присваивается значение NULL, чтобы указать на локальную систему.

psid — возвращаемая информация, которая имеет размер *lpcbSid. Если буфер недостаточно велик, функция завершается с ошибкой, возвращая требуемый размер.

lpszReferencedDomain — строка длиной *lpcchReferencedDomain символов. Параметр длины должен быть инициализирован в размер буфера (сбои обрабатывают­ся обычным протоколом). Возвращаемое значение определяет домен, в котором нахо­дится искомое имя. Имя учетной записи "Administrators" возвращает "BUILTIN", тогда как имя учетной записи пользователя возвращает то же самое имя пользователя.

Параметр psnu указывает на переменную SID_NAME_USE (перечислимого типа) и может проверяться на такие значения, как SidTypeWellKnownGroup, SidTypeUser, SidTypeGroup и т.д.

BOOL LookupAccountSid (LPCTSTR lpszSystem, PSID psid,LPTSTR lpszAccount, LPDWORD lpcchName,LPTSTR lpszReferencedDomain,

LPDWORD lpcchReferencedDomain, PSID_NAME__USE psnu)

Функция LookupAccountSid позволяет проделать обратный процесс, указав SID и получив имя учетной записи. Именем учетной записи может быть любое доступное для процесса имя. Некоторые имена, такие как Everyone (Все), хорошо известны. Имя учетной записи пользователя данного процесса (данного сеанса) можно получить с помощью функции

BOOL GetUserName (LPTSTR lpBuffer, LPDWORD lpcchBuffer)

Имя пользователя и его длина возвращаются обычным способом. Создавать SID и управлять ими можно с помощью таких функций, как InitializeSid и AllocateAndInitializeSid. Но примеры ограничены лишь идентификаторами, полученными по именам учетных записей.

Как только SID станут известны, они могут быть введены в инициализированный дескриптор безопасности.

BOOL SetSecurityDescriptbrOwner (PSECURITY__DESCRIPTOR psd,

PSD psidOwner, BOOL fOwnerDefaulted)





Дата публикования: 2015-11-01; Прочитано: 269 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...