В общем вопрос такой:
Насколько я понимаю, когда открываем защищённый объект с «просьбой» MAXIMUM_ALLOWED, то система, исходя из «крутости» процесса пользователя, попытается дать всё, что можно для этого пользователя. Как узнать, какой получился ACCESS_MASK (чтобы узнать, что же я всё-таки могу ;-) по дескриптору объекта, возможно ли это вообще?
Заранее всем спасибо.
[win32] security: maximum_allowed и access_mask30.09.02 23:13 Автор: beetle <beetle> Статус: Member
а все дело завязано на привилегиях, которые выставляются в токене процесса с помощью спец. функций и флагов.
AdjustTokenPrivileges - устанавливает/снимает привилегии
GetTokenInformation - плучаешь инфу о токене - конкретно для привилегий юзай
TokenPrivileges - получишь на выходе
typedef struct _TOKEN_PRIVILEGES { // tp
DWORD PrivilegeCount;
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
} TOKEN_PRIVILEGES;
ну вот и все
[Win32] Это понятно. Но не совсем ;-)01.10.02 20:17 Автор: HandleX <Александр М.> Статус: The Elderman
> а все дело завязано на привилегиях, которые выставляются в > токене процесса с помощью спец. функций и флагов. > AdjustTokenPrivileges - устанавливает/снимает привилегии > GetTokenInformation - плучаешь инфу о токене - конкретно > для привилегий юзай > TokenPrivileges - получишь на выходе > typedef struct _TOKEN_PRIVILEGES { // tp > DWORD PrivilegeCount; > LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; > } TOKEN_PRIVILEGES; > ну вот и все
Всё и ничего. Итак, ситуёвина. Лежит файло в каталоге раздела NTFS. На него навешали разных ACE'ов в DACL (ну, эти это могут, другие то-сё и т.д.). Я открыл файло с флагом доступа вместо GENERIC_READ поставил MAXIMUM_ALLOWED. И теперь хочу узнать по дескриптору этого файла, могу ли я его удалить (к примеру) — знать мне это надо, к примеру, для того, чтобы в UI некоторые пункты меню, к примеру, сделать Disabled. А сразу открывать c флагом DELETE я его не хочу, и опять, для этого могут быть серьёзные причины — аудит выставлен, к примеру, на доступ к объектам, и я не хочу лишних записей ;-)))
Итак, вопрос ещё раз — как узнать по дескриптору объекта тот ACCESS_MASK, который система назначила объекту, открытому по MAXIMUM_ALLOWED ;-)))))))
Ну, прямо de ja vu
Processing............02.10.02 20:18 Автор: beetle <beetle> Статус: Member
2 buLLet: Ну как, свежак в голову не пришёл? ;-)) А может и ещё кто-нибудь чего подскажет ;-)12.10.02 22:25 Автор: HandleX <Александр М.> Статус: The Elderman