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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] У Лены какие-то стуки подземные... Может она вообще, SACL имеет ввиду? ;-) 20.06.05 13:09  Число просмотров: 2309
Автор: 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)

---
<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