Re: Inherited Security

From
Alex Fedotov ()
To
Alexander Filatov ()
Date
2001-11-02T12:37:40Z
Area
SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <me@alexfedotov.com>

Alexander Filatov wrote:

> > А чем пользуешься для получения security descriptor?
> > GetNamedSecurityInfo все нормально выдает, как собственные, так и
> > наследованные ACEs. А потом, хочешь GetEffectiveRightsFromAcl,
> > хочешь AccessCheck.
>
> Я пробовал GetFileSecurity/GetSecurityDescriptorDacl равно как и
> GetNamedSecurityInfo. Ни тот ни другой мне не дают унаследованных прав.
> Только явные. (Что я делаю не так?)

Ну откуда я знаю, что ты делаешь не так, когда ты еще ни строчки кода не
показал. Вот код:

    PACL pAcl;
    PACCESS_ALLOWED_ACE pAce;
    PSECURITY_DESCRIPTOR pSecDesc;
    PWSTR pszSid;

    if (GetNamedSecurityInfo(_T("D:\\Projects"), SE_FILE_OBJECT,
                         DACL_SECURITY_INFORMATION, NULL, NULL,
                         &pAcl, NULL, &pSecDesc) == ERROR_SUCCESS)
    {
        _ASSERTE(pSecDesc != NULL);
        _ASSERTE(pAcl != NULL);

        for (UINT i = 0; i < pAcl->AceCount; i++)
        {
            GetAce(pAcl, i, (PVOID *)&pAce);
            ConvertSidToStringSid((PSID)&pAce->SidStart, &pszSid);

            ATLTRACE(_T("Type: %d, Flags: 0x%02X, Mask: 0x%08X, Sid:
%ls\n"),
                     pAce->Header.AceType, pAce->Header.AceFlags,
                     pAce->Mask, pszSid);

            LocalFree((HLOCAL)pszSid);
        }

        LocalFree((HLOCAL)pSecDesc);
    }

А вот его выдача:

Type: 0, Flags: 0x03, Mask: 0x001200A9, Sid: S-1-5-21-1687947936-...
Type: 0, Flags: 0x03, Mask: 0x001200A9, Sid: S-1-5-18
Type: 0, Flags: 0x03, Mask: 0x001200A9, Sid: S-1-5-21-1687947936-...
Type: 0, Flags: 0x13, Mask: 0x001F01FF, Sid: S-1-5-32-544
Type: 0, Flags: 0x12, Mask: 0x001200A9, Sid: S-1-5-11

Как видишь, сначала идут три собственные ACEs, а потом две наследованные.

> Сорри, если я неправильно выразился. Еще раз. Мне нужен _список_ всех
> прав, аналогично тому, что можно посмотреть в свойствах файла.
> Соответственно, ни GetEffectiveRightsFromAcl ни AccessCheck здесь, мягко
> говоря, не удобны.

Понятно. Список так список.

-- Alex Fedotov

--- ifmail v.2.15dev5
 * Origin: Undisclosed (2:5020/400)