понедельник, 17 октября 2011

Адовая конструкция, убивающая весь смысл NTFS'а на корню:
//------------------------------------------------------------ SECURITY_DESCRIPTOR _sd; ::InitializeSecurityDescriptor(&_sd, SECURITY_DESCRIPTOR_REVISION); ::SetSecurityDescriptorDacl(&_sd, true, 0, false); //------------------------------------------------------------
|
Применяем дескриптор безопасности к папке или файлу.
//------------------------------------------------------------ ::SetFileSecurity(<имя файла>, DACL_SECURITY_INFORMATION, &_sd); //------------------------------------------------------------
|
Результат:
//------------------------------------------------------------ "Для данного объекта нет заданных разрешений.
Предупреждение: это потенциально опасно, так как любой пользователь, имеющий доступ к данному объекту, может стать его владельцем. Владелец объекта должен как можно быстрее назначить разрешения." //------------------------------------------------------------
|
@темы:
Лень как двигатель прогресса
Если не будет (так и должно быть), то ничего страшного не происходит -- просто тот, кто имел право на смену разрешений их все сбросил для всех. Зачем -- второй вопрос. Хотя это может быть полезно, да. Спасибо.
Впервые я увидел этот приём в контексте создания общей памяти (shared memory) внутри службы (сервиса) для обеспечения последующего доступа из пользовательских приложений. Ибо если создать общую память в службе с нулевым дескриптором безопасности, то из пользовательского приложения до общей памяти достучаться не получится. А с указанным в примере дескриптором — запросто.
По-хорошему-то надо получать сиды и дескрипторы для пользователей и групп, и разрешать им то, что требуется, но ведь лень же!