информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяВсе любят медЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] В DACL хранятся ВСЕ разрешения для объекта 20.06.05 12:16  Число просмотров: 2108
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> содержащий в свою очередь DACL. В DACL основные разрешения,
> а где хранятся дополнительные? Подскажите, пожалуйста.
Но объект может унаследовать ACL от родителя.

Не тестировал, но что то мне подсказывает, что такие унаследованные ACE будут иметь флаг INHERITED_ACE
<programming>
[C++] дополнителные разрешения NTFS 19.06.05 23:24  
Автор: Lena Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как получить доступ к дополнительным разрашениям NTFS. Доступ к основным шести разрешениям можно пулучить с помощью API функций (GetNamedSecurityInfo() например), которые возвращают Security Descriptor для файла, содержащий в свою очередь DACL. В DACL основные разрешения, а где хранятся дополнительные? Подскажите, пожалуйста.
[C++] В DACL хранятся ВСЕ разрешения для объекта 20.06.05 12:16  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> содержащий в свою очередь DACL. В DACL основные разрешения,
> а где хранятся дополнительные? Подскажите, пожалуйста.
Но объект может унаследовать ACL от родителя.

Не тестировал, но что то мне подсказывает, что такие унаследованные ACE будут иметь флаг INHERITED_ACE
[C++] У Лены какие-то стуки подземные... Может она вообще, SACL имеет ввиду? ;-) 20.06.05 13:09  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 20.06.05 13:11  Количество правок: 1
<"чистая" ссылка>
Короче... Есть такой объект ядра в системе, называется Файл.

Он имеет методы для работы с ним... Они экспортируются соотв. файловым API Windows.
В DACL хранятся параметры самого DACL'a, и список ACL'ов. В каждом ACL'е два интересующих нас поля: SID и ACCESS_MASK. Дык вот, маска доступа по сути своей фильтр, который не "пропускает" некоторые методы работы с файлами для клиента, который хочет работать с защищённым объектом (файлом).

Кстати, GetNamedSecurityInfo (у вас) какой-то неуклюжий, для файлов есть специальный вариант -- GetFileSecurity. К тому же, для её работы не надо иметь дескриптор файла, имени достаточно...

Поле ACCESS_MASK задокументировано в... winnt.h

//  Define the access mask as a longword sized structure divided up as
//  follows:
//
//       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
//       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
//      +---------------+---------------+-------------------------------+
//     G|G|G|G|Res'd|AStandardRights|         SpecificRights        |
//     R|W|E|A   S              |                               |
//      +-+-------------+---------------+-------------------------------+
//
//      typedef struct _ACCESS_MASK {
//          WORD   SpecificRights;
//          BYTE  StandardRights;
//          BYTE  AccessSystemAcl : 1;
//          BYTE  Reserved : 3;
//          BYTE  GenericAll : 1;
//          BYTE  GenericExecute : 1;
//          BYTE  GenericWrite : 1;
//          BYTE  GenericRead : 1;
//      } ACCESS_MASK;
//      typedef ACCESS_MASK *PACCESS_MASK;

---
Эта маска состоит из Generic, Standard, и наконец, SpecificRights. Генерики позволяют ленивому программеру при открытии файла просто указать доступ вроде GENERIC_READ, и система, пропустив эту константу через специальную структуру GENERIC_MAPPING, приведёт это всё у виду Specific, и успешно отработает.

Расклад Specific Rights для объекта типа "файл" там же -- в winnt.h

//
// Define access rights to files and directories
//

//
// The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
// devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
// constantsMUSTalways be in sync.
// The values are redefined in devioctl.h because they must be available to
// both DOS and NT.
//

#define FILE_READ_DATA            ( 0x0001 )    // file & pipe
#define FILE_LIST_DIRECTORY       ( 0x0001 )    // directory

#define FILE_WRITE_DATA           ( 0x0002 )    // file & pipe
#define FILE_ADD_FILE             ( 0x0002 )    // directory

#define FILE_APPEND_DATA          ( 0x0004 )    // file
#define FILE_ADD_SUBDIRECTORY     ( 0x0004 )    // directory
#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 )    // named pipe


#define FILE_READ_EA              ( 0x0008 )    // file & directory

#define FILE_WRITE_EA             ( 0x0010 )    // file & directory

#define FILE_EXECUTE              ( 0x0020 )    // file
#define FILE_TRAVERSE             ( 0x0020 )    // directory

#define FILE_DELETE_CHILD         ( 0x0040 )    // directory

#define FILE_READ_ATTRIBUTES      ( 0x0080 )    // all

#define FILE_WRITE_ATTRIBUTES     ( 0x0100 )    // all

#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)

#define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
                                   FILE_READ_DATA           |\
                                   FILE_READ_ATTRIBUTES     |\
                                   FILE_READ_EA             |\
                                   SYNCHRONIZE)


#define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
                                   FILE_WRITE_DATA          |\
                                   FILE_WRITE_ATTRIBUTES    |\
                                   FILE_WRITE_EA            |\
                                   FILE_APPEND_DATA         |\
                                   SYNCHRONIZE)


#define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
                                   FILE_READ_ATTRIBUTES     |\
                                   FILE_EXECUTE             |\
                                   SYNCHRONIZE)

---
[C++] Если я правильно понял, то имеются в виду права которые нарисованы во вкладке безопасность 20.06.05 14:19  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Там как раз 6 стандартных прав (магическое число, указанное в корневом посте) и галка для specific rights которая включается, если есть хоть одно из них

А вообще, надо предложить выкладывать фотографию своего компьютера и/или программы - будем лечить.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach