Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[win32] security: maximum_allowed и access_mask 30.09.02 17:33
Автор: HandleX <Александр М.> Статус: The Elderman
|
Hello, добрый All ;-))))
В общем вопрос такой:
Насколько я понимаю, когда открываем защищённый объект с «просьбой» MAXIMUM_ALLOWED, то система, исходя из «крутости» процесса пользователя, попытается дать всё, что можно для этого пользователя. Как узнать, какой получился ACCESS_MASK (чтобы узнать, что же я всё-таки могу ;-) по дескриптору объекта, возможно ли это вообще?
Заранее всем спасибо.
|
|
[win32] security: maximum_allowed и access_mask 30.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
|
|
|
|