22:33 

Трюк 0x0010 — Дакл, Сакл и Какл, или Шаринг в Виндах

mistificator
капелюх чарiвника
Адовая конструкция, убивающая весь смысл NTFS'а на корню:

//------------------------------------------------------------
SECURITY_DESCRIPTOR _sd;
::InitializeSecurityDescriptor(&_sd, SECURITY_DESCRIPTOR_REVISION);
::SetSecurityDescriptorDacl(&_sd, true, 0, false);
//------------------------------------------------------------


Применяем дескриптор безопасности к папке или файлу.

//------------------------------------------------------------
::SetFileSecurity(<имя файла>, DACL_SECURITY_INFORMATION, &_sd);
//------------------------------------------------------------


Результат:

//------------------------------------------------------------
"Для данного объекта нет заданных разрешений.

Предупреждение: это потенциально опасно, так как любой пользователь,
имеющий доступ к данному объекту, может стать его владельцем.
Владелец объекта должен как можно быстрее назначить разрешения."
//------------------------------------------------------------

@темы: Лень как двигатель прогресса

Комментарии
2011-10-17 в 23:39 

zHz00
Это всё хорошо, но будет ли это работать, если НЕТ фактического разрешения на изменения разрешений (т.е. есть запрет/пусто)?
Если не будет (так и должно быть), то ничего страшного не происходит -- просто тот, кто имел право на смену разрешений их все сбросил для всех. Зачем -- второй вопрос. Хотя это может быть полезно, да. Спасибо.

2011-10-18 в 01:47 

mistificator
капелюх чарiвника
zHz00, кстати, если такой дескриптор безопасности поставить для расшаренной папки (посредством NetShareAdd() с level=502, например), то из сети она будет видеться как имеющая полный доступ для "Все".

Впервые я увидел этот приём в контексте создания общей памяти (shared memory) внутри службы (сервиса) для обеспечения последующего доступа из пользовательских приложений. Ибо если создать общую память в службе с нулевым дескриптором безопасности, то из пользовательского приложения до общей памяти достучаться не получится. А с указанным в примере дескриптором — запросто.

По-хорошему-то надо получать сиды и дескрипторы для пользователей и групп, и разрешать им то, что требуется, но ведь лень же!

     

Записная книжка программиста C++

главная