На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Working With ACLs and ACEs



Windows NT version 4.0 provides a new group of high-level access control functions for working with access-control lists (ACLs) and security descriptors. These functions make it easier to create new ACLs or to modify existing ACLs.

The SetEntriesInAcl function creates a new ACL. SetEntriesInAcl can specify a completely new set of ACEs for the ACL, or it can merge new ACEs with the ACEs of an existing ACL. SetEntriesInAcl uses an array of EXPLICIT_ACCESS structures to specify the information for the new ACEs. Each EXPLICIT_ACCESS structure contains information that describes a single ACE. This information includes the access rights, the type of ACE, the flags that control ACE inheritance, and a TRUSTEE structure that identifies the trustee.

To add a new ACE to an existing ACL

1. Use the GetSecurityInfo or GetNamedSecurityInfo function to get the existing DACL or SACL from an object's security descriptor.
2. Use the BuildExplicitAccessWithName function to fill EXPLICIT_ACCESS structures with the information needed to describe each new ACE.
3. Call SetEntriesInAcl, specifying the existing ACL and the array of EXPLICIT_ACCESS structures. SetEntriesInAcl allocates and initializes the ACL and its ACEs.

4. Call the SetSecurityInfo or SetNamedSecurityInfo function to attach the new ACL to the object's security descriptor.



For an example that merges a new ACE into an existing ACL, see Allowing Access.
The SetEntriesInAcl function merges the new ACE information with the existing ACEs in the ACL. Consider the case, for example, in which the existing ACL grants access to a specified trustee and an EXPLICIT_ACCESS structure denies access to the same trustee. In this case, SetEntriesInAcl adds a new access-denied ACE for the trustee and deletes or modifies the existing access-allowed ACE for the trustee.

The SetEntriesInAcl function ensures that ACEs are in the correct order in the new ACL. The function positions all access-denied ACEs at the beginning of the ACL's list of ACEs, ahead of any access-allowed ACEs.
The high-level access-control functions use the TRUSTEE structure to identify a trustee. This structure enables you to use a name string or a SID to identify a trustee. If you use a name, the SetEntriesInAcl function performs the tasks of allocating the SID buffers and looking up the SID that corresponds to the account name. There are two helper functions, BuildTrusteeWithSid and BuildTrusteeWithName, that initialize a TRUSTEE structure with a specified SID or name. Three other helper functions, GetTrusteeForm, GetTrusteeName, and GetTrusteeType, retrieve the values of the various members of a TRUSTEE structure.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Работа С ACLs и АСАМИ



Версия Окна NT 4.0 обеспечивает новую группу управляющих функций высокоуровневого доступа для работы с иметь доступ к-управляющим спискам (ACLs) и дескрипторы безопасности. Эти функции делают это легче, чтобы создавать новый ACLs или, чтобы модифицировать существовать ACLs.

Функция SetEntriesInAcl создает новый ACL. SetEntriesInAcl МОЖЕТ определить полностью новый набор ПЕР.ТОК для ACL, или это может объединить новый ПЕР.ТОК с ПЕР.ТОК существующего ACL. SetEntriesInAcl ИСПОЛЬЗУЕТ массив структур EXPLICIT_ACCESS, чтобы определять информацию для новых АСОВ. Каждая структура EXPLICIT_ACCESS содержит информацию, которая описывает единственного АСА. Эта информация включает права доступа, тип АСА, флаги, которые управляют наследством АСА, и структурой ПОПЕЧИТЕЛЯ, которые идентифицируют попечителя.

Чтобы добавлять нового АСА к существующему ACL

1. Используйте GetSecurityInfo или функцию GetNamedSecurityInfo, чтобы получать существующий DACL или SACL из объектного дескриптора безопасности.
2. Используйте функцию BuildExplicitAccessWithName, чтобы заполнять структуры EXPLICIT_ACCESS информацией, которой нужно описывать каждого нового АСА.
3. Назовите SetEntriesInAcl, определяющее существующий ACL и массив структур EXPLICIT_ACCESS. SetEntriesInAcl РАСПРЕДЕЛЯЕТ и инициализирует ACL и АСОВ.

4. Назовите SetSecurityInfo или функцию SetNamedSecurityInfo, чтобы подключать новый ACL к объектному дескриптору безопасности.



Для примера, который объединяет нового АСА в существующий ACL, смотри Допускать Доступа.
Функция SetEntriesInAcl объединяет новую информацию АСА с существующим ПЕР.ТОК в ACL. Рассматривайте случай, например, в котором существующий доступ субсидий ACL к определенному попечителю и структура EXPLICIT_ACCESS запрещит доступ к тому же попечителю. В этом случае, SetEntriesInAcl добавляет нового запрещенного АСА доступа для попечителя и удаляет или модифицирует существующего допущенного АСА доступа для попечителя.

Функция SetEntriesInAcl проверяет, что ПЕР.ТОКИ - в правильном порядке в новом ACL. Функция позиционирует все запрещенные ПЕР.ТОКИ доступа в начале списка ACL's ПЕР.ТОК, впереди любых допущенных АСОВ доступа.
Высокоуровневый доступ-управление функционирует использованию структуру ПОПЕЧИТЕЛЯ, чтобы идентифицировать попечителя. Эта структура позволяет Вам, чтобы использовать строку имени или SID, чтобы идентифицировать попечителя. Если Вы используете имя, функция SetEntriesInAcl выполняет задачи распределения буферов SID и ищущий SID, что переписывается в учетное имя. Есть две функции помощника, BuildTrusteeWithSid и BuildTrusteeWithName, что инициализировать структуру ПОПЕЧИТЕЛЯ с определенным SID или называть. Три других функции помощника, GetTrusteeForm, GetTrusteeName, и GetTrusteeType, извлекают величины различных участников структуры ПОПЕЧИТЕЛЯ.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz