Операционные системы. Учебное пособие. Марапулец Ю.В. - 152 стр.

UptoLike

Составители: 

Система безопасности в Windows NT основана на модели безопасности для каж-
дого пользователя. При выполнении всех операций, которые активизируются пользова-
телем после входа в систему (запуск приложений, доступ к принтерам и дискам, откры-
тие и закрытие файлов), производится проверка того, обладает ли пользователь
соответствующими правами и привилегиями [1, 7].
API-функции безопасности в Windows NT предоставляют возможность регистри-
ровать события на системном уровне и на уровне приложений. Это позволяет опреде-
лить, кто и когда имел доступ к различным компонентам системы. После того как поль-
зователь вошел на защищенный сервер, ему автоматически присваивается маркер
доступа. Этот маркер закреплен за пользователем все время, пока он находится в сети
Windows NT. С другой стороны, каждому системному объекту соответствует дескрип-
тор безопасности (security descriptor - SD), который содержит различную информацию,
связанную с безопасностью данного объекта. С помощью маркера доступа и дескрипто-
ра безопасности система защиты Windows NT проверяет при обращении к объекту, име-
ет ли пользователь право работать с данным объектом.
В Windows NT встроенные средства безопасности реализованы только для объек-
тов ядра операционной системы (подсистема Kernel). Поэтому, создавая такие объекты,
как растровые рисунки, указатели мыши, перья, кисти, значки, метафайлы или дескрип-
торы окон, вы не должны принимать меры по обеспечению их защиты (с помощью API-
функций безопасности). Но при создании или обращении к объектам ядра (файлы, пап-
ки, устройства хранения информации, каналы, почтовые слоты, последовательные пор-
ты, разделы реестра, консольные устройства и принтеры) необходимо предоставлять, по
крайней мере, дескриптор безопасности (или указывать вместо соответствующего пара-
метра значение NULL).
В среде Win32 постоянно приходится сталкиваться с API-функциями, предназна-
ченными для манипулирования объектами ядра. Эти функции в качестве аргумента все-
гда принимают указатель на структуру SECURITY_ATTRIBUTES. Подобные функции
мы уже рассматривали ранее, например при создании потоков и процессов, например
CreateThread().
HANDLE CreateThread (
LPSECURITY_ATTRIBUTES lpThreadAttributes,// привилегии доступа
DWORD dwStackSize, // по умолчанию равен 0
LPTHREAD_START_ROUTINE lpStartAddress, // указатель на стартовую
// функцию
LPVOID lpParameter, // значение, передаваемое
// функции
DWORD dwCreationFlags, // активное состояние или
//состояние ожидания
LPDWORD lpThreadId ); // здесь система возвращает
// идентификатор потока
Чаще всего программист применяет данную функцию, просто задав значение
NULL в качестве аргумента lpSecurityAttributes. Такой подход является удачным при
реализации большинства стандартных операций доступа. Это связано с тем, что при за-
дании значения NULL используется набор параметров структуры SECURI-
TY_ATTRIBUTES, который задан по умолчанию.
Если необходимо нечто большее, чем атрибуты, заданные по умолчанию посредст-
вом значения NULL для структуры SECURITY_ATTRIBUTES, нужно вручную сформи-
ровать эту структуру.
§ 7.2. Создание структуры SECURITY_ATTRIBUTES
154
      Система безопасности в Windows NT основана на модели безопасности для каж-
дого пользователя. При выполнении всех операций, которые активизируются пользова-
телем после входа в систему (запуск приложений, доступ к принтерам и дискам, откры-
тие и закрытие файлов), производится проверка того, обладает ли пользователь
соответствующими правами и привилегиями [1, 7].
      API-функции безопасности в Windows NT предоставляют возможность регистри-
ровать события на системном уровне и на уровне приложений. Это позволяет опреде-
лить, кто и когда имел доступ к различным компонентам системы. После того как поль-
зователь вошел на защищенный сервер, ему автоматически присваивается маркер
доступа. Этот маркер закреплен за пользователем все время, пока он находится в сети
Windows NT. С другой стороны, каждому системному объекту соответствует дескрип-
тор безопасности (security descriptor - SD), который содержит различную информацию,
связанную с безопасностью данного объекта. С помощью маркера доступа и дескрипто-
ра безопасности система защиты Windows NT проверяет при обращении к объекту, име-
ет ли пользователь право работать с данным объектом.
      В Windows NT встроенные средства безопасности реализованы только для объек-
тов ядра операционной системы (подсистема Kernel). Поэтому, создавая такие объекты,
как растровые рисунки, указатели мыши, перья, кисти, значки, метафайлы или дескрип-
торы окон, вы не должны принимать меры по обеспечению их защиты (с помощью API-
функций безопасности). Но при создании или обращении к объектам ядра (файлы, пап-
ки, устройства хранения информации, каналы, почтовые слоты, последовательные пор-
ты, разделы реестра, консольные устройства и принтеры) необходимо предоставлять, по
крайней мере, дескриптор безопасности (или указывать вместо соответствующего пара-
метра значение NULL).
      В среде Win32 постоянно приходится сталкиваться с API-функциями, предназна-
ченными для манипулирования объектами ядра. Эти функции в качестве аргумента все-
гда принимают указатель на структуру SECURITY_ATTRIBUTES. Подобные функции
мы уже рассматривали ранее, например при создании потоков и процессов, например
CreateThread().

HANDLE CreateThread (
    LPSECURITY_ATTRIBUTES lpThreadAttributes,// привилегии доступа
    DWORD dwStackSize,                       // по умолчанию равен 0
    LPTHREAD_START_ROUTINE lpStartAddress, // указатель на стартовую
                                            // функцию
    LPVOID lpParameter,                      // значение, передаваемое
                                            // функции
    DWORD dwCreationFlags,                  // активное состояние или
                                            //состояние ожидания
    LPDWORD lpThreadId );                    // здесь система возвращает
                                            // идентификатор потока

     Чаще всего программист применяет данную функцию, просто задав значение
NULL в качестве аргумента lpSecurityAttributes. Такой подход является удачным при
реализации большинства стандартных операций доступа. Это связано с тем, что при за-
дании значения NULL используется набор параметров структуры SECURI-
TY_ATTRIBUTES, который задан по умолчанию.
     Если необходимо нечто большее, чем атрибуты, заданные по умолчанию посредст-
вом значения NULL для структуры SECURITY_ATTRIBUTES, нужно вручную сформи-
ровать эту структуру.
     § 7.2. Создание структуры SECURITY_ATTRIBUTES

                                       154