Share via


Мелочи: Как устанавливать ACL'ы и создавать SECUIRTY_DESCRIPTOR'ы

?????? ??????? ?????????? ACL (Access Control List) ?? ????? ??? ?????-?? ?????? ???????, ????? ????? ? registry, COM ??????? ??? ?????????? ??? ?????-??????. ? ?????? ??? ????? ???? ?????-?????? ??????? ????? ????? CoInitializeSecurity ??? COM ???????? ??? SetFileSecurity ??? ??????.

??? ?????? ???? ???? - ??? ??? ????????? ?????????? ? ????????? ????????? SECURITY_DESCRIPTOR. ? ????? ?? ????????? ???????????, ??? ?? ?? ???????, ?? ?????? ?????? ????? ?????????????? ?? ??????? ??????? ??????? ?????? InitializeSecurityDescriptor, ConvertStringSidToSidW, SetSecurityDescriptorOwner, InitializeAcl, AddAccessAllowedAce and SetSecurityDescriptorDacl (???????? ?? ?????-?????? ????, ???? ???? ?????? ?????????).

??????, ???? ??????????? ????? ??????? ?????? ? ?????????????? Security Descriptor String Format, SDDL ? ???????????? ?????? ConvertStringSecurityDescriptorToSecurityDescriptor. ??? ???????? ???:

    PSECURITY_DESCRIPTOR psd = NULL;
    ULONG   cSDSize = 0;

    if ( ! ConvertStringSecurityDescriptorToSecurityDescriptor(
            L"O:BAD:(A;;GAFA;;;SY)(A;;GAFA;;;BA)",
            SDDL_REVISION_1, &psd, &cSDSize
            )
        )
    {
         // ??????? ????-????? ?? ?????? ???????????? ??????????????
    }

    ... ???????????? SECURITY_DESCRIPTOR ? psd

    // ?? ?????? ?????????? ???, ????? ??? ?? ?????
    if ( psd ) LocalFree(psd);

?????????? ?????? L"O:BAD:(A;;GAFA;;;SY)(A;;GAFA;;;BA)" ????????, ??? ?????????? ??????? (O:) ?????? ???? ????? ?????? ADMINISTRATORS (BA), ? ??? ??? ? SYSTEM (SY) ????? ??? ????? (GA) ? ???????? (FA) ????? (D:) ??? ????? ???????.

?????? ??? ?????? ?????????? ?????:
O:sid_?????????
G:sid_??????
D:?????_dacl(ace1)(ace2)...(acen)
S:?????_sacl(ace1)(ace2)...(acen)
(??????, ??? ?????? ? ???????, ????? ?????? ?? ?????)

SID ????????? ? ?????? ????? ???????????? ? ??????? ??????? (????? S-1-5-32-544) ??? ??????????? ?????????? (????? BA), ??????? ????? ????? ????? ? ?????. ACE'? ??????????? ? SDDL ???????. ??? ?????????? ?????? ? ?????????.

Comments

  • Anonymous
    January 01, 2003
    Да, по ссылкам вроде все и описано. Просто вам вместо BA нужно AU вроде бы (администраторы тоже являются пользователями), вот и все. "AU" SDDL_AUTHENTICATED_USERS Authenticated users. The corresponding RID is SECURITY_AUTHENTICATED_USER_RID. "BA" SDDL_BUILTIN_ADMINISTRATORS Built-in administrators. The corresponding RID is DOMAIN_ALIAS_RID_ADMINS.

  • Anonymous
    January 01, 2003
    Подскажите пожалуйста как правильно написать Security Descriptor String так чтобы у меня файлы могли редактировать и программы запущенные под администратором и обычные программы. Пробовал сам написать, не получается. Конвертор возвращает ошибку.