Какие компоненты операционной системы windows 2000 работают в режиме пользователя

Файл:Архитектура Windows NT.PNG
Архитектура Windows NT

Windows NT 3.1, Windows NT 3.5, Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 и Windows 8, Windows 10 являются частью семейства операционных систем на ядре NT. Все они являются операционными системами с вытесняющей многозадачностью. Они разработаны для работы как с однопроцессорными, так и с симметричными мультипроцессорными компьютерами. Для обработки запросов ввода\вывода используется пакетноуправляемый ввод-вывод, который применяет пакеты запросов ввода\вывода (IRP) и асинхронный ввод-вывод.

Архитектура Windows NT имеет модульную структуру и состоит из двух основных уровней — компоненты, работающие в режиме пользователя, и компоненты режима ядра. Программы и подсистемы, работающие в режиме пользователя, имеют ограничения на доступ к системным ресурсам. Режим ядра имеет неограниченный доступ к системной памяти и внешним устройствам. Ядро системы NT называют гибридным ядром или макроядром. Архитектура включает в себя само ядро, уровень аппаратных абстракций (HAL), драйверы и ряд служб (Executives), которые работают в режиме ядра (Kernel-mode drivers) или в пользовательском режиме (User-mode drivers)[1][2].

Пользовательский режим Windows NT состоит из подсистем, передающих запросы ввода-вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Есть две подсистемы на уровне пользователя: подсистема окружения (запускает приложения, написанные для разных операционных систем) и интегрированная подсистема (управляет особыми системными функциями от имени подсистемы окружения). Режим ядра имеет полный доступ к аппаратной части и системным ресурсам компьютера. И также предотвращает доступ к критическим зонам системы со стороны пользовательских служб и приложений.

Режим пользователя[]

Режим пользователя состоит из подсистем, которые передают запросы ввода\вывода соответствующему драйверу режима ядра посредством менеджера Ввода-вывода. Уровень пользователя состоит из двух подсистем — подсистема окружения (Environment) и интегральная подсистема (Integral).

Подсистема окружения разработана для запуска приложений, написанных для разных типов операционных систем. Ни одна из подсистем окружения не имеет прямого доступа к аппаратной части компьютера. Доступ к ресурсам памяти происходит посредством Менеджера Виртуальной Памяти, который работает в режиме ядра. Также приложения запускаются с меньшим приоритетом, чем процессы режима ядра.

Подсистема окружения состоит из следующих подсистем — подсистема Win32, подсистема OS/2 и подсистема POSIX.
Подсистема окружения Win32 запускает 32-разрядные Windows приложения. Она содержит консоль и поддержку текстового окна, обработку ошибок для всех других подсистем окружения. Поддерживает VDM (Virtual DOS Machine), которая позволяет запускать 16-разрядные DOS и Windows (Win16) приложения. VDM запускается в своем собственном адресном пространстве и эмулирует систему MS-DOS, запущенную на компьютере с процессором Intel 80486. Программы Win16 запускаются в режиме Win16 VDM. Каждая программа запускается в одном процессе с использованием одного адресного пространства, но для каждой программы используется свой отдельный поток. Однако Windows NT позволяет запускать Win16-программы в отдельных Win16 VDM-процессах, реализуя вытесняющую многозадачность. Процесс подсистемы окружения Win32 — csrss.exe также включает в себя функциональность менеджера окон, то есть обрабатывает входящие события, такие, как нажатие клавиш клавиатуры и мыши, и передает их на обработку соответствующим приложениям. Каждое приложение само производит перерисовку окон в ответ на эти сообщения.

Подсистема окружения OS/2 поддерживает неграфические 16-разрядные приложения операционной системы OS/2 и эмулирует систему OS/2 2.1.x.

Подсистема окружения POSIX поддерживает приложения, написанные в соответствии со стандартом POSIX.1.

Интегрированная подсистема (Integral subsystem) следит за некоторыми функциями операционной системы от имени подсистемы окружения. Состоит из подсистемы безопасности, службы рабочей станции и службы сервера. Служба безопасности обращается с маркерами доступа, позволяет или запрещает доступ к учётной записи пользователя, обрабатывает запросы авторизации и инициирует процесс входа пользователя в систему. Служба Рабочая станция обеспечивает доступ компьютера к сети — является API для сетевого редиректора (ПО, эмулирующее доступ к удаленной файловой системе как к локальной). Служба Сервер позволяет компьютеру предоставлять сетевые сервисы.

Режим ядра[]

Режим ядра Windows NT имеет полный доступ к аппаратной части компьютера и системным ресурсам. Работает в защищенной области памяти. Контролирует потоки, управляет памятью и взаимодействием с аппаратной частью. Предотвращает доступ к критическим областям памяти со стороны приложений и служб пользовательского режима. Для выполнения подобных операций процесс пользовательского режима должен попросить режим ядра выполнить её от своего имени./

Архитектура x86 поддерживает 4 уровня привилегий — от 0 до 3, но используются только 0 и 3 уровень.
Режим пользователя использует уровень 3, а режим ядра — 0. Это было сделано для возможности переноса на платформу RISC, которая использует только два уровня привилегий.
Режим ядра состоит из исполнительных служб, которые представляют собой различные модули, выполняющие определенные задачи, драйвера ядра, само ядро и уровень аппаратных абстракций HAL.

Исполнительная подсистема[]

Работает с вводом\выводом, менеджером объектов, управлением над процессами и безопасностью. Неофициально делится на несколько подсистем — менеджер кэша, менеджер конфигурации, менеджер ввода\вывода, вызов локальных процедур, менеджер памяти, монитор безопасности.
Системные службы, то есть системные вызовы, реализованы на этом уровне, за исключением нескольких вызовов, которые вызывают непосредственно ядро для большей производительности.
В данном контексте термин «служба» относится к вызываемым подпрограммам, или набору вызываемых подпрограмм. Они отличаются от служб, выполняемых в режиме пользователя, которые в какой-то мере являются аналогом демонов в UNIX-подобных системах.

Менеджер объектов[]

Это исполнительная подсистема, к которой обращаются все остальные модули исполнительной подсистемы, в частности, системные вызовы, когда им необходимо получить доступ к ресурсам Windows NT. Менеджер объектов служит для уменьшения дублирования объектов, что может привести к ошибкам в работе системы. Для менеджера объектов каждый ресурс системы является объектом — будь то физический ресурс типа периферийного устройства, файловой системы, или логический ресурс — файл и др.
Каждый объект имеет свою структуру, или тип объекта.

Создание объекта делится на две стадии — создание и вставка. Создание — создается пустой объект и резервируются необходимые ресурсы, например, имя в пространстве имен. Если создание пустого объекта произошло успешно, то подсистема, ответственная за создание объекта, заполняет его. Если инициализация успешна, то подсистема заставляет менеджер объектов произвести вставку объекта — то есть сделать его доступным по своему имени или дескриптору.

Примечания[]

  1. Графические драйверы ATI Catalyst в операционной системе Windows Vista | Видеокарты — 3DNews — Daily Digital Digest
  2. w:User-Mode Driver Framework
  Компоненты Microsoft Windows
Основные

Aero •
ClearType •
Диспетчер рабочего стола
DirectX •
Панель задач
(Пуск

Область уведомлений) •
Проводник
(Пространство имён

Специальные папки
Ассоциации файлов) •
Windows Search
(Smart folders •

iFilters) •
GDI •
WIM •
SMB •
.NET Framework •
XPS •
Active Scripting
(WSH •

VBScript
JScript) •
COM
(OLE •

DCOM •
ActiveX •
Структурированное хранилище
Сервер транзакций) •
Теневая копия •
WDDM •
UAA
Консоль Win32

Службы
управления

Архивация и восстановление
COMMAND.COM •
cmd.exe •
Средство переноса данных •
Просмотр событий
Установщик •
netsh.exe •
PowerShell •
Отчёты о проблемах
rundll32.exe •
Программа подготовки системы (Sysprep) •
Настройка системы (MSConfig) •
Проверка системных файлов •
Индекс производительности •
Центр обновления •
Восстановление системы •
Дефрагментация диска
Диспетчер задач
Диспетчер устройств •
Консоль управления •
Очистка диска •
Панель управления
(элементы)

Приложения

Контакты •
DVD Maker
Факсы и сканирование
Internet Explorer •
Журнал
Экранная лупа •
Media Center •
Проигрыватель Windows Media •
Программа совместной работы
Центр устройств Windows Mobile
Центр мобильности •
Экранный диктор
Paint •
Редактор личных символов
Удалённый помощник
Распознавание речи
WordPad •
Блокнот
Боковая панель •
Звукозапись
Календарь
Калькулятор
Ножницы
Почта •
Таблица символов •
Исторические:
Movie Maker •

NetMeeting •
Outlook Express •
Диспетчер программ •
Диспетчер файлов •
Фотоальбом •
Windows To Go

Игры

Chess Titans •
Mahjong Titans •
Purble Place •
Пасьянсы (Косынка •
Паук •
Солитер) •
Сапёр •
Пинбол •
Червы

Ядро ОС

Ntoskrnl.exe •
Слой аппаратных абстракций (hal.dll) •
Бездействие системы •
svchost.exe •
Реестр •
Службы •
Диспетчер управления сервисами
DLL
(формат модулей) •

PE •
NTLDR •
Диспетчер загрузки
Программа входа в систему (winlogon.exe) •
Консоль восстановления
Windows RE
Windows PE •
Защита ядра от изменений

Службы

Autorun.inf •
Фоновая интеллектуальная служба передачи
Файловая система стандартного журналирования
Отчёты об ошибках
Планировщик классов мультимедиа
Теневая копия •
Планировщик задач
Беспроводная настройка

Файловые
системы

ReFS •
NTFS
(Жёсткая ссылка •

Точка соединения •
Точка монтирования
Точка повторной обработки
Символьная ссылка •
TxF •
EFS) •
WinFS •
FAT •
exFAT •
CDFS •
UDF
DFS •
IFS

Сервер

Active Directory •
Службы развёртывания •
Служба репликации файлов
DNS
Домены
Перенаправление папок
Hyper-V •
IIS •
Media Services
MSMQ
Защита доступа к сети (NAP) •
Службы печати для UNIX •
Удалённое разностное сжатие
Службы удаленной установки
Служба управления правами
Перемещаемые профили пользователей
SharePoint
Диспетчер системных ресурсов
Удаленный рабочий стол
WSUS •
Групповая политика •
Координатор распределённых транзакций

Архитектура

NT
Диспетчер объектов
Пакеты запроса ввода/вывода
Диспетчер транзакций ядра
Диспетчер логических дисков
Диспетчер учетных записей безопасности
Защита ресурсов •
lsass.exe
csrss.exe •
smss.exe •
spoolsv.exe
Запуск

Безопасность

BitLocker
Защитник •
Предотвращение выполнения данных
Обязательный контроль целостности
Защищённый канал данных
UAC •
UIPI
Брандмауэр •
Центр обеспечения безопасности •
Защита файлов

Совместимость

Подсистема UNIX (Interix) •
Виртуальная машина DOS •
Windows on Windows •
WOW64

Итак,
операционная система Windows
2000 состоит из компонентов, работающих
в режиме ядра, и компонентов, работающих
в режиме пользователя. Выше были
рассмотрены компоненты, работающие в
режиме ядра. Теперь перейдем к рассмотрению
компонентов, работающих в ре­жиме
пользователя.

Существует
три типа таких компонентов: динамические
биб­лиотеки DLL
(Dynamic
Link
Library
– динамически подключаемая библиотека),
подсистемы окружения и служебные
процессы. Эти компоненты работают
вместе, предоставляя каждому
пользовательскому процессу интерфейс,
отличный от интерфейса системных вызовов
Windows
2000.

Операционной
системой Windows
2000 поддерживаются три различных
доку­ментированных интерфейса
прикладного программирования API:
Win32,
POSIX
и OS/2.
У каждого из этих интерфейсов есть
список библиотечных вызовов, ко­торые
могут использовать программисты. Работа
библиотек DLL
и подсистем окружения за­ключается
в том, чтобы реализовать функциональные
возможности опубликован­ного
интерфейса, тем самым скрывая истинный
интерфейс системных вызовов от прикладных
программ. В частности, интерфейс Win32
является официальным интерфейсом для
операционных систем Windows
2000, Windows
NT,
Windows
95/ 98/Me.
При использовании библиотеки DLL
и подсистемы окружения Win32
программа может быть написана в
соот­ветствии со спецификацией Win32,
в результате чего она сможет без
каких-либо изменений работать на всех
этих версиях Windows,
несмотря на то, что сами сис­темные
вызовы в различных системах различны.

Рассмотрим
способ реализации этих интерфейсов на
примере Win32.
Програм­ма, пользующаяся интерфейсом
Win32,
как правило, состоит из большого
коли­чества обращений к функциям
Win32
API,
например CreateWindow,
DrawMenuBar
и
OpenSemaphore.
Существуют тысячи подобных вызовов, и
большинство программ использует
значительное их количество. Один из
возможных способов реализа­ции
заключается в статическом связывании
каждой программы, использующей интерфейс
Win32,
со всеми библио-течными процедурами,
которыми она пользу­ется. При таком
подходе каждая двоичная программа будет
содержать копию всех используемых ею
процедур в своем исполняемом двоичном
файле. Недостаток такого подхода
заключается в том, что при этом расходуется
много памяти, если пользователь
одновременно откроет несколько программ,
использу­ющих одни и те же библиотечные
процедуры. Например, программы Word,
Excel
и Powerpoint
используют абсолютно одинаковые
процедуры для открытия диалого­вых
окон, рисования окон, отображения меню,
работы с буфером обмена и т. д. Поэтому,
если одновременно открыть все эти
программы, при такой реализации программ
в памяти будут находиться три идентичные
копии каждой библиотеч­ной процедуры.
Чтобы избежать подобной проблемы, все
версии Windows
поддерживают ди­намические библиотеки
DLL.
Каждая динамическая библиотека
содержит набор тесно связанных
библиотечных процедур и все их структуры
данных в одном фай­ле, как правило (но
не всегда), с расширением dll.
Когда приложение компонуется, компоновщик
видит, что некоторые библиотечные
процедуры принадлежат к ди­намическим
библиотекам, и записывает эту информацию
в заголовок исполняе­мого файла.
Обращения к процедурам динамических
библиотек производятся не напрямую, а
при помощи вектора передачи в адресном
пространстве вызывающе­го процесса.
Изначально этот вектор заполнен
нулями, так как адреса вызываемых
процедур еще неизвестны.

При
запуске прикладного процесса все
требуемые динамические библиотеки
обнаруживаются (на диске или в памяти)
и отображаются на виртуальное адрес­ное
пространство процесса. Затем вектор
передачи заполняется верными адреса­ми,
что позволяет вызывать библиотечные
процедуры через этот вектор с
незна­чительной потерей производительности.
Выигрыш такой схемы заключается в том,
что при запуске нескольких приложений,
использующих одну и ту же динамичес­кую
библиотеку, в физической памяти требуется
только одна копия текста DLL
(но каждый процесс получает свою
собственную копию приватных статических
данных в DLL).
В операционной системе Windows
2000 динамические библиоте­ки используются
очень активно для всех аспектов системы.

Каждый
пользовательский процесс, как правило,
связан с несколькими динамическими
библиотеками, совместно реа­лизующими
интерфейс Win32.
Чтобы обратиться к вызову API,
вызывается одна из процедур в DLL.
Дальнейшие действия зависят от вызова
Win32
API.
Различные вызовы реализованы по-разному.
В некоторых случаях динамические
библиотеки обращаются к другой
динами­ческой библиотеке, которая, в
свою очередь, обращается к ядру
операци­онной системы. Динамическая
биб­лиотека может также выполнить
всю работу самостоятельно, совсем не
обращаясь к системным вызовам. Для
других вызовов Win32
API
выбирается другой маршрут, а именно:
сначала процессу подсистемы Win32
посылается сообщение, выполняющее
некоторую работу и обращающееся к
системному вызову. При этом в некоторых
случаях подсистема также выполняет всю
работу в пространстве пользователя и
немедленно возвращает управление.

Следует
также отметить, что DLL
не являются единственными динамическими
библиотеками в системе. В каталоге
\winnt\system32
есть более 800 отдельных файлов DLL
общим объемом в 130 Мбайт. Количество
содержащихся в них вызовов API
превышает 13 000.

Хотя
интерфейс процессов Win32
является наиболее важным, в операционной
системе Windows
2000 существует еще два интерфейса: POSIX
и OS/2.
Среда POSIX
предоставляет минимальную поддержку
для приложений UNIX.
Этим интерфейсом, например, не
поддерживаются потоки, работа с окнами
или сетью. Перенос любой реальной
программы из системы UNIX
в Windows
2000 при помо­щи этой подсистемы
практически невозможен. Эта подсистема
не является самодостаточной и пользуется
вызовами подсистемы Win32
для большей части своей работы, но не
предостав­ляя пользовательским
программам полного интерфейса Win32.
Функциональность подсистемы OS/2
ограничена практически в той же степе­ни,
что и функциональность подсистемы
POSIX.

Подумал, может кому интересно будет
Выдирал из страниц разных выпусков журнала Изона в 1 файл. Вот что получилось. Сам читал, интересно

Иван Марциновский, Алексей Смирнов

Кто-то обожает пингвинов и готов рисовать на заборах разбитые вдребезги окна, подписываясь незамысловатым «OS/2 — forever», кто-то же, наоборот, боготворит цветастый флаг Майкрософт Windows и готов отлупасить любого, выкрикивающего «Виндовс Маст Дай». Однако и тем, и другим нужно смотреть фактам в лицо: операционными системами семейства Windows пользуется огромное количество людей. Почему? Наверное, потому, что они просты для начального обучения и удобны в использовании. Но эта первоначальная простота — иллюзорна. Для того чтобы использовать все возможности некоторых операционных систем этого семейства (особенно для администрирования не одиноко стоящего компьютера, а локальной сети), нужно обладать некоторыми знаниями как о конкретных программных инструментах, помогающих в работе, так и об основах функционирования «внутренностей ОС». Всем этим аспектам и будет посвящен целый ряд статей, озаглавленный нами «курс молодого администратора». В них мы постараемся изложить редко публикуемый в русскоязычной литературе материал, который, тем не менее, будет интересен тем, кто действительно хочет разобраться, как работает Windows 2000, а также, возможно поможет устранить часть неполадок, связанных с неправильной настройкой системы. Конкретно администрированию будет посвящена лишь часть материала, большая же часть будет касаться общих аспектов и базовых принципов работы ОС семейства Windows, без знания которых мы не представляем себе мало-мальски эффективную работу администратора. Почему «молодого» администратора? Да потому, что, во-первых, на наш взгляд, многоопытный администратор за необходимой информацией обратится к огромным многостраничным талмудам, посвященным этой тематике, а не ограничится журнальными статьями; а во-вторых, что наиболее важно, потому, что мы постараемся излагать материал как можно понятнее и подробнее, не гнушаясь объяснять вещи, которые некоторым могут показаться тривиальными. Впрочем, мы не будем также ограничиваться исключительно простыми вещами, а постараемся идти от простого к сложному, как и должно при изучении любого предмета. Естественно, это не всегда будет получаться, так как это наш первый опыт такого рода работы, по-этому мы будем рады, если вы будете обращаться к нам за дополнительной информацией или разъяснениями, а также вносить свои предложения и идеи относительно дальнейшего материала. Вы всегда можете связаться с нами по адресам: axells@mails.ru и zanzabuku@mail.ru. Итак, после небольшого предисловия, приступим:

Часть первая.

Введение в ядро NT

«Внезапно меня озарило. Мой разум опять предал меня. Был только один способ объяснить ее метаморфозы: дон Хуан, должно быть, сделал ее своей ученицей. Как иначе старая женщина могла превратиться в такое таинственное, полное силы существо? Я должен был понять это с первого взгляда. Но я, как обычно, ожидал увидеть то, что соответствовало моим представлениям о ней, а в них такая возможность не входила. »

Карлос Кастанеда,

«Второе кольцо силы»

«Домашний зоопарк» операционных систем — проблема выбора

Рождение и становление операционной системы — это зачастую долгий эволюционный процесс, длящийся десятилетиями: одну версию ОС сменяет следующая, добавляются новые элементы и детали… а потом… потом семейство вымирает, как вымер, скажем, DOS или динозавры.

Операционные системы не появляются «вдруг» или «из ниоткуда», если проследить их историю, то всегда можно узнать, откуда, как говорится, уши растут. А обычно эти самые уши растут из ранних версий малораспространенных, но компактных и быстрых операционок. Так, собственно, нb для кого это не секрет, что «Майкрософт» разработал свой легендарный DOS (Disk Operation System) на основе кода, купленного за $50000 у небольшой фирмы с названием Seattle Computer Products, a Windows — уже на основе DOS. Linux, значение и место на рынке которого сейчас очень трудно оценить однозначно, изначально был ни чем иным, как изощренной фантазией Линуса Торвальдса на тему операционной системы Minix — упрощенной версии UNIX. Конечно, в процессе своей эволюции и становления от первоначального «праотца» остается очень мало, код переписывается множество раз, добавляются новые возможности, идеи, реализации. Но все же зачастую некоторые рудименты остаются — это, в первую очередь, идеи дизайна операционной системы — темное наследие прошлых лет. Как известно? из рубахи очень сложно сделать штаны, сколько новых карманов ни пришивай и пуговиц ни спарывай, их лучше будет сшить заново. Так же сложно изначально однопользовательскую и однозадачную операционную систему превратить в многопользовательскую и многозадачную, да еще и стабильную сетевую платформу. Именно поэтому семейства операционных систем сменяют друг друга, приходят новые концепции и парадигмы, затрагивающие как строение ОС, так и стили программирования под эти платформы, но всегда остается нечто неуловимое, ускользающее от пристального взора, что объединяет целые семейства операционных систем. Для Windows это очень характерно, поэтому важно отдавать себе отчет, что общего в старых и новых системах и чем они различаются. Операционки проходят пору детства, полную многочисленных ошибок периода роста и недоработок, стадию зрелости, когда большинство ошибок исправляется, механизмы настройки и работы продумываются до мелочей, и этап старости, когда система уже не в состоянии нормально справляться с растущими задачами и потребностями пользователей. Новые возможности реализуются обычно в виде заплат, и чаще всего сделано это бывает «через одно место», так как их нормальная реализация изначально не была даже предусмотрена разработчиками, вследствие чего она и невозможна без кардинальной и полной переработки всего ядра. Так, для семейства Windows 9х (а мы все же склонны отделять его историю от истории DOS, хотя для этого нет особых оснований, кроме исключительно психологических), win3.1 — было детством, win95 — юностью, win98 — зрелостью… Билл Гейтс вкупе со Стивом Балмером, как известно, хотели вычеркнуть «старость» и обещали похоронить все семейство win9x, сделав win98 последней версией старой платформы. Но обещанного, как известно, три года ждут, особенно, если имеешь дело c такой непредсказуемой компанией, как «Майкрософт»… На свет появились и Win98SE (которая, между прочим, все еще установлена на большинстве домашних компьютеров пользователей и даже в мелких организациях), и мертворожденный младенец Win ME, и Win CE. Впрочем, все эти подрумяненные релизы старой ОС лишь ненадолго продлили ее агонию: становится совершенно очевидно, что времена win9x ушли, и час ее, как говорится, пробил. Будущее за операционными системами другого поколения, и это вовсе не обязательно будут продукты от «Майкрософт». Но и им, в свою очередь, есть что предложить взамен устаревшему продукту.

Король умер, да здравствует король, или история развития NT?

Несмотря на — или, может быть, — благодаря стремительному успеху серии Windows 3.1, позже преобразованной в Windows 95 и Windows 98, который превзошел ожидания даже своих создателей, «Майкрософт» разработала другую ветвь своих продуктов — Windows NT (где NT означает New Technology — новая технология). Грубо говоря, заслуга разработки семейства NT принадлежит даже не совсем «Майкрософт», точнее, не одной только «Майкрософт», так как изначально работы по созданию операционной системы следующего поколения велись совместно как программистами и дизайнерами из команды знаменитого Дэвида Катлера (Dave Cutler), так и специалистами голубого гиганта (IBM). Перед всеми этими, безусловно, по-своему талантливыми людьми стояла задача разработать NT так, чтобы она удовлетворяла пяти основным требованиям:

— Переносимость

— Расширяемость

— Надежность

— Совместимость

— Производительность

Основываясь на своем опыте работы с операционными системами в DEC (Digital Equipment Corporation), Катлер основной приоритет придавал проектированию операционной системы, поскольку он прекрасно сознавал, что создаваемый его группой код будет использоваться очень долго. Вследствие этого он пытался создать хорошо и цельно спроектированную систему, в противоположность тому варианту, который бы оптимально работал, в первую очередь, с оборудованием, имевшимся на тот момент времени. Кроме того, с самого начала предполагалось, что система будет предназначена для работы в качестве сервера сети, или, на худой конец, рабочей станции, следовательно, к ней предъявлялись исключительно жесткие требования относительно надежности и безопасности. А так как она должна была быть еще и переносимой, Катлер не разрешал сотрудникам оптимизировать код на ассемблере, поскольку он был бы аппаратно-зависимым. Подобный подход к проектированию операционной системы привел к тому, что первые версии Windows NT работали очень медленно даже на самых производительных персональных компьютерах того времени. Но тут сыграли свою роль два фактора: во-первых, разработчики, увидев, насколько громоздкой получилась система, существенно ее оптимизировали, а во-вторых, появились более мощные компьютеры, и проблема производительности решилась сама собой. Вслед за этим начали проявляться приятные свойства NT: разработчикам не нужно было переписывать часть кода ядра системы, достаточно было перекомпилировать уже давно отлаженный исходный код, используя более «свежий» оптимизирующий компилятор языка высокого уровня. В то же время не прекращались работы по уменьшению размера системы, повышения ее быстродействия и, разумеется, надежности (проект Daytona, названный в честь автострады во Флориде), но при этом оптимизировался не низкоуровневый код под конкретный процессор, а высокоуровневый, который работал бы быстрее на любых машинах.

Идея оказалась действительно удачной. Качество конечных продуктов сильно улучшилось, к тому же код на Си выглядел более понятным и удобоваримым, чем набор инструкций на ассемблере, а значит, подобный подход позволял с большей легкостью и оперативностью вносить изменения в ядро, при этом допускалось меньшее количество ошибок. Недаром именно так пишутся практически все современные операционные системы, начиная от Linux и заканчивая Solaris, FreeBSD и BeOs. Теперь же, бросая взгляд в прошлое, можно с уверенностью сказать, что такая установка полностью себя оправдала и в случае с творением «Майкрософт», поскольку базовая внутренняя архитектура Windows 2000 (Windows XP) принципиально не изменилась по сравнению с Windows NT, за исключением добавления поддержки Plug and Play и ACPI.

Можно констатировать, что на сегодняшний день операционные системы на основе технологии NT являются наиболее производительными, масштабируемыми и, что самое главное, хорошо отлаженными и проверенными из всех, которые когда-либо выпускала «Майкрософт». Безусловно, «Майкрософт» не единственный производитель операционных систем, но именно эта компания является фаворитом на рынке десктопных операционок, то есть операционных систем, устанавливаемых преимущественно на домашних компьютерах пользователей и применяемых в сфере малого и — частично — среднего корпоративного бизнеса. И сильных конкурентов в этом (наиболее интересующем нас) секторе рынка у нее, к сожалению, пока нет. Положение с OS/2 — хуже некуда, IBM фактически отказалась от дальнейшего развития этой платформы, BeOS канула в лету, Linux при всем нашем уважении к нему, все же борется за совершенно другую часть рынка, рынка серверных операционных систем, предназначенных скорее либо для крупного бизнеса, либо для информационных систем среднего уровня ответственности. И что бы там нb говорили оголтелые фанаты пингвинов и FreeBSD’шных чертиков, некоторая часть серверов функционирует все же под управлением NT, а не UNIX. Поэтому выход каждой новой версии Windows является очень интригующим и волнующим широкие массы общественности событием. Тем более что Windows 2000 — это не только очередной главный выпуск операционной системы Windows NT, она также рекламируется «Майкрософт» как самое существенное из всех обновлений NT. Даже в рекламу так разукрашенной и размалеванной Windows XP «Майкрософт» не вложила столько же средств и усилий. Как мы видим, «мелкомягкие» намериваются сделать эту операционную систему базой для всех своих будущих решений (о чем они и сами заявляют): от потребительских продуктов до высокопроизводительных серверов, причем уже сейчас сделаны серьезные шаги в этом направлении. На самом деле, даже Windows 2000 — это не одна операционная система, а четыре, собранныt на одном ядре: Professional, Server, Advansed Server и Datacenter Server. Windows 2000 Professional — наиболее популярная на сегодня — действительно, как следует из названия, предназначена для установки либо на небольшие изолированные компьютеры профессиональных или причисляющих себя к таковым пользователей, либо на клиентские компьютеры в сети. Самая же мощная — Advanced Server — может устанавливаться на крупные сетевые серверы. Ее мощностей вполне хватит даже на крупную корпорацию, судите сами: возможность создания масштабируемых кластерных систем (возможность построения систем с высокой частотой запросов, до 4 узлов); корпоративная архитектура памяти (всего — до 64 Гбайт физической памяти); масштабируемая мультипроцессорная симметричная обработка, поддержка до 32 процессоров. Вопрос только в том, будут ли операционные системы от «Майкрософт» использовать в крупных корпорациях. Но если «Майкрософт» при разработке новых операционных систем будет придерживаться той же политики, которой она придерживалась при создании Windows 2000, она сможет вернуть доверие, утраченное из-за не очень стабильной работы win9x. Так что, нравится вам это или нет, один из вариантов Windows 2000 предназначен стать в будущем вашей настольной (или не очень) операционной системой (если вы, конечно, придерживаетесь операционных систем от «Майкрософт»), а потому, как нам кажется, возможности этой, бесспорно, качественной операционной системы следует рассмотреть повнимательнее.

Отличия Windows 2000 от версий Windows 98 и Windows NT 4.0

Всем известно, что Windows NT всегда отличалась в лучшую сторону от своей, так сказать, «домашней сестры» — Windows 95 — 98. Это и более надежное ядро, и полностью реализованный защищенный режим, и повышенная безопасность. Кроме того, файловая система NTFS (что расшифровывается как NT File System) дает гораздо больше возможностей, чем устаревшая FAT16 или пришедшая ей на смену FAT32; с ней вам не придется больше беспокоиться о вечно потерянных цепочках и кластерах. Традиционно первые системы NT использовались почти исключительно на серверах, там, где было неудобно или по каким-то причинам невозможно применение UNIX. Но, как известно, ничто не живет в человеке так долго, как старые привычки и традиции, поэтому даже сейчас можно очень часто слышать высказывания типа: «Зачем мне дома Win2000, я же играть собираюсь…» Конечно, у каждого свои запросы, но если вам нужна безопасность данных, и вы не хотите, чтобы «злые хакеры» запросто смогли узнать ваш пароль на доступ к Интернету, или вам надоели постоянно зависающие приложения то, возможно, вам следует подумать об установке новой операционной системы. Ну а если вы используете компьютер на работе, и вам важна конфиденциальность и, главное, сохранность информации, то причин использовать именно NT у вас становится еще больше. Еще одно преимущество Win2000 — она официально локализована для русскоязычных пользователей, причем не только настольный вариант, но и более мощные серверные версии.

Если с отличиями от серии 9x все более или менее понятно — Windows 2000 имеет принципиально другое внутреннее устройство, подробнее про которое будет написано чуть ниже — то об отличиях от NT 4.0 нужно поговорить отдельно. В первую очередь, следует упомянуть следующие элементы, которые подверглись изменению:

— Графический интерфейс — интерфейс был оптимизирован для упрощения доступа к информации посредством личных меню и списков последних по времени использования приложений.

— Поддержка оборудования — добавлена поддержка Plug and Play (PnP), Advanced Configuration and Power Interface (ACPI), USB, IEEE 1394 (FireWire), а также новая модель драйверов мультимедиа-устройств (WDM).

— Простота конфигурирования — усовершенствованны средства установки и конфигурирования приложений и аппаратных устройств.

— Простота администрирования — введение консоли управления Microsoft Management Console (MMC).

Также нужно отметить тот факт, что благодаря многочисленным изменениям во внутренних алгоритмах работы, Windows 2000 стала работать быстрее и эффективнее, чем NT 4.0 (в основном это касается приложений, использующих графику и, в том числе, графический интерфейс GUI). Немаловажен и тот факт, что теперь вам гораздо реже придется перезагружать систему после внесения каких-либо изменений в настройки ее работы.

На этом, на наш взгляд, можно завершить краткое описание Windows 2000, надеюсь, мы ввели вас в курс дела относительно истории ее разработки и смогли убедить в преимуществах использования именно этой версии. Впрочем, не будет лишним еще раз напомнить, что мы обсуждаем Windows 2000, а не ХР, потому что она является СЕРВЕРНОЙ операционной системой и «Майкрософт» уделяет значительно больше внимания устранению ошибок и технической поддержки Windows 2000. Тем не менее, из-за того что системы 2000 и XP имеют схожее строение, почти всегда мы употребляем первую, можно смело ставить и вторую — справедливость сказанного не изменится.

В следующей статье мы уже подробнее рассмотрим внутренние механизмы работы ядра NT.

Windows 2000 и XP — курс молодого администратора (Часть 2)

Иван Марциновский, Алексей Смирнов

В первой части статьи мы дали краткое описание Windows 2000, надеюсь, мы ввели вас в курс дела относительно истории ее разработки и смогли убедить в преимуществах использования именно этой версии ОС. В этой части мы рассмотрим внутренние механизмы работы ядра NT.

Часть вторая.

Внутренняя кухня Windows 2000.

«Ничто не дается даром в этом мире, и приобретение знания — труднейшая из всех задач, с какими человек может столкнуться».

Карлос Кастанеда, «Учение дона Хуана»

Итак: что хорошего предлагает нам Windows 2000? В первую очередь, это, конечно, защищенность данных и отказоустойчивость. Звучит хорошо, но вдумчивого и любопытного читателя должно интересовать, что же стоит за общими словами и заявлениями рекламных представителей «Майкрософт». «Да, масштабируемость; да, высоко-производительность; да, повышенная надежность… все это мы уже слышали тысячи раз, и тысячи раз потом снимали лапшу с ушей и имели на деле то, что имели… — может сказать он. — А что же по существу?» — и будет совершенно прав. Голые слова, не подкрепленные фактами, так и останутся бесполезным сотрясанием воздуха. По существу же, мы имеем операционную систему, в которой разработчики, по крайней мере, попытались применить на практике очень разумные идеи, повышающие стабильность системы и ее помехозащищенность. Данные и код операционной системы изолированы от пользовательских приложений целым рядом специальных методов. Для предотвращения доступа приложений к критически важным данным операционной системы и устранения риска их модификации Windows 2000 использует два режима доступа к процессору: пользовательский и режим ядра. Стоит заметить, что хотя на самом деле в архитектуре процессоров x86 предоставлено четыре уровня привилегий (так называемых колец), на которых могут работать процесоры, «Майкрософт» поступила, как всегда, достаточно оригинально, и решила использовать только два из них: нулевой уровень для исполнения в режиме ядра и третий — для пользовательского режима. С другой стороны, разработчиков тоже можно понять: мечта о мировом господстве на рынке операционных систем не дает им покоя, поэтому NT разрабатывалась так, чтобы работать не только на процессорах фирмы Intel, но также, например, на Digital Alpha или IBM PowerPC, которые могли иметь только два уровня привилегий. Как уже упоминалось, Windows 2000 основана на концепции микроядра (microkernel), а значит, разработчики ОС постарались минимизировать объем кода, исполняемый в режиме супервизора, то есть в режиме, при котором код обладает возможностью прямого доступа ко всему аппаратному обеспечению и ко всей памяти. Естественно, что в таком случае только данный код может управлять работой всех устройств и предоставлять программам базовые сервисы, такие, как, например, выделение (или отказ в выделении) памяти, доступ к дисковой подсистеме и т. д. От работоспособности микроядра полностью зависит работоспособность компьютера в целом, поэтому к нему предъявляются достаточно высокие требования:

— высокая надежность,

— высокая производительность,

— небольшой объем кода (это особенно актуально для ОС реального времени).

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

Концепция микроядра подразумевает, что фактически все компоненты операционной системы, за исключением небольшого базового программного модуля (который и является микроядром), работают в пользовательском режиме на равных условиях со всеми остальными программами, работающими в системе. Очевидно, что отказоустойчивость всей системы при таком подходе возрастает, так как сбой одного из компонентов приводит к минимальному ущербу, при этом всегда остается возможность этот компонент перезапустить. Грубо говоря, если только ядро осталось после сбоя «живым», нажатие Ctrl+Alt+Del приведет к появлению окна «Безопасность Windows», с помощью функций которого можно решить большинство проблем, причем это произойдет немедленно, так как соответствующий поток процесса ядра при обычных условиях имеет наивысший приоритет. Если же вы обладаете правами администратора, у вас есть очень простой способ «подвесить» систему: нужно всего-то написать программу, которая будет к некоторому числу добавлять по единичке, пока не будет достигнуто значение, скажем, 1045 (те, кто хоть раз занимался программированием, меня поймут).

После чего эта программа запускается, и ей ручками присваивается приоритет 31 — REALTIME_PRIORITY_CLASS и любой текущий исполняемый поток, имеющий, соответственно, меньший приоритет, прерывается до истечения отведенного ему кванта времени, а код и данные операционной системы блокируются. Все очень просто, но если уж компьютер завис, то винить надо будет себя, а не «Майкрософт». Кстати, на этом примере видно, что нужно быть очень внимательным при установке высоких приоритетов и режима реального времени программе — если уж она «зависнет», то наступит крах системы.

Но вернемся к микроядру. Кроме всего прочего, система, основанная на концепции микроядра, позволяет производить более гибкое конфигурирование, так как любой из компонентов ОС можно легко заменить на другой, поддерживающий точно такой же программный интерфейс. На самом деле, для увеличения производительности Windows 2000 использует некий гибрид микроядра и монолитного дизайна, так как некоторые ее базовые компоненты, например, диспетчер процессов и диспетчер виртуальной памяти, все-таки функционируют в режиме ядра — это позволяет им взаимодействовать между собой не через медленные механизмы межпроцессорной передачи данных (передачи данных между несколькими программными процессами), а используя общую память. Вторая причина включения дополнительного кода в режим ядра кроется в том, что процессор, занятый выполнением некоторой задачи, реализуемой соответствующим процессом (или, как говорят, работающий в определенном контексте), работает с текущими значениями процессорных регистров, а также указателей на используемую память (стек, данные, исполняемый код). Эти значения различны для различных потоков, поэтому, прежде чем перейти на выполнение другой программы, реализуемой другим процессом, процессор должен сохранить текущий контекст, а затем загрузить контекст нового процесса, на выполнение которого он переключается. Данная процедура называется переключением контекста и может занимать существенное время. Использование гибридного дизайна позволяет снизить количество переключений контекста. Хотя, теоретически и это несколько, снижает надежность системы, все равно она оказывается не в пример больше, чем у windows 9x. За счет полностью реализованного режима виртуальной машины микроядра обеспечиваются многие дополнительные возможности, недоступные, скажем, Windows 98. Это, в первую очередь, обеспечение приложениям индивидуального адресного пространства для каждого процесса и предоставление уровня защищенности не хуже, чем по стандарту C-2/Е-3, здесь ключевую роль играет то, что Windows 2000 отказывает процессам, обращающимся к оборудованию и памяти, которые им не принадлежат. Достигается это достаточно простыми методами, например, каждая страница в виртуальной памяти помечается тэгом, определяющим, в каком режиме должен работать процессор для чтения или записи данной страницы памяти. Таким образом, страницы системной памяти оказываются недоступными для всех процессов, не работающих в режиме ядра. При попытке выполнения любой запрещенной операции центральный процессор автоматически генерирует исключение, и управление передается микроядру NT. Микроядро определяет, разрешено вызвавшей исключение программе выполнять такую операцию, или нет. Если операция признана несанкционированной, управление передается программе Dr.Watson, которая оповещает о возникшей ошибке пользователя, а система в этот момент быстренько завершает работу приложения, попытавшегося выполнить незаконное с точки зрения ОС действие. Естественно, подобный алгоритм работы — это не особая и сверхгениальная разработка талантливых программистов из «Майкрософт», а хорошая реализация тех аппаратных возможностей «железа», которые появились в современных микропроцессорах.

Для того чтобы обратиться к оборудованию или памяти, а также совершить некоторые другие операции, недоступные в пользовательском режиме, приложения (а также многие подсистемы самой Windows 2000, которые не работают в режиме ядра) обращаются к системным вызовам микроядра ОС, которые также называют естественным API. В состав этого API входит более 250 функций, обращение к которым осуществляется при помощи системных вызовов, основанных на программных исключениях. Все вызовы API обслуживаются как системными службами NT, так и модулем NT Executive — «сердцем» операционной системы, над которым так дорожит и трясется «Майкрософт».

Модуль NT Executive представляет собой несколько программных потоков, которые закоренелые программисты-системщики почему-то предпочитают называть рабочими потоками; естественно, все эти потоки выполняются в режиме ядра. Код практически всех подсистем этого модуля находится в файле ntoskrnl.exe, кроме, разве что, подсистемы win32, код которой расположен в файле win32k.sys, и уровня абстракции оборудования HAL (Hardware Abstraction Layer), который содержится в файле halxxxxx.dll, где xxxxx зависит от типа используемого компьютера. NT Executive сосредотачивает все самые важные части ОС:

— Ядро — это основная часть Windows 2000, в реализации которой кроется вся мощность и красота платформы NT. Прежде всего, ядро отвечает за выделение памяти для приложений и распределение процессорного времени, то есть, фактически, за реализацию многозадачности. Для этого в состав ядра входит так называемый планировщик потоков (threads scheduler), который назначает каждому из потоков один из 32 уровней приоритета. Уровень 0 зарезервирован для системы. Уровни от 1 до 15 назначаются исполняемым программам, а уровни от 16 до 31 могут назначаться только администраторами. Планировщик делит все процессорное время на кванты фиксированного размера (как менять размер кванта, еще будет рассказано в следующих частях нашей статьи), при этом каждый программный поток выполняется только в течение отведенного ему времени, и если к окончанию кванта он не освобождает процессор, планировщик в принудительном порядке приостанавливает этот поток и меняет контекст процессора, настраивая его на выполнение другого потока, обладающего тем же приоритетом. Ядро также осуществляет всю работу, связанную с обработкой программных и аппаратных прерываний.

— Уровень абстракции оборудования (HAL) — это прослойка между операционной системой и аппаратурой компьютера. HAL имеет свой собственный API, предназначенный для транслирования обращений всех приложений и драйверов в конкретные команды процессора, учитывающие его внутреннюю структуру и нюансы работы. HAL и ядро написаны на языке низкого уровня, в то время как остальные компоненты ОС реализованы на языке C и C++, поэтому именно они отвечают за переносимость NT на системы с другой архитектурой. На данный момент Windows 2000 есть в версиях как для процессоров PC совместимых компьютеров (Pentium и старше), так и для нового перспективного семейства 64-битных процессоров EPIC (Itanium, Itanium-2).

— Диспетчер ввода-вывода (I/O Manager) — интегрирует добавляемые в систему драйверы устройств в операционную систему Windows 2000.

— Диспетчер объектов — служит для управления всеми разделяемыми ресурсами компьютера. В момент обращения приложения или службы к какому-либо ресурсу, диспетчер объектов сопоставляет этому ресурсу объект и отдает приложению дескриптор этого объекта. Используя дескриптор, приложение взаимодействует с объектом, совершая в его отношении различные операции. Монитор системы безопасности следит при этом за тем, чтобы с объектом выполнялись только разрешенные действия.

— Диспетчер процессов — предоставляет интерфейс, при помощи которого другие компоненты Windows NT Executive, а также приложения пользовательского режима могут манипулировать процессами и потоками. Во время работы диспетчер процессов сопоставляет каждому процессу и потоку идентификатор процесса (PID — Process Identifier) и потока (TID — Thread Identifier) соответственно, а также карту адресов и таблицу дескрипторов.

— Диспетчер виртуальной памяти — служит для управления и организации подсистемы памяти, позволяет создавать карты адресов для процессов и следит за корректностью использования адресного пространства приложениями (то есть, следит за общим доступом к памяти и осуществляет защиту страниц в режиме копирования при записи). Диспетчер виртуальной памяти также обеспечивает возможность отображения файлов на память, используемую для загрузки в оперативную память исполняемых файлов и файлов динамических библиотек. Еще в Windows NT4.0 существовала так называемая Защищенная Модель памяти, которая (в отличие от DOS-подобных ОС) позволяла изолировать каждый процесс друг от друга и, что самое главное, от кода самой ОС. Диспетчер виртуальной памяти представляет физическую память для пользовательских приложений таким образом, что каждому процессу выделяются отдельные 4Гб виртуального адресного пространства, из которых младшие 2Гб используются непосредственно процессом по своему усмотрению, а старшие 2Гб — отводятся под нужды системы, причем они — общие для всех процессов. При этом каждый процесс «думает», что он — единственный, запущенный в системе. Но здесь кроется некоторое затруднение: многие 16-разрядные программы при своей работе обмениваются данными между собой напрямую, используя одни и те же участки памяти, а это неприемлемо для Windows NT. В этом случае такие программы все же запускаются и предоставляют разделяемую память, где они могут обмениваться данными. Эта память является нестраничной областью физической памяти, которая может быть спроецирована на виртуальное адресное пространство нескольких процессов, и таким образом они смогут взаимодействовать друг с другом. Как мы видим, самое главное, чем занимается диспетчер виртуальной памяти — это видно из его названия — организация логической памяти, размер которой больше размера физической, установленной на компьютере. Этот трюк достигается благодаря тому, что страницы памяти, к которым долго не было обращений и которые не имеют атрибута неперемещаемых, сбрасываются диспетчером в файл pagefile.sys на винчестер и удаляются из оперативной памяти, освобождая ее для других приложений. В момент, когда происходит обращение к данным, находящимся в перемещенной на винчестер странице, диспетчер виртуальной памяти незаметно для приложения копирует страницу обратно в оперативную память, и только затем обеспечивает доступ к ней. Этот механизм обеспечивает выделение дополнительной памяти программам, которые нуждаются в ней, и при этом следит за тем, чтобы все работающие в системе программы обладали достаточным объемом физической памяти для того, чтобы продолжать функционирование.

— Диспетчер кэша — применение кэшированного чтения и записи позволяет существенно ускорить работу таких устройств, как винчестеры и CD-ромы. При этом наиболее востребованные файлы дублируются диспетчером кэша в оперативной памяти компьютера, и обращение к ним обслуживается с использованием этой копии, а не оригинала, расположенного на сравнительно медленном долговременном носителе. Кэш в Windows 2000 является единым для всех логических дисков, вне зависимости от используемой файловой системы, при этом теперь используется файлово-ориентированный, а не блочно-ориентированный алгоритм работы. Кроме того, он является динамическим, а это значит, что диспетчер управляет его размерами в зависимости от доступного объема свободной физической памяти в каждый конкретный момент.

— Win32 User и GDI — выполняют все функции, связанные с пересылкой системных сообщений и отображением информации на экране. До Windows NT 4 эти серверные компоненты функционировали в пользовательском режиме в качестве одной из составных частей подсистемы Win32.

— Другие (монитор обращений к системе безопасности, механизм локального вызова процедур, диспетчер конфигурации, диспетчер PnP, диспетчер электропитания, аппаратные драйверы и т. д.).

Остальные компоненты операционной системы выполняются в пользовательском режиме, часто их называют подсистемами. Например, в состав Windows 2000 входит подсистема безопасности и подсистемы, предоставляющие программам функции таких распространенных операционных сред, как DOS, OS/2, Win16, POSIX, а также Win32. Основное назначение операционной среды — предоставления интерфейса, а также эмуляция работы операционных систем, отличающихся от Windows 2000. Проще говоря, операционная среда добавляет в систему Windows 2000 дополнительные возможности и новые системные вызовы, отличающиеся от вызовов естественного API-ядра. Подсистемы операционных сред загружаются только в случае, если возникнет необходимость их использования. Каждая подсистема выполняется как отдельный процесс пользовательского режима. Таким образом, каждая подсистема защищена от сбоев, вызванных другими подсистемами, именно благодаря этому платформа Windows 2000 функционирует более стабильно, чем операционные системы линейки Windows 9x. Что кажется наиболее удивительным, Win32 API не является родным для Windows 2000, а реализован так же, как и, скажем, поддержка DOS API. Это замечание, однако, не совсем верно: естественный API очень похож на Win32 API, тем не менее, с ним несколько сложнее работать (между некоторыми функциями Win32 и некоторыми функциями естественного API может существовать взаимооднозначное соответствие, однако часть функций Win32 для выполнения своей задачи обращаются к нескольким функциям естественного API-ядра), кроме того, он не документирован. Поэтому, хоть приложению никто и ничто не помешает действовать в обход интерфейсов, пре-доставляемых операционными средами, и обращаться к естественному API напрямую, компания «Майкрософт» крайне не рекомендует использовать такую возможность.

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

Windows 2000 и XP — курс молодого администратора (Часть 3)

Иван Марциновский, Алексей Смирнов

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

Часть третья. Модель безопасности в Win NT/2000.

«Сила зависит лишь от того, какого рода знанием владеет человек. Какой смысл в знании вещей, которые бесполезны? Они не готовят нас к неожиданной встрече с неизвестным».

Карлос Кастанеда, «Учение дона Хуана»

Защита данных в Windows 2000 построена весьма эффективно и гарантируется многоуровневой схемой защиты как от случайной их потери при работе, так и от умышленного повреждения или нарушения условий конфиденциальности и целостности. Концепции, лежащие в основе системы безопасности операционной системы Windows 2000, нельзя назвать революционными: все основные идеи и механизмы достались ей в наследство от прежней системы Windows NT 4.0, где они уже доказали свою состоятельность и эффективность. Говоря иначе, в основе системы безопасности новой операционной системы, как и ранее, лежат понятия «дескриптора безопасности» (SD, Security Descriptor) и «списка управления доступом» (ACL, Access Control List). Но в то же время в новой операционной системе были включены дополнительные возможности (например, поистине мощные средства, которые предоставляет использование механизмов Active Directory) и получили дополнительное развитие старые средства. К сожалению, некоторые из них доступны только для тех пользователей, которые работают под Windows 2000 Professional и входят в группу, управляемую сервером на базе Windows 2000 Server. А наиболее полно они реализуемы лишь в случае создания полноценного домена с разделяемыми функциями серверов, созданными на их базе контроллерами доменов и специальными серверами, определяющими исключительно параметры безопасности. Для реализации новых идей используются различные методы; большинство из них предназначено для работы в сети, вследствие чего они малоинтересны обычному пользователю, поэтому мы вначале рассмотрим принципы, общие для любого компьютера, работающего под управлением Windows 2000.

Любое приложение (программа), запускаемое под управлением Windows 2000, автоматически начинает использовать возможности, обеспечивающие его безопасность. То есть, какое бы приложение не было бы запущено, операционная система (И ТОЛЬКО ОНА) контролирует доступ к своим ресурсам, таким как файлы, память и аппаратные устройства. Что интересно, разработчики Windows 2000 пошли еще дальше и решили централизовать доступ вообще к любым ресурсам системы (даже к таким достаточно абстракт-ным, как окна, процессы и потоки). Поэтому приложение, работающее в Windows, будет защищено от модификации исполняемого кода и данных со стороны других «некорректно» работающих приложений, да и просто нехороших людей, задумавших сломать вам систему. Кроме этого, возможно программное управление правами доступа к особенно критичным в смысле безопасности объектам со стороны отдельных пользователей. Таким образом, обеспечивается многоуровневая система защиты. Данные защищены настолько хорошо, что столкнуться с проблемами доступа к ним при этом могут даже администраторы, обладающие всеми полномочиями при управлении системой, если они не выполняют простейших правил обеспечения безопасности. Например, если не удается восстановить операционную систему после ее выхода из строя и невозможно воспользоваться сертификатом, с помощью которого производилось шифрование, то доступ к данным, хранящимся на томах хранения информации с применением EFS, будет невозможен из любой другой работающей системы, куда они будут перенесены. Поэтому сертификаты всегда желательно копировать на какой-нибудь надежный резервный носитель информации, который будет храниться в хорошо защищенном от постороннего доступа и вредных факторов воздействия месте.

Как известно, при разработке Windows 2000 учитывалось то, что она должна удовлетворять уровню безопасности C2, разработанному оборонными ведомствами США. Базовые принципы уровня безопасности C2 это:

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

— Только системный администратор имеет физическую возможность управлять безопасностью системы и уровнем доступа отдельных лиц и групп лиц.

— Должно осуществляться управление доступом к ресурсам. Должно быть возможным разрешать или запрещать доступ к указанным ресурсам как отдельным пользователям, так и группам пользователей.

— Пользователи должны регистрировать себя в системе и иметь уникальные идентификаторы. Все действия пользователей, контролируемые системой, должны быть персонифицированы.

— Система должна быть защищена от вмешательства, например, от модификации системного кода в памяти или системных файлов на диске.

Эти требования учитывались уже на этапе проектирования операционной системы и лежат в основе работы самых первых версий Windows NT, поэтому Windows 2000 уже на уровне ядра поддерживает объектную модель защиты. Надо сказать, что никакая другая компромиссная реализация функций, позволяющих работать системе паролей в ранних версиях Windows, сделанная на более высоком уровне (такая, например, как применение отдельных программных пакетов или встраивание соответствующих драйверов, патчей и библиотек в операционную систему) не смогла бы предоставить такого уровня защищенности при той скорости работы, которая достигается в NT. И именно требования безопасности явились катализатором и причиной, заставившей «Майкрософт» писать совершенно новую операционную систему почти с нуля и попрощаться с веткой Windows 9x. Объектная модель защиты подразумевает, что любой ресурс рассматривается системой Windows 2000 как объект, а это означает, что он обладает своими собственными свойствами (атрибутами), которые могут описывать, в том числе, и его поведение с точки зрения безопасности, а также включает в себя данные и все те функции, которые могут потребоваться для манипулирования этими данными. Возможностью прямого доступа к объектам (а значит и к ресурсам) обладает только сама Windows 2000, остальные приложения могут осуществлять доступ к ресурсам исключительно при посредничестве операционной системы путем вызова ее функций и под контролем системы безопасности ОС. Возможности объекта определяются его типом и теми атрибутами, которые были присвоены объекту при его создании (они могут быть изменены с течением времени).

Краеугольным камнем, на котором базируется вся реализация защиты данных, является пользовательская учетная запись или на сленге администраторов и ветеранов NT — аккаунт. Учетная запись — это своего рода пропуск, который позволяет пользователю обращаться к ресурсам системы и однозначно определяет, с какими ресурсами он может работать и каким образом. Каждый пользователь, который регулярно использует компьютер, должен обладать собственной индивидуальной учетной записью. Для тех же, кто входит в систему нечасто, существует одна на всех учетная запись — гость, — которая обладает, как правило, минимумом прав доступа. Для облегчения жизни администратору (а он тоже не бог, как может показаться некоторым неискушенным людям, а всего лишь человек) несколько учетных записей можно объединить в группу и назначать унифицированные права доступа всем ее членам, а не каждому пользователю в отдельности. Это уже относится к назначению групповых политик и обычно обсуждается при рассмотрении приемов администрирования, что мы и сделаем в одной из следующих статей. Вся информация об учетных записях и группах хранится в централизованной базе данных. В Windows NT 4, а также в Windows 2000 эта база называется SAM (Security Accounts Manager). В базе данных SAM каждый пользователь и каждая группа, а также каждый компьютер идентифицируется уникальным идентификатором безопасности SID (Security Identifier), который каждый раз при создании новой учетной записи автоматически генерируется ОС совершенно случайным образом и никогда не используется повторно. Соображения уникальности заставляют систему использовать в качестве SID число, а не символьную запись. Символьные обозначения учетных записей просто ставятся в соответствие SID’у, так делается только для удобства работы администратора. Из вышесказанного вытекает, что, если вы по ошибке удалите какую-либо учетную запись, то восстановить ее будет уже невозможно, так как если вы попытаетесь создать новую запись с таким же символьным именем, ОС все равно сгенерирует новый SID, который, естественно, не будет соответствовать по наполнению пре-дыдущему. Это обстоятельство обязательно следует учитывать при работе с Windows 2000.

Атрибуты защиты каждого объекта (будь то реестр, файл или общий ресурс) находятся в его дескрипторе защиты SD, который предоставляет сведения о владельце объекта (то есть содержит SID владельца) и дискреционный список управления доступом к объекту (DACL, Discretionary Access Control List). Дискреционный список управления доступом (часто называемый просто списком управления доступом) содержит информацию о том, какие действия запрещается или разрешается выполнять тем или иным пользователям или группам пользователей по отношению к данному объекту. То есть, он представляет собой некий перечень записей управления доступом ACE (Access Control Entry), каждая из которых соответствует некоторому пользователю или группе пользователей (содержит соответствующие SID), которым разрешен или запрещен доступ к данному объекту в форме, определяемой ACE. Помимо дискреционного списка управления доступом дескриптор SD включает в себя системный список управления доступом SACL или System ACL, который необходим для работы системы аудита доступа к ресурсам (системы протоколирования). Система аудита осуществляет слежение за доступом к объектам безопасности и протоколирует информацию об удачных и неудачных попытках доступа к ним в журнале аудита. Благодаря механизмам аудита администратор может узнать, кто и когда пользовался интересующим его ресурсом системы, или пытался им воспользоваться, если в доступе было отказано.

При загрузке Windows предложит вам зарегистрироваться в системе от имени одного из пользователей, для которых имеется учетная запись. При этом введенные данные сравниваются с теми, которые хранятся в операционной системе, и на основании результата сравнения принимается решение о регистрации (или отказе в доступе). В случае успешной регистрации, пользователю системой WinLogon назначается токен доступа (access token), который в дальнейшем будет присваиваться каждому процессу, который запустит пользователь. Токен содержит информацию о самом пользователе, группе, в которую он входит, привилегиях и правах доступа, то есть содержит SID пользователя и SID’ы всех групп, в которые он входит. При попытке процесса обратиться к какому-либо объекту производится поиск ACE, соответствующего обратившемуся процессу, в дискреционном списке ACL этого объекта. На основе сравнения токена доступа и ACE принимается решение о разрешении или запрещении доступа процесса, запущенного данным пользователем к объекту. Как мы видим, уже на достаточно низком уровне система неплохо защищена от возможных попыток несанкционированного доступа.

Еще одно средство защиты данных, интегрированное в Windows 2000, — это файловая система EFS (Encrypting File System), являющаяся дополнением к NTFS 5.0 и позволяющая производить шифрование файлов «на лету», т. е. как шифрование, так и дешифровка прозрачны для пользователя и для программ. Степень криптостойкости у этого метода на удивление высокая, что обеспечивается применением шифрования с комбинированным несимметричным (открытым) ключом, в который, к тому же, вносятся псевдослучайные изменения. При первой попытке зашифровать некоторый файл пользователю выдается системой сертификат, который содержит всю необходимую информацию по дешифровке и управлению безопасностью. Этот сертификат всегда желательно скопировать на какой-нибудь надежный носитель, поскольку в случае его утраты невозможно будет открыть ни один из зашифрованных файлов (система сообщит вам, что у вас нет прав доступа к нему). Ну и напоследок, хочется заметить, что EFS частично входит в ядро Windows, что позволяет наиболее эффективно обеспечивать сокрытие данных.

Отвлечемся от одиноко стоящей рабочей станции и обратим свои взоры к ЛВС. Что отличает сеть от простого компьютера? Правильно, наличие каналов обмена информацией, не всегда защищенных от постороннего воздействия и контроля, между отдельными хостами. А раз так, то наиболее критичную информацию необходимо как-то шифровать. Что касается целостности данных, то этим занимаются службы протоколов, ну а проблемы конфиденциальности решаются по-разному. Аутентификация на этапе соединения двух (или более) компьютеров позволяет произвести проверку того, что на другом конце линии действительно тот, с кем вы хотите связаться. Но к каналу связи (даже оптоволоконному) всегда можно подключиться, не говоря уже о том, что пакет данных при пересылке зачастую минует много серверов и маршрутизаторов, на которых он может быть перехвачен. Здесь на помощь приходит шифрование, к которому и прибегают все чаще и чаще в последние годы, если необходимо работать с хоть сколько нибудь ценными данными.

В Windows 2000 широко используются алгоритмы шифрования данных с открытым ключом, и они уже изначально встроены в систему. В первую очередь, эти средства позволяют по защищенным каналам обмениваться информацией внутри домена. Основа всей системы сетевой безопасности в Windows 2000 — это набор протоколов и методов взаимодействия с общим названием (уже одно оно очень многого стоит!) Kerberos. Эта спецификация предоставляет возможность установления защищенного канала связи между двумя хостами в незащищенной сети с их предварительной аутентификацией. В отличие от протокола Kerberos, который больше подходит для открытых сетей, средства безопасности протокола IP обеспечивают защищенность всей сети. При этом возможно централизованное управление безопасностью и назначением профилей безопасности. Данные предохраняются от перехвата и копирования на протяжении всего пути следования. Для надежной передачи информация шифруется с применением открытых или закрытых ключей. Шифрование с открытым ключом требует больших затрат ресурсов и поэтому применяется только в тех случаях, когда объем данных сравнительно невелик. Если объем большой, то они шифруются с применением закрытого ключа, который затем шифруется открытым.

Еще одна очень удобная возможность обеспечить сохранность данных при передаче их по сети — это использование политик безопасности IP. Защита данных в этом случае также обеспечивается применением алгоритмов шифрования и сертифицирования (Diffie-Hellman, HMAC, DES-CBC), причем они «прозрачны» как для клиентских программ, так и для пользователей. Предполагается, что путь следования данных с одного компьютера на другой неизвестен и, возможно, небезопасен.

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

Windows 2000 и XP — курс молодого администратора (Часть 4)

Иван Марциновский, Алексей Смирнов

Нормальное функционирование Windows можно разделить, как минимум, на три фазы: начальную загрузку, режим работы и завершение работы (естественно, для крупных серверов идеальным считается режим, при котором компьютер загружается всего один раз, а потом работает без выключения — но такой случай, скорее, исключение, чем правило, тем более для систем на основе Windows). По большей части, авторы популярных статей и книг ограничиваются рассказом о второй стадии, в то время как первая, на наш взгляд, оказывается неоправданно забытой и обойденной вниманием. Это является неким недоразумением, ведь знание основных этапов начальной загрузки ОС может оказаться хорошим подспорьем в процессе решения проблем и устранения неполадок, не позволяющих компьютеру нормально загрузить операционку. Поэтому в этой части статьи мы подробно остановимся на том, как протекает процесс загрузки компьютера, работающего под управлением Windows 2000, и рассмотрим его детальнее, а также немного коснемся вопроса завершения работы.

Четвертая часть. Процесс загрузки системы.

«Воин живет действием, а не думаньем о действии или думаньем о том, что он будет думать, когда закончит действовать.»

Карлос Кастанеда, «Отдельная реальность»

Попытаемся пойти путем воина, и не будем лишний раз лить воду о том, как «советские космические корабли бороздят просторы Большого театра», а сразу приступим к делу. То есть, прежде всего, приведем тот минимальный набор файлов, который необходим для успешного запуска системы, вот они:

Boot.ini

Bootsect.dos (необходим только при использовании мультизагрузки)

NTLDR

Ntdetect.com

Ntbootdd.sys (необходим только для загрузки с SCSI-винчестера)

Ntoskrnl.exe

Hal.dll

Необходимые драйверы и разделы реестра.

А теперь, зная необходимые для загрузки Windows 2000 файлы, рассмотрим весь процесс загрузки компьютера, который начинается с процедуры начального тестирования оборудования (POST — Power-On Self Test). Код, выполняющий POST, зашит в БИОСе каждого компьютера, и именно ему передается управление при включении питания. Если в процессе тестирования обнаруживаются какие-либо ошибки, то БИОСом генерируются коды ошибок (POST codes), которые отличаются для БИОСа разных производителей. Наверняка сердце почти каждого сборщика компьютеров не единожды замирало от противного писка динамика, выдающего трели из комбинации длинных и коротких гудков — это и есть звуковые коды, которые выдает POST в самых запущенных случаях, когда не может вывести текст на экран монитора. Если же процедура POST завершается успешно, то БИОС передает управление главной загрузочной записи (MBR — Master Boot Record) первичного жесткого диска системы, и можно сказать, этим завершает первую «аппаратную» стадию загрузки компьютера (весь процесс зависит только от аппаратуры компьютера, но не от установленного программного обеспечения). На второй стадии загрузочная запись, оперируя данными о разбиении жесткого диска на логические тома, передает управление исполняемому коду, расположенному в загрузочном секторе. Вот тут-то и начинается самое интересное, так как в случае Windows 2000 этим кодом является NTLDR (boot loader). Из-за сложности всех предварительных операций, когда программа, почти ничего не сделав, кроме как загрузив вторую, передает управление ей, а та, в свою очередь, поступает почти так же, как и первая, программисты-системщики шутливо сравнивают всю эту процедуру с поднимающим себя за собственные шнурки человеком. Первое, что делает загрузчик, это переходит в защищенный режим и производит необходимые для успешного функционирования в этом режиме манипуляции с памятью. Кроме функций, позволяющих работать с памятью, NTLDR имеет также несколько модулей, позволяющих работать с некоторыми другими базовыми ресурсами системы, в первую очередь с файловой системой. Все другие действия выполняются с помощью вызова прерываний БИОСа. После первичной инициализации загрузчик предоставляет пользователю возможность выбрать операционную систему, которая будет загружена, из списка систем, установленных на компьютере (то есть, NTLDR выводит на экран надпись OS Loader V5.0 и приглашение выбрать операционную систему; это сообщение выводится только в том случае, если в файле boot.ini зарегистрировано более одной ОС), после чего, если выбрана Windows 2000, начинает загрузку файлов ОС.

Перечень установленных операционок находится в файле boot.ini, который располагается в корневом каталоге системного раздела. Многие думают, что единственное, чего можно достичь путем прямого редактирования boot.ini, — это создание системы с несколькими установленными версиями Windows 2000, однако это не совсем так. Во-первых, диапазон возможных ОС для альтернативной загрузки достаточно широк — это и все Win9x, MS-DOS, OS/2, и даже UNIX. Ну а во-вторых, изменение параметров загрузки самой Windows 2000 позволяет существенно влиять на ее работу и бывает очень по-лезным при отладке. Параметры, указываемые в boot.ini, носят необязательный характер, однако с их помощью можно выбирать версии ядра и HAL, изменять некоторые параметры многопроцессорных систем, режим видеоадаптера, ограничивать объем используемой системой памяти, влиять на работу мыши и многое другое. Знать принципы работы с boot.ini полезно еще и потому, что очень часто при изменении конфигурации системы (удаление или установка логических дисков или физических носителей) или при неудачном редактировании самого файла, загрузчик оказывается не в состоянии найти путь к загрузочному разделу Windows. При этом появляется сообщение типа «NTLDR is missing или Couldn’t find NTLDR», а пользователь начинает в ужасе рвать волосы на голове — не самая приятная ситуация, знаете ли. В таких случаях иногда помогает немного храбрости и возможность вручную отредактировать файл и исправить ошибку; будьте внимательны, для описания пути (в не SCSI-системах) используется следующий формат:

multi(0)disk(0)rdisk(0)partition(3)\ WINNT, где:

multi() — номер адаптера IDE, с которого осуществляется загрузка,

disk() — параметр, аргумент которого равен нулю,

rdisk() — порядковый номер диска, нумерация ведется начиная с нуля,

partition() — порядковый номер логического диска, на котором непосредственно находятся файлы операционной системы. Нумерация начинается с единицы, а не с нуля! Вообще, с этим параметром обычно возникает много проблем, и их решение похоже на ритуальные пляски шамана с бубном.

\ path — каталог, в котором находятся файлы ОС.

К сожалению, в рамках журнальной статьи невозможно подробно описать все особенности использования boot.ini, поэтому наиболее любопытным читателям мы можем порекомендовать сайт
http://support.microsoft.com/default, где содержится огромное количество информации, так сказать, «из первых рук».

А сами тем временем «вернемся к нашим баранам», то есть, простите, к процессу загрузки. После выбора операционной системы загрузчик запускает Ntdetect.com. Этот компонент считывает из CMOS-памяти системную дату и время, после чего производит поиск и распознавание аппаратных средств, подключенных в данный момент к компьютеру. Завершив работу, Ntdetect возвращает управление и аккуратно собранную им информацию обратно в NTLDR.

Попутно заметим, что иногда бывает удобно создать несколько профилей оборудования, каждый из которых содержит отличный от других набор устройств (создание и управление профилями осуществляется при помощи диалогового окна Hardware Profiles с вкладки Hardware раздела System панели управления). Если такие профили существуют, загрузчик предложит выбрать один из них, после чего приступит к загрузке ядра Ntoskrnl.exe. Хочется подчеркнуть, что на этой стадии ядро только загружается в память, но ему не передается управление (то есть еще не инициализируется и не начинает исполняться системный код ядра).

В первую очередь в память загружается само ядро и уровень аппаратных абстракций. В этот момент на экране появляется подающая большие надежды надпись Starting Windows и индикатор завершенности процесса. Затем сканируется реестр (ищется куст, находящийся в \ Winnt\ System32\ Config\ System) и составляется список драйверов устройств, необходимых для запуска. Из реестра извлекаются настройки, касающиеся организации памяти, которые могут задаваться как самим пользователем, так и специальными утилитами. Здесь же создается набор управляющих параметров (Control Set), который в дальнейшем играет очень важную роль в работе системы.

Управляющие параметры используются при начальной инициализации компьютера и потом на протяжении всего сеанса работы. При этом следует помнить, что всегда существует несколько наборов параметров: Default — используемый по умолчанию, LastKnownGood — набор, соответствующий последней успешной загрузке.

Определившись с используемым набором, загрузчик делает его активным, присваивая разделу HKEY_LOCAL_MACHINE\ SYSTEM\ Select значение Current, и переходит к разделу HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentCont-rolSet\ Services, где ищет драйверы устройств, у которых переменная Start имеет значение 0х0, что означает, что они должны загружаться без инициализации. В свою очередь, параметр Group определяет, какие устройства в каком порядке будут загружаться. Здесь стоит отметить, что наличие «лишних» устройств (дублирующих друг друга, а иногда и вообще не установленных) в системе сильно замедляет ее работу, ведь им требуются дополнительные ресурсы. Как вы уже, наверное, неоднократно замечали, загрузка ядра состоит из двух фаз: начальной, проходящей в текстовом режиме на печально черном фоне, и графической (видны радостные эмблемки «Майкрософта»), когда происходит непосредственно инициализация. В течение всего времени выполнения каждой фазы отображается текущее состояние процесса (индикаторная полоска, заполняющаяся прямоугольниками). В самом начале текстовой фазы загрузки ядра в нижней части экрана появляется надпись, в которой сообщается, что если вы успеете нажать F8, то будут доступны дополнительные варианты загрузки, используемые обычно при отладке или неполадках в работе системы. Никогда не пренебрегайте ими, ведь они могут очень здорово выручить вас в критической ситуации. После окончания загрузки ядра операционная система практически готова к работе, осталось только проинициализировать драйверы и подготовить службы — индикатор полностью заполняется, и происходит переключение из текстового режима в графический. На этом шаге управление передается ядру Ntoskrnl, которое получает ссылки на объекты, созданные при помощи NTLDR, таким образом, ядру передается вся информация, собранная другими модулями, а в конце передается и управление. При своей инициализации ядро производит ряд действий в следующей последовательности:

окончательная подготовка к работе памяти и менеджера памяти;

инициализация диспетчера объектов;

установка системы безопасности;

инициализация менеджера Plug and Play;

установка базовых объектов и сервисов системы;

настройка драйвера файловой системы и сохранение начальных параметров в реестре (создается копия набора управляющих параметров Clone, в которой содержатся данные, идентичные Current ControlSet, инициализируются устройства согласно порядку инициализации, затем создается ключ HKEY_LOCAL_MACHINE\ HARDWARE);

загрузка и инициализация диспетчера ввода-вывода (обычно — самая длительная фаза);

ядро «убирает за собой мусор», который остался после загрузки;

последняя стадия — загрузка системных сервисов, которые, собственно, и реализуют взаимодействие с пользователем. Список основных системных сервисов приведен ниже.

Smss.exe — диспетчер сеансов. Он управляет другими сервисами и службами Windows, в том числе запускает Win32 (Csrss) и некоторые системные утилиты, выполняемые на этапе загрузки (указываются в разделе реестра HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Session Manager\ BootExecute). Еще две важные функции — реализация графического пользовательского интерфейса и запуск процессов csrss.exe и WinLogon.exe. Этот диспетчер запускается, тем не менее, в самом конце загрузки.

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

Lsass.exe — служба, запускаемая WinLogon.exe и отвечающая за безопасность системы. Она предоставляет возможность пользователю зарегистрироваться в системе, и только после того, как в системе зарегистрировался хотя бы один пользователь, загрузка считается успешной, и текущий набор управляющих параметров Clone переименовывается в LastKnownGood.

Уже после загрузки операционной системы пользователь, чтобы доказать, что он тот, за кого себя выдает, должен пройти процедуру аутентификации, то есть ввести соб-ственное регистрационное имя (или на жаргоне — логин) и пароль. Процедура подключения к системе позволяет определить, кем является пользователь и обладает ли он правом входа и работы с системой. Эту процедуру выполняет служба WinLogon. При этом в системе происходят следующие события:

Процесс WinLogon отображает на экране фон рабочего стола (к этому моменту объект рабочего стола уже создан, но еще не отображается), а также приглашение к вводу пользователем логина и пароля. Введенные данные передаются подсистеме безо-пасности.

Подсистема безопасности обращается к базе данных SAM (Security Accounts Manager, подробнее про SAM смотри в части статьи, посвященной организации безопасности в Windows 2000) и проверяет, обладает ли пользователь полномочиями работы с системой.

Если пользователь является авторизированным пользователем системы, то подсистема безопасности формирует для него токен доступа, который вместе с управлением передает обратно процессу WinLogon.

Процесс WinLogon посредством обращения к подсистеме Win32 создает новый процесс для пользователя и прикрепляет ему только что созданный токен доступа. Каждый процесс, в дальнейшем создаваемый пользователем, отмечается принадлежащим этому пользователю токеном доступа. Таким образом, любые попытки доступа пользователя к ресурсам системы контролируются и отслеживаются. Более того, с философской точки зрения можно сказать, что всегда точно известно, кто инициировал то или иное действие в системе. Благодаря обязательной процедуре подключения к системе упрощается реализация таких механизмов, как аудит системы и квоты на использование ресурсов.

Помимо прочих данных, пользовательский токен доступа содержит идентификатор пользователя, а также идентификаторы всех групп, к которым принадлежит данный пользователь.

Итак, процесс загрузки удачно завершен — УРА! Казалось бы, это происходит так быстро, но при этом, как вы успели увидеть, система совершает ошеломительное количество операций и действий как с аппаратной платформой вашего «железного коня», так и с собственными программными модулями.

Вас, конечно же, интересует, что делать дальше, после того как компьютер загружен. Что же, придется вкратце рассказать об этом. Если вы опытный пользователь или, не дай Бог, администратор, на ваш стол наверняка уже наклеен ярлык типа Quake III или Counter Strike, так что можете смело давить на него мышью. В противном случае стоит воспользоваться рекомендацией самой «Майкрософт», вдавить кнопку «Пуск» и начинать свой трудный рабочий день. Так или иначе, мы пропускаем интимные подробности вашей работы с компьютером и, предпо-ложив, что у вас все получилось великолепно, переходим к той, немного печальной и грустной поре, когда компьютер приходится выключать. Хотя эта часть работы системы довольно неприметна, она тоже может принести пару сюрпризов.

Стадия завершения работы начинается с того, что процесс csrss получает соответствующее сообщение, передаваемое Win32 функцией ExitWindowEx, которое сигнализирует о том, что некоторая программа желает завершить работу системы. После этого csrss посылает всем оконным функциям главных окон процессов, запущенных в данный момент в системе, сообщение WM_QUERYENDSESSION, которое, по сути, оповещает программы о скором завершении работы, а затем проверяются ответы каждой программы. Программа может быть «согласна» и «не согласна» с предложением Windows. Если она не согласна, csrss пре-доставляет ей возможность завершиться в течение некоторого небольшого времени, после чего, в зависимости от настроек системы, выводит (или не выводит) окно, в котором сообщается имя мятежной программы, не желающей завершать свою работу, и предлагается ее закрыть принудительно. Так или иначе, но через некоторое время после начала стадии выключения, операционной системой прерывается работа всех пользовательских приложений, и плавно начинают завершаться системные потоки. В первую очередь, это потоки, реализующие графический режим, а затем и все остальные. В отличие от пользовательских процессов, системные не прерываются принудительно, поэтому если один из них чем-то занят, завершение работы может быть отложено на неопределенное время. В это время сохраняются настройки системы в реестре, и из системного кэша измененные данные файлов записываются на жесткий диск. Непосредственно перед выключением ряду устройств передается предупреждение об этом, после чего в свою работу включается драйвер электропитания. Проходит еще пара секунд, и ваш монитор, подмаргивая огоньком светодиода, тихо, словно выдохнув, щелкает, и экран приобретает темный цвет безжизненного полотна остывающего люминофора.

Windows 2000 и XP — курс молодого администратора (Часть 5)

«Автоматически мы повернулись и пошли назад, но чувство усталости нас не оставляло. Мы оба настолько выдохлись, что не могли удержаться в вертикальном положении. Мы повалились на землю и непроизвольно приняли позу

Карлос Кастанеда, «Дар Орла».

Иван Марциновский, Алексей Смирнов

Инсталляция

Итак, предположим, вы решили установить новую ОС на свой компьютер. Первое, в чем нужно убедиться, — что его аппаратных ресурсов хватит для ее функционирования, и в том, что у вас не возникнет проблем несовместимости операционной системы с некоторым (обычно устаревшим) оборудованием. В случае с Windows 2000 Professional минимальной конфигурацией является Intel-совместимый процессор не хуже, чем Pentium 133, VGA-монитор, 650 Mb свободного пространства на жестком диске и 32 Mb оперативки (хотя для приемлемой скорости работы желательно иметь не меньше 64 Mb). Требования не самые скромные, но большинство современных компьютеров им полностью удовлетворяет. Список совместимого с Windows 2000 оборудования (Hardware Compatibility List, HCL) вы найдете на компакт-диске Windows 2000 Professional в папке \support или же можете получить свежую копию по адресу
ftp://ftp.microsoft.com/services/whql/win2000hcl.txt. Если вашего оборудования нет в списке, не отчаивайтесь, это еще не значит, что оно не будет работать под управлением этой ОС, просто оно не протестировано компанией Microsoft.

Окончательный номер сборки ядра (Final Edition) — 2195 (то есть 5.0.2195.2951), его можно посмотреть на вкладке «Свойства» файла ядра ntoskrnl.exe. Кроме того, информация о версии ядра регистрируется в журнале системы, каждый раз при загрузке Windows 2000. Чтобы просмотреть эту запись запустите Event Viewer (просмотр событий) из папки Administrative Tools, далее выберите System Log (журнал системы) и дважды щелкните мышкой на запись с кодом события 6009, теперь вы можете узнать, много-процессорная или однопроцессорная, а также отладочная или конечная версия ядра запущена системой. Соответственно, версии более ранние, чем 2195, могут работать не совсем так, как хотелось бы. Поскольку в нашей стране большая часть софта, к сожалению или счастью, является украденной пиратской версией, то может оказаться, что вы купили какую-нибудь бета-версию (номер сборки ядра у нее будет меньше) — это следует учесть при установке. Также следует обратить внимание на наличие так называемых сервис-паков, то есть официальных исправлений и дополнений от «Майкрософт». На сегодняшний день последним является третий сервис пак, который помимо устранения некоторых многочисленных ошибок позволит вам более полно настраивать процесс установки отдельных компонентов Windows (суд относительно монопольного по-ложения Microsoft все-таки дает какие-то результаты).

Вообще, процесс установки представляет большой интерес. Для пользователя он максимально упрощен и оптимизирован (сам процесс не намного сложнее, чем процесс установки Windows 98 или 95), но все же неплохо представлять, как он протекает. На первом этапе программа установки копирует часть дистрибутива, необходимую для запуска ядра Win2000, на жесткий диск, все операции выполняются в текстовом режиме MS-DOS. Этот этап необходим, потому что при загрузке новой системы возможно изменение буквенных обозначений дисков, вследствие чего путь к системной папке может быть утерян. По завершении происходит перезагрузка компьютера, и система загружается уже под управлением ядра Win2000, хотя и, опять-таки, в текстовом режиме. Вам будет предложено выбрать основные параметры установки, и будет проведен предварительный анализ конфигурации оборудования (в автоматическом режиме). По желанию можно произвести необходимые операции с дисками (форматирование, преобразование файловой системы и так далее), а также установить новую копию системы или попытаться восстановить уже имеющуюся. Здесь стоит обратить внимание на тот факт, что Windows 2000 предоставляет возможность создания систем с двойной загрузкой. Вы можете установить несколько копий Win2000 или на выбор сочетания Win2000 — MS-DOS, Win2000 — Win95 или Win98 и различные версии NT. Если выбрана установка новой системы, то копируются оставшиеся файлы дистрибутива (по выбору в соответствии с параметрами установки) и происходит очередная перезагрузка, после которой компьютер грузится уже в графическом режиме (GUI). Эта фаза завершает процесс установки и длится довольно долго. Система производит попытку распознать все без исключения установленные устройства и установить для них драйверы. Если во время работы происходит сбой или зависание с выдачей сообщения BSOD (Blue Screen Of Death, голубой экран смерти — страшный сон любого Windows администратора) — типа Hardware malfunction Call your hardware vendor for support то это говорит о серьезном нарушении работы аппаратных компонентов. Если ваш hard-ware vendor по каким-либо причинам недоступен (что для России справедливо почти в 99,9% случаев), можно попытаться справиться с возникшей ошибкой самостоятельно, например, иногда помогает отключение некоторых устройств, наличие которых в системе не критично. Что удивительно, включение этих же устройств уже после установки ОС иногда позволяет Windows безошибочно их обнаружить и в дальнейшем с ними работать без каких-либо проблем. Часто виновницей таких конфликтов выступает встроенная звуковая карта или другие мультимедиа-устройства.

Если инсталляция завершилась успешно, наступает этап настройки. Он проходит по-разному для разных типов Windows 2000. Если у вас версия Windows 2000 Server или более мощная, настройка потребует больше времени, так как необходимо будет настроить режим лицензирования, указать имя компьютера и выбрать необходимые компоненты, устанавливаемые на сервер.

По сравнению с более ранними системами от «Майкрософт», процесс установки длится довольно долго, но большинство процедур автоматизировано до предела. Кроме того, предусмотрена интересная возможность — так называемый файл ответов, который позволяет производить установку полностью в автоматическом режиме. Автоматизация установки Windows 2000 помимо сбережения времени администратора, необходимого для ее установки, предоставляет и некоторые другие преимущества, особенно заметные при формировании корпоративной рабочей среды. Так, например, при автоматизированной установке вы можете быть уверенными в том, что все клиентские компьютеры настроены одинаковым образом, при этом структура рабочей среды упрощается, что делает удобным ее управление. Напротив, если вы устанавливаете Windows на нескольких компьютерах вручную, не существует никаких гарантий того, что в результате их конфигурация будет полностью совпадать. Другое немаловажное свойство автоматизированной установки позволит вам быстро восстановить работоспособность по тем или иным причинам вышедшей из строя пользовательской рабочей станции. Конечно же, эффективность автоматической установки становится наиболее очевидной в случае, если речь идет о крупной сети, в которую входит множество компьютеров. Однако не стоит полностью исключать возможность использования автоматизированной установки в условиях малого офиса или домашней сети, тем более что Windows предоставляет сразу несколько различных вариантов автоматизированной установки, и вы можете выбрать тот, который наиболее соответствует вашим требованиям. Среди предложенных вариантов (установка при помощи сценариев, отображение дисков или так называемое клонирование, установка через сеть, а также электронное распространение прикладных программ) клонирование нам кажется наиболее удобным для применения в небольших компаниях как в случае первичной установки ОС, так и в случае каких-либо сбоев в работе системы. При этом данный метод является, на наш взгляд, наименее требовательным к знаниям и умениям администратора, а также к времени, необходимому на восстановление ОС. Программный продукт, который поможет вам осуществить клонирование, называется System Preparation Tool (программа подготовки системы). Основным преимуществом метода автоматической установки мы считаем возможность копирования не только операционной системы, но и всех установленных на компьютере прикладных программ, а также любых дополнительных программных компонентов. Согласитесь, достаточно удобно, вместо того чтобы часами искать и исправлять возникшие почему-то в системе ошибки (ну, некорректно поработал за компьютером сын бухгалтерши тети Наташи, ну, решил он установить парочку квейков и думов, а также «перенастроить» офис, — что возьмешь с малого дитяти), просто подключить винчестер и двумя щелчками мышкой вернуть все в исходное состояние. Неспортивно, конечно, но для начинающих администраторов эта возможность Windows на первых порах может оказаться настоящей палочкой-выручалочкой, до тех пор, пока они не научатся «правильным» политикам безопасности.

Процесс клонирования можно разбить на три этапа:

Создание копии конфигурации исходного компьютера (копия конфигурации называется образом системы (image)). Образ системы может включать в себя структуру форматирования винчестера, все принадлежащие системе файлы, возможно, некоторые другие файлы, расположенные на локальном диске компьютера, а кроме того, скрытые файлы.

Перенос образа на целевые компьютеры, при этом вначале образ переносится на носитель, с которого его можно скопировать на целевые компьютеры (часто такой носитель называется точкой распространения) или делается доступным для «скачивания» через сеть, а уже потом происходит перенос образа.

Коррекция некоторых параметров целевой системы, которые должны обладать значениями, отличающимися от значений таких же параметров исходного компьютера, например, такой важный параметр, как SID (Security ID). SID применяется при идентификации компьютера в рамках локальной сети, поэтому каждый компьютер в сети должен обладать уникальным SID.

Следует только учитывать, что System Preparation Tool позволяет лишь подготовить образ диска к клонированию (то есть выполнить этапы 1 и 3). Эта утилита не может использоваться для переноса образа на жест-кие диски клиентских машин (этап 2). Для выполнения самой процедуры клонирования следует использовать стандартные утилиты клонирования, такие как Symantec Ghost или DriveImage, от такой популярной в нашей стране софтверной компании PowerQuest.

Windows 2000 и XP — курс молодого администратора (Часть 6)

Иван Марциновский, Алексей Смирнов

Итак, изучив некоторые технические аспекты функционирования Windows 2000, мы плавно переходим к основам ее использования. А это значит, что сегодня мы поговорим об администрировании, ведь хороший стиль политики администрирования — залог безопасности и бесперебойной работы всей компьютерной сети, а администратор — это «главный» человек, которому поклоняются и которого боготворят рядовые «юзеры». И если в предыдущих статьях мы делали основной упор на выявление основ функционирования системы безопасности операционной Windows 2000, то сейчас речь пойдет о том, как эти глубокие знания использовать на практике, ведь, в конечном счете, все делается именно для управления компьютером и наиболее эффективного использования его ресурсов. А это и есть администрирование, почти по определению.

Администрирование пользователей и групп

«Страх — одна из величайших сил в жизни воинов, потому что он заставляет их учиться.»

Карлос Кастанеда, «Огонь изнутри»

Основная задача администратора — управлять компьютером или сетью таким образом, чтобы обеспечить его наиболее эффективную бесперебойную работу. Компьютерная техника крайне сложна — так называемое «железо» состоит из миллионов элементов, один из которых когда-нибудь обязательно сломается, причем произойдет это, скорее всего, в самый неподходящий момент. Программное обеспечение последние годы также не радует простотой и прозрачностью использования, поэтому жизнь рядового администратора безоблачной никак не назовешь. Но и это не все! Зачастую бедному сисадмину, замученному техникой и криво написанными программами, приходится отражать атаки еще и Homo Sapiens, которые в некоторых случаях могут носить характер стихийного бедствия.

Страх перед этими атаками, как умышленными, так и непреднамеренными (случайными), как хакеров, так и просто не осознающих свои действия пользователей, заставляет администратора изучать давно известные более опытным коллегам способы защиты компьютерных систем, а также придумывать свои новые методы и личные уловки. Администратор должен предвидеть различные действия своих потенциальных «врагов» и предусмотреть всевозможные последствия этих действий, а также систему мер, позволяющих со всеми этими бедами бороться. В придачу к этому, администратор должен думать о том, чтобы работа пользователей оставалась максимально удобной и продуктивной. Задача, скажу я вам, не из легких. Но, слава Богу, бороться приходится не одному, а в коллективе единомышленников — так, в Интернете или Фидо, существует множество конференций и форумов, посвященных проблемам безопасности и администрирования, где вы всегда можете рассчитывать на квалифицированную помощь и дельный совет. Делятся люди опытом не только в форумах, но и посредством различных публикаций (как в электронных средствах массовой информации, так и в бумажных) и книг, посвященных администрированию.

Итак, когда же начинается сам процесс администрирования компьютера? А начинается он уже во время инсталляции ОС (точнее, еще раньше, когда вы продумываете политику безопасности, оцениваете, на какие группы разбить пользователей, какие права и привилегии каждой из них выделить, и так далее, но технически настройка всех параметров ОС начинается именно в момент инсталляции). Начнем с самого начала. После успешной установки операционной системы человеку, ее проводящему, предлагается ввести имя компьютера, а также утвердить пароль администратора. Это, пожалуй, самая важная часть всего процесса установки, поэтому отнестись к ней нужно серьезно, ибо администратор — это почти «бог». И если, в случае чего, у вас еще будет возможность изменить имя компьютера путем прямого редактирования реестра, то вот забыть пароль администратора — непростительная оплошность. А главное — еще и трудно исправимая, поэтому, если вы действительно умудрились забыть пароль, то мне вас искренне жаль. В то же время, мы крайне не рекомендуем записывать пароль где попало или брать в качестве него имя любимой жены, благо его-то уж знают все ваши сотрудники и при необходимости могут без труда подобрать. Лучше всего взять какое-нибудь длинное и хорошо запоминающееся слово (например, широко разрекламированный товар или марку), скажем panasonic, и заменить часть букв на схожие по написанию цифры (i или l на единицу, о на ноль) или некоторые буквы заменить на заглавные, в нашем примере получится pAnAs0nIc — сомнительно, что кто-то быстро подберет такой пароль, и в то же время он будет достаточно запоминающимся. Вспомните, какой был пароль у Фокса Малдера — легендарного агента ФБР из сериала «Секретные материалы» — Trustno1. Его не смогли адекватно перевести даже профессиональные переводчики ОРТ (закодированную фразу «не доверяй никому» они озвучили как «верю не верю один»).

Здесь есть еще один тонкий момент: поскольку администратор имеет неограниченный доступ ко всем ресурсам компьютера, не рекомендуется выполнять повседневную работу, входя в систему от имени администратора, поскольку таким образом вы колоссально увеличиваете уязвимость системы. Ведь все программы, запускаемые в рамках рабочего сеанса с расширенными административными полномочиями, могут представлять опасность для рабочей среды — особенно это касается использования всем известного Internet Explorer’а для серфинга по просторам сети, а также не менее известной почтовой программы Outlook. Кроме того, вы можете случайно изменить важные настройки, а запустившиеся вирусы в этой ситуации будут чувствовать себя просто восхитительно. Поэтому для домашнего компьютера оптимальным считается вариант, когда администратор обладает двумя учетными записями: одна из них обладает набором привилегий обычного (или опытного) пользователя, а вторая расширенным набором административных привилегий. Вся каждодневная работа выполняется с использованием первой учетной записи, а для выполнения задач, связанных с администрированием системы, администратор должен переключаться на использование второй. Для сети, где вопросы безопасности особенно важны, мы бы рекомендовали наделить правами администратора учетную запись с отличным от установленного по умолчанию именем (чтобы потенциальному нарушителю пришлось узнавать не только пароль, но еще и имя учетной записи), в то же время учетную запись с именем «Администратор» обеспечить минимальными правами и включить аудит на ее использование, — тогда вы сможете отслеживать в журнале событий все атаки, предпринимаемые на драгоценный сервер.

Естественно, что постоянное отключение от системы и подключение к системе с использованием различных учетных записей, меняющихся в зависимости от выполняемых задач, — весьма утомительное и нудное занятие. Но в Windows 2000 этого и не требуется делать, ведь она теперь поддерживает новый механизм, который позволяет запускать приложения в другом контексте безопасности, не отключаясь при этом от системы. Эта возможность обеспечивается благодаря автоматически запускающейся в начале работы системы службе Secondary Logon Service (запуск от имени). Чтобы воспользоваться этим механизмом, нужно просто щелкнуть на исполняемом файле правой кнопкой мыши, при этом удерживая нажатой клавишу Shift. В результате в выпадающем меню появится пункт Run As (Запуск от имени), и вы сможете запустить интересующее вас приложение от имени другого пользователя.

Добавлять новых пользователей в систему могут только администраторы и опытные пользователи, при этом опытные пользователи не могут назначать пользователям права большие, чем они имеют сами. Не стоит кидаться и сразу создавать кучу пользователей и назначать каждому из них определенные полномочия, лучше выключите компьютер, расслабьтесь и спокойно продумайте план инфраструктуры безопасности, ведь это, пожалуй, одна из самых важных составляющих общего плана развертывания Windows 2000 на предприятии. Очевидно, что при планировании системы безопасности крупной сети вам потребуется затратить значительно большие усилия, чем если бы вы планировали систему защиты сети, в которой работает лишь несколько клиентов. Однако, без всякого сомнения, время, потраченное на изучение принципов «правильного» администрирования даже одного компьютера, не окажется лишним. Скажем сразу, что законченный план безопасности обязательно должен содержать сведения о том, каким образом вы планируете использовать механизмы защиты ОС для того, чтобы обеспечить приемлемый уровень защиты ресурсов рабочей среды, желательно даже, чтобы это было сделано в письменной форме. Продумывая план безопасности, вы, прежде всего, должны оценить риски безопасности, то есть представить возможные ситуации, в которых рабочая среда может оказаться под угрозой. При этом вы должны по возможности разделить эти ситуации на категории, критерием деления будет служить вероятность возникновения ситуации и возможный в этом случае ущерб (например, следует учесть деструктивные действия вирусов, неправильное назначение привилегий, отказ служб, перехват идентификационных данных и т.д.). Обязательно определите политику создания паролей, то есть требование к сложности паролей, их длине, а также к интервалу времени, после которого пароль должен быть изменен (вместо того чтобы назначать правила, которым должны соответствовать придуманные пользователями пароли, вы можете сами назначать им пароли и запретить их изменять). Независимо от того, сами ли вы назначаете пользователям пароли, или они этим занимаются самостоятельно, постарайтесь исключить передачу незашифрованных паролей через каналы связи вашей сети. Продумайте действия, связанные с аудитом. Необходимо учитывать, что механизмы аудита требуют для своей работы дополнительного дискового пространства, а также влияют на производительность. Определите, желаете ли вы, чтобы старые сообщения в журнале аудита перезаписывались спустя несколько дней, или будет лучше, если компьютер будет останавливаться в случае, если происходит переполнение журнала безопасности. Обязанность просмотра журнала безопасности вы можете делегировать другому лицу. Обязательно проанализируйте меры безопасности, связанные с использованием в сети кода, загружаемого из Интернета или получаемого из других непроверенных источников. Также продумайте процедуры, связанные с цифровой подписью писем, отправляемых от лиц, являющихся членами вашей сети.

Когда вы это проделали, вы уже имеете достаточно четкое представление, что же вы хотите получить в конечном итоге, а значит, ваши усилия по настройке безопасности будут целенаправленными, а не случайными, что исключает появление непредвиденных дыр и ошибок. Вы можете возразить, сказав, что все вышесказанное относится скорее к крупной корпоративной сети, нежели к сети какой-нибудь мелкой фирмы, которых, что уж говорить, большинство, и где насчитывается всего-то 10-15 компьютеров, связанных по витой паре. Действительно, в этом случае, скорее всего, не придется разрабатывать сложный документ, отражающий политику безопасности, мы призываем лишь к тому, чтобы еще перед установкой сети вы сели и по-думали: что, от кого и как вы будете защищать, а не делали это в самую последнюю очередь.

Итак, можете включать компьютер и начинать настраивать ОС. Поскольку мы только что установили систему, на компьютере у нас имеется всего две учетных записи: Администратор и Гость. Учетная запись Администратор позволяет полностью управлять компьютером, поскольку входит в группу Администраторы и, таким образом, обладает полным контролем над всей работой системы и ее безопасностью. К слову, учетная группа Администраторы — единственная, которая не может быть удалена или заблокирована ни при каких обстоятельствах, в эту группу обязательно должна входить хотя бы одна учетная запись. Гость — это учетная запись для тех пользователей, которые не зарегистрированы в системе. Для входа в систему в качестве гостя необязательно вводить пароль и предварительно регистрироваться. Таким образом, будьте особенно осторожны, при определении прав и привилегий учетной группы Гости. А лучше вообще отключите ее использование.

Вы уже наверняка заметили, при обсуждении безопасности Windows 2000 всплывают такие фундаментальные понятия, как учетная запись и учетная группа. Так как они имеют огромное значение для обсуждения всех последующих концепций защиты, их стоит обсудить подробнее.

Как известно, в Windows 2000 реализован многопользовательский интерфейс, который предоставляет возможность работать на одном компьютере нескольким людям. Для их учета и идентификации используются учетные записи, поэтому каждый, кто регулярно работает на локальном компьютере, должен иметь учетную запись пользователя, которая содержит информацию о пользователе, включая имя пользователя, его пароль и различные необязательные пункты, определяющие, помимо прочего, когда и каким образом пользователю разрешено входить в систему (с локального компьютера или, скажем, используя telnet). Из этого следует, что одна из ключевых задач администрирования состоит в создании учетных записей для отдельных пользователей и их групп. Отдельная учетная запись предоставляет индивидуальные настройки рабочей среды, в которые входят настройки рабочего стола и интерфейса пользователя, а также индивидуальные настройки отдельных приложений, которые использует данный пользователь (например, настройки почтовой программы будут различны для различных использующих ее людей), настройки печати, набор разрешенных для выполнения программ и так далее. При этом предполагается, что часть индивидуальных настроек пользователи устанавливают сами в соответствии со своими вкусами и потребностями, а часть устанавливает администратор, и эти настройки кроме него не имеет права менять никто. Управление учетными записями осуществляется с помощью оснастки «Локальные пользователи и группы», а также при помощи пункта панели управления — «Пользователи и пароли» (Users and Passwords). Сразу следует оговориться, что вариант использования «Пользователи и пароли» предоставляет значительно меньше возможностей, чем первый, и служит скорее для упрощения администрирования. Однако, с другой стороны, он предоставляет два уникальных параметра: автоматический вход в систему при загрузке с использованием особой учетной записи; определение необходимости нажатия комбинации клавиш Crt-Alt-Del для доступа к диалоговому окну Вход в систему.

Каждая учетная запись может иметь членство в одной или нескольких группах. При установке системы автоматически создаются шесть встроенных групп: Администраторы, Операторы архива, Гости, Опытные пользователи, Репликаторы и Пользователи. Попробуем пояснить, зачем же нужны эти группы. Права доступа в системе можно назначать вручную для каждой учетной записи, так чаще всего и поступают, если пользователей немного. Но что делать, если их, например, больше 100? Администратору предстоит бессонная ночь, если он попытается назначать права доступа всем им прямым присвоением. Ну а если пользователи все время приходят и уходят, администратор, как Жучка, будет этим заниматься практически постоянно, а это рано или поздно приведет к анархии в администрировании, так как никто не будет иметь представления о том, каким пользователям предоставлены разрешения и какие именно. Гораздо предпочтительнее хорошо разработать несколько групп и включать туда при необходимости те или иные учетные записи. Но не стоит думать, что использование групп служит только для облегчения работы администратора, вовсе нет, преимущества их использования должны быть очевидны и руководителям, и топ-менеджерам. Предположим, вы директор крупного предприятия. Вы работаете с самыми разными документами: финансовыми договорами, производственными бумагами, договорами о поставках и так далее, все они хранятся на сервере вашего предприятия, поскольку с ними работают и другие сотрудники. Вам, вполне естественно, хотелось бы ограничить доступ бухгалтеров к производственным документам, а инженеров — к финансовым. С этой целью можно создать две группы: «Финансисты» и «Техники», каждой из которых назначить доступ к нужным файлам. Затем учетная запись директора включается в каждую из этих групп, и вы получите доступ ко всем документам сразу. Назначая права доступа не отдельным пользователям и их учетным записям, а целым группам, администратор может сильно повысить эффективность своей работы, особенно если в сети работает много пользователей с разными правами доступа.

Связывание определенной учетной записи с конкретными правами доступа происходит с применением SID, которые есть и у обычных пользователей, и у групп, и даже у отдельных компьютеров. При этом права каждой учетной записи полностью определяются допустимым SID (подробнее о SID читайте в третьей части нашей статьи), который используется для назначения прав доступа к объектам (таким как файлы, сетевые ресурсы или принтер, каналы, задания, процессы, потоки и т. д.). Таким образом, если даже учетная запись пользователя является корректным SID, которому может быть предоставлено разрешение для доступа к сетевому ресурсу или права в системе, в общем случае следует избегать предоставления разрешений отдельным ученым записям пользователя. Правильнее будет пользоваться группами как основным механизмом обеспечения безопасности. Группа — это имя, аналогичное имени пользователя или имени учетной записи пользователя, которым можно пользоваться для работы с несколькими пользователями. Группы обеспечивают удобный способ назначения и последующего управления доступом для нескольких пользователей, выполняющих схожие задачи. Помещая учетные записи пользователей в группу, вы можете предоставить всем пользователям этой группы одинаковые возможности и ограничения. Если вам по-требуется изменить разрешения или права, назначенные пользователям в группе, достаточно будет модифицировать только одну учетную запись — запись группы.

Но права и разрешение на использование тех или иных ресурсов — это не единственное, что отличает различных пользователей одной сети или даже одного компьютера. Все мы люди, а значит, личности, то есть индивидуальности, поэтому у каждого из нас есть свои предпочтения и вкусы. Как писал классик: кто-то любит арбуз, а кто и свиной хрящик. При этом каждый обычно пытается эту свою индивидуальность выразить, поэтому поверхность десктопа очень быстро, словно скатертью, накрывается различными обоями и всевозможными иконками. Понятно, что люди, занимающиеся разной работой, обычно используют разные приложения, если десктоп у всех будет один и тот же — то он очень скоро превратится в «жуткое нечто», наполненное кучей ярлыков и ссылок. Работать эффективно будет почти невозможно. Поэтому все настройки рабочей среды, сделанные самим пользователем и называемые профи-лем пользователя, хранятся отдельно для каждого, кто пользуется компьютером. Локальный профиль пользователя хранится в папке Documents and Settings, перемещаемый профиль находится в специальной папке на выбранном для этого сервере, пути к которой прописаны для каждой учетной записи, использующей этот профиль. Однажды создав профиль пользователя, не хочется делать это заново в случае переустановки системы или изменения места работы пользователя. На этот случай предусмотрена очень приятная возможность: создание перемещаемого профиля, который хранится на сервере и может быть доступен на любом рядовом ее члене. Один из способов создания перемещаемого профиля — скопировать нужный про-филь в специальную папку на сервере, а затем переименовать файл настроек пользователя Ntuser.dat в Ntuser.man. После этого можно прописывать пути к этому профилю для нужных вам учетных записей, это делается либо с помощью оснастки Локальные пользователи и группы, либо — Active Directory — пользователи и компьютеры.

Напоследок рассмотрим еще один важный вопрос: аудит системы. Мы уже упоминали о том, что администратор может просматривать интересующие его события, происходящие в системе, и адекватным образом реагировать на них. Для того чтобы отслеживать в системе определенные события (успешные и неуспешные попытки произвести то или иное действие), аудит вначале нужно активизировать с помощью оснастки Групповые политики. Как правило, особый интерес представляют попытки доступа к определенным файлам или папкам, активизировать отслеживание таких событий можно прямо на вкладках свойств этих объектов. Но не стоит увлекаться и применять аудит ко всему подряд; не забывайте, что он достаточно сильно замедляет работу системы.

Итак, мы рассмотрели некоторые важные аспекты работы администратора локального компьютера и сети. На самом деле все несоизмеримо сложнее: дело в том, что кроме безопасности, про которую мы постарались рассказать поподробнее, есть еще много всего такого, чем в силу специфичности данной должности в России обычно приходится заниматься администратору: это и настройка сети со всеми вытекающими последствиями, и установка принтеров, новых устройств и, соответственно, драйверов для них, нового программного обеспечения и т. д. А если особенно повезет с работодателем, то, возможно, на администратора заодно повесят создание пары-тройки сайтов для организации, замену расходников для принтеров и различных копировальных аппаратов, что тоже несколько поможет расширить кругозор. Единственный совет, который можно дать в свете всего вышесказанного, — будьте открыты для обучения и познания, которого вам, скорее всего, достанется немало.

Windows 2000 и XP — курс молодого администратора (Часть 7)

Иван Марциновский, Алексей Смирнов

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

Диски и файловая подсистема

«Женщины из моей группы никогда не занимались этим, — признался дон Хуан, но не потому, что они не могли, а потому, что я отговаривал их. Женщины из твоей группы, с другой стороны, делали это так же часто, как меняли юбки».

Карлос Кастанеда, «Искусство сновидения»

Как известно, первые операционные системы вроде CP/M или MS-DOS создавались в основном для того, чтобы управлять файлами, расположенными на дисках или других носителях, не зря DOS расшифровывается как Disk Operating System (то есть Дисковая Операционная Система). Были, конечно же, в их составе и сетевые расширения, и прообразы интерфейсов программирования, но они использовались достаточно редко, а иначе говоря, далеко не везде и не всегда. Сегодня же операционная система берет на себя гораздо большую функциональную нагрузку, чем просто работа с долговременной памятью (дисками): это предоставление интерфейсов программному обеспечению, обеспечение взаимодействия с пользователем, управление аппаратной частью и предоставление пользователю базового набора утилит и системных программ (очень различного, кстати сказать, у разных операционок). Тем не менее, ключевыми остались функции системы, реализующие работу с файлами, дисками и иными накопителями информации, это и неудивительно: важность надежного хранения информации очевидна, а последствия ее утери могут носить весьма неприятный характер.

Если сравнивать встроенные в Windows 2000 механизмы работы с дисковыми и файловыми системами с аналогичными в Windows NT 4.0, то можно сказать, что они не претерпели кардинального изменения. Но в то же время, следует отметить, что эти механизмы теперь обладают новыми чертами и особенностями реализации: так, кроме поддержки в Windows 2000 файловой системы FAT32 и новой спецификации NTFS (NTFS 5.0), обращает на себя внимание совершенно новая схема работы с дисковыми разделами. Теперь, работая с Windows 2000 Professional, вы можете использовать диски двух разных типов: базовые и динамические. Базовым назван способ разбиения диска, который с давних времен применяется в таких системах, как DOS, Windows 9x, а также в Windows NT. Этот формат дисков основан на использовании таблиц разделов (partition tables), в которых хранятся сведения о размере разделов, адреса начальных секторов каждого раздела, а также некоторые другие не менее важные для ОС данные. При этом раздел всегда представляет из себя непрерывный набор секторов, а на базовый том накладывается ограничение — он может занимать смежные секторы только одного раздела (некое исключение представляет использование составных томов в Windows NT 4.0 — но они не являются полностью переносимыми, без части информации хранимой в реестре NT вы не сможете прочитать с них какие-либо данные). Динамические диски — это новшество Windows 2000, которое позволяет использовать более гибкую схему разбиения винчестера на разделы, а значит, и всю мощь и преимущества составных томов (например, использовать тома очень большого размера, состоящие из нескольких разделов нескольких различных физических дисков, а также повышать отказоустойчивость дисковой подсистемы за счет применения программных RAID). При этом теперь вы можете манипулировать их структурой, не только не теряя при этом важную информацию, но и даже не перезагружая компьютер!

Как же этого добились разработчики компании «Майкрософт»?

Подсистема долговременного хранения данных в Windows 2000 состоит из двух основных компонентов: FT Disk (Fault-tolerant Disk Manager) — диспетчер отказоустойчивых дисков, перенесенный из Windows NT для сохранения совместимости и для обеспечения работы со старыми базовыми дисками. LDM (Logical Disk Manager) — диспетчер логических дисков, поддерживающий новые механизмы отказоустойчивости, обеспечивающий работу с системными метаданными, а также позволяющий пользователям использовать более удобные способы управления и администрирования дисков.

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

После того как жесткий диск разбит на тома, нужно выбрать, под использование какой файловой системы форматировать тот или иной том.

Для работы с файлами разные операционные системы поддерживают разные типы файловых систем. Наиболее распространенные файловые системы — это CDFS, UDF, FAT12, FAT16, FAT32, NTFS, HPFS (файловая система уходящей сейчас на покой, но некогда очень популярной OS/2), Windows 2000 поддерживает первые шесть из перечисленных. Ниже мы дадим их краткое описание. Первые две файловые системы будут нас интересовать гораздо меньше остальных, так как они предназначены для использования на компакт- и DVD-дисках.

CDFS (CD File System) — это наиболее простой формат, но он имеет ряд существенных ограничений, например, длина имени файла не должна превышать 32 байта, вы не можете использовать глубоко вложенные каталоги и так далее, поэтому сейчас используется более прогрессивный формат UDF (Universal Disk Format), который является надмножеством формата CDFS.

UDF — современный стандарт файловой системы дисков, поддерживаемый Ассоциацией технологий оптической долговременной памяти (OSTA). По некоторым своим характеристикам он уже больше напоминает форматы файловых систем, используемых в жестких дисках, достаточно сказать, что поддерживаемый размер собственно имени файла увеличен до 256 символов, добавлена возможность загрузки ОС, списки управления доступом, а также потоки. В состав Windows 2000 включена поддержка UDF v1.5, в то время как Windows 98 ограничивается UDF v1.02. Хочется еще заметить, что в текущих версиях Windows 2000 Professional драйвер UDF позволяет производить только операции чтения, для записи дисков вам придется воспользоваться реализациями UDF сторонних производителей.

FAT12 — наверное, является самой распространенной на сегодняшний день файловой системой, так как применяется практически на всех без исключения дискетах. Общее название всех форматов файловых систем типа FAT произошло от слов «таблица размещения файлов» (File Allocation Table), которая располагается в начале тома данных. Вторая часть имени представляет собой число, указывающее разрядность идентификатора кластера на диске. Для FAT12 это, соответственно, 12 разрядов, следовательно, максимальное число кластеров на диске будет равно 212 = 4096. Максимальный размер кластера, поддерживаемый Windows 2000, — 8 килобайт, из нехитрых расчетов видно, что максимальный размер тома для хранения информации с использованием FAT12 не сможет превысить 32 Мб, что, конечно же, очень мало для современных приложений (сама Windows не встанет на такой диск). Напрашивается вопрос: зачем же тогда оставлена поддержка FAT12? Ответ прост: все дискеты 5,25 дюймов и часть 3,25 дюймовых продолжают использовать формат FAT12, так как он оптимален для таких небольших дисков. Если бы стал использоваться FAT32, то на дискете, после того как туда будет записана таблица размещения файлов, осталось бы довольно мало места для самих файлов.

FAT16 — была представлена в MS-DOS 3.0 и до недавнего времени оставалась одной из самых распространенных файловых систем. По принципу устройства она ничем не отличается от своей младшей сестры FAT12, но размер указателя кластера на диске увеличен до 16 разрядов, таким образом, стало возможным адресовать до 65536 кластеров, что при использовании размера кластера 64 Кб позволяет адресовать 4 Гб дискового пространства. При создании формата казалось, что диска размером в 4 Гб в обозримом будущем должно хватить для любых нужд, тем более что на одном физическом диске можно создать несколько логических, но практика показала несостоятельность этой идеи, воплотившуюся в FAT32.

FAT32 — самая новая и мощная файловая система семейства FAT. Как явствует из названия, у нее 32-разрядный идентификатор файла, но в силу некоторых особенностей эффективно используются только младшие 28 бит. Учитывая, что максимальный размер кластера для FAT32 составляет 32 Кб, получаем, что том может иметь размер 8 терабайт. На самом деле Windows 2000 не позволит вам создать том, размер которого превышает 32 Гб, хотя, что забавно, позволяет работать с такими томами, если они созданы другими операционными системами.

Том, размеченный с применением FAT, устроен следующим образом. В самом начале содержатся две копии таблицы расположения файлов File Allocation Table; обе они абсолютно идентичны, и дубликация производится только для того, чтобы в случае повреждения одной из них можно было восстановить данные, пользуясь сведениями, содержащимися в другой. При форматировании все пространство тома размечается на кластеры, о которых мы уже упоминали. Размер кластеров может варьироваться в довольно широких пределах, определяемых типом файловой системы, а также пожеланиями пользователя, данные по размерам кластеров, используемым по умолчанию, приведены в таблице.

О выборе размера кластера стоит поговорить особо. Все файловые системы, использующие в своей основе FAT, устроены так, что для хранения каждого из файлов нужно выделить хотя бы один кластер. Даже если вы храните файл нулевого размера, а размер кластера составляет 64 Кб, то вы потеряете 64 Кб. При этом частично занятый кластер уже не может в себя вместить какие-либо данные, принадлежащие другому файлу. Он оказывается выкинутым из системы, а незаполненное место не используется. Так получается, что при хранении множества маленьких файлов впустую теряются сотни мегабайт дискового пространства! Казалось бы, нет ничего проще, чем разбивать диск на максимально возможное количество кластеров, тогда каждый из них будет меньшего размера, и, соответственно, меньше места будет выкидываться на «свалку». Логика, казалось бы, верная, но она верна только до определенной поры. Начиная с какого-то момента, кластеров оказывается слишком много, а ведь на хранение информации о каждом из них выделяется 8 байт (32 бита в основной и столько же в резервной таблице разбиения файлов). Получается, что если использовать максимальное количество кластеров, то для хранения только таблиц FAT на достаточно больших дисках потребуется 2 Гигабайта! Все бы было не так плохо, если бы эти таблицы находились только в долговременной памяти, но ведь для обеспечения приемлемой скорости работы они кэшируются диспетчером кэша в ОЗУ!!! Поэтому, трижды подумайте, прежде чем менять размер кластера, предлагаемый по умолчанию.

О каждом кластере в FAT содержится некоторая информация, которая описывает состояние кластера: unused (не используется); claster in use by file (кластер содержит информацию файла); claster in file (последний кластер файла); last bad claster (испорченный кластер).

Ключевую роль играет корневая папка (корневой каталог), она находится на диске в четко определенном месте и имеет фиксированный размер. В FAT12 и FAT16 ей выделяется место, достаточное для хранения 256 записей, в начале тома. Таким образом, для этих файловых систем существует ограничение на число файлов и папок, находящихся непосредственно в корневом каталоге. Каждая папка содержит для каждого вложенного в нее файла и папки запись определенной длины, зависящей от типа файловой системы, в которой содержится информация о времени и дате создания, последнего доступа и последней модификации объекта (файла или папки), указатель на начальный кластер файла, его размер и собственно имя и расширение файла. Каждый кластер содержит в себе указатель на следующий кластер, содержащий этот файл, таким образом, файл может быть разбросан по диску без всякой системы, находясь в нескольких кластерах. Если кластер не содержит указателя, то он имеет идентификатор (0хFFFF — для FAT16 и 0xFFF для FAT12), который показывает, что этот кластер последний. Если имя файла не соответствует формату 8.3, то для его хранения выделяются дополнительные записи в таблице размещения файлов.

NTFS (NT File Sistem) сильно отличается от FAT по своим характеристикам и способу устройства. Эта система изначально поддерживалась платформами NT, и Windows 2000 работает с ней лучшим образом, чем со всеми другими. В отличие от рассмотренных выше файловых систем, данная работает с указателями на файлы длиной 64 бита, а это обеспечивает поистине громадные размеры для тома: до 16 экзабайт (263 -1) при размере кластера 64 килобайта. Сейчас не приходится говорить о том, что кому-то реально нужны такие объемы, но емкость дисков растет, и неизвестно, сколько дискового пространства понадобится серверу для успешной работы в будущем. Ниже перечислены все основные характеристики NTFS. кластер имеет размер от 512 байт до 64 Кб, минимальный размер тома составляет 10 Мб, максимальный размер — до 16 экзабайт (реально Windows позволяет адресовать только первые 128 Тб), используя NTFS, невозможно форматировать дискеты, возможность устанавливать разные права доступа к различным объектам файловой системы для отдельных лиц и групп, дисковые квоты, восстановление тома при сбоях, обеспечиваемое ведением журнала дисковой активности, где ведется протоколирование транзакций, поддержка шифрования файлов «на лету», возможность сжатия отдельных файлов и каталогов (если размер кластера не превышает 4 Кб), поддержка чередующихся томов, обеспечивающих быстрый доступ к данным, зеркальные тома и тома RAID-5, позволяющие обеспечить высокую надежность хранения данных.

С самого начала NTFS разрабатывалась как файловая система для томов большого размера, при этом приоритетными считались возможность восстановления файловой системы после сбоев и высокое быстродействие при операциях типа чтение/запись. Возможность восстановления присутствует благодаря применению уже упоминавшегося журнала транзакций и избыточности хранения наиболее критических данных.

Наиболее важная часть тома NTFS — загрузочный сектор раздела (Partition Boot Sector), он начинается с нулевого сектора и может иметь длину до 16 секторов. В PBS содержится информация о строении тома и файловой системы, а также имеется указатель на загрузчик операционной системы, установленной на компьютере.

Все файлы описываются в главной таблице файлов MFT (Main File Table). Она представляет собой набор записей о файлах, каждая запись имеет длину 1 Кб и обычно соответствует одному файлу. Структура NTFS довольно сложная, вся система хранится в нескольких файлах, каждый из которых содержит определенный тип информации (файлы журнала, тома, параметров защиты, распределения кластеров тома и т. д.)

Любая информация, содержащаяся на томе NTFS, в том числе метаданные, относится к какому-либо файлу. Файл, в свою очередь, представляется объектом, имеющим набор некоторых атрибутов: атрибуты данных, атрибуты защиты, атрибуты времени создания, редактирования и т. д. Атрибут защиты, который, по сути, является частью файла, определяет, какие права доступа должны быть у процесса, чтобы он мог производить определенные действия с файлом: чтение, редактирование и т. д.

Тот факт, что данные являются атрибутом файла, как следствие, ведет к тому, что у файла и каталога может быть несколько таких атрибутов — т. е. потоков данных (stream). По умолчанию вновь созданный файл имеет единственный неименованный поток, а если добавляются новые, то они уже будут именоваться. Приложения и пользователь могут создавать такие потоки, причем обращаться к ним нужно следующим образом:

имя_файла.расширение:поток

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

Еще одна интересная особенность NTFS — возможность создавать жесткие связи и точки соединения. Создавая жесткую связь, вы получаете возможность ссылаться на один и тот же объект файловой системы по нескольким разным путям: например, можно сделать так, чтобы папка внутри раздела «Мои документы» \Мои документы\С ссылалась на диск С:\. Тогда на диск С можно будет ссылаться по двум путям. Точки соединения выполняют схожую функцию: они перенаправляют пользователя из одного каталога в другой прозрачно для него.

Если у вас на диске хранятся важные данные, можно воспользоваться функцией шифрования файлов, которая предоставляется расширением файловой системы NTFS — EFS (Encrypting File System). Шифрование файлов и их дешифрация происходят также прозрачно для пользователя, однако при запросе на доступ к файлу со стороны пользователя проверяется, соответствует ли учетная запись данного пользователя учетной записи того пользователя, который имеет право на доступ к этим данным. Вкратце алгоритм шифрования выглядит следующим образом: вначале EFS генерирует случайное число, с помощью которого шифрует файл, затем при помощи открытого ключа из пары ключей, сопоставляемых данной учетной записи, шифруется это число и сохраняется вместе с файлом; таким образом, для того чтобы расшифровать файл, нужно знать это случайное число, а его невозможно получить, не зная секретного ключа.

Поскольку Windows 2000 в большой степени ориентирована на работу в сети, это не могло не сказаться на файловой системе. Специально для облегчения доступа к сетевым ресурсам и объединения всех файловых ресурсов в одном пространстве имен создана DFS (Distributed File System). Она позволяет присваивать различным физическим адресам общих ресурсов в сети удобные и понятные логические имена, по которым и будет обращаться пользователь к интересующей его информации, при этом реальный физический адрес он может так никогда и не узнать.

Управление и настройка DFS производится с помощью оснастки Распределенная Файловая Система. В первую очередь, необходимо указать корень файловой системы, который представляет собой некоторый общий ресурс, находящийся на сервере. Затем к этому корню можно добавлять логические имена, находящиеся на более низком уровне. Эти имена также могут быть связаны с другим корнем DFS, поэтому, в конце концов, может получиться достаточно сложная разветвленная структура имен, но при правильном планировании она будет логичной и понятной.

Windows 2000 — курс молодого администратора (часть

Иван Марциновский, Алексей Смирнов

В прошлой статье мы более или менее разобрались с тем, как работает дисковая подсистема у Win 2000. Теперь обратимся к тому, как же нам использовать наши знания на практике. Для работы с дисками и файловыми системами существует множество утилит и специальных программ, наверное, наиболее известная из них — Partition Magic, которая позволяет творить просто чудеса с дисками и разделами. Существуют и другие, более специфичные — типа Win Ghost, утилиты из набора Norton Utilities или Fix-it Utilities, но мы не будем их описывать — во-первых, это выходит за рамки обзорной статьи, а во-вторых, научиться работать с ними достаточно просто. В Windows 2000 есть свои, встроенные, довольно неплохие средства решения большинства задач, возникающих в связи с управлением дисками и файловой подсистемой.

Часть восьмая. Администрирование файловых ресурсов

«Искусство сталкинга требует обучения мельчайшим деталям маскировки. И обучиться им следует так хорошо, чтобы никто не мог догадаться, что вы маскируетесь. Для этого необходимо быть безжалостным, искусным, терпеливым и мягким. Но безжалостность не должна быть жестокостью, ловкость — коварством, терпение — равнодушием и мягкость — глупостью».

Карлос Кастанеда, «Сила Безмолвия»

Итак, мы надеемся, что, прочитав целых семь частей нашего труда, вы уже научились обходить или успешно разрешать все встающие перед вами проблемы, связанные с установкой и начальным конфигурированием Windows 2000, освоили принципы работы системы безопасности этой ОС, а также приобрели навыки администрирования учетных записей пользователей и групп. Теперь вам осталось только научиться правильно размещать информацию на жестких дисках и организовывать доступ к ней именно тех пользователей, которые, на ваш взгляд, имеют на это законное (или моральное) право.

Сразу скажем, что Windows 2000 предоставляет несколько возможностей и различных путей для решения одной и той же проблемы. Некоторые из них являются, по сути, одним и тем же способом, только для удобства вызываются из различных мест. Другие, наоборот, представляют собой практически взаимоисключающие друг друга стратегии… Возможно, система позволит вам использовать одновременно несколько из них, но ничего путного из подобного сочетания, скорее всего, не получится.

Так, разрешением на доступ к папкам можно управлять, используя «Общий доступ» (в окне «Свойства» выбрать вкладку «Доступ», а потом в появившемся окне нажать кнопку «Разрешение»), а можно и используя возможности файловой системы NTFS. Каждый из методов имеет свои преимущества и недостатки. Первый вариант удобен тем, что, используя его, можно ограничить доступ к папкам на разделах, отформатированных под файловую систему FAT16 и FAT32. Но, в общем-то, на этом его достоинства и заканчиваются, дальше следует недостатки: разрешения на доступ проверяются только для сетевых пользователей (иначе говоря, локальные пользователи могут делать с вашей папкой все, что их душе заблагорассудится); все разрешения задаются только для папки целиком, а не для отдельных файлов; предоставляется достаточно скудный набор параметров для конфигурирования (вам позволят разрешить или запретить только следующую функциональность: полный доступ, изменение, чтение). Поэтому мы не видим особых причин использовать «общие сетевые папки» на дисках, отформатированных под систему NTFS. А так как NTFS — это родная для Windows 2000 файловая система, мы рекомендуем вам использовать ее, и никакую другую.

Для изменения разрешений и запретов на доступ и проведение определенных операций с файлами и папками, расположенными на NTFS-дисках, нужно открыть у соответствующего объекта окно свойств и выбрать вкладку «Безопасность» (Security), на которой установить флажки для нужных параметров доступа. С помощью этих флажков можно регулировать доступ для отдельных пользователей и групп, запретить и разрешить можно следующую функциональность: смена владельца, смена и чтение разрешений, удаление, чтение и изменение атрибутов, запись и дозапись данных, чтение данных, обзор папок и выполнение файлов. Для папок также можно дополнительно указывать, как применяются настройки: только внутри этой папки, для дочерних папок, для файлов и так далее. Если пользователь является владельцем файла, он может распоряжаться им по своему усмотрению, предоставляя права доступа другим пользователям. Администратор, при желании, может стать владельцем любого файла или папки, таким образом, для того чтобы получить полный доступ к файлу, достаточно лишь стать его владельцем. Все разрешения носят аддитивный характер, то есть, права складываются из прав группы, в которую входит пользователь, и прав, которыми наделен лично он. При этом нужно помнить, что запрещающие директивы всегда имеют больший приоритет, чем разрешающие, и использовать их надо с осторожностью. Так, если у пользователя есть, например, право на чтение некоторого файла, но он входит в группу, которой это делать запрещено, то он не сможет читать файл.

Другое полезное нововведение, которое позволяет вам использовать NTFS, и которое недоступно на FAT-дисках, — это дисковые квоты.

Представьте себе ситуацию: веселый и нерадивый сотрудник вашей фирмы впервые приходит на свое рабочее место, и когда ему говорят, сколько ему можно использовать места на сервере, он отвечает: «Ух ты, как здорово! Это много, мне хватит!». Однако через некоторое время (обычно — очень непродолжительное) оказывается, что ему этого места не хватает, ведь, как известно, слишком больших винчестеров не бывает, на них всегда можно что-нибудь залить (фильмы, музыка в формате MP3, гламурные картинки, игры, да мало ли какого мусора можно найти в Интернете). Контролировать, кто и сколько занимает места на диске, — занятие довольно скучное и вряд ли кого-нибудь увлечет, кроме патологического маньяка-вуайериста. Хорошо, когда ситуация выглядит именно так, как мы описали, — с сотрудниками всегда можно договориться, а, скажем, на вашем сервере, расположенном в сети, действует вирус или червь, который постоянно записывает данные на винчестер — в какой-то момент это может привести к переполнению диска и отказу служб — пока вы найдете ошибку и «почистите» винчестер, пройдет время, в течение которого ваш информационный ресурс не будет работать. Но, на счастье, существует такая служба, как выделение дисковых квот пользователям. Это нововведение, и до Windows 2000 «Майкрософт» не предоставляла такой возможности. Объем файлов, принадлежащих пользователю, устанавливается путем суммирования размеров всех файлов, принадлежащих пользователю на данном логическом диске. Так как при создании нового файла его владельцем автоматически становится активный пользователь, инициирующий эту операцию, несложно проследить в самом начале, может ли он создать файл, или его лимит уже достигнут. Управление квотами включается на вкладке «Свойства» того тома, который требуется настроить. На этой вкладке можно установить поведение системы при превышении квот пользователями — записать в журнал аудита, или предупредить пользователя, или вообще запретить ему запись на диск, а также позволительно использовать любую комбинацию из этих опций. Кроме того, система позволяет установить две границы и настроить действие, выполняемое при превышении каждой из них (например, при превышении порога в 500 Мб предупредить об этом пользователя и записать в журнал аудита, а при превышении 580 Мб запретить запись на диск).

Одна из самых распространенных операций обслуживания диска — дефрагментация.

Дефрагментатор дисков выполняет поиск фрагментированных папок на локальных томах. Фрагментированные файл или папка разделены на множество частей и разбросаны по всему тому. Если том содержит много фрагментированных файлов и папок, системе требуется большее время для обращения к ним, поскольку приходится выполнять дополнительные операции чтения с диска их отдельных частей. На создание файлов и папок также уходит больше времени, поскольку свободное пространство на диске состоит из разрозненных фрагментов. Системе приходится сохранять новые файлы и папки в разных местах тома. Дефрагментатор дисков перемещает разрозненные части каждого файла или папки в одно место тома, после чего файлы и папки занимают на диске единое последовательное пространство, представляя собой неделимый блок. В результате доступ к файлам и папкам выполняется эффективнее. Объединяя отдельные части файлов и папок, программа дефрагментации также объединяет в единое целое свободное место на диске, что делает менее вероятной фрагментацию новых файлов.

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

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

Для работы с дисками в Win 2000 существует специальная оснастка — Управление Дисками. Оснастка позволяет работать с дисками, разделами и томами в режиме реального времени, обеспечивая управление как локально, так и удаленно. Вот список наиболее интересных и часто используемых операций, которые можно отсюда осуществлять:

установка активного раздела;

форматирование дисков;

создание динамических томов;

работа с чередующимися, зеркальными, составными и RAID-5 томами;

«горячее» подключение дисков

Возможно, вы уже знакомы с этой терминологией, но для тех, кто впервые сталкивается со всякого рода «RAID-массивами», сделаем некоторые пояснения. Том — это довольно общее понятие для обозначения большого пространства, используемого для хранения информации. Том может располагаться на одном логическом диске — тогда он называется простым; или нескольких — тогда это составной, чередующийся, зеркальный том или том RAID-5. Если том располагается на нескольких логических дисках, он должен быть динамическим. Динамический том во многом более удобен, чем простой, единственный его серьезный недостаток — с динамического тома нельзя грузиться, исключение составляют зеркальные динамические тома, о которых мы поговорим чуть позже. Для чего это все делается? Составные тома могут быть очень большими, поэтому на них удобно хранить большие структурированные объемы данных. Если данные представляют большую ценность, для их хранения подходят зеркальные тома (RAID-1), поскольку они подразумевают дублирование информации, и если один из физических дисков выходит из строя, ее можно восстановить. Чередующиеся тома (RAID-0) не предоставляют возможности восстановления, зато они существенно ускоряют работу с дисками, то есть считывание и запись информации, это происходит за счет того, что все данные разбиваются на короткие блоки, часть из которых записывается на один диск, а часть — на другой, таким образом организуется два потока обмена информацией.

Всем этим управляют два драйвера, осуществляющие управление томами и дисками — это FtDisk и DMIO. Самые простые в реализации — составные тома и чередующиеся тома. Составной том — это всего-навсего несколько разделов на физических дисках, объединенных некоторым образом и представленных в виде одной логической единицы. Размер составного тома может быть динамически увеличен или уменьшен прямо в оснастке управления дисками. Чередующиеся тома очень похожи по реализации — несколько дисков точно так же объединяются в один логический, но при этом должно быть выполнено важное условие — диски должны быть одинакового объема. Система воспринимает такой том, как том, объем которого равен сумме объемов всех дисков. Зеркальные тома также устроены довольно тривиально — данные, записываемые на один диск, автоматически дублируются на другом, при этом, если они будут повреждены на одном из дисков, система считает их с другого, происходит это все прозрачно для пользователя. На зеркальные тома может быть установлена любая файловая система из числа поддерживаемых Win2000, кроме того, они, как уже упоминалось, могут быть загрузочными, поскольку загрузчик и другие модули операционной системы, исполняемые в начале, работают с данными, относящимися к одному из дисков, при этом им совершенно не нужен другой. Использование зеркальных томов дает не очень большое преимущество по скорости при работе с файлами, однако оно имеется, поскольку менеджер дисков балансирует нагрузку между несколькими дисками. Самый совершенный и эффективный из представленных вариант динамических томов — RAID-5, или чередующийся том с записью четности. Как явствует из названия, механизм поддержки таких томов сочетает в себе преимущества чередующихся томов и зеркальных томов. Для создания RAID-5 массива необходимо иметь хотя бы 3 одинаковых по объему логических диска. В начале каждый из участвующих дисков разбивается на одинаковые участки, в которые затем записываются данные, причем на два диска записывается непосредственно информация, разделенная таким образом, чтобы обеспечить максимальную скорость операций, а на третий диск записывается контрольная сумма соответствующих разделов на первых двух дисках, полученная в результате исключающей конъюнкции, которая позволяет при повреждении одного из первых дисков восстановить данные на втором. Не стоит думать, что один из дисков хранит только контрольные суммы — это не так, поскольку при записи на следующий участок дисков контрольная сумма будет записываться уже на другой диск, а данные — на тот, где уже имеются данные, и тот, где хранится контрольная сумма первого участка, и т. д. Все это кажется несколько запутанным и надуманным, но реально обеспечивает высокую скорость, повышенную защищенность и некоторую экономию места по сравнению с томами типа зеркальных.

Telegram-канал @overclockers_news — теперь в новом формате. Подписывайся, чтобы быть в курсе всех новостей!

Подсистемы окружения в Windows 2000

Над executive надстраиваются процессы пользовательского режима, обеспечивающие исполнение программ, разработанных для других ОС.

Windows 2000 использует подсистему Win32 как основное операционное окружение. Подсистема Win32 используется для запуска всех процессов. Она же обеспечивает средства работы с мышью, клавиатурой и средства графики.

Окружение MS-DOS обеспечивается приложением Win32, называемым Virtual Dos machine (VDM),процессом пользовательского уровня, для которого поддерживается страничная организация и диспетчеризация, как и для всех других потоков.

Окружение для 16-битовых Windows обеспечивается VDM, которая содержит подсистему Windows on Windows. Последняя предоставляет процедуры ядра Windows 3.1 для менеджера окон и функций GDI.

Подсистема POSIX спроектирована для исполнения POSIX-приложений, следующих POSIX.1 – стандарту, который базируется на модели UNIX.

Подсистема OS/2 выполняет OS/2 — приложения.

Подсистема входа и безопасности аутентифицирует пользователей, входящих в систему Windows 2000. Требуется, чтобы пользователи имели учетную запись с логином и пароль. Пакет аутентификации подсистемы безопасности аутентифицирует всех пользователей, которые пытаются осуществить доступ к какому-либо объекту системы. Windows 2000 использует Kerberos как пакет аутентификации по умолчанию.

Ключевые термины

Plug-and-Play (PnP) – механизм автоматического распознавания изменений в конфигурации оборудования и адаптации к ним (установки соответствующих драйверов).

Virtual Dos Machine (VDM) — процесс пользовательского уровня, обеспечивающий совместимость с приложениями MS-DOS.

Блокировщик (spin lock, буквально – вертящийся замок ) – системный механизм синхронизации, используемый для взаимного исключения процессов ядра Windows.

Исполнительная подсистема (executive) – основная часть ядра Windows, исполняемая в защищенном режиме, реализующая базовые системные сервисы.

Локальный вызов процедуры (LPC) – системный механизм вызова процедур Windows, передающий запросы и результаты между клиентским и серверным процессами на локальной машине; используется для запросов к сервисам различных подсистем ОС.

Объект-диспетчер системный объект в Windows, управляющий диспетчеризацией и синхронизацией.

Объектная ссылка (object handle) ссылка на системный объект ядра Windows.

Управляющий объект системный объект Windows, управляющий асинхронным вызовом процедуры, обработкой прерывания, нотификацией об электропитании или профилированием.

Уровень абстрагирования от аппаратуры (hardware abstraction layer, HAL) – динамически линкуемая библиотека Windows, инкапсулирующая код, зависящий от конкретного процессора, — тем самым обеспечивающая независимость от аппаратуры всего остального кода Windows.

Краткие итоги

Windows 2000 / XP / 2003 / 2008 / 7 – новейшая линия в развитии ОС Windows, которой предшествовало более чем 20-летнее развитие Windows от графической оболочки в среде MS DOS до наиболее популярной в мире операционной системы. Windows 2000 – объектно-ориентированная ОС, основными целями разработки которой являются переносимость, безопасность, соответствие POSIX, поддержка многопроцессорности, расширяемость, поддержка интернационализации, совместимость приложений с MS DOS и первыми версиями Windows. Использует архитектуру микроядра.

Первой ОС в новой линии развития Windows стала Windows NT, выпущенная в середине 1990-х гг. Windows NT, 2000 и более новые версии Windows имеют общую кодовую базу – ядро ОС.

Windows 2000 написана на C и C++. Код, зависящий от процессора, выделен в специальный APIhardware abstraction layer (HAL).

Архитектура Windows 2000 — многоуровневая. В защищенном режиме исполняется ядро, исполнительная подсистема ядра – executive, реализующая базовые системные сервисы, и HAL. Над этими компонентами надстраиваются подсистемы пользовательского режима, эмулирующие различные ОС и обеспечивающие реализацию безопасности.

Ядро Windows разработано в объектно-ориентированном стиле и использует два набора системных объектов – объекты-диспетчеры и управляющие объекты.

Ядро поддерживает процессы и потоки. Используется гибкая система приоритетов, включающая поддержку потоков реального времени и разделения времени. Процессы реального времени планируются как soft real-time (без обязательности выдерживания фиксированного интервала времени ответа).

Ядро обеспечивает обработку прерываний и системный механизм исключений. Для синхронизации процессов ядра используются блокировщики типа spin locks.

Менеджер системных объектов обеспечивает генерацию системных объектных ссылок (object handles) и выполнение базовых операций над объектами. Поддерживается именование объектов и объекты – символические ссылки. Каждый объект защищен списком управления доступом.

Для реализации виртуальной памяти используется двухуровневая таблица страниц с размером страницы 4 килобайта. Используются файлы откачки.

Для системных вызовов процедур используется механизм LPC (local procedure call), обеспечивающий передачу сообщений или ссылок на общие области памяти.

Менеджер ввода-вывода поддерживает синхронные и асинхронные операции, тайм-ауты для драйверов, кэширование ввода-вывода, использование файлов, отображаемых в память.

Монитор безопасности использует маркеры безопасности процессов и списки управления доступом к объектам для авторизации.

Менеджер PnP отслеживает изменения в конфигурации и установку соответствующих драйверов новых устройств.

Подсистемы окружения Windows: подсистема Win32; DOS Virtual Machine; подсистема Windows on Windows (исполнение 16-битовых приложений Windows); подсистема POSIX, подсистема OS/2; подсистема входа и безопасности (управляет учетными записями пользователей, используя Kerberos-аутентификацию по умолчанию).

Набор для практики

Вопросы

  1. В каком качестве была реализована первая версия Windows и в какой среде она работала?
  2. В чем принципиальная новизна подхода к реализации Windows NT?
  3. Назовите все операционные системы, являющиеся развитием Windows NT.
  4. В чем новизна и каковы основные преимущества ОС Windows 95 / 98?
  5. Каковы основные цели разработки Windows 2000?
  6. На каких языках написана Windows 2000?
  7. Как называется исполнительная подсистема ядра Windows 2000 и какие основные сервисы она реализует?
  8. Каким образом достигнута минимальная зависимость кода Windows от аппаратуры?
  9. С программами для каких ОС и стандартов обеспечивается совместимость в системе Windows 2000?
  10. Какие компоненты Windows исполняются в защищенном, а какие – в пользовательском режиме?
  11. Что такое подсистема в ОС Windows? Назовите все подсистемы ОС Windows.
  12. Какие виды системных объектов использует ядро Windows?
  13. В каких состояниях может находиться поток в Windows?
  14. Какие классы процессов и потоков выделяются при планировании в Windows?
  15. Какие механизмы используются для обработки ошибок в Windows?
  16. Какие средства используются для синхронизации системных процессов ядра Windows?
  17. Какие функции выполняет менеджер объектов исполнительной подсистемы ядра Windows?
  18. Каким образом защищены системные объекты ядра Windows?
  19. Как организована система виртуальной памяти и таблицы страниц в Windows?
  20. Какой процедурный механизм коммуникации используется для системных процессов?
  21. Какие функции выполняет менеджер ввода-вывода?
  22. Какие системные структуры используются подсистемой безопасности для авторизации процессов?
  23. Какие функции выполняет менеджер Plug-and-Play?
  24. Какие подсистемы окружения для совместимости с другими ОС имеются в Windows?
  25. Какой вид аутентификации используется в Windows?

Упражнения

  1. Инсталлируйте новую версию Windows, имеющуюся в Вашем распоряжении (Windows 7, Vista и др.) и проанализируйте ее основные возможности для пользователей.
  2. Используйте открытое академическое ядро Windows (WRK) и изучите по исходным кодам и опишите основные компоненты ядра Windows (executive и др.).
  3. Поэкспериментируйте с запуском в новой версии Windows приложений для других ОС – MS DOS, Windows 3.1 и др.

Темы для курсовых работ, рефератов, эссе

  1. История операционных систем семейства Windows (реферат).
  2. Архитектура и принципы проектирования Windows 2000 (реферат).
  3. Исполнительная подсистема (executive) ядра Windows 2000 (реферат).
  4. Подсистемы окружения Windows 2000 и совместимость с другими ОС (реферат).
  5. Использование открытого академического ядра Windows (WRK) для изучения по исходным кодам и описания основных компонент ядра Windows (executive и др.). (курсовая работа).
  6. Эксперименты с запуском в новой версии Windows приложений для других ОС – MS DOS, Windows 3.1 и др. (курсовая работа).

Главная /
Операционные среды, системы и оболочки /
Какие компоненты операционной системы Windows 2000 работают в режиме пользователя?

вопрос

Правильный ответ:

диспетчер ввода-вывода

пользовательские приложения

графический интерфейс пользователя

системные процессы

Сложность вопроса

94

Сложность курса: Операционные среды, системы и оболочки

91

Оценить вопрос

Очень сложно

Сложно

Средне

Легко

Очень легко

Спасибо за оценку!

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

Аноним

Благодарю за гдз по интуиту.

19 май 2020

Аноним

Я провалил зачёт, за что я не углядел этот чёртов сайт с ответами по интуит прежде

25 янв 2020

Оставить комментарий

Другие ответы на вопросы из темы операционные системы интуит.

  • #

    Какие из указанных событий регистрируются в журнале безопасности при аудите?

  • #

    В какой группе системы Kerberos устанавливается аутентификационный сервер и сервер квитанций?

  • #

    Какие утверждения являются верными?

  • #

    Укажите верные утверждения:

  • #

    К какой памяти время доступа наименьшее?

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Удалить таблицу маршрутизации windows
  • Как поставить картинку приветствия windows xp
  • Windows 10 pro сколько нужно места на диске
  • Отказано в доступе к папке windows 10 как исправить
  • Кнопка безопасность windows планшетного компьютера