Комментарии к программе 15.3

Комментарии к программе 15.3

Хотя структура программы 15.3 и может показаться несложной, выполняемую ею операцию вряд ли можно назвать простой. Кроме того, программа иллюстрирует целый ряд моментов, заслуживающих внимания, которые касаются использования средств безопасности Windows.

• Необходимо распределить в памяти несколько областей, предназначенных для хранения нужной информации, например, идентификаторов SID. Эти области создаются в специально выделенной для этих целей куче, которая по завершении работы должна быть уничтожена вызывающей программой.

• В данном примере структура атрибутов безопасности относится к файлам, но она также может использоваться с другими объектами, например именованными каналами (глава 11). В программе 15.4 показано, как встроить такую структуру при работе с файлами.

• Для эмуляции поведения UNIX существенное значение имеет порядок следования элементов АСЕ. Обратите внимание на то, что АСЕ, разрешающие и запрещающие доступ, добавляются в ACL по мере обработки битов, кодирующих полномочия, в направлении слева (Owner/Read) направо (Everyone/Execute). Благодаря этому биты полномочий, заданные, например, кодом защиты 460 (в восьмеричном представлении), будут запрещать пользователю доступ по записи даже в том случае, если он входит в состав группы.

• Права доступа описываются в АСЕ такими значениями, как FILE_GENERIC_READ или FILE_GENERIC_WRITE, которые аналогичны флагам, используемым в функции CreateFile, хотя добавляются и другие флаги доступа, например SYNCHRONIZE. Эти права указываются в вызывающей программе (в данном случае в программе 15.1), чтобы обеспечить их соответствие объекту.

• Значение, определенное для константы ACL_SIZE, выбрано достаточно большим, чтобы выделенных для него разрядов хватило для хранения девяти элементов АСЕ. После того как мы рассмотрим программу 15.5, способ определения требуемого размера элемента данных станет для вас очевидным.

• В функции используются три SID, по одному для каждой из следующих категорий пользователей: User (Пользователь), Group (Группа) и Everyone (Прочие). Для получения имени, используемого в качестве аргумента при вызове функции LookupAccountName, используются три различные методики. Имя обычного пользователя поступает из функции GetUserName. Именем пользователя, относящегося к категории прочих пользователей, является Everyone в SidTypeWellknownGroup. Групповое имя должно предоставляться в виде аргумента командной строки и отыскиваться как SidTypeGroup. Для нахождения групп, которым принадлежит пользователь, требуются определенные сведения о дескрипторах процесса, и решить эту задачу вам предлагается в упражнении 15.12.

• В версии программы, находящейся на Web-сайте книги, в отличие от той, которая представлена здесь, большое внимание уделено проверке ошибок. В ней даже предусмотрена проверка действительности сгенерированных структур с помощью функций IsValidSecurityDescriptor, IsValidSid и IsValidAcl, названия которых говорят сами за себя. Указанное тестирование ошибок оказалось чрезвычайно полезным на стадии отладки. 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.2 Комментарии

Из книги C++ автора Хилл Мюррей

1.2 Комментарии Часто бывает полезно вставлять в программу текст, который предназначается в качестве комментария только для читающего программу человека и игнорируется компилятором в программе. В С++ это можно сделать одним из двух способов.Символы /* начинают


Комментарии: 

Из книги Примеры использования Паттерн Singleton (Одиночка) автора Федоров Дмитрий

Комментарии:  Как бы так это заделать??? Во первых, статья очень хорошая и полезная, спасибо. Применил в реальной программе я этот сингелтон и остался очень доволен. Но мне надо было несколько изменить поведение исходного класса. У меня ситуация такая: есть клиент, который


Комментарии:  

Из книги Обработка событий в С++ автора Клюев Александр

Комментарии:   Не всегда корректный код Вы приводите указатель на функцию-член класса клиента к указателю на функцию из конкрентного класса (slot::Thunk), это для некоторых классов может быть невозможно, ошибка компилятора, что-то типа "указатели имеют разную природу",


Комментарии:

Из книги Делегаты на C++ автора Шаргин Александр

Комментарии: наследование операторов ›Дело в том, что в языке C++ операторы не наследуются. Это не верно по крайней мере для MSVC++. Более того этот метод используется при написании функтора из библиотеки Loki http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport (файл Functor.h), см. также


Комментарии

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Комментарии Комментарии — это фрагменты исходного текста программы, которые не компилируются и служат для пояснения кода. Для обозначения комментариев в программах на языке Object Pascal используют следующие конструкции:• // — комментарии в одной строке;• { } или (* *) —


Комментарии: 

Из книги Исчерпывающее руководство по написанию всплывающих подсказок автора Джек Роджер

Комментарии:  Небольшое добавление Искал способ попроще включить поддержку ToolTips без явного использования класса CToolTipCtrl. И в результате сам сделал следующее: int CContentWnd::OnToolHitTest(CPoint point, TOOLINFO* pTI) const {  int nHit=0;  CString csText;  csText="Закрыть окно";  HWND m_hWnd=this->GetSafeHwnd();  pTI->hwnd =


Комментарии

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Комментарии Напоследок рассмотрим одну очень важную возможность HTML, которая, хоть и не касается напрямую Web-дизайна, но сильно поможет забывчивым Web- дизайнерам.Комментарий — это фрагмент HTML-кода, который не выводится на Web- страницу и вообще не обрабатывается


Комментарии CSS

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Комментарии CSS В главе 2 мы узнали о комментариях — особых фрагментах HTML-кода, которые не обрабатываются Web-обозревателем и служат для того, чтобы Web-дизайнер смог оставить какие-то заметки для себя или своих коллег. Для этого язык HTML предоставляет специальный


Комментарии

Из книги Защита веб-приложений на Perl автора DJ-Andrey-sXe

Комментарии Напоследок рассмотрим одну очень важную возможность HTML, которая, хоть и не касается напрямую Web-дизайна, но сильно поможет забывчивым Web- дизайнерам.Комментарий — это фрагмент HTML-кода, который не выводится на Web- страницу и вообще не обрабатывается


Комментарии CSS

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Комментарии CSS В главе 2 мы узнали о комментариях — особых фрагментах HTML-кода, которые не обрабатываются Web-обозревателем и служат для того, чтобы Web-дизайнер смог оставить какие-то заметки для себя или своих коллег. Для этого язык HTML предоставляет специальный


Комментарии

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Комментарии Pilat 2 января 2010 в 14:37 24. Принимайте меры против подбора пароля. Задержка входа – простейший, но при этом уже достаточно неслабый способ. Сведет на нет ручной перебор и автоматический однопоточный перебор с одного компьютера. только задосить такой сайт – дело


Комментарии

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Комментарии Комментарий — это последовательность символов, которая воспринимается компилятором языка Си как отдельный пробельный символ и игнорируется. Комментарий имеет следующий вид:/* <символы> */<символы> должны принадлежать множеству представимых символов.


Комментарии

Из книги Разработка ядра Linux автора Лав Роберт

Комментарии Это правило выглядит достаточно просто:----Правило № 3. Помещайте в код комментарии. Объясняйте ваши допущения (более того, проверяйте их с помощью утверждений). Описывайте сложные блоки кода. При изменении кода изменяйте и соответствующие комментарии. Не


Комментарии

Из книги автора

Комментарии Комментарии могут располагаться в любом месте страницы, потому что не отображаются браузером. В качестве текста комментариев можно задавать пояснения к коду страницы. Это удобно, если код большой или с текстом работают несколько человек.Комментарии


Комментарии

Из книги автора

Комментарии Комментарии в CSS начинаются с символов /* и заканчиваются символами */. Они могут находиться в любом месте таблицы. Использование комментариев очень удобно. Впоследствии вам может понадобиться много времени, чтобы сообразить, за какую часть документа отвечает


Комментарии

Из книги автора

Комментарии Очень полезно использовать комментарии кода, но делать это нужно правильно. Обычно необходимо описывать, что делает код и для чего это делается. То, как реализован алгоритм, описывать не нужно, это должно быть ясно из кода. Если так сделать не получается, то,