Книга
Книга
РУКОВОДСТВО ДЛЯ ПРОФЕССИОНАЛОВРУКОВОДСТВО ДЛЯ ПРОФЕССИОНАЛОВ
РУКОВОДСТВО ДЛЯ ПРОФЕССИОНАЛОВ
РУКОВОДСТВО ДЛЯ ПРОФЕССИОНАЛОВ
Алексей Чекмарев
Windows 2000
Active Directory
CoHX>n-7tei$tefidiflu
Дюссельдорф ♦ Киев ♦ Москва ♦ Санкт-Петербург
УДК 681.3.06
Книга ориентирована на квалифицированных администраторов, работающих с доменами Windows 2000, и не потеряет своей актуальности при появлении следующей версии системы — Windows .NET Server (Whistler). Рассматриваются базовые концепции и установка службы каталогов Active Directory, описываются основные вопросы администрирования и системные утилиты (в том числе из пакета Windows 2000 Resource Kit), необходимые для обнаружения и устранения неисправностей в Active Directory. Также даны основы API-интерфейса Active Directory Services Interfaces (ADSI) и приводятся примеры сценариев, которые системные администраторы могут широко использовать в повседневной работе.
Для администраторов локальных сетейи специалистов по информационным технологиям
Группа подготовки издания:
Главный редактор Зав. редакцией Компьютерная верстка Корректор
Дизайн обложки Зав. производством
Екатерина Кондукова Наталья Таркова Ольги Сергиенко Зинаида Дмитриева Игоря Цырулъникова Николай Тверских
Чекмарев А. К.
Windows 2000 Active Directory. — СПб.: БХВ-Петербург, 2001. — 400 с.: ил.
ISBN 5-94157-003-1
© А. Н. Чекмарев, 2001
© Оформление, издательство "БХВ-Петербург", 2001
Лицензия ИД № 02429 от 24.07.00. Подписано в печать 17.07.01.
Формат 70х100’/16. Печать офсетная. Усл. печ. л. 32,25.
Тираж 3000 экз. Заказ 1096"БХВ-Петербург”, 198005, Санкт-Петербург, Измайловский пр., 29.
Гигиеническое заключение на продукцию, товар, Ne 77.99.1.953.П.950.3.99от 01.03.1999 г. выдано Департаментом ГСЭН Минздрава России.
Отпечатано с готовых диапозитивовв Академической типографии "Наука" РАН.199034, Санкт-Петербург, 9-я линия, 12.
Содержание
Предисловие13
ЧАСТЬ I. РАЗВЕРТЫВАНИЕ ДОМЕНОВ WINDOWS 200019
Глава 1. Концепции Active Directory и терминология21
Протокол LDAP как один из ключевых элементов Active Directory22
Информационная модель22
Схема22
Классы22
Атрибуты23
Объект RootDSE23
Синтаксис атрибутов26
Элемент каталога (Объект)26
Модель именования26
Отличительное имя (DN)26
Относительное отличительное имя (RDN)26
Другие типы имен, используемые в Active Directory27
Ссылки27
Функциональная модель28
Аутентификация28
Выполнение запросов28
Операционные ограничения и политики запросов31
Обновление32
Модель безопасности33
Порты LDAP33
Записи DNS, регистрируемые контроллерами домена на базе Windows 200033
Глава 2. Конфигурирование доменов Windows 2000 и устранение неисправностей38
Назначение ролей FSMO38
Режимы работы доменов39
Вопросы репликации40
Репликация между сайтами и внутри их40
Транспортные протоколы репликации40
Периоды нормальной репликации41
Срочная репликация41
Репликация объектов групповой политики (GPO)42
Мониторинг репликации42
Регистрация событий репликации42
Использование счетчиков производительности45
Поиск неисправностей46
Регистрация диагностических событий46
Внутренние ошибки при репликации47
Проверка состояния контроллера домена на базе Windows 200047
Объявление сервера контроллером домена48
Объявление контроллера домена сервером глобального каталога49
Глава 3. Развертывание Active Directory50
Windows 2000 DNS Server51
Предварительные условия51
Установка Windows 2000 DNS Server52
Установка сервера DNS и контроллера домена на одном сервере53
Вторичный сервер с интегрированными зонами54
Проверка конфигурации DNS54
Настройка Windows 2000 DNS при работе с существующей службой DNS56
Создание авторитетных зон57
Делегирование динамических зон58
Окончательная конфигурация59
Установка Active Directory60
Создание контроллера домена60
Требования и ограничения61
Проверка конфигурации DNS 63
Запуск мастера установки Active Directory66
Удаление контроллера домена71
Требования71
Запуск мастера установки Active Directory72
Автоматическая установка и удаление Active Directory72
Добавление членов домена74
Установка суффикса DNS74
Рабочие станции и автономные серверы под управлением Windows 200075
Подключение Windows NT 4.0 BDC к домену Windows 200076
Переключение в основной режим 77
Установка доверительных отношений78
Проверка доверительных отношений80
Создание прямых (shortcut) доверительных отношений80
Установление доверительных отношений с доменами Windows NT 4.081
ЧАСТЬ II. АДМИНИСТРИРОВАНИЕ ACTIVE DIRECTORY83
Глава 4. Средства управления доменами85
Основные оснастки для администрирования Active Directory85
Общие вопросы87
Создание пользовательской консоли ММС87
Просмотр окна Tree (Структура) в окне оснастки88
Выбор отображаемых столбцов88
Экспорт списка объектов89
Конфигурирование оснасток89
Окно Favorites (Избранное)89
Создание пользовательских панелей задач (taskpads)90
Оснастка Active Directory Users and Computers92
Подключение к домену или контроллеру домена92
Управление представлением данных каталога93
Режим Advanced Features (Дополнительные функции)93
Режим Users, Groups, and Computers as containers (Пользователи, группы и компьютеры как контейнеры)96
Параметры фильтрации97
Поиск объектов Active Directory99
Оснастка Active Directory Sites and Services101
Оснастка Active Directory Domains and Trusts103
Использование основного имени пользователя (UPN)103
Проверка доверительных отношений106
Оснастка ADSI Edit107
Подключение к разделам каталога107
Редактирование атрибутов объектов Active Directory109
Пример 1. Установка запрета на просмотр объектов каталога109
Пример 2. Включение команды создания контейнеров в пользовательский интерфейсПО
Создание пользовательского запросаПО
Создание объектов Active Directory112
Работа с Глобальным каталогом112
Оснастка Active Directory Schema113
Установка113
Модификация схемы114
Расширение схемы115
Создание атрибута115
Создание класса".117
Добавление атрибутов к существующему классу119
Оснастка Group Policy119
Привязка к объекту GPO120
Создание и удаление объектов GPO124
Выбор контроллера домена124
Конфигурирование объектов GPO126
Глава 5. Типовые административные задачи127
Использование команды RunAs127
Запуск административных оснасток из контекстного меню128
Запуск программ из командной строки129
Пример 1. Работа в пределах одного домена130
Пример 2. Администрирование другого домена130
Пример 3. Проверка пользовательских разрешений130
Имена административных оснасток130
Удаленное администрирование133
Выборочная установка административных оснасток134
Поиск в Active Directory135
Настройка команды поиска (Search) на компьютере136
Манипулирование объектами каталога137
Использование оснастки Active Directory Users and Computers138
Добавление членов в группу139
Создание пользователей и групп в домене139
Сценарий Create Users, vbs (RK)139
Утилита AddUsers.exe (RK)141
Публикация папок и принтеров142
Сценарий Pubprn.vbs143
Подключение к опубликованным ресурсам143
Управление ролями FSMO в организации144
Поиск владельцев ролей FSMO145
Windows 2000 Domain Manager (NetDom.exe) (ST)145
DumpFSMOs.cmd (RK)145
Active Directory Replication Monitor (ReplMon.exe) (ST)146
Передача и захват ролей FSMO147
Мастера операций RID, PDC и Infrastructure147
Мастер именования доменов148
Мастер схемы148
Утилита NTDSutil149
Обновление групповых политик149
Выполнение репликации150
Оснастка Active Directory Sites and Services150
Replication Diagnostics Tool (RepAdmin.exe) (ST)151
Active Directory Replication Monitor (ReplMon.exe) (ST)152
Делегирование административных полномочий153
Аудит доступа к объектам Active Directory155
Восстановление Active Directory158
Общие вопросы158
Состояние системы (System State)158
Схема159
"Захороненные объекты" (tombstones)159
Архивирование Active Directory159
Восстановление Active Directory160
Основное восстановление160
Неавторитетное восстановление161
Авторитетное восстановление161
ЧАСТЬ III. ИСПОЛЬЗОВАНИЕ СИСТЕМНЫХ УТИЛИТ165
Глава 6. Основные характеристики и назначение системных утилит167
Где найти все эти утилиты?168
Пакет Windows 2000 Support Tools168
Пакет Windows 2000 Resource Kit168
Классификация по назначению168
Описание утилит170
Глава 7. Диагностика и обслуживание Active Directory175
Domain Controller Diagnostic Tool (DCdiag.exe) (ST)175
Полный стандартный тест176
Проверка репликации178
Корпоративные тесты179
Active Directory Diagnostic Tool (NTDSutil.exe) (Система)180
Меню Authoritative Restore181
Меню Domain Management181
Меню Files. Обслуживание файлов базы данных Active Directory182
Получение информации о файлах Active Directory182
Сжатие базы данных. Автономная дефрагментация183
Перемещение файлов Active Directory184
Проверка целостности базы данных185
Меню IP Deny List186
Меню LDAP policies186
Меню Metadata Cleanup. Удаление потерянных доменов или контроллеров домена188
Меню Roles. Управление ролями FSMO191
Передача роли191
Захват роли192
Меню Security Account Management193
Меню Semantic Database Analysis194
Глава 8. Сетевые и распределенные службы195
NLtest.exe (ST)195
Проверка безопасных каналов196
Просмотр доверенных доменов199
Получение сведений о топологии сети 199
Вспомогательные опции201
Выключение удаленного компьютера201
Преобразование временных величин202
Network Connectivity Tester (NetDiag.exe) (ST)202
Выполнение тестов203
Перерегистрация ресурсных записей DNS Vflx^205
RPC Ping: RPC Connectivity Verification Tool (RK)206
Серверный компонент (RPings.exe)207
Клиентский компонент (RPingc.exe)207
NTFRSutl.exe (RK)209
DsaStat.exe (ST)210
Статистическое сравнение210
Анализ различий между разделами каталога213
Отличающиеся значения атрибутов одного и того же объекта213
Несовпадения в количестве атрибутов одного и того же объекта214
Различное количество объектов215
Replication Diagnostics Tool (RepAdmin.exe) (ST)216
Мониторинг топологии репликации217
Запуск службы КСС217
Просмотр партнеров по репликации (/showreps')217
Просмотр соединений с партнерами по репликации (/showconn)219
Принудительный запуск репликации220
Репликация между двумя партнерами (соседями)221
Репликация от всех партнеров222
Неудавшиеся операции репликации223
Просмотр изменений каталога223
Актуальна ли информация на контроллере домена?223
Отображение метаданных репликации224
Регистрация изменений, выполненных на контроллере домена225
Сравнение информации, хранящейся на разных контроллерах домена226
Вспомогательные опции228
Установка параметров DSA228
Преобразование значений времени, хранящихся в каталоге (/showtime)229
Отображение описания ошибки (/showmsg)230
Active Directory Replication Monitor (ReplMon.exe) (ST)230
Подготовка к работе230
Файлы журналов событий232
Управление репликацией232
Глава 9. Манипулирование объектами Active Directory233
Поиск объектов в Active Directory233
Active Directory Search Tool (Search.vbs) (ST)233
Формат выводимой информации234
Пример 1. Поиск объекта по его идентификатору GUID234
Пример 2. Поиск всех политик в домене235
Просмотр и редактирование объектов Active Directory236
Active Directory Browser (AdsVw.exe) (AD SDK)237
Active Directory Administration Tool (Ldp.exe) (ST)240
Подключение и привязка241
General Options (Общие параметры)242
Ссылки (referrals) и их влияние на результаты поиска244
Страничный поиск245
Сохранение результатов246
Просмотр леса доменов246
Поиск247
Обновление атрибутов249
Удаление объектов251
Просмотр дескрипторов безопасности252
Просмотр метаданных репликации252
Импорт, экспорт и пакетная обработка объектов каталога254
Параметры255
Экспорт объектов с последующим импортом257
Поддержка Unicode259
LDIFDE259
CSVDE260
Утилита LDIFDE (Sys)260
Работа с объектами пользователей261
Работа с контейнерами (доменами и подразделениями)263
Расширение схемы263
Модификация атрибутов. Удаление объектов264
Утилита CSVDE (Sys)265
Работа с Unicode-значениями266
Экспорт информации с последующим импортом267
Windows 2000 Domain Manager (NetDom.exe) (ST)268
Опрос доменов269
Управление учетными записями компьютеров270
Проверка и переустановка безопасных каналов271
Управление междоменными доверительными отношениями271
Удаление несуществующих доменов272
Глава 10. Средства реорганизации каталога273
"Похождения" атрибута ObjectSID273
Active Directory Object Manager (MoveTree.exe) (ST)275
Перемещение подразделения вместе с содержимым276
Перемещение учетных записей пользователей и групп278
Клонирование субъектов безопасности (ClonePrincipal) (ST)278
Хорошо известные (well-known) идентификаторы SID и RID279
Поддерживаемые типы объектов280
Компоненты ClonePrincipal280
Конфигурирование среды281
Установки реестра (TcpipClientSupport)281
Параметры аудита281
Доверительные отношения283
Конфигурирование групп283
Дополнительные требования для утилиты ADMT283
Клонирование пользователей283
Клонирование групп284
Примеры использования ClonePrincipal285
Клонирование идентификаторов SID (SIDHist.vbs)285
Клонирование пользователя (ClonePr.vbs)287
Поиск групп определенного типа288
Глава 11. Средства управления безопасностью289
ACL Diagnostics (ACLDiag.exe) (ST)289
Просмотр всех разрешений290
Просмотр действующих прав291
Проверка делегирования управления292
Сравнение существующих разрешений с исходными (default)293
DsACLs.exe (ST)294
Просмотр параметров безопасности294
Предоставление и удаление разрешений296
Восстановление параметров безопасности296
Security Descriptor Check Utility (SDCheck.exe) (ST)297
Kerberos Tray (KerbTray.exe) (RK)299
Kerberos List (KList.exe) (RK)302
Глава 12. Работа с групповыми политиками303
Group Policy Results (GPResult.exe) (RK)303
Общая структура тестов304
Описание тестов305
Group Policy Verification Tool (GPOTool.exe) (RK)311
Общие тесты312
Подробные сведения о политиках313
Поврежденные политики315
ЧАСТЬ IV. ПРОГРАММНЫЙ ДОСТУП К ACTIVE DIRECTORY317
Глава 13. Active Directory Service Interfaces (ADSI)319
Интерфейсы ADSI как инструмент администрирования320
Сервер сценариев Windows (WSH)321
Неформальный взгляд на архитектуру ADSI321
Атрибуты и свойства321
Системные провайдеры ADSI322
Интерфейсы и методы323
Интерфейс ADsSystemlnfo324
Основные принципы программирования с использованием ADSI325
Чтение свойств объектов326
Поиск в Active Directory326
Схема Active Directory328
Абстрактная схема329
Расширение схемы329
Создание нового атрибута330
Создание нового класса330
Именование атрибутов и классов331
Синтаксис атрибутов Active Directory332
Полезные средства для работы со схемой334
COM-объект lADsTools334
Использование языков Visual Basic и VBScript335
Преобразование программы на Visual Basic в сценарий337
Отладка сценариев337
Коды ошибок ADSI339
Глава 14. Использование ADSI для администрирования340
Имена объектов, используемые в этой главе340
Чтение информации из Active Directory341
Сохранение результатов в файле. Чтение абстрактной схемы341
Получение информации от объекта RootDSE344
Получение списка имеющихся атрибутов объекта345
Получение характеристик объектного класса из схемы346
Чтение свойств, имеющих различные типы348
Поиск объектов в Active Directory350
Манипулирование объектами типа "пользователь"352
Создание пользовательской учетной записи352
Переустановка пароля354
Отключение учетных записей 355
Управление членством в группах355
К каким группам принадлежит указанный пользователь?355
Кто является членами указанной группы?356
Как добавить члена к группе?356
Создание множества объектов357
Реконфигурация дерева объектов358
Перемещение и переименование объектов358
Удаление объектов'359
Назначение роли сервера глобального каталога360
Как найти владельца некоторой FSMO-роли?361
Использование библиотеки lADsTools363
Запуск репликации363
Запуск службы Knowledge Consistency Checker (КСС)364
Просмотр статуса (флагов) контроллера домена364
Поиск владельцев FSMO-ролей365
Различные операции366
Работа с дескрипторами безопасности368
Расширение схемы371
Создание нового атрибута372
Использование созданного атрибута373
Создание нового класса374
Использование созданного класса375
Приложение 1. Ссылки на ресурсы Интернета377
Общие вопросы377
Active Directory Service Interfaces (ADSI)378
VBScript378
Сервер сценариев Windows (WSH)378
Приложение 2. Интерфейсы ADSI, поддерживаемые провайдерами LDAP и WinNT379
Приложение 3. Функции библиотеки LADsTools381
Глоссарий384
"Как сделать...?”391
Предметный указатель394
Мы не в силах повысить качество
Вашего интернет-соединения...
Но мы можем повысить эффективность его работы!!!
Get ReGel Deluxe!
ReGet - это менеджер закачек, позволяющий легко и быстро I скачивать файлы с FTP- и HTTP-серверов. Если у вас хороший канал, ReGet использует все преимущества вашего интернет-соединения. ; Если качество связи оставляет желать лучшего, ReGet позволит свести неудобства к минимуму и гарантированно скачать все ' файлы.
ReGet Deluxe - новое слово в мире менеджеров закачек для ! профессионалов. Он совместим со всеми платформами Windows и всеми популярными браузерами. Он не только увеличивает скорость : скачивания в 5-40 раз, но и обладает широким диапазоном возможностей для управления закачками.
I - При помощи встроенного многофункционального планировщика вы можете установить любое действие ReGet Deluxe для запуска в । определенное время, регулярно или в зависимости от другого ; события.
' - Менеджер сайтов позволяет устанавливать настройки для каждого сервера, с которого вы будете скачивать информацию.
- Архив с возможностью поиска сохранит информацию обо всех i файлах, которые вы скачивали. Вы больше не забудете, когда и откуда вы скачивали файл, и где он теперь находится на вашем жестком диске.
; ReGet оптимизирован для работы на российских телефонных ли- ! ниях. Ему не страшны обрывы связи, плохие каналы, загруженные серверы.
ReGet Deluxe - менеджер закачек высшего класса!
скачай себе новую версию!
www.reget.com
Предисловие
В настоящее время существует достаточно много хороших и информативных книг, посвященных как системе Windows 2000 в целом, так и одному из ее важнейших компонентов — службе каталога Active Directory (AD). Эта служба также останется ключевым компонентом при построении доменов на основе следующей серверной версии Windows, носящей кодовое название Whistler (также именуемой Windows 2002 Server4 или Windows .NET Server; последнее название, возможно, будет окончательным). Читатель легко может найти книги, в которых рассматривается назначение Active Directory, ее достоинства и недостатки, стратегии развертывания Active Directory в крупных корпоративных сетях, а также многие другие "глобальные" вопросы. (Например, одним из ценнейших источников информации, необходимой при планировании Active Directory, является Windows 2000 Server Resource Kit Deployment Planning Guide, который можно свободно загрузить с веб-узла Microsoft — см. приложение 1.) Подобные вопросы достаточно хорошо освещены, и я решил не касаться их.
В этой книги я попытался рассмотреть проблемы, возникающие при использовании Active Directory в доменах Windows 2000. Первоначально я планировал включить в книгу подробные рекомендации по установке и отладке Active Directory, а также таких сетевых служб, как DNS, DHCP и т. д. Однако в процессе подготовки книги оказалось, что эта задача чрезвычайно трудоемка, и даже тысячестраничные тома, входящие в Windows 2000 Server Resource Kit, не описывают все возникающие проблемы и их решения. Поэтому я решил сконцентрировать свое внимание на менее освещенных вопросах и рассмотреть некоторые часто встречающиеся ошибки. Даже если вы не получите решения всех возможных проблем, то, надеюсь, вы сможете понять, с какой стороны подходить к их устранению.
Наверное, никому не придет в голову приступать к ремонту автомобиля или сложной электронной аппаратуры, не имея специальных инструментов и приспособлений. Тем не менее администраторы, работающие с доменами
Windows 2000, нередко забывают о том, что проблемы, возникающие при использовании сложнейшего программного продукта — Active Directory, также невозможно устранить без помощи соответствующих инструментов — тестовых программ и утилит. Наибольшее количество таких утилит содержится, несомненно, в отдельно продаваемом программном продукте — Windows 2000 Resource Kit. Однако большинство инструментов, необходимых для работы с Active Directory, поставляется вместе с системой и входит в состав Windows 2000 Support Tools. Работе с этими инструментами и посвящена (в значительной степени) эта книга.
Кроме того, я хотел бы привлечь внимание системных администраторов к методам программного управления Active Directory и, в частности, к сценариям, использующим интерфейс прикладного программирования Active Directory Service Interfaces (ADSI). Сценарии можно использовать для решения множества административных задач, и многие уже написанные сценарии можно легко адаптировать к конкретным условиям. Чтобы писать сценарии, необязательно быть квалифицированным программистом, что я и попытался доказать в последних двух главах книги.
Все описанные в книге концепции, программные решения, оснастки и утилиты, а также методы их использования сохранят свою актуальность и при переходе на новую систему — Windows .NET Server. В новой версии имеются непринципиальные отличия, однако, практически весь опыт, накопленный при работе с доменами Windows 2000, вы сможете использовать в новой среде. Поэтому не откладывайте углубленное знакомство с Active Directory на следующий год!
Эта книга ориентирована на достаточно подготовленного читателя, уже имеющего опыт работы с Windows 2000 и знакомого с основными компонентами системы (в частности с оснастками Microsoft Management Console, ММС) и методами их использования. При необходимости вы можете найти базовые сведения в Справке или пользоваться различными книгами и статьями, посвященными Windows 2000.
Ниже раскрывается краткое содержание каждой главы книги.
Часть I. Развертывание доменов Windows 2000
Глава 1 "Концепции Active Directory и терминология" в первую очередь посвящена двух стандартам, лежащим в основе Active Directory — Lightweight Directory Access Protocol (LDAP, Упрощенный протокол доступа к каталогам) и Directory Naming Service (DNS, Служба доменных имен). Без понимания концепций и требований, описываемых этими стандартами, очень сложно разобраться в принципах работы Active Directory и взаимодействия ее компонентов.
Глава 2 "Конфигурирование доменов Windows 2000 и устранение неисправностей", содержит рекомендации, которые следует учитывать при разработке доменов Windows 2000 и устранении неисправностей в этих доменах.
Глава 3 "Развертывание Active Directory" акцентирует ваше внимание на тех вопросах, на которые следует обратить внимание в начале или в процессе установки Active Directory. Также описываются некоторые типовые ситуации, которые могут встретиться при проектировании доменов Windows 2000, например, взаимодействие Active Directory с уже развернутой системой DNS.
Часть II. Администрирование Active Directory
В главе 4 "Средства управления доменами" рассматриваются все стандартные оснастки, используемые для администрирования Active Directory. Знание некоторых возможностей и режимов работы этих инструментов позволит администратору эффективнее организовать свое "рабочее место".
В главе 5 "Типовые административные задачи" описываются административные задачи, типичные для систем Windows — например, работа с учетными записями или сетевыми ресурсами, — а также задачи, специфичные для доменов Windows 2000, такие как делегирование административных полномочий, управление ролями FSMO, обновление установок, определяемых групповыми политиками, поиск в Active Directory и др.
Часть III. Использование системных утилит
Глава б "Основные характеристики и назначение системных утилит" поможет администратору выбрать наиболее подходящую системную утилиту для решения конкретной задачи.
В главе 7 "Диагностика и обслуживание Active Directory" описываются утилиты, позволяющие определить работоспособность отдельного контроллера домена и целостность копии (replica) базы данных Active Directory, хранящейся на нем.
Глава 8 "Сетевые и распределенные службы" посвящена утилитам, позволяющим диагностировать Active Directory как распределенную базу данных, например, определять отсутствие связи между контроллерами домена, находить ошибки, связанные с аутентификацией и репликацией.
Глава 9 "Манипулирование объектами Active Directory" ориентирована на работу с логическими объектами Active Directory. В ней, например, описываются утилиты, используемые для поиска различных объектов каталога и редактирования их атрибутов, утилиты экспорта и импорта объектов, а также средства, позволяющие манипулировать объектами, представляющие клиентские компьютеры, контроллеры домена и доверительные отношения.
В главе 10 "Средства реорганизации каталога", рассматриваются утилиты, предназначенные для реорганизации доменных деревьев и переноса объектов из одного леса в другой.
Программы, позволяющие просматривать и модифицировать разрешения на доступ к объектам Active Directory, описываются в главе 11 "Средства управления безопасностью".
Глава 12 "Работа с групповыми политиками" посвящена утилитам, которые позволяют тестировать объекты групповых политик (Group Policy Objects, GPOs) и определять результирующие установки безопасности, задаваемые групповыми политиками.
Часть IV. Программный доступ к Active Directory
Глава 13 "Active Directory Service Interfaces (ADSI)" знакомит администраторов с методами программного управления Active Directory. Сложность при работе с документацией по ADSI заключается в том, что новичку очень сложно находить нужные сведения в очень большом количестве незнакомой информации. Эта глава поможет читателю понять некоторые базовые концепции, которые иллюстрируются примерами в следующей главе.
Глава 14 "Использование ADSI для администрирования" почти полностью состоит их программных примеров. Мне кажется, принципы программирования с использованием ADSI проще всего понять на специально подготовленных и прокомментированных примерах. Когда основные понятия и концепции уже ясны, намного легче ориентироваться в документации, подробно описывающей все интерфейсы и их методы и свойства.
Приложения содержат следующую информацию: важные ссылки на ресурсы Интернета; таблицу интерфейсов ADSI, поддерживаемых основными системными провайдерами; и список функций, реализуемых ActiveX-объектом TADsTools (эти функции весьма полезны при разработке административных сценариев).
В глоссарии вы быстро найдете краткое описание многих новых терминов, встречающихся в тексте и относящихся к Windows 2000. С его помощью вы можете проверить свое понимание уже знакомых понятий.
Раздел "Как сделать... ?" представляет собой обычный список часто задаваемых вопросов (FAQ). В нем вы, возможно, найдете решение конкретной проблемы быстрее, чем в оглавлении книги или в предметном указателе.
Для поиска в предметном указателе ссылки на определенную утилиту используйте имя файла этой утилиты. Также по имени находятся ссылки на интерфейсы, методы, свойства, атрибуты, перечисления и т. д.
Ваши замечания и предложения по книге присылайте автору по адресу
ATchekmarev@hotmail.com,
Типографские соглашения
Для выделения в тексте используются следующие соглашения:
Названия административных оснасток и элементов пользовательского интерфейса выделены полужирным шрифтом, например, "оснастка Active Directory Users and Computers". При их первом упоминании в пределах главы после английских названий в скобках даются эквиваленты из локализованной версии системы.
Имена атрибутов объектов Active Directory, методов и свойств, используемых в ASDI, выделены курсивом, например, objectSid.
Некоторые важные по смыслу слова выделены полужирным курсивом.
О Если команда или выводимая на экран строка символов не помещается на странице, при переносе используется символ ^, например:
createusers LDAP://OU=Staff,DC=w2k,DC=dom cn:"User UserOl"
Q> samAccountName:user-ldap01 password:pswl
Такая запись означает, что изображенные строки должны рассматриваться как единая и неделимая строка.
Как видно из предыдущего примера, обязательные элементы команды — имя команды и параметры — для большей наглядности выделяются полужирным. (Другие элементы команды определяются администратором и зависят от реальной конфигурации.)
Часть I
Развертывание доменов Windows 2000
Глава 1. Концепции Active Directory и терминология
Глава 2. Конфигурирование доменов Windows 2000 и устранение неисправностей
Глава 3. Развертывание Active Directory
ГЛАВА 1
Концепции Active Directory и терминология
Назначение, преимущества, архитектура и место службы Active Directory в доменах Windows 2000 описаны во множестве книг и статей. При необходимости вы можете легко найти исчерпывающую информацию по этим темам. В данной главе я хотел рассмотреть некоторые элементы двух стандартов Интернета, появившихся задолго до Active Directory, но тесно связанных с ней. Эти стандарты — Lightweight Directory Access Protocol (LDAP v3, Упрощенный протокол доступа к каталогам) и Domain Name System (DNS, Служба доменных имен). Имеются две причины для такого решения. Во- первых, знание основ LDAP помогает лучше понимать архитектуру Active Directory, что необходимо для построения запросов, использования различных административных средств (в том числе и описываемых в этой книге), и — в еще большей степени — при программном обращении к Active Directory. Во-вторых, как показывает опыт, служба DNS, не обеспечивающая требований Active Directory, зачастую является источником разнообразных ошибок в доменах Windows 2000. Поэтому мне показалось целесообразным подробно описать все ресурсные записи, которые должны быть зарегистрированы на DNS-сервере, а позднее — в главе 3 "Развертывание Active Directory" — рассмотреть пример использования уже существующей службы DNS для развертывания Active Directory.
Примечание )
Термины сервер и контроллер домена иногда используются как синонимы. Если говорить об Active Directory, то каждый контроллер домена является сервером каталога и наоборот. Применительно к LDAP, каждый контроллер домена является сервером LDAP. (Обратное не всегда верно, т. к. серверы LDAP могут быть реализованы на платформах, отличных от Windows 2000.)
Протокол LDAP как один из ключевых элементов Active Directory
Основы протокола LDAP необходимо хорошо понимать как для эффективного использования служб Active Directory в целом, так и для работы со многими системными утилитами и программами, такими как инструмент Active Directory Administrative Tool (Ldp.exe), оснастка ADSI Edit, сценарий Search.vbs, утилита LDIF Directory Exchange (LDIFDE.exe), а также для написания сценариев. Сказанное выше относится ко всем четырем моделям LDAP, описанным ниже. В этой главе рассматриваются некоторые термины и концепции, относящиеся к Active Directory.
( Примечание j
Все основные спецификации протокола LDAP v3 описаны в RFC с 2251 по 2256. Обращайтесь к этим RFC за дополнительной информацией. Также вы можете найти в них ссылки на другие используемые стандарты.
Информационная модель
В основе информационной модели протокола LDAP и, следовательно, Active Directory лежит Х.500 — специальный стандарт, принятый International Standards Organization (ISO, Международная организация по стандартам) для описания службы распределенного каталога. Этот стандарт предлагает объектно-ориентированную модель данных и, как следствие, оперирует такими понятиями, как класс, экземпляр, наследование и т. п.
Схема
Схема каталога определяет классы и атрибуты, используемые для создания экземпляров всех объектов каталога. Сама схема также хранится в каталоге в виде набора объектов.
Классы
Каждый объект каталога является экземпляром одного или нескольких классов, определенных в схеме. В общем случае каждый объект порождается по крайней мере от одного структурного класса и нескольких вспомогательных классов (вспомогательные классы могут, впрочем, и не использоваться). Имеется три типа классов:
Абстрактные (abstract) классы служат шаблонами для создания новых абстрактных, вспомогательных и структурных классов. На базе абстрактного класса невозможно создать объект Active Directory, т. е. нельзя получить экземпляр абстрактного класса. В определении абстрактного класса может присутствовать любое число вспомогательных классов.
Структурные (structural) классы порождаются от абстрактных или структурных классов и наследуют все атрибуты родительских классов. В определении структурного класса может присутствовать любое число вспомогательных классов.
Вспомогательный (auxiliary) класс порождается от абстрактного или структурного класса и может быть включен в определение структурного, абстрактного или вспомогательного класса. Определяемый класс наследует все атрибуты вспомогательного класса, перечисленные в свойствах mustContain, systemMustContain, mayContain и systemMayContain. Вспомогательные классы нельзя использовать для создания экземпляров объектов Active Directory. В определении вспомогательного класса может присутствовать любое число вспомогательных классов.
Атрибуты
Атрибуты (attributes) содержат данные, используемые для описания определяемого класса. Атрибуты могут быть обязательными (mandatory) или необязательными (optional), могут иметь одно или множество значений. Атрибут определяется в схеме по имени и идентификатору объекта (object identifier, OID). Атрибуты описаны в RFC 2252 и RFC 2256. Примеры атрибутов (значения атрибутов IDAPDisplayName и attributelD объектов класса attributeSchema, содержащихся в контейнере Schema):
nTSecurityDescriptor (1.2.840.113556.1.2.281)
distinguishedName (2.5.4.49)
Объект RootDSE
Каждый сервер, совместимый с LDAP v3, имеет собственный объект RootDSE (DSA-Specific Entry), определенный в RFC 2251. Этот объект является корнем Информационного дерева каталога (Directory Information Tree, DIT), однако не входит ни в какой контекст имен. Объект RootDSE описывает конфигурацию и возможности данного сервера каталога. К свойствам этого объекта можно обращаться программно (см. листинг 14.2) или при помощи утилиты, генерирующей запросы (например, Ldp.exe или Search.vbs). Для выполнения запроса к RootDSE укажите пустое (null) базовое отличительное имя (distinguished name, DN), базовую область поиска (base scope) и фильтр objectciass=*. (Подробно операции поиска будут рассматриваться ниже.) Можно привязываться к конкретному серверу, а можно выполнять запрос без указания сервера. В последнем случае будет отвечать первый доступный LDAP-сервер (контроллер домена Windows 2000). Ниже приводится пример данных, содержащихся в объекте RootDSE:
1> currentTime: 11/29/2000 11:15:57 Central Standard Time Central Daylight Time;
1> subschemaSubentry:
CN=Aggregate,CN=Schema,CN=Configuration,DC=w2k,DC=dom;
1> dsServiceName: CN=NTDS Settings,CN=W2KDC2,CN=Servers, CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom;.
3> namingContexts: DC=subdom,DC=w2k,DC=dom;
CN=Schema,CN=Configuration,DC=w2k, DC=dom; CN=Configuration,DC=w2k,DC=dom;
1> defaultNamingContext: DC=Subdom,DC=w2k,DC=dom;'
1> schemaNamingContext: CN=Schema,CN=Configuration,DC=w2k,DC=dom; 1> configurationNamingContext: CN=Configuration,DC=w2k,DC=dom;
1> rootDomainNamingContext: DC=w2k,DC=dom;
16> supportedControl: 1.2.840.113556.1.4.319;
1.2.840.113556.1.4.801; 1.2.840.113556.1.4.473; 1.2.840.113556.1.4.528;
1.2.840.113556.1.4.417; 1.2.840.113556.1.4.619; 1.2.840.113556.1.4.841;
1.2.840.113556.1.4.529; 1.2.840.113556.1.4.805; 1.2.840.113556.1.4.521; 1.2.840.113556.1.4.970; 1.2.840.113556.1.4.1338; 1.2.840.113556.1.4.474; 1.2.840.113556.1.4.1339; 1.2.840.113556.1.4.1340;
1.2.840.113556.1.4.1413;
2> supportedLDAPVersion: 3; 2;
12> supportedLDAPRolicies: MaxPoolThreads; MaxDatagramRecv; MaxReceiveBuffer; InitRecvTimeout; MaxConnections; MaxConnldleTime; MaxActiveQueries; MaxPageSize; MaxQueryDuration; MaxTempTableSize; MaxResultSetSize; MaxNotificationPerConn;
1> highestCommittedUSN: 9267;
2> supportedSASLMechanisms: GSSAPI; GSS-SPNEGO;
1> dnsHostName: w2kdc2.subdom.w2k.dom;
1> IdapServiceName: w2k.dom:w2kdc2$@SUBDOM.W2K.DOM;'
1> serverName: CN=W2KDC2,CN=Servers,,,
CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom;
1> supportedCapabilities: 1.2.840.113556.1.4.800;.
1> isSynchronized: TRUE;1
1> IsGlobalCatalogReady: TRUE;1
(Обратите внимание на цифры слева, указывающие на количество значений конкретного атрибута.)
Объект RootDSE содержит следующие стандартные атрибуты (см. RFC 2251 и 2252):■
altServer — ссылки на другие серверы, которые могут использоваться, когда данный сервер недоступен. Этот атрибут может отсутствовать.
namingContexts — список контекстов имен, хранящихся на сервере. Обратите внимание на то, что в приведенном примере контекст доменных имен указывает на домен subdom.w2k.dom, а два других контекста — Schema (схема) и Configuration (конфигурация) — указывают на корневой домен w2k.dom. При поиске в каталоге следует использовать указанные контексты имен.
subschema Subentry — имя элемента subschema (или абстрактная схема, abstract schema; см. главу 13 "Active Directory Service Interfaces (ADSI)'Y Этот элемент содержит описания имеющихся атрибутов и классов.
supportedControl — идентификаторы (OIDs) элементов управления (LDAP controls), поддерживаемых данным сервером. Этот атрибут может отсутствовать.
supportedExtension — идентификаторы (OIDs) расширенных операций, которые поддерживает данный сервер. Атрибут может отсутствовать.
supportedLDAPVersion — версии LDAP, поддерживаемые сервером.
supportedSASLMechanisms —• поддерживаемые сервером механизмы Simple Authentication and Security Layer (SASL, Уровень упрощенной аутентификации и безопасности). Этот атрибут может отсутствовать.
В дополнение к перечисленным Active Directory поддерживает следующие атрибуты:
configurationNamingContext — контекст имен Configuration.
currentTime — текущее время.
defaultNamingContext — контекст имен, поддерживаемый сервером по умолчанию. Обычно это обличительное имя (DN) домена, в котором сервер располагается.
dnsHostName — DNS-имя сервера.
dsServiceName — имя службы каталога.
highestCommittedUSN — наибольший USN, записанный в базу данных каталога на данном сервере.
IdapServiceName — Service Principal Name (SPN, Основное имя службы) для сервера; используется для взаимной аутентификации.
rootDomainNamingContext — имя леса, в котором располагается сервер.
schemaNamingContext — контекст имен Schema.
serverName — отличительное имя объекта, представляющего сервер.
supportedCapabilities — идентификатор (OIDs) функций, поддерживаемых сервером.
supportedLDAPPolicies — поддерживаемые политики LDAP.
Еще имеется два важных функциональных (operational) атрибута:
isSynchronized — имеет значение TRUE, если хранящаяся на сервере копия базы данных Active Directory была успешно синхронизирована с другими копиями (т. е. в результате операции повышения роли сервер может объявлять себя контроллером домена).
isGIobalCatalogReady — имеет значение TRUE, если данный контроллер домена не просто был назначен сервером глобального каталога (Global Catalog, GC), а уже объявил себя сервером GC.
Синтаксис атрибутов
Синтаксис атрибута (attribute syntax) (см. RFC 2252) определяет тип атрибута (например, строка Unicode, число, байтовая строка и т. д.), порядок следования байтов и правила сравнения (matching rules), используемые для сравнения атрибутов данного типа. Синтаксисы атрибутов LDAP идентифицируются с помощью OID. Приведем примеры синтаксисов:
Distinguished Name (1.3.6.1.4.1.1466.115.121.1.12)
UTC time (1.3.6.1.4.1.1466.115.121.1.53)
Элемент каталога (Объект)
Элемент каталога (entry) представляет собой экземпляр некоторого структурного класса, и в Active Directory обычно называется объектом. Объект может быть или контейнером (т. е. содержать в себе другие объекты), или листом (leaf). Объект идентифицируется по относительному отличительному имени (RDN) и полному отличительному имени (DN).
Модель именования
Модель именования описывает способы идентификации объектов каталога. Для этой цели в модель каталога OSI используются отличительные имена.
Отличительное имя (DN)
Полное отличительное имя, или, просто, отличительное имя (distinguished name, DN), является уникальным в пределах леса (forest) или информационного дерева каталога (DIT) и служит первичным ключом для некоторого объекта каталога. Отличительное имя состоит из относительных отличительных имен, представляющих собой ветви информационного дерева.
Ниже приведен пример отличительного имени объекта. Аббревиатура (используемая как спецификатор имени) CN означает Common Name (общее имя), OU соответствует Organizational Unit (организационная единица), a DC означает Domain Component (доменный компонент):
CN=John Smith,OU=Staff,DC=w2k,DC=dom
Относительное отличительное имя (RDN)
Относительное отличительное имя (relative distinguished name, RDN) уникальным образом идентифицирует объект внутри некоторого контейнера. RDN-имя состоит из спецификатора (specifier) имени атрибута и некоторого символьного значения, например:
CN=Domain Controllers
OU=Staff
DC=w2k-domain
Другие типы имен, используемые в Active Directory
Основное имя пользователя (User Principal Name, UPN) состоит из регистрационного имени пользователя (logon name) и так называемого суффикса UPN. Этот суффикс может быть DNS-именем текущего или корневого домена; может также использоваться специально заданное сокращенное имя, например, Johns@w2k или John@w2k.dom. UPN-имя упрощает процедуру регистрации в домене и может использоваться на компьютерах, принадлежащих любому домену в составе леса.
Полное доменное имя (Fully Qualified Domain Name, FQDN) также называется полным именем компьютера (full computer name) и представляет собой имя компьютера (хоста) плюс основной суффикс DNS (primary DNS suffix), например:
w2kdc2.subdom.w2k.dom
Глобальный уникальный идентификатор (Globally Unique Identifier, GUID) представляет собой уникальное 128-битное число, идентифицирующее объект при его создании. Оно никогда не изменяется, что обеспечивает возможность адресации объекта даже после его переименования или перемещения.
Имя учетной записи SAM (Pre-Windows 2000, или SAM Account Name). Имена SAM необходимы для совместимости с клиентами нижнего уровня (down-level clients). Имя SAM должно быть уникальным в пределах домена.
Унифицированный указатель ресурсов (Uniform Resource Locator, URL) LDAP (LDAP URL). LDAP URL используются LDAP-клиентами для доступа к объектам Active Directory, а также в качестве строк привязки (binding strings) в сценариях и приложениях, например (имя сервера является необязательным):
LDAP://w2kdc4.w2k.dom/CN=John Smith,OU=Staff,DC=w2k,DC=dom
Каноническое имя (Canonical Name) используется для отображения имен объектов в пользовательском интерфейсе Windows 2000. Каноническое имя образуется аналогично отличительному имени, только в нем не употребляются спецификаторы имени атрибута (DC, CN и т. д.). Например, каноническое имя для объекта с LDAP URL, показанном выше, будет следующим (имя сервера не указывается):
w2k.dom/Staff/John Smith
Ссылки
В лесе, состоящем из нескольких доменов, отдельный контроллер домена не хранит весь каталог. (Некоторое подмножество атрибутов всех объектов можно получить лишь с сервера глобального каталога.) Необходимо иметь некий механизм, который перенаправил бы запрос от одного контроллера
домена к другому — тому, который хранит запрашиваемый объект. Этот механизм необходим также, если объект находится на том же сервере, но в другом контексте имен (например, если в качестве базы поиска указывается контекст доменных имен, а требуется найти объект, расположенный в разделах Schema или Configuration).
Если на сервере отсутствует копия запрашиваемого объекта, то в соответствии с RFC 2251 сервер информирует об этом клиента с помощью ссылки LDAP (LDAP referral). В идеальном случае ссылка указывает на тот контроллер домена, который хранит необходимый объект. Сервер может генерировать ссылки на другие контроллеры домена, обращаясь к объектам перекрестных ссылок (cross-reference objects), хранящимся в каталоге. Перекрестные ссылки позволяют каждому контроллеру домена "знать" обо всех разделах каталога, существующих в лесе. Ссылки хранятся в контейнере Configuration и, следовательно, реплицируются на все контроллеры домена, входящие в лес. Поэтому любой контроллер домена может генерировать ссылки на другие домены, образующие лес, а также на разделы Schema и Configuration. Объекты перекрестных ссылок могут создаваться или автоматически, или вручную (системным администратором).
Функциональная модель
Функциональная модель описывает операции, которые можно выполнять посредством протокола LDAP с информацией, хранящейся в каталоге. Необходимо иметь возможность адресации этой информации, а также выборки и модификации. В различных административных инструментах эти операции реализованы немного по-разному, однако основные концепции и передаваемые параметры всегда остаются неизменными.
Аутентификация
Операции аутентификации позволяют пользователю выполнять подключение (connection) к Directory Service Agent (DSA, Агент службы каталога) и получать право доступа к хранящейся информации.
Open — эта команда создает и инициализирует подключение, а затем открывает подключение к DSA.
Bind — эта команда инициирует протокольный сеанс связи (session) с DSA и аутентифицирует клиента в DSA.
Unbind - эта команда завершает сеанс связи, освобождает все ресурсы, связанные с данным сеансом, и закрывает подключение.
Выполнение запросов
Операции запросов описывают способы извлечения информации из каталога.
Поиск (search)
Операции поиска обеспечивают выборку информации по критерию, заданному пользователем.
База поиска (search base). Отличительное имя некоторого объекта каталога (называемого базовым объектом), с которого начинается поиск (например, DC=w2k,DC=dom ИЛИ OU=Stuff, DC=w2k, DC=dom).
( Примечание )
База поиска может быть также представлена в формате "<GUID=...>" (угловые скобки включены в синтаксис!) (например,
"<GUID=0855ae368790cb4b8726cf37cb2222a5>").
Область поиска (search scope). Определяет глубину поиска относительно базы поиска (на рис. 1.1 показаны области поиска для домена). Имеются три возможности:
Base (базовый поиск). Ищется только базовый объект (т. е. вы сможете обратиться лишь к свойствам базового объекта).
One Level (поиск на один уровень вглубь). Просматриваются дочерние объекты базового объекта; сам базовый объект и объекты более низких уровней исключаются из поиска.
Subtree (поддерево). Просматривается все поддерево, начиная с базового объекта включительно (т. е. все "видимые" объекты в поддереве).
Рис. 1.1. Области поиска для домена (доменный объект является базой поиска)
□ Фильтр (filter). Некоторое правило (см. RFC 2254) для выбора объектов В поддереве (например, (сп=*) ИЛИ & (objectCategory=Person) (cn=d*)). (См. также ниже.)
Выборка (selection). Список атрибутов, возвращаемых для объектов, выбранных в соответствии с фильтром.
Необязательные элементы управления (optional controls). Фильтры поиска LDAP (RFC 2254), определяющие особые критерии поиска. (См. примеры использования некоторых элементов управления LDAP в главе 9 "Манипулирование объектами Active Directory"))
Типы фильтров
В таблице показаны примеры фильтров поиска:
Условие
Фильтр
Сравнение на равенство
Сравнение на частичное равенство
(sAMAccountName=j smith)
(name=s*) ИЛИ (name=*s*)
Сравнение со значением
(uSNChanged>=10000) ИЛИ (CN<=Sales)
Наличие объекта
(objectClass=*)
Логическое И двух условий (пользователи, имеющие имена, начинающиеся с 'Н')
(&(objectClass=user)(cn>=h))
Логическое ИЛИ двух условий (объекты с именами, начинающимися с 'А' ИЛИ 'Н')
(I(cn=a*)(cn=h*))
Логическое ОТРИЦАНИЕ (все пользователи с именами, начинающимися с 'А', за исключением 'Administrators')
(&(objectClass=user)(cn=a*)(!(cn=adm*)))
Двоичное сравнение (атрибуты, имеющие синтаксис 2.5.4.1)
(attributeSyntax=\32\2e\35\2e\34\2e\31)
Варианты выборок
Обычно пользователь задает список атрибутов объектов, возвращаемых по запросу. Есть, однако, особые случаи.
Если вместо списка атрибутов нужно получить только отличительные имена объектов, укажите в качестве параметра идентификатор (OID) 1.1.
Вместо имен атрибутов можно указывать их идентификаторы (OID), например имя objectclass можно заменить строкой 2.5.4.0.
Пример. Получение списка атрибутов, реплицируемых в Глобальный каталог
Для примера давайте попробуем узнать, какие атрибуты реплицируются в Глобальный каталог. Для этого можно использовать любое средство поиска, например сценарий Search.vbs или утилиту Ldp.exe. (Подробную информацию о них можно найти в главе 9?) Вот пример команды поиска:
search "LDAP://CN=Schema,CN=Configuration,DC=w2k, DC=dom"
^ /С:"(&(objectClass=attributeSchema) ^ (isMemberOfPartialAttributeSet=*) ) " ^ /Р:ADsPAth,attributelD,attributesyntax,IsSingleValued, ^ IDAPDisplayName,oMSyntax
Этот запрос выдает результат, аналогичный приведенному ниже (показан только один элемент списка):
ADsPAth = LDAP://CN=User-Principal-Name,CN=Schema,CN=Configuration,
S> DC=w2k,DC=domattributeID = 1.2.840.113556.1.4.656 attributesyntax = 2.5.5.12
IsSingleValued = True
IDAPDisplayName = userPrincipalName oMSyntax = 64
Сравнение
Операция сравнения возвращает булевский результат (TRUE или FALSE), полученный при сравнении указанного атрибута с некоторым значением.
Операционные ограничения и политики запросов
Ресурсы LDAP-сервера, предоставляемые клиентам для выполнения запросов LDAP, постраничного получения результирующих наборов и сортировки результатов, регламентируются с помощью Default Query Policy (Политика запросов по умолчанию). Операционные ограничения (administrative limits) хранятся в объектах политик запросов, которые располагаются в контейнере CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services в разделе Configuration. Если политики не определены, все контроллеры домена используют политику запросов по умолчанию. Также можно задать политику запросов для сайта. Если же некоторому контроллеру домена назначается определенная политика запросов, она имеет приоритет над всеми остальными политиками. По всей видимости, пользовательский интерфейс для назначения сайту некоторой политики отсутствует. Эту операцию можно выполнить "вручную", редактируя атрибут query Policy Object объекта NTDS Site Settings, относящегося к классу nTDS SiteSettings. Используйте для этого
оснастку ADSI Edit. Можно также использовать сценарий ModifyLDАР.vbs (см. ниже).
Политики запросов распространяются на приведенные ниже операции запросов LDAP.
Поиск. По умолчанию результирующий набор не может превышать 1000 строк. Для выполнения операций, генерирующих значительный объем информации, нужно использовать страничный поиск. В этом случае также важно не превышать время, заданное по умолчанию для операции запроса.
Страничный поиск. По запросу клиента сервер может сохранить результирующий набор и возвращать его в виде страниц фиксированного объема. В этом случае политика определяет размер страницы. (См. комментарии к листингу 13./.)
Поиск с сортировкой результатов. Запрошенный результирующий набор может быть определенным образом отсортирован. Эта операция может вызвать перегрузку LDAP-сервера.
Поиск с заменой (search with replication). Клиент может задавать максимальное число значений атрибута, возвращаемых по запросу.
Извещение об изменениях (change notify). В асинхронном LDAP-запросе клиент может запросить извещение об изменениях. Политика запросов ограничивает число одновременных асинхронных запросов.
Средства конфигурирования политик запросов LDAP
Существуют два стандартных средства, позволяющих работать с политиками запросов LDAP (см. главу 7 "Диагностика и обслуживание Active Directory"):
Утилита NTDSutil.exe. Этот инструмент позволяет работать только с объектом Default Query Policy. С его помощью можно просматривать или модифицировать политику запросов для некоторого контроллера домена.
Сценарий ModifyLDAP.vbs из Windows 2000 Server Resource Kit. Этот сценарий позволяет создавать, удалять, назначать или модифицировать объекты политик запросов.
Обновление
С помощью операций обновления (update) модифицируется информация, хранимая в каталоге.
Add (Добавить) — позволяет создать объект некоторого класса, описанного в схеме.
Modify (Изменить) — создает, модифицирует и удаляет атрибуты заданного объекта.
Modify RDN (Изменить RDN) — по сути эта операция переименовывает объект или перемещает его в другое место в каталоге.
□ Delete (Удалить) — удаляет объект (если это возможно, и если пользователь имеет достаточные права доступа к объекту).
Модель безопасности
Для обеспечения безопасного доступа к серверу LDAP протокол LDAP v.3 разрешает использовать механизмы Simple Authentication and Security Layer (SASL). Active Directory поддерживает такие механизмы SASL, как протоколы Kerberos Version 5 и MS Negotiate. Атрибут supportedSASLMechanisms объекта RootDSE, имеющегося на каждом контроллере домена Windows 2000, содержит два значения: GSSAPI и GSS-SPNEGO. Значение GSSAPI относится к протоколу Kerberos, а значение GSS-SPNEGO — к NT Negotiate (Kerberos, NT LAN Manager (NTLM) и т. д.).
Порты LDAP
Соединения по протоколу LDAP между клиентом и DSA осуществляются с использованием протокола Transmission Control Protocol (TCP) или User Datagram Protocol (UDP). В таблице перечислены порты протокола, применяемые при различных способах доступа.
Функция
Порт
ШАР
-389
LDAP Secure Sockets Layer (SSL)
636
Global Catalog (GC)
3268
Global Catalog Secure Sockets Layer
3269
Записи DNS, регистрируемые контроллерами домена на базе Windows 2000
Все ресурсные записи (20 записей, если контроллер домена является сервером глобального каталога, или 15 — в противном случае), которые каждый контроллер домена на базе Windows 2000 Server должен регистрировать на сервере DNS, хранятся в файле %5yVe/nAoo/%\system32\config\netlogon.dns. (Если используемый DNS-сервер не обеспечивает динамическое обновление записей, необходимо зарегистрировать эти записи вручную.) Пример такого
2 Зак. 1096
файла приведен ниже. В этом примере имя сервера — w2kdc2.subdom.w2k.dom, имя домена — subdom.w2k.dom, имя корневого домена — w2k.dom, имя сайта — W2k-site. Для наглядности записи отсортированы; реальный порядок записей немного отличается, однако это не имеет значения. Записи, относящиеся к серверу глобального каталога, выделены полужирным. Наличие всех подобных записей можно проверить с помощью оснастки DNS.
subdom.w2k.dom. 600 IN А 192.168.0.2
78acl552-6e3e-4a82-bc5f-78204b0705c5._msdcs.w2k.dom.
Ч>600 IN CNAME w2kdc2.subdom.w2k.dom.
_ldap._tcp.subdom.w2k.dom. 600 IN SRV 0 100 389 w2kdc2.subdom.w2k.dom.
_1dap._tcp.de,_msdcs.subdom.w2k.dom. 600 IN SRV 0 100 389
4>w2kdc2.subdom.w2k.dom.
_ldap._tcp.pdc,_msdcs.subdom.w2k.dom. 600 IN SRV 0 100 389
4>w2kdc2.subdom.w2k.dom.
_ldap._tcp.gc._msdcs.w2k.dom. 600 IN SRV 0 100 3268
4>w2kdc2. subdom. w2k .dom.
_ldap._tcp.7050f604-9fl5-4536-a592-
9>76d5af2e3487.domains,_msdcs,w2k.dom.
4>600 IN SRV 0 100 389 w2kdc2.subdom.w2k.dom.
_ldap._tcp.W2k-site._sites.subdom.w2k.dom. 600 IN SRV 0 100 389 w2kdc2.subdom.w2k.dom.
_ldap._tcp.W2k-site._sites,dc._msdcs.subdom.w2k.dom.
9>600 IN SRV 0 100 389 w2kdc2.subdom.w2k.dom.
_ldap,_tcp. W2k-site ._sites.gc,_msdcs.w2k.dom.
4>600 IN SRV 0 100 3268 w2kdc2.subdom.w2k.dom.
gc._msdcs.w2k.dom. 600 IN A 192.168.0.2
_gc._tcp.w2k.dom. 600 IN SRV 0 100 3268 w2kdc2.subdom.w2k.dom.
_gc._tcp.W2k-site._sites.w2k.dom. 600 IN SRV 0 100 3268
9>w2kdc2. subdom. w2k. dom.
_kerberos,_tcp.subdom.w2k.dom. 600 IN SRV 0 100 88
9>w2kdc2.subdom.w2k.dom.
_kerberos._udp.subdom.w2k.dom. 600 IN SRV 0 100 88 9>w2kdc2.subdom.w2k.dom.
_kerberos._tcp.de._msdcs.subdom.w2k.dom. 600 IN SRV 0 100 88
9>w2kdc2.subdom.w2k.dom.
_kerberos._tcp.W2k-site._sites.dc._msdcs.subdom.w2k.dom.
600 IN SRV 0 100 88 w2kdc2.subdom.w2k.dom.
_kerberos._tcp.W2k-site._sites.subdom.w2k.dom.
^600 IN SRV 0 100 88 w2kdc2.subdom.w2k.dom.
_kpasswd._tcp.subdom.w2k.dom. 600 IN SRV 0 100 464
9>w2kdc2.subdom.w2k.dom.
_kpasswd._udp.subdom.w2k.dom. 600 IN SRV 0 100 464
w2kdc2.subdom.w2k.dom.
Как вы можете видеть, две первых записи имеют типы A (host) и CNAME (alias), соответственно, а остальные записи — тип SRV (service location). Рассмотрим назначение каждой записи в том порядке, в каком они перечислены выше. DNSDomainName — имя текущего домена, например, subdom.w2k.dom. DNSRootName — имя корневого домена леса (это может быть имя корневого домена дерева, если в доменной структуре имеется только одно дерево), например, w2k.dom.
Внимание*
Не следует путать корневой домен дерева (tree root domain) (в лесе их может быть несколько) с корневым доменом леса (forest root domain) (всегда один)! Например, лес может включать в себя два дерева доменов с корневыми доменами w2k.dom и w2000.dom. Только первый созданный домен — w2k.dom — является корневым доменом леса. Поэтому, если серверы глобального каталога, создаваемого для всего леса, появляются в домене w2000.dom (или в его дочерних доменах), они будут регистрировать соответствующие записи в той же зоне DNS — w2k.dom.
<DNSDomainName> — клиент использует эту запись типа А для поиска некоторого контроллера в домене при помощи обычного просмотра записей хостов.
<NTDSSettingsGUiD>._msdcs.<DNSRootName> ■— каждый контроллер домена регистрирует эту запись типа CNAME для своего дочернего объекта CN=NTDS Settings, CN=<DCName>,CN=Servers,CN=<SiteName>,CN=Sites, CN=Configuration,DC=<DomainName...>, который уникальным образом идентифицирует этот контроллер в топологии репликации Active Directory. Клиент может использовать данную запись для поиска любого контроллера домена в пределах леса.
_ldap._tcp.<DNSDomainName> — клиент использует запись для поиска сервера LDAP в указанном домене. Каждый контроллер домена регистрирует эту запись.
_ldap._tcp.dc._msdcs.<DNSDomainName> — запись, КОТОраЯ ПОЗВОЛЯеТ КЛИСНТу находить контроллер в указанном домене. Каждый контроллер домена регистрирует данную запись, которая (с соответствующими именами доменов) используется для подключения к домену, дереву или лесу. При этом указываются имена текущего, родительского или корневого доменов, соответственно.
_ldap._tcp.pdc ,_msdcs ,<DNSDomainName> — КЛИСНТ ИСПОЛЬЗуеТ ДЭННуЮ ЗаПИСЬ для поиска основного контроллера домена (PDC) в смешанном домене. Эту запись регистрируют только контроллеры-владельцы роли PDC.
_ldap._tcp.gc._msdcs.<DNSRootName> — ЗЗПИСЬ, КОТОраЯ ИСПОЛЬЗуеТСЯ ДЛЯ НЗ- хождения сервера глобального каталога (GC) в лесе. Эту запись регистрируют только серверы GC.
_ldap._tcp.<DomainGUID>.domains._msdcs.ONSRootName> — КЛИСНТ ИСПОЛЬЗуеТ данную запись для поиска контроллера в домене, заданном с помощью
идентификатора (GUID) домена. Каждый контроллер домена регистрирует эту запись.
_ldap._tcp.<SiteName>._sites.<DNSDomainNanie> — ЗЗПИСЬ СЛУЖИТ ДЛЯ ПОИСКЗ сервера LDAP (это необязательно должен быть контроллер домена) в указанных домене и сайте. Эту запись для своего сайта регистрирует каждый контроллер домена на базе Windows 2000.
_ldap._tcp.<SiteName>.sites.de._msdcs.<DNSDomainName>— КЛИСНТ ИСПОЛЬзу- ет данную запись для обнаружения контроллера в указанных домене и сайте. Каждый контроллер домена регистрирует эту запись.
_ldap ._tcp.<SiteName>. sites .gc._msdcs . <DNSRootNaitie>— ЗЗПИСЬ позволяет клиенту находить сервер GC в пределах леса для заданного сайта. Только серверы GC регистрируют эту запись для своих сайтов.
gc._msdcs.<DNSRootName> — запись позволяет клиентом, не распознающим SRV записи, найти некоторый сервер GC в лесе.
_gc._tcp.<DNSRootNazne> — клиент использует запись для поиска сервера GC (не обязательно контроллера домена) в лесе. Эту запись регистрируют только серверы LDAP, являющиеся серверами GC.
_gc._tcp.<SiteName>._sites ,<DNSRootName> — ЗЗПИСЬ ИСПОЛЬЗуеТСЯ ДЛЯ ПОИС- ка сервера GC (необязательно контроллера домена) в пределах леса для указанного сайта.
_Ldap._tcp.<SiteName>._sites.<DNSRootName> — ЗЗПИСЬ СЛуЖИТ ДЛЯ ПОИСКЗ сервера LDAP (необязательно контроллера домена) в лесе. Каждый контроллер домена на базе Windows 2000 регистрирует эту запись.
_kerberos._tcp.<DNSDomanName> — клиент использует запись для поиска сервера (необязательно контроллера домена), на котором функционирует служба Kerberos Key Distribution Center (KDC, Центр дистрибуции ключей Kerberos) для заданного домена. Каждый контроллер домена на базе Windows 2000 регистрирует эту запись.
_kerberos._udp.<DNSDomanName> — запись аналогична предыдущей, только используется при обращении по протоколу UDP.
_kerberos._tcp.dc._msdcs.<DNSDomanNanie> — запись ИСПОЛЬЗуеТСЯ ДЛЯ поиска контроллера домена Windows 2000, на котором функционирует служба Kerberos KDC для указанного домена. Каждый контроллер домена на базе Windows 2000 регистрирует эту запись.
_kerberos._tcp.<SiteName>._sites.dc._msdcs.<DNSDomanNanie>— ЗЗПИСЬ предназначена для поиска контроллера домена на базе Windows 2000, на котором функционирует служба Kerberos KDC для заданных домена и сайта. Каждый контроллер домена на базе Windows 2000 регистрирует эту запись.
_kerberos._tcp.<SiteName>._sites.<DNSDomanNaine> — запись предназначена для поиска сервера (необязательно контроллера домена), на котором функ-
ционирует служба Kerberos KDC для заданных домена и сайта. Каждый контроллер домена на базе Windows 2000 регистрирует эту запись.
_kpasswd._tcp.<DNSDomanName> — КЛИеНТ ИСПОЛЬЗуеТ данную заПИСЬ ДЛЯ ПО- иска сервера (необязательно контроллера домена), на котором функционирует служба Kerberos Password Change (служба изменения паролей Kerberos) для указанного домена. Каждый контроллер домена на базе Windows 2000, поддерживающий службу Kerberos KDC, регистрирует эту запись.
_kpasswd._udp.<DNSDomanName> — запись аналогична предыдущей, только используется при обращении по протоколу UDP.
( Примечание )
Обратите внимание на то, что все записи для серверов глобального каталога содержат имя корневого домена леса.
Приведенный ниже диалог показывает, как проверить наличие на DNS- сервере записей, зарегистрированных серверами глобального каталога. (Вводимые команды показаны полужирным.)
С:\>nslookupDefault Server: Address: 192.168.0.4set type=SRV_gc._tcp.w2k.domServer: w2kdc4.w2k.dom Address: 192.168.0.4 _gc._tcp. w2k.dom priority weight port svr hostname_gc._tcp.w2 k.dom priority weight port svr hostnamew2kdc4.w2k.domС:\>nslookupDefault Server: Address: 192.168.0.4set type=SRV_gc._tcp.w2k.domServer: w2kdc4.w2k.dom Address: 192.168.0.4 _gc._tcp. w2k.dom priority weight port svr hostname_gc._tcp.w2 k.dom priority weight port svr hostnamew2kdc4.w2k.domw2kdc4.w2k.domw2kdc4.w2k.domSRV service location: = 0 = 100 = 3268= w2kdc4.w2k.domSRV service location: = 0 = 100 = 3268SRV service location: = 0 = 100 = 3268= w2kdc4.w2k.domSRV service location: = 0 = 100 = 3268w2kdc2.subdom.w2k.domw2kdc2.subdom.w2k.dom= w2kdc2.subdom.w2k.dom internet address = 192.168.0.4 internet address = 192.168.2.2= w2kdc2.subdom.w2k.dom internet address = 192.168.0.4 internet address = 192.168.2.2
С:\>nslookup
Default Server: Address: 192.168.0.4
set type=SRV
_gc._tcp.w2k.dom
Server: w2kdc4.w2k.dom Address: 192.168.0.4 _gc._tcp. w2k.dom priority weight port svr hostname
_gc._tcp.w2 k.dom priority weight port svr hostname
w2kdc4.w2k.dom
С:\>nslookup
Default Server: Address: 192.168.0.4
set type=SRV
_gc._tcp.w2k.dom
Server: w2kdc4.w2k.dom Address: 192.168.0.4 _gc._tcp. w2k.dom priority weight port svr hostname
_gc._tcp.w2 k.dom priority weight port svr hostname
w2kdc4.w2k.dom
w2kdc4.w2k.dom
w2kdc4.w2k.dom
SRV service location: = 0 = 100 = 3268
= w2kdc4.w2k.dom
SRV service location: = 0 = 100 = 3268
SRV service location: = 0 = 100 = 3268
= w2kdc4.w2k.dom
SRV service location: = 0 = 100 = 3268
w2kdc2.subdom.w2k.dom
w2kdc2.subdom.w2k.dom
= w2kdc2.subdom.w2k.dom internet address = 192.168.0.4 internet address = 192.168.2.2
= w2kdc2.subdom.w2k.dom internet address = 192.168.0.4 internet address = 192.168.2.2
Чтобы перерегистрировать SRV-записи на сервере DNS (при условии, что он поддерживает динамическое обновление записей), можно использовать следующие возможности:
Ввести команды ipconfig /registerdns И netdiag /fix.
Перезапустить службу Netlogon в окне оснастки Services (Службы).
Ввести команду net stop netlogon, затем — net start netlogon.
ГЛАВА 2
Конфигурирование доменов Windows 2000 и устранение неисправностей
Конечно, название этой главы охватывает множество проблем, которые и в десятке книг невозможно раскрыть полностью. В настоящей главе рассматриваются лишь некоторые аспекты данной темы, с которыми обязательно столкнется каждый системный администратор, и о которых нельзя забывать.
Назначение ролей FSMO
Каждый администратор, знакомясь с доменами Windows 2000, сначала узнает хорошую новость: все контроллеры домена на базе Windows 2000 Server являются равноправными, модификация данных каталога возможна на любом контроллере домена, после чего изменения реплицируются с этого контроллера на другие (выполняется так называемая multi-master replication — репликация с несколькими владельцами). Эти архитектурные решения позволяют преодолеть некоторые ограничения, имевшиеся в доменах Windows NT.
Через какое-то время администратор узнает "плохую" новость: при выполнении некоторых операций определенные контроллеры домена выполняют дополнительные функции по сравнению с остальными контроллерами, и вместо одной роли, которую выполнял контроллер домена на базе Windows NT — он мог быть либо Основным контроллером домена (Primary Domain Controller, PDC), либо Вспомогательным контроллером домена (Backup Domain Controller, BDC), — контроллер домена Windows 2000 может одновременно выполнять до пяти различных ролей. Эти роли называются гибкими операциями с одним владельцем (Flexible Single-Master Operation, FSMO). (Описание каждой роли легко найти в Справке. Откройте вкладку Index (Индекс) и введите ключевое слово fsmo.)
Ниже даются некоторые рекомендации по правильному выбору владельцев ролей FSMO.
□ Несмотря на то, что роль PDC Emulator в доменах Windows 2000 не столь важна по сравнению с PDC в доменах Windows NT, необходимо быть внимательным при назначении этой роли. Даже в доменах Windows 2000, работающих в основном режиме, владелец роли PDC Emulator отвечает за обновление паролей пользователей. Он по умолчанию выбирается оснастками Group Policy, и вы можете столкнуться с проблемами при редактировании групповых политик, если PDC Emulator недоступен. Все контроллеры в домене синхронизируют системное время с PDC Emulator. В лесе, состоящем из множества доменов, владельцы роли PDC Emulator в каждом домене синхронизируют время с владельцем этой роли, расположенном в корневом домене леса. PDC Emulator корневого домена леса должен синхронизироваться со внешнем сервером времени.
□ Если в домене имеется несколько контроллеров, владельцем инфраструктуры (Infrastructure Master) и сервером глобального каталога не должен быть один и тот же контроллер; в то же время для уменьшения сетевого трафика они должны быть соединены скоростным каналом. (Это требование можно игнорировать, если в домене только один контроллер или если каждый контроллер домена является сервером GC.) Рекомендуется в каждом сайте иметь хотя бы один сервер GC. Однако в общем случае не рекомендуется делать все контроллеры домена серверами GC, т. к. в этом случае возрастет сетевой трафик.
Назначайте владельцем схемы (Schema Master) и владельцем доменных имен (Domain Naming Master) один контроллер домена и делайте этот контроллер сервером GC. Это гарантирует, что имена в лесе будут уникальными.
□ По умолчанию самый первый контроллер корневого домена леса становится владельцем всех ролей FSMO. Если вы удаляете Active Directory с этого контроллера домена, все роли автоматически передаются другому доступному контроллеру. Если процесс понижения роли сервера (demotion) завершается аварийно, необходимо вручную захватить (seize) роли владельцев операций. (См. описание утилиты NTDSutil в главе 7 "Диагностика и обслуживание Active Directory"?) Однако, если удаляемый контроллер домена является сервером GC, необходимо проверить наличие других серверов GC в лесе и при необходимости вручную назначить новый сервер GC.
Режимы работы доменов
Говоря о режимах работы доменов —- смешанном (mixed) или основном (native), нужно помнить о следующем:
Невозможно переключить домен из основного режима в смешанный без переустановки Active Directory в этом домене.
Необязательно, чтобы все домены в дереве работали в одном режиме.
Основной режим не влияет на работу клиентов нижнего уровня, таких как Windows 9х/МЕ или Windows NT. Этот постулат справедлив и по отношению к доверительным отношениям с доменами Windows NT 4.0. (Однако следует помнить, что доверительные отношения с доменами Windows NT 4.0 всегда явные, однонаправленные и нетранзитивные.)
Вопросы репликации
Служба Active Directory представляет собой распределенную сетевую базу данных, поэтому синхронизация копий (replicas), хранящихся на различных контроллерах доменов, является жизненно важным вопросом для работы всей службы. Репликация является для администратора одним из основных источников проблем; поэтому я решил обратить внимание на некоторые вопросы репликации.
Репликация между сайтами и внутри их
Концепция сайта, впервые появившаяся в доменах Windows 2000, в значительной степени влияет как на способы репликации разделов каталога внутри сайта и между сайтами, так и на транспортные протоколы репликации.
Транспортные протоколы репликации
В следующей таблице перечислены правила использования различных транспортных протоколов для репликации разных разделов:
Разделы каталога
Внутри сайта
Между сайтами
Один домен
Разные домены
Контекст доменных имен (Domain Naming context)
RPC over IP
"IP" (RPC over IP)
Configuration Schema Global Catalog
RPC over IP
“IP" (RPC over IP)
"IP" (RPC over IP) или SMTP over IP
He сжимается
Сжимается
Протокол "RPC over IP" обеспечивает высокоскоростную, синхронную репликацию. Протокол "IP" (как принято в интерфейсе оснастки Active Directory Sites and Services (Сайты и службы Active Directory)) обеспечивает низ-
коскоростную, двуточечную, синхронную репликацию всех разделов каталога. Протокол "SMTP over IP" используется для низкоскоростной, асинхронной репликации между сайтами и поддерживает репликацию только для разделов Configuration и Schema, а также для Глобального каталога.
Периоды нормальной репликации
В лесе доменов Windows 2000 существуют два стандартных способа репликации изменений объектов:
Уведомление об изменениях (change notification) используются между контроллерами домена внутри сайта. Если на некотором контроллере модифицируется атрибут какого-нибудь объекта, данный контроллер посылает уведомление первому партнеру по репликации, и это происходит через определенное время (по умолчанию, 5 минут). После этого партнер запрашивает и изменения у контроллера-источника изменений (originating DC) и получает их. Интервал, заданный по умолчанию (300 секунд) можно изменить, модифицируя параметр Replicator notify pause after modify (secs) раздела реестра HKLM\SYSTEM\CurrentControlSet\Services \NTDS\Parameters. Контроллер-источник извещает следующего партнера по репликации через промежуток времени, определяемый в реестре параметра Replicator notify pause between DSAs (secs).
Изменения реплицируются между сайтами согласно расписанию (schedule) (конфигурируется для цепи сайтов и для соединений). Между сайтами также можно настроить уведомления об изменениях. (Хотя Microsoft обычно не рекомендует этого делать.) Выберите узел Sites | Inter-Sites Transports | IP в окне оснастки Active Directory Sites and Services, откройте окно Properties (Свойства) и установите флажок Ignore schedules (Игнорировать расписания) на вкладке General (Общие).
Срочная репликация
Некоторые события на контроллерах домена реплицируются не через заданное время, а немедленно. Это называется срочной репликацией (urgent replication). Ниже перечислены события, которые инициируют срочную репликацию между контроллерами домена на базе Windows 2000 внутри сайта.
Блокировка учетной записи после нескольких неудачных попыток регистрации в системе.
Изменение секретов Локальным администратором безопасности (Local Security Authority, LSA).
Переназначение роли RID Master FSMO.
(Если между сайтами настроены уведомления об изменениях, срочная репликация может распространяться на другие сайты.)
Следующие события не инициируют срочную репликацию в доменах Windows 2000:
Изменение политики блокировки учетной записи (Account Lockout Policy).
Изменение доменной политики паролей (Password Policy).
Изменение пароля учетной записи компьютера.
Изменение паролей междоменных доверительных отношений.
Если пользователь меняет свой пароль на некотором контроллере домена, этот контроллер немедленно реплицирует изменения на PDC Emulator. Затем измененный пароль нормальным образом реплицируется на другие контроллеры домена, входящие в тот же сайт. Если пользователь снова аутентифицируется каким-нибудь контроллером домена, еще не получившим обновленный пароль, этот контроллер обращается PDC Emulator для проверки сведений о пользователе.
Репликация объектов групповой политики (GPO)
Объекты групповой политики (Group Policy Object, GPO) состоят из двух частей. Одна часть располагается в Active Directory (так называемая DS part), а другая — на жестком диске на томе SYSVOL ) Sysvol part). Поэтому объекты GPO реплицируются двумя способами: при помощи нормальной репликации разделов Active Directory и Службой репликации файлов (File Replication Service, FRS). Эти типы репликации можно инициировать только независимо друг от друга. Вот почему необходимо следить за целостностью объектов GPO. Для этой цели можно использовать такие средства, как Active Directory Replication Monitor (ReplMon.exe) или GPOTool.exe, которые отображают обе части — DS version и Sysvol version — для каждого объекта GPO.
Мониторинг репликации
События репликации можно отслеживать как в тестовой, так и в рабочей среде. (Различие может быть лишь в степени детализации регистрируемых событий.) Для выполнения этой задачи следует использовать журналы событий и счетчики производительности.
Регистрация событий репликации
Журнал Directory Service можно использовать для мониторинга следующих событий: моментов выполнения запросов на репликацию, числа, общего размера и имен реплицированных атрибутов и т. д. Число регистрируемых событий задается в системном реестре (см. ниже).
Установите значение параметра Replication Events в разделе HKLM\SYSTEM \CurrentControlSet\Services\NTDS\Diagnostics равным 3 или 4 (различие между этими значениями рассматривается ниже). Вы сможете увидеть все запросы на репликацию, последовательность репликации разделов каталога и результат этих запросов. (В следующих примерах используются два контроллера одного домена — W2KDC3 и W2KDC4.) После того, как успешно закончится репликация каждого раздела каталога, два следующих события (помимо всех остальных) записываются в журнал (W2KDC4 запрашивает изменения у W2KDC3):
Event Type: Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1060
User:Everyone
Computer:W2KDC4
Description:
Internal event: The directory replication agent (DRA) call completed successfully.
Event Type:Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1488
User:W2KDOM\administrator
Computer:W2KDC4.
Description:
Internal event: The Directory Service completed the sync request with status code 0.
Реплицируемые данные регистрируются в виде событий, аналогичных показанным ниже (W2KDC3 запрашивает у W2KDC4 исходящие изменения):
Event Type:Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1073
User:W2KDOM\W2KDC3?
Computer:W2KDC4
Description:
Internal event: The directory replication agent (DRA) got changes returning 2 objects, 2448 bytes total and entries up to update sequence number (USN) 100225, with extended return 0.
Event Type:Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1490
User:W2KDOM\W2KDC3$
Computer:W2KDC4
Description:
Internal event: The Directory Service finished gathering outbound changes with the following results:
Object Update USN: 100225
Attribute Filter USN: 100225
Object Count: 2
Byte Count: 2448
Extended Operation Result: 0
Status: 0
Для регистрации событий репликации достаточно установить уровень 3. Уровень 4 позволяет отслеживать репликацию каждого измененного атрибута. (Используйте этот уровень только для отладки! Если реплицируется множество объектов, число событий в журнале Directory Service будет огромным. При этом производительность контроллера домена заметно снизится.) Все реплицированные данные можно легко найти по идентификатору Event ID. Сообщение (ID 1239), аналогичное показанному ниже, записывается в журнал для всех не менявшихся атрибутов реплицируемых объектов (фактически эти атрибуты не реплицируются!):
Event Type: Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1239
User:W2KDOM\W2KDC3$
Computer:W2KDC4
Description:
Property 20002 (whenCreated) of object CN=John
Smith,OU=Staff,DC=w2k,DC=dom (GUID 3b2653cf-76e6-4d35-abf5-ec4c78fad8ee) is not being sent to DSA a9d28d8e-e681-449f-blbe-38dadf6f4c06 because its up-to-date vector implies the change is redundant.
Если некоторый атрибут изменялся, он копируется на другой контроллер домена, и в журнале появляется событие с ID 1240:
Event Type:Information
Event Source: NTDS Replication
Event Category:Replication
Event ID:1240
User:W2KDOM\W2KDC3$
Computer:W2KDC4
Description:
Property d (description) of object CN=John Smith, OU=Staff, DC=w2k, DOdom (GUID 3b2653cf-76e6-4d35-abf5-ec4c78fad8ee) is being sent to DSA a9d28d8e-e681-449f-blbe-38dadf6f4c06.
Можно установить фильтр на события с ID 1240 и быстро определить, какие объекты реплицировались и какие атрибуты при этом были изменены.
Использование счетчиков производительности
Счетчики производительности (performance counters) очень удобны для мониторинга репликации, в особенности для определения объекта реплицированной информации. Чтобы начать мониторинг, запустите оснастку Performance (Производительность), находящуюся в группе Administrative Tools (Администрирование). Выберите System Monitor (Системный монитор) и нажмите кнопку Add (Добавить) на панели инструментов. Выберите объект NTDS в списке Performance object (Объект) и добавьте счетчики, показанные на рис. 2.1. (Удобнее пользоваться режимом Report View (Отчет).) Первоначально, после запуска контроллера домена все счетчики имеют нулевые значения. (Объект NTDS имеет множество счетчиков, я выбрал лишь некоторые из тех, которые относятся к репликации.)
Actional. uVi^i^iyS^awDriieilt^Actional. uVi^i^iyS^awDriieilt^\\W2KDC4NTDS\\W2KDC4NTDSDRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Inbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Inbound Bytes Not Compressed (Within Site) Since BootDRA Inbound Bytes Total Since BootDRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Outbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Outbound Bytes Not Compressed (Within Site) Since BootDRA Outbound Bytes Total Since BootDRA Pending Replication SynchronizationsDRA Sync Failures on Schema MismatchDRA Sync Requests MadeDRA Sync Requests SuccessfulDRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Inbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Inbound Bytes Not Compressed (Within Site) Since BootDRA Inbound Bytes Total Since BootDRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Outbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Outbound Bytes Not Compressed (Within Site) Since BootDRA Outbound Bytes Total Since BootDRA Pending Replication SynchronizationsDRA Sync Failures on Schema MismatchDRA Sync Requests MadeDRA Sync Requests Successful"240000tJCr ^864672,000, ' 385464,000 625464.000^59032ЖГ -3406392.0010- 5076392.000 5335424.000"240000tJCr ^864672,000, ' 385464,000 625464.000^59032ЖГ -3406392.0010- 5076392.000 5335424.000Ij^ Performance
Actional. uVi^i^iyS^awDriieilt^
Actional. uVi^i^iyS^awDriieilt^
\\W2KDC4
NTDS
\\W2KDC4
NTDS
DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Inbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Inbound Bytes Not Compressed (Within Site) Since Boot
DRA Inbound Bytes Total Since Boot
DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Outbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Outbound Bytes Not Compressed (Within Site) Since Boot
DRA Outbound Bytes Total Since Boot
DRA Pending Replication Synchronizations
DRA Sync Failures on Schema Mismatch
DRA Sync Requests Made
DRA Sync Requests Successful
DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Inbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Inbound Bytes Not Compressed (Within Site) Since Boot
DRA Inbound Bytes Total Since Boot
DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot DRA Outbound Bytes Compressed (Between Sites, Before Compression) Since Boot DRA Outbound Bytes Not Compressed (Within Site) Since Boot
DRA Outbound Bytes Total Since Boot
DRA Pending Replication Synchronizations
DRA Sync Failures on Schema Mismatch
DRA Sync Requests Made
DRA Sync Requests Successful
"240000tJCr ^864672,000, ' 385464,000 625464.000
^59032ЖГ -3406392.0010- 5076392.000 5335424.000
"240000tJCr ^864672,000, ' 385464,000 625464.000
^59032ЖГ -3406392.0010- 5076392.000 5335424.000
0,000 248.000 201.000
Рис. 2.1. Некоторые счетчики, важные для мониторинга репликации
( Примечание )
Как видно на рис. 2.1, сжатие входного трафика репликации может достигать отношения 13 к 1; для выходного трафика достигнуто значение 20:1. Если размер блока реплицируемой информации не достигает определенного порога (меньше 32 Кбайт), сжатие трафика между сайтами не выполняется.
Можно создать пользовательскую консоль ММС, содержащую копию системного монитора для каждого выбранного контроллера домена. Запустите консоль ММС, выберите ActiveX Control (Элемент ActiveX) в окне Add Standalone Snap-in (Добавить автономную оснастку) и добавьте System Monitor Control из списка Control type (Тип элемента). Повторите эту процедуру столько раз, сколько выбрано контроллеров домена. Затем выберите счетчики с каждого контроллера и добавьте к соответствующим элементам ActiveX.
Значение DRA Sync Requests Successful в нормальном случае должно быть равным значению DRA Sync Request Made. Эти значения могут различаться на контроллере домена, который был запущен самым первым — в то время, когда его партнеры по репликации могли еще находиться в нерабочем состоянии. Запомните значения в тот момент, когда все контроллеры в сети будут запущены и репликация полностью закончится. Начиная с этого момента, разность между данными значениями должна быть постоянной.
Счетчик DRA Pending Synchronizations показывает число еще не выполненных запросов на репликацию (при этом запрос может быть и успешным, и неудачным).
Счетчик DRA Inbound/Outbound Bytes Not Compressed (Within Site) Since Boot отслеживает репликацию внутри сайта и между сайтами, если трафик репликации не сжимался (т. е. размер блока реплицируемых данных не превышал 32 Кбайт).
Поиск неисправностей
Невозможно ответить на все вопросы, касающиеся поиска неисправностей в Active Directory. (Эту задачу довольно успешно пытается выполнять Microsoft Knowledge Base) Я хотел бы предложить в этом разделе несколько довольно простых на первый взгляд советов, которые, тем не менее, могут оказаться весьма полезными в различных реальных ситуациях. (Пусть краткость этих советов не смущает вас: их важность можно оценить только на практике.)
Регистрация диагностических событий
Раздел реестра HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics содержит 19 диагностических параметров, представляющих события, которые служба Active Directory может регистрировать в журнале Directory
Service. Каждый параметр может иметь значение типа REGDWORD в диапазоне от 0 до 5; это значение соответствует уровню регистрируемых событий. Если задан уровень 0, фиксируются только критически важные события. Это нормальное значение для большинства параметров. Отладочный уровень 5 нужно использовать с осторожностью, т. к. в этом случае регистрируются все события, что требуется лишь при диагностировании специфических проблем. Если возникает некоторая проблема, относящаяся к Active Directory, попробуйте немного увеличить значение соответствующего параметра реестра и воспроизведите ситуацию. Когда проблема будет устранена, не забудьте восстановить значение по умолчанию.
Нет строгих правил по выбору значений диагностических параметров. Значения следует определять экспериментально. Выше рассматривалось использование параметра Replication Events. Если, к примеру, вы установите значение параметра Garbage Collection равным 3, то сможете увидеть моменты запуска и завершения процесса "сбора мусора" (garbage collection, процесс полной очистки каталога от удаленных объектов), а также следить за объемом свободного пространства в файле базы данных каталога. Если установлено значение, равное 5, регистрируется удаление каждого объекта.
Внутренние ошибки при репликации
Существует тип ошибок репликации, при которых некоторый объект "мешает" успешному выполнению запроса на репликацию. (Не забывайте о том, что такой объект нельзя просто удалить, т. к. удаленные объекты также реплицируются.) В статье Q265090 из Microsoft Knowledge Base описывается процесс устранения подобных ошибок, которые могут возникнуть на этапе репликации каталога при создании нового контроллера домена. Аналогичное решение может также применяться для устранения других внутренних ошибок, связанных с репликацией. Вам следует удалить "мешающийся" объект, до минимума уменьшить время жизни удаленных объектов (tombstone lifetime) и дождаться, пока в результате сборки мусора этот объект не будет окончательно удален. Такая процедура несколько раз спасала мою доменную структуру, когда другие решения не давали никакого результата.
Проверка состояния контроллера домена на базе Windows 2000
Сервер на базе Windows 2000 может выступать в качестве контроллера домена (если он "повышен" до этой роли), а контроллер домена на базе Windows 2000 может выполнять функцию сервера глобального каталога (GC). Довольно часто возникает необходимость убедиться в том, процесс перехода сервера в новое качество успешно завершен. Если, например, служба реп-
ет системный том, в результате чего служба Netlogon не может сделать общим том SYSVOL volume. (Том NETLOGON также не становится общим.) Это приводит к возникновению проблем с выполнением групповых политик, а также многих других проблем, в частности, с репликацией и аутентификацией. Вот еще одна ситуация. По умолчанию момент появления у контроллера домена функций сервера GC задерживается на 5 минут. Однако из-за репликации процесс повышения роли может длиться значительно дольше. При возникновении неисправностей в Active Directory, перед тем, как выявлять проблемы, связанные со связью между контроллерами домена, аутентификацией и т. д., вы в обоих случаях должны убедиться в том, что серверы Windows 2000 действительно являются контроллерами домена или серверами глобального каталога.
Объявление сервера контроллером домена
Есть несколько способов, позволяющих убедиться в том, что некоторый сервер на базе Windows 2000 является контроллером домена после операции повышения роли сервера (promotion) или после обычной загрузки:
□ Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services должен содержать подраздел NTDS.
□ Введите в командной строке net accounts. Роль ("Computer role") контроллера домена — "PRIMARY", а рядовые серверы идентифицируются как "SERVERS".
□ Введите в командной строке net start. В списке запущенных сервисов должна присутствовать служба Kerberos Key Distribution Center.
□ Введите в командной строке nbtstat -п. Имя домена, имеющее тип <1С>, должно быть зарегистрировано ("Registered").
□ Введите в командной строке net share. На сервере должны присутствовать общие тома SYSVOL (%5ys/e/n7?oo/%\SYSVOL\sysvol) и NETLOGON (%5ystem7?oo/%\SYSVOL\sysvol\<DomainDNSName>\SCRIPTS).
□ С помощью утилиты Ldp.exe проверьте значение атрибута is Synchronized объекта RootDSE. (Дополнительная информация содержится в предыдущей главе и в главе 9 "Манипулирование объектами Active Directory")) По окончании процесса повышения роли сервера система должна полностью синхронизировать все разделы каталога. Когда синхронизация закончена, атрибут isSynchronized принимает значение TRUE.
Используйте утилиту NLtest.exe. (Подробнее она описана в главе 8 "Сетевые и распределенные службы".-)
С помощью утилиты NTDSutil.exe подключитесь к нужному контроллеру домена и проверьте, как он отвечает на запросы LDAP. (Подробнее эта процедура описана в главе 7 "Диагностика и обслуживание Active Direc-
tory".) Эта утилита позволяет также проверить, знает ли выбранный контроллер о расположении ролей FSMO в своем домене.
Объявление контроллера домена
сервером глобального каталога
Назначение контроллера домена сервером глобального каталога (например, при помощи оснастки Active Directory Sites and Services) и объявление этого контроллера сервером GC — ни одно и то же. Контроллер домена может объявить себя сервером GC только после того, как информация обо всех доменных разделах (контекстах доменных имен), существующих в лесе на данный момент, будет скопирована на этот контроллер.
Следующие способы позволяют проверить, объявил ли себя некоторый контроллер домена сервером глобального каталога:
Когда контроллер домена назначается сервером GC, событие, имеющее ID 1110 (Event Source: ntds General; Event Category: Replication), регистрируется в журнале Directory Service, который можно просматривать с помощью оснастки Event Viewer (Просмотр событий). После того как сервер GC объявлен, регистрируется событие ID 1119: "This Windows Domain Controller is now a Global Catalog Server" (Данный контроллер домена теперь является сервером глобального каталога).
Значение параметра реестра Global Catalog Promotion Complete, расположенного в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\NTDS\Parameters, должно быть равно 1.
С помощью утилиты Ldp.exe проверьте значение атрибута isGlobalCatalogReady объекта RootDSE. (Дополнительная информация содержится в предыдущей главе и в главе 9.)
Используйте утилиту NLtest.exe. (См. описание в главе 5.)
ГЛАВА 3
Развертывание Active Directory
Администратор, только начинающий работать с Active Directory, должен запомнить два важных постулата:
Термины "создание контроллера домена", "установка Active Directory" и "повышение роли сервера" (promotion) в некотором смысле являются синонимами, поскольку описывают один и тот же процесс. Нельзя установить службу Active Directory, не создавая контроллера домена, и наоборот.
Служба Active Directory или домены Windows 2000 не функционируют без DNS. Служба DNS является одной из ключевых для развертывания доменов Windows 2000, и вы обязаны использовать ее в любой доменной структуре на базе Active Directory. Помимо Microsoft Windows 2000 DNS Server можно использовать другие серверы DNS, если эти серверы отвечают определенным требованиям. Для работы с Active Directory необязательно быть специалистом по DNS, однако нужно иметь представление об основах службы DNS и механизмах ее взаимодействия с Active Directory.
Каждый системный администратор всегда должен помнить о том, что служба DNS является "сердцем" доменов Windows 2000, и многие неисправности, очень разные по своим внешним проявлениям, могут возникать из-за неправильно сконфигурированной или неисправной службы DNS. Вот почему поиск практически любой неисправности в доменах Windows 2000 должен начинаться с проверки конфигурации DNS. Вот почему эта глава начинается с описания Windows 2000 DNS Server.
В настоящей главе подробно рассматриваются не все типовые операции; описываются лишь наиболее важные вопросы.
( Примечание j
Службы разрешения имен, такие как DNS и WINS, представляют собой большую и сложную тему. Имеется немало хороших книг по TCP/IP, DNS и Windows
2000 DNS Server, в частности. Вы можете найти в них подробное описание службы DNS в целом и ее реализации в системе Windows 2000.
Windows 2000 DNS Server
Этот раздел посвящен различным вопросам, связанным с установкой Windows 2000 DNS Server. Служба DNS является обязательно для Active Directory, и вы должны быть знакомы с требованиями, предъявляемыми к ней в доменах Windows 2000 (см. предыдущую главу). Вы можете пропустить этот раздел, если служба DNS уже развернута в вашей сети и сконфигурирована согласно этим требованиям.
Будьте внимательны! Вы можете повысить роль сервера (т. е. установить Active Directory и создать домен), совсем не указав в настройках адресов серверов DNS. Однако это не гарантирует, что домен будет функционировать правильно, скорее наоборот. Тем не менее, в некоторых случаях (в качестве предварительных шагов по развертыванию доменов) такой подход может быть оправдан, если вы хорошо понимаете тонкости настройки службы DNS и характер ее взаимодействия с Active Directory.
Например, вы можете сначала повысить роль сервера, а затем подготовить сервер DNS к динамическому обновлению соответствующих зон. Укажите IP-адрес сервера DNS в настройках TCP/IP созданного контроллера домена и перезагрузите его (или перезапустите службу Netlogon и выполните команду ipconfig /registerdns). В результате вы получите полностью работающую конфигурацию! Аналогичная процедура используется, когда вы меняете авторитетный (authoritative) DNS-сервер домена и хотите перерегистрировать все нужные записи DNS.
Предварительные условия
Сервер, на котором функционирует служба DNS, должен иметь статический IP-адрес. Нельзя использовать адрес, назначаемый сервером DHCP.
Перед тем как устанавливать службу DNS, определите для сервера основной суффикс DNS (см. ниже раздел "Установка суффикса DNS").
Существует три типа серверов Windows 2000 DNS:
Кэширующий (caching). Автономный, как правило, сервер DNS, который после установки не поддерживает авторитетных зон и, следовательно, может только кэшировать запросы клиентов.
Основной (primary). Сервер, который поддерживает обновляемую, авторитетную зону (или несколько зон) для некоторого домена (или нескольких доменов, если зон несколько). Ресурсные записи с этого сервера могут копироваться на вторичные серверы.
□ Вторичный (secondary). Сервер, хранящий доступную для чтения (readonly) копию зоны, копируемой с некоторого основного (авторитетного) сервера. (Зон может быть несколько.) Если же и основной, и вторичный серверы DNS поддерживают интегрированные зоны (Active Directory- integrated zones), которые реплицируются только в пределах одного домена, эти серверы можно рассматривать как равноправные, и обновления могут выполняться на любом сервере. Для интегрированных зон требуется сервер DNS, работающий на контроллере домена под управлением Windows 2000.
Внимание!
Интегрированная зона хранится в контексте доменных имен (см. узел System | MicrosoftDNS оснастки Active Directory Users and Computers (Пользователи и компьютеры Active Directory), который реплицируется только между контроллерами соответствующего домена. Даже если создать зону с таким же именем в другом домене (т. е. на сервере DNS, работающем на контроллере другого домена), получатся две различных зоны, что создаст путаницу в структуре имен DNS. Если два сервера DNS принадлежат к разным доменам, один сервер должен быть основным, а другой — вторичным (т. е. зоны не должны быть интегрированными).
Установка Windows 2000 DNS Server
Для установки и запуска службы DNS на базе Windows 2000 Server используйте мастер компонентов (Windows Component Wizard), запускаемый утилитой Add/Remove Programs (Установка и удаление программ) из Панели управления. Выберите пункт Network Services (Сетевые службы) и нажмите кнопку Details (Состав). Установите флажок Domain Name System (DNS), нажмите кнопки ОК и Next (Далее). После того как будут скопированы системные файлы (при этом система может затребовать инсталляционный диск) и служба будет запущена, в группе Administrative Tools (Администрирование) появится новая оснастка — DNS. Теперь служба DNS установлена на компьютере, и ее нужно конфигурировать. Поначалу вновь установленный сервер DNS работает как кэширующий сервер, и не поддерживает авторитетных зон. Для того чтобы убедиться в том, что служба успешно стартовала, проверьте журнал событий DNS Server в окне оснастки Event Viewer (Просмотр событий).
Для конфигурирования Windows 2000 DNS Server укажите команду DNS в меню Administrative Tools. Запускаемая оснастка DNS содержит удобный мастер, который поможет вам создать зоны и ресурсные записи.
Когда Active Directory и служба DNS устанавливаются на сервере одновременно (на первом контроллере домена в сети), мастер установки Active Directory (Active Directory Installation Wizard) автоматически создает на сер-
вере DNS авторитетную зону для указанного домена (леса). Если сервер DNS уже имелся в сети, необходимо вручную создать зону для нового леса и разрешить динамическое обновление этой зоны. Когда в существующем лесе создается дочерний домен, используется зона корневого домена леса и мастер автоматически создает субдомен DNS для дочернего домена. Однако если к лесу добавляется новое дерево, необходимо вручную создать авторитетную зону для нового пространства имен DNS. То есть вам всегда нужно самим создавать авторитетную зону для каждого нового доменного дерева, за исключением случая одновременной установки Active Directory и службы DNS на одном сервере.
Установка сервера DNS и контроллера домена на одном сервере
По умолчанию авторитетная зона прямого просмотра для домена и корневая зона (".") конфигурируются при создании как интегрированные с возможностью безопасных обновлений (Only secure updates). Это означает, что только авторизованные пользователи могут обновлять записи. В некоторых случаях целесообразно разрешить обычное обновление (опция Yes в списке Allow dynamic updates? (Динамическое обновление)).
Безопасные обновления возможны только для интегрированных зон. Когда некоторая зона превращается в интегрируемую, соответствующий файл зоны перемещается из папки %Yys/em7?oo/%\system32\dns во вложенную папку backup. В это же время в Active Directory создаются новые объекты (типа dnsZone и dnsNode) для этой зоны и помещаются в контейнер System /MicrosoftDNS, находящийся в разделе доменных имен. (Операция преобразования обычной зоны в интегрированную — как и обратное преобразование —• может выполняться в любой момент, причем неоднократно.)
^■"^'№ Внимание!
Утилита DCpromo не создает на сервере DNS зон обратного просмотра (reverse zones). Поэтому для того чтобы сервер DNS был полностью сконфигурированным, нужно: вручную создать соответствующую зону обратного просмотра (поскольку она используется многими утилитами и приложениями), разрешить ее динамическое обновление и перерегистрировать адрес контроллера с помощью команды ipconfig /registerdns.
Создаваемая по умолчанию зона "." делает сервер DNS корневым сервером (root server), в результате чего запросы клиентов не могут перенаправляться (forward) во внешнее пространство адресов DNS, т. е. в Интернет. Чтобы разрешить перенаправление, достаточно просто удалить зону ".". По умолчанию IP-адрес сервера DNS указывается на вкладке Root Hints (Корневые ссылки) в окне свойств сервера (Properties). Если вы удаляете зону ".", удалите также имя сервера с этой вкладки.
Вторичный сервер с интегрированными зонами
Для увеличения отказоустойчивости сети вы можете установить на каком- нибудь контроллере домена дополнительный (резервный) сервер DNS. Эта задача очень проста, если зоны DNS являются интегрированными. Это означает, что каждый контроллер в домене хранит всю информацию об именах DNS (вспомните про репликацию!). При установке новый сервер DNS автоматически загружает зону (зоны) из Active Directory. После этого необходимо лишь указать IP-адрес этого сервера в поле Alternative DNS server (Альтернативный DNS-сервер) в окне свойств TCP/IP Properties на каждом клиенте домена.
Проверка конфигурации DNS
После того как служба DNS была установлена на Windows 2000 Server, или если сервер Windows 2000 DNS уже функционировал в сети, можно (и, даже, нужно) проверить конфигурацию DNS. Недостаточно того, что вы считаете, что все параметры DNS заданы правильно; необходимо, чтобы это подтвердили система и программные тесты.
Необходимо проверить, что сервер DNS поддерживает нужные зоны прямого и обратного просмотра и что эти зоны можно динамически обновлять. Для этих целей удобно использовать универсальную утилиту командной строки DNSCmd.exe, которая включена в пакет Support Tools. Утилиту можно запускать на любом компьютере, который имеет доступ к проверяемому серверу, где функционирует служба DNS. Эта утилита может выполнять все операции, необходимые для удаленного управления сервером Windows 2000 DNS Server.
Примечание
Использование специализированных утилит, таких как DCdiag.exe и NetDiag.exe, которые также проверяют конфигурацию DNS, рассматривается ниже в разделах "Создание контроллера домена" и "Добавление членов домена".
Для проверки зоны используется команда /enumzones. Пример выполнения этой команды приводится ниже (показана самая простая конфигурация с двумя зонами):
C:\>dnscmd w2kdc2.w2k.dom /EnumZones
Enumerated zone list:
Zone Count = 6.
0
file
Up=0
0.168.192.in-addr.arpa
1
file Rev
Up=l
0.in-addr.arpa
1
file Rev
Auto Up=0
127.in-addr.arpa
1
file Rev
Auto Up=0
255.in-addr.arpa
1
file Rev
Auto Up=0
w2k.dom
1
file
Up=l
Command completed successfully.
В приведенном примере w2kdc2 — имя компьютера под управлением Windows 2000 Server, зона "." соответствует кэшированным запросам, w2k.dom — имя зоны и DNS-имя будущего домена, a O.i68.i92.in-addr.arpa — зона обратного просмотра для частной сети 192.168.0.0 (маска 255.255.255.0; имена, адрес и маска зависят от конфигурации вашей сети). Зоны, отмеченные как Auto, создаются автоматически. Чтобы увидеть их в окне оснастки DNS, выберите режим Advanced (Расширенный) в меню View (Просмотр).
Параметр ир=1 указывает на то, что зона может динамически обновляться. Это свойство зон можно также проверить с помощью показанной ниже команды (на примере зоны w2k.dom). (Будьте внимательны: в именах свойства AiiowUpdate и других свойств зоны различаются строчные и прописные буквы!):
C:\>dnscmd w2kdc2.w2k.dom /Zoneinfo w2k.dom AiiowUpdate
Zone query result:
Dword: 1 (00000001)
Command completed successfully.
Значение 1 указывает на то, что зона может динамически обновляться.
Кроме того, необходимо проверить способность сервера DNS обрабатывать запросы. Рекомендуется выполнять такую проверку перед процедурой создания любого контроллера домена: это позволит избежать серьезных проблем с доменами в будущем. Используется следующая команда (введите ее на проверяемом компьютере — клиенте или сервере — создаваемом контроллере домена):
C:\>nslookup 192.168.0.2
192.168.0.2 — IP-адрес сервера DNS, который указан в свойствах протокола TCP/IP на проверяемом компьютере. Примерный результат выполнения команды показан ниже:
Server: w2kdc2.w2k.dom
Address: 192.168.0.2
Name:w2kdc2.w2k.dom
Address: 192.168.0.2
Здесь строка server содержит имя сервера DNS, а строка Name показывает имя, полученное в результате разрешения, заданного в команде IP-адреса. В приведенном примере эти имена совпадают (поскольку мы запросили у сервера DNS его собственное имя), однако можно проверить разрешение любых IP-адресов, для которых на сервере DNS зарегистрированы соответствующие имена. Нужно также проверить, как DNS-имена компьютеров разрешаются в IP-адреса.
Если полученный результат будет другим или появятся сообщения об ошибках, подобные "Can't find server name for address..." (He найдено имя сервера
по адресу...) или "Default servers are not available" (Сервер по умолчанию недоступен), необходимо проверить все настройки протокола TCP/IP, наличие связи и зон прямого и обратного просмотра. Если, например, в ответе сервера DNS содержатся приведенные выше сообщения, сервер может функционировать нормально, однако зона обратного просмотра может отсутствовать или быть поврежденной.
После того как создан некоторый контроллер домена (в особенности это касается первого контроллера в лесе), обязательно проверьте регистрацию всех необходимых SRV-записей (см. главу 7 "Концепции Active Directory и терминология"). SRV-записи можно проверить и с помощью утилиты DNSCmd.exe; пример команды показан ниже:
C:\>dnscmd w2kdc2.w2k.dom /EnuinRecords w2k.dom _tcp.pdc._msdcs 4> /Type SRV
Returned records:’
_ldap 600 SRV 0 100 389 w2kdc4.w2k.dom.
Command completed successfully.
Вы видите пример SRV-записи, зарегистрированной владельцем роли PDC Emulator.
Выполнение описанных выше процедур позволит избежать ошибок при работе домена. Не пренебрегайте проверкой DNS. "Сэкономив" 15—20 минут, вы можете впоследствии потратить часы на решение возникающих проблем, например, "почему сеть работает так медленно?" или "почему новый контроллер домена не может реплицировать данные?"
Настройка Windows 2000 DNS
при работе с существующей службой DNS
Если домен Windows 2000 разворачивается в уже существующей сети, где используется служба DNS, могут возникнуть проблемы совместимости в том случае, когда "старая" (legacy, унаследованная) служба DNS не поддерживает возможности, реализованные в Windows 2000 DNS. Такая ситуация встречается довольно часто, и возможен компромисс для ее разрешения. Далее прилагательное "старый" будет использоваться для любых серверов DNS, которые или не поддерживают динамическое обновление записей, или не поддерживают SRV-записи (например, такими серверами могут быть Windows NT 4.0 DNS Server без пакетов обновления или некоторые серверы на базе UNIX).
Проблема легко диагностируется при просмотре системного журнала (System Log) после создания первого контроллера домена. (Обязательно просматривайте все журналы событий на каждом новом контроллере домена!) После загрузки контроллера домена в системном журнале может появиться предупреждение (ID 5773), генерируемое службой Netlogon:
The DNS server for this DC does not support dynamic DNS. Add the DNS records from the file '%SystemRoot%\System32\Config\netlogon.dns' to the DNS server serving the domain referenced in that file.
(Сервер DNS для этого контроллера домена не поддерживает динамическую службу DNS. Зарегистрируйте DNS-записи из файла ... на сервере DNS, обслуживающем домен, указанный в этом файле.)
Давайте рассмотрим решение проблемы на примере. Для упрощения ситуации используем минимальное число компьютеров. Предположим, что у нас имеется авторитетный сервер Windows NT 4.0 DNS для домена w2k.dom. На сервере созданы зоны прямого и обратного просмотра: w2k.dom и 0.168.192.in-addr.агра. Все клиенты (включая компьютеры под управлением Windows 2000) используют этот сервер в качестве предпочитаемого (preferred). Второй сервер DNS (на базе Windows 2000 Server) необходимо сконфигурировать так, чтобы он поддерживал все обновляемые ресурсные записи для домена Windows 2000. Имена и адреса компьютеров показаны в следующей таблице:
Имя и роль компьютера
FQDN
IP-адрес
NT4SRV3 (Windows NT 4.0 DNS Server)
nt4srv3.w2k.dom
192.168.0.3
W2KDC2 (Windows 2000 DNS Server)
w2kdc2.w2k.dom
192.168.0.2
W2KDC4 (контроллер домена
w2kdc4.w2k.dom
192.168.0.4
Windows 2000)
По умолчанию динамическая регистрация имени и адреса хоста на предпочитаемом сервере DNS разрешена. Поэтому для того, чтобы в журналах сообщений не появлялись сообщения об ошибках, в нашей конфигурации нам нужно запретить эту возможность на всех компьютерах под управлением Windows 2000. Для этого снимите флажок Register this connection's addresses in DNS (Зарегистрировать адреса этого подключения в DNS) на вкладке DNS в окне Advanced TCP/IP Setting (Дополнительные параметры TCP/IP).
Создание авторитетных зон
На сервере Windows 2000 DNS необходимо создать четыре авторитетных зоны, необходимые для функционирования домена. В нашем примере имена всех этих зон будут иметь суффикс w2k.dom.
Вот эти зоны:
_msdcs.w2k.dom
_sites.w2k.dom
_tcp.w2k.dom
_udp.w2k.dom
Рис. 3.1. Создание динамически обновляемых авторитетных зон на сервере Windows 2000 DNSРис. 3.1. Создание динамически обновляемых авторитетных зон на сервере Windows 2000 DNSКроме того, нужно разрешить динамическое обновление этих зон. На рис. 3.1 показан результат операций, выполненных на данном предварительном этапе. Обратите внимание на то, что каждая зона содержит записи SOA и NS.
Рис. 3.1. Создание динамически обновляемых авторитетных зон на сервере Windows 2000 DNS
Рис. 3.1. Создание динамически обновляемых авторитетных зон на сервере Windows 2000 DNS
Делегирование динамических зон
На втором этапе нужно создать динамические зоны и делегировать их серверу Windows 2000 DNS, на котором эти зоны будут храниться и обновляться. Все зоны создаются как субдомены авторитетной зоны w2k.dom.
Результат операции показан на рис. 3.2.
НИВНИВDNS View Options HelpServer ListEi © 192.168.0.3(^ Cache„^ 0.168.192.in-addr.arpaг j w2k.domDNS View Options HelpServer ListEi © 192.168.0.3(^ Cache„^ 0.168.192.in-addr.arpaг j w2k.domZone InfoZone InfoRecords for _msdcs.w2k.dom | All RecordsRecords for _msdcs.w2k.dom | All RecordsО „sites D Jcp CD _udpО „sites D Jcp CD _udpName _msdcs.w2k.dom w2kdc2Name _msdcs.w2k.dom w2kdc2| Type I DataNSw2kdc2.w2k.dom.A192.168.0.2| Type I DataNSw2kdc2.w2k.dom.A192.168.0.2J, Domain Name Setvice Manager
НИВ
НИВ
DNS View Options Help
Server List
Ei © 192.168.0.3
(^ Cache
„^ 0.168.192.in-addr.arpa
г j w2k.dom
DNS View Options Help
Server List
Ei © 192.168.0.3
(^ Cache
„^ 0.168.192.in-addr.arpa
г j w2k.dom
Zone Info
Zone Info
Records for _msdcs.w2k.dom | All Records
Records for _msdcs.w2k.dom | All Records
О „sites D Jcp CD _udp
О „sites D Jcp CD _udp
Name _msdcs.w2k.dom w2kdc2
Name _msdcs.w2k.dom w2kdc2
| Type I Data
NSw2kdc2.w2k.dom.
A192.168.0.2
| Type I Data
NSw2kdc2.w2k.dom.
A192.168.0.2
Ready
Рис. 3.2. Авторитетный сервер DNS (NT4SRV3) для домена w2k.dom и зоны, делегированные DNS-серверу W2KDC2, поддерживающему динамическое обновление записей
Также на сервере Windows NT 4.0 DNS нужно зарегистрировать следующие записи:
Две записи типа А для компьютеров под управлением Windows 2000 и соответствующие записи типа PTR (указатель).
Запись типа А для домена w2k.dom (эта запись нужна для нахождения контроллеров домена при помощи простого просмотра имен).
По поводу последней A-записи нужно сделать несколько замечаний. Система Windows 2000 автоматически обновляет эту запись. Служба Netlogon контроллера домена перерегистрирует данную запись при каждой загрузки системы. В нашей конфигурации обновление записи невозможно, и сообщение об ошибке будет периодически появляться в системном журнале. Эту проблему можно устранить, добавив параметр RegisterDNSARecords (задайте DWORD-значение, равное 0) в раздел реестра KEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters.
Если с помощью параметра RegisterDNSARecords=0 запретить регистрацию записей типа А, две следующих записи удаляются из файла netlogon.dns на контроллере домена W2KDC4:
w2k.dom IN А 192.168.0.4
И
gc._msdcs.w2k.dom IN А 192.168.0.4
Внимание!
Когда добавляется параметр RegisterDNSARecords, равный 0, служба Netlogon перестает обновлять запись адреса (тип А) для имени gc._msdcs.w2k.dom. Необходимо вручную добавить и перерегистрировать эту запись, если изменяется местоположение сервера глобального каталога.
Окончательная конфигурация
Теперь, после того как все предварительные операции выполнены, контроллер домена W2KDC4 может обновлять (а сначала — создать) все SRV- записи.
Нужно перезапустить службу Netlogon, а лучше —■ перезагрузить систему. После этого все обновляемые записи появятся на сервере Windows 2000 DNS (W2KDC2) (рис. 3.3).
Далее можно (и нужно) проверить все журналы DNS и протестировать контроллер домена для проверки правильности регистрации всех ресурсных записей.
Рис. 3.3. Структура имен для всех необходимых SRV-записей, зарегистрированных на DNS-сервере с динамическим обновлением записей
Установка Active Directory
Создание контроллера домена
Служба Active Directory устанавливается только на компьютере под управлением Windows 2000 Server. Установка Active Directory не зависит от процесса установки/обновления самой операционной системы. Более того, вы можете понизить роль (demote) контроллера домена (или деинсталлировать Active Directory) до рядового сервера домена (или автономного сервера) (а затем, при необходимости, снова повысить роль сервера). В обоих случаях используется Мастер установки Active Directory (Active Directory Installation Wizard). Такие возможности отсутствовали в Windows NT 4.0, где роль сервера (член домена, РОС или BDC) определяется в процессе установки системы и не может быть изменена без полной переустановки системы или без привлечения программных инструментов от сторонних производителей.
Итак, для создания контроллера домена Windows 2000 можно использовать следующие способы:
Запустить Мастер установки Active Directory на уже установленной системе Windows 2000 Server (автономном или рядовом сервере). В этом слу-
чае используется утилита DCpromo.exe. С ней можно работать в диалоговом режиме или использовать режим автоматической установки (unattended mode; см. ниже в этой главе). В результате будет создан контроллер нового домена или добавочный контроллер в уже существующем домене.
Обновить контроллер домена на базе Windows NT 4.0 (PDC или BDC). Утилита DCpromo.exe запускается автоматически после того, как закончится обновление системы до Windows 2000 Server и компьютер будет перезагружен. При этом:
PDC можно обновить только до контроллера нового домена.
BDC можно обновить до добавочного контроллера существующего домена или до рядового (member) сервера (если установка Active Directory запрещается).
Требования и ограничения
Установка Active Directory возможна только при выполнении нескольких важных условий. Мастер установки Active Directory проверяет различные параметры, зависящие от типа создаваемого контроллера домена. Основные условия перечислены ниже.
Active Directory может устанавливаться на дисковом разделе, отформатированном под NTFS 5.0.
Дисковый раздел должен иметь не менее 250 Мбайт свободного пространства.
Только член локальной группы Администраторы может запускать утилиту DCpromo.exe на автономном сервере. На рядовом сервера это право также имеют члены групп Администраторы домена и Администраторы предприятия.
Если создается новый контроллер в существующем лесе, любой пользователь, не зарегистрированный как администратор домена или предприятия, должен ввести необходимые сведения (пред-Windows 2000 имя и пароль; имена в формате UPN, например, admin@w2k.dom, не допускаются):
Только члены группы Администраторы предприятия могут создавать новые домены (дочерние домены или новые деревья). Можно заранее создать новый домен в лесе (см. описание NTDSutil.exe в главе 7 "Диагностика и обслуживание Active Directory".
Члены групп Администраторы домена и Администраторы предприятия могут добавлять контроллеры в существующий домен. Эту операцию можно разрешить и для отдельных пользовательских учетных записей, если дать им право подключать компьютеры к домену и создавать соответствующие объекты репликации.
На компьютере должен быть установлен и сконфигурирован протокол TCP/IP. Обычно контроллеры домена имеют статические IP-адреса, хотя для архитектуры Active Directory это и не обязательно.
Компьютер должен иметь основной суффикс DNS. Дважды щелкните на значке Му Computer (Мой компьютер) на рабочем столе; откройте вкладку Network identification (Сетевая идентификация), нажмите кнопки Properties (Свойства) и More (Дополнительно). Введите DNS-имя домена в поле Primary DNS suffix of this computer (Основной DNS-суффикс этого компьютера). Это обязательное требование для компьютера, на котором будет функционировать служба DNS. Данное поле автоматически заполняется, если компьютер подключается к домену, и тогда ничего менять не нужно. Флажок Change primary DNS suffix when domain membership changes (Сменить основной DNS-суффикс при смене членства в домене) должен быть всегда установлен.
Необходимо иметь уже развернутую службу DNS. Если используется унаследованный или сервер DNS на другой платформе (не Windows 2000), он должен отвечать требованиям Windows 2000 и быть сконфигурированным соответствующим образом. Если "повышаемый" сервер будет первым контроллером домена в сети, в которой отсутствуют серверы DNS, вы должны разрешить мастеру установки Active Directory установить и сконфигурировать Windows 2000 DNS Server.
(7 Примечание )
Зоны DNS обратного просмотра для работы Active Directory не требуются. Тем не менее рекомендуется конфигурировать их, т. к. они используются многими утилитами и приложениями.
NetBIOS-имя сервера должно быть уникальным в домене. NetBIOS (пред-Windows 2000) имя нового домена должно быть уникальным в лесе.
Если создается дочерний домен (или новое дерево), родительский домен и корневой домен леса должны уже существовать и быть доступны. Это означает, что нельзя создать дочерний домен, например, subdom.w2k.dom, если домен w2k.dom не существует.
Если не вдаваться в детали и упростить ситуацию, то можно сказать, что для начала и успешного завершения процесса повышения роли сервера нужно иметь связь со всеми владельцами ролей FSMO. В противном случае вам необходимо разбираться в том, какие владельцы ролей FSMO должны быть доступны при создании конкретного типа контроллера домена, и всегда об этом помнить.
( Примечания }
По умолчанию объекты контроллеров домена создаются в подразделении Domain Controllers в разделе доменных имен.
Идентификатор (SID) компьютера не меняется после установки или удаления Active Directory.
Предположим, некоторый сервер был контроллером домена, его роль была понижена, а теперь вы снова хотите установить на него Active Directory. Имеет смысл предварительно удалить оставшиеся папки, где хранились файлы Active Directory — база данных и журналы транзакций (по умолчанию используется папка %System/?oot%\NTDS). Что более важно, если на компьютере не используется Распределенная файловая система (Distributed File System, DFS), остановите службу репликации файлов (FRS) при помощи команды net stop ntfrs и удалите содержимое папки %Systemf?oot%\ntfrs\jet. Затем запустите службу net start ntfrs.
L * Внимание!
В процессе сбора предварительных данных мастер установки Active Directory запрашивает пароль для режима восстановления служб каталога. Этот пароль используется только при регистрации в системе, когда вы нажали клавишу <F8> в меню загрузки и выбрали режим Directory Services Restore Mode (Восстановление службы каталогов). Этот пароль используется нечасто, поэтому постарайтесь не забыть его (такое бывает!).
Проверка конфигурации DNS
Это один из самых важных этапов при подготовке сервера к операции повышения роли. Из-за скрытых ошибок в DNS созданный контроллер домена может работать неправильно. Возможны следующие ошибки:
На компьютере не сконфигурирован предпочтительный сервер DNS.
На указанном сервере DNS отсутствует заданная авторитетная зона (имя домена).
Авторитетная зона существует, но не является динамически обновляемой.
Компания Microsoft добавила очень полезные функции в утилиты DCdiag и NetDiag, входящие в состав пакета Support Tools. Теперь с их помощью администратор может в течение нескольких секунд проверить конфигурацию DNS. (Новые версии утилит можно свободно загрузить с веб-узла Microsoft. Более подробно эти утилиты рассматриваются в главе 7 "Диагностика и обслуживание Active Directory" и главе 8 "Сетевые и распределенные службы".')
Если в окне TCP/IP Properties не указан IP-адрес сервера DNS, команда netdiag /test:DsGetDc ИЛИ netdiag /test:DcList сообщит вам, ЧТО
The network connections are not configured with preferred DNS (Для сетевого подключения не указан предпочитаемый сервер DNS)
после чего будут даны инструкции по конфигурированию DNS.
Команда dcdiag /test:DePromo выдаст сообщение с кодом 9852, который означает "No DNS servers configured for local system" (В локальной системе не сконфигурированы серверы DNS).
Следующая команда сообщает о том, что можно выполнить подключение добавочного контроллера к существующему домену (в данном примере — w2k.dom):
C:\>dcdiag /test:DcPromo /DnsDomain:w2k.dom /ReplicaDC
Starting test: DePromo
The DNS configuration is sufficient to allow this computer to be promoted as a replica domain controller in the w2k.dom domain.
DNS configuration is sufficient to allow this domain controller to dynamically register the domain controller Locator records in DNS.
w2kdc2 passed test DePromo
В этом случае можно начинать операцию повышения роли сервера. (Для компактности некоторые строки в приведенном сообщении опущены. Обратите внимание на то, что все тесты — и с положительным, и с отрицательным результатом — заканчиваются одной и той же строкой "passed test" — тест выполнен.)
Следующее сообщение указывает на то, что авторитетная зона имеется, однако отсутствуют SRV-записи, зарегистрированные существующим контроллером домена:
C:\>dcdiag /test:DcPromo /DnsDomain:w2ООО.dom /ReplicaDC
Starting test: DePromo
This computer cannot be promoted as a domain controller of the w2000.dom domain. This is because either the DNS SRV record for _ldap._tcp.dc._msdcs.w2000.dom is not registered in DNS, or some zone from the following list of DNS zones doesn't include delegation to its child zone: w2000.dom, dom and the root zone. Ask your network/DNS administrator to perform the following actions: To find out why the SRV record for _ldap._tcp.dc._msdcs.w2000.dom is not registered in DNS, run the dcdiag command prompt tool with the command RegisterlnDNS on the domain controller that did not perform the registration.
DNS configuration is sufficient to allow this domain controller to dynamically register the domain controller Locator records in DNS.
w2kdc2 passed test DePromo
Вы должны проверить конфигурацию DNS и обеспечить регистрацию SRV-записей контроллером домена.
Во всех случаях, когда на сервере DNS не разрешено обновление авторитетной зоны (или сервер не поддерживает динамическое обновление), команда выводит следующее сообщение:
C:\>dcdiag /test:DePromo /DnsDomain:w2k.dom /ReplicaDC
Starting test: DePromo
The DNS configuration is sufficient to allow this computer to be promoted as a replica domain controller in the w2k.dom domain.
This domain controller cannot register domain controller Locator DNS records. This is because either the DNS server with IP address 192.168.0.4 does not support dynamic updates or the zone w2k.dom is configured to prevent dynamic updates.
Также даются подробные инструкции по конфигурированию сервера DNS. Вы должны выполнить их. Для проверки возможности обновления зоны можно использовать команду
dcdiag /test:RegisterinDNS /DnsDomain:w2k.dom
которая выдает аналогичное сообщение.
Другие параметры команды dcdiag /test:DcPromo позволяют проверить, можно ли в существующей доменной структуре создать дочерний домен, новое дерево или новый лес. Сообщения команды информативны и понятны, поэтому нет необходимости помещать и комментировать их в книге.
Если предпочитаемый сервер DNS указан неверно или связь с ним отсутствует, а также если на нем не поддерживается авторитетная зона, следующая команда позволяет диагностировать эту проблему и дает инструкции по ее устранению:
C:\>dcdiag /test:RegisterInDNS /DnsDomain:w2k-new.dom
Starting test: RegisterlnDNS
Please verify that the network connections of this computer are configured with correct IP addresses of the DNS servers to be used for name resolution. If the DNS resolver is configured with its own IP address and the DNS server is not running locally the DePromo will be able to install and configure local DNS server, but it will be isolated from the existing DNS infrastructure (if any). To prevent this either configure local DNS resolver to point to existing DNS server or manually configure the local DNS server (when running) with correct root hints.
If the DNS resolver is configured with its own IP address and the DNS server is not running locally, the Active Directory Installation Wizard can install and configure the local DNS server. However, if this server is not connected to the network during domain controller promotion then admin needs to appropriately configure root hints of the local DNS server after the completion of the domain controller promotion.
w2kdc2passed test RegisterlnDNS
Не забывайте о том, что конфигурацию DNS (регистрацию SRV-записей) необходимо проверять и по окончании процесса повышения роли сервера.
( Примечание )
Более подробно дополнительные возможности утилит DCdiag и NetDiag описаны в статье Q265706 из Microsoft Knowledge Base.
Запуск мастера установки Active Directory
Имеется два способа запуска мастера установки Active Directory в интерактивном режиме:
Выбрать команду Start | Programs | Administrative Tools | Configure Your Server (Пуск | Программы | Администрирование | Настройка сервера), а затем выбрать в меню пункт Active Directory.
Открыть окно Run (Выполнить) и ввести dcpromo.
При установке Active Directory существуют Четыре возможности; графически они представлены на рис. 3.4. Ниже перечислены опции, которые вы должны последовательно выбрать в окнах мастера установки.
При начальной установке Active Directory в сети или при создании нового леса:
Domain controller for a new domain (Контроллер домена в новом домене);
Create a new domain tree (Создать новое доменное дерево);
Create a new forest of domain trees (Создать новый лес доменных деревьев).
( Примечание )
Создание нового леса — это единственная опция, которая не требует связи с существующим доменом. Во всех других случаях разделы Schema и Configuration реплицируются с некоторого контроллера-источника либо в существующем домене (при создании добавочного контроллера), либо в родительском домене (при создании дочернего домена), либо в корневом домене (при создании нового дерева).
Для создания добавочного контроллера существующего домена:
• Additional controller for an existing domain (Добавочный контроллер домена в существующем домене).
Для создания дочернего домена;
Domain controller for a new domain (Контроллер домена в новом домене);
Create a new child domain in an existing domain tree (Создать новый лес доменных деревьев).
Для создания нового дерева (корневого домена с несмежным DNS- именем) в существующем лесе:
Domain controller for a new domain (Контроллер домена в новом домене);
Create a new domain tree (Создать новое доменное дерево);
Place this new domain in an existing forest (Поместить это новое доменное дерево в существующий лес).
Q - новый контроллер доменаQ - новый контроллер доменаРис. 3.4. Четыре сценария создания нового контроллера доменаРис. 3.4. Четыре сценария создания нового контроллера домена
Q - новый контроллер домена
Q - новый контроллер домена
Рис. 3.4. Четыре сценария создания нового контроллера домена
Рис. 3.4. Четыре сценария создания нового контроллера домена
В зависимости от выбранной возможности, мастер попросит вас ввести некоторое доменное имя. Это может быть имя существующего домена, родительского домена или корневого домена леса. Рекомендуется всегда указывать имена DNS, т. к. на этом этапе разрешение имен DNS уже должно
функционировать нормально. Иногда мастер "соглашается" на NetBIOS- имена доменов, однако это не гарантирует успешного выполнения последующих операций по установке Active Directory.
Внимание!
На следующем этапе мастер попросит указать NetBIOS-имя домена. При желании можно ввести имя, отличное от предлагаемого по умолчанию (например, если DNS-имя домена — w2k.dom, то по умолчанию предлагается NetBIOS-имя W2K). Если на компьютере не установлен пакет Service Pack 1, можно столкнуться с ошибками при публикации принтеров в Active Directory (см. 0255496).
( Примечание J
В процессе установки Active Directory выполняется синхронизация разделов каталога с существующими контроллерами домена. Можно остановить эту репликацию, нажав в окне мастера на кнопку Finish Replication Later (Отложить выполнение репликации). Сервер объявит себя контроллером домена только после того, как репликация будет завершена (после перезагрузки компьютера).
Проблемы, связанные с сервером DNS
При работе мастера установки Active Directory в некоторый момент может появиться сообщение, показанное на рис. 3.5. Оно может означать следующее: □ В сети отсутствует сервер DNS (при этом вы устанавливаете сервер DNS и контроллер домена на одном сервере).
На компьютере в окне TCP/IP Properties не указан адрес предпочитаемого сервера DNS или этот адрес неправильный. (То есть имеется некая ошибка конфигурации, которая трактуется как недоступность сервера DNS.)
На указанном сервере DNS отсутствует авторитетная зона для нового домена.
■ ч Active Directory Installation WizardВ
The wizard cannot contact the DNS server that handies the name ”w2k.dom'' to : determine if it supports dynamic update: Confirm your DNS configuration, or Install and configure a DNS server on this computer.
Рис. 3.5. Это окно сообщает о возможном возникновении проблем с предпочитаемым сервером DNS
Данное окно не появится, если адрес сервера DNS введен правильно и на этом сервере имеется авторитетная зона, которая, однако, не может обновляться динамически. В этом случае следующим будет окно "Configure DNS" (Настройка DNS) (рис. З.б).
Рис. 3.6. На этом этапе вы должны определиться: устанавливать сервер DNS или нет
Данный этап является очень важным в процессе установки Active Directory, потому что от вашего выбора будет зависеть работоспособность доменной структуры. У вас имеется только три возможности:
Нажать кнопку Cancel (Отмена), выйти из мастера и проверить конфигурацию DNS. Вы обязаны выбрать этот вариант, если новый контроллер является не первым в домене (лесе). В противном случае установка Active Directory кончится неудачей, т. к. сервер не сможет найти другие контроллеры домена и скопировать с них разделы каталога.
Согласиться с рекомендуемым вариантом и установить сервер DNS и контроллер домена на одном компьютере.
Если вы используете унаследованную службу DNS, где настроены необходимые субзоны, делегированные серверу с динамической DNS, выберите опцию No, I will install and configure DNS myself (Нет, установить и настроить DNS вручную) и продолжайте установку Active Directory.
Вы можете также отказаться от рекомендуемого варианта и продолжить процесс установки Active Directory, если "повышаемый" сервер будет единственным контроллером в сети, и по некоторым соображениям вы собираетесь подключить этот сервер к полностью настроенному серверу DNS только после установки Active Directory, но до первой перезагрузки нового контроллера домена. Такое решение кажется не очень целесообразным, однако оно вполне корректно с технической точки зрения. Когда контроллер домена будет загружаться в первый раз, он зарегистрирует все необходимые ре-
сурсные записи на сервере DNS (только в зоне прямого просмотра, т. к. мастер установки не создает зоны обратного просмотра).
Если конфигурация DNS отвечает всем требованиям, описанные выше экраны появляться не будут, и мастер перейдет к следующим шагам по сбору исходной информации.
Завершение установки и тестирование
После установки Active Directory система автоматически устанавливает и конфигурирует Windows 2000 DNS Server, если это было указано при работе мастера установки.
После перезагрузки системы можно зарегистрироваться в созданном домене, используя имя и пароль локального администратора. Локальный администратор сервера, на котором был создан самый первый контроллер домена в новом лесе, становится членом следующих групп:
Administrators (Встроенная локальная группа)
Domain Admins (Член группы Administrators)
Domain Users (Член встроенной локальной группы Users)
Enterprise Admins (Член группы Administrators)
Group Policy Creator Owners (Владельцы-создатели групповой политики)
Schema Admins (Администраторы схемы)
С Примечание )
Иногда, работая на контроллерах домена в тестовой среде, администраторы пытаются зарегистрироваться в домене, используя какую-нибудь учетную запись пользователя домена; при этом возникает ошибка "The local policy of this system does not permit you to logon interactively" (Интерактивный вход в систему на данном компьютере запрещен локальной политикой). Откройте объект групповой политики (GPO) Default Domain Controllers Policy и выберите узел Computer Configuration | Windows Settings | Security Setting | Local Policies | User Rights Assignment (Конфигурация компьютера | Конфигурация Windows | Параметры безопасности | Локальные политики | Назначение прав пользователя). Найдите политику Log on locally (Локальный вход в систему). По умолчанию эта политика определена, и право регистрироваться локально имеют только следующие группы: Account Operators, Administrators, Backup Operators, Print Operators и Server Operators. Следовательно, "обычный" пользователь не может регистрироваться на контроллерах домена. Если нужно (и требования безопасности при этом не нарушатся), добавьте группы Authenticated Users (Прошедшие проверку) или Everyone (Все) в этот список, и вы сможете регистрироваться локально, используя любую учетную запись.
Если имеются приложения, выполняющиеся на каком-нибудь сервере под управлением Windows NT 4.0, который является членом домена Windows 2000, работающего в смешанном режиме, проверьте, включена ли группа Everyone в группу Pre-Windows 2000 Compatible Access (Совместимый
с пред-Windows 2000 доступ), с помощью команды net localgroup "Pre- windows 2000 compatible Access". В случае отрицательного результата введите на контроллере домена команду net localgroup "Pre-windows 2000 Compatible Access" everyone /add И перезагрузите его.
Log Files
Все события, возникающие в процессе установки Active Directory, регистрируются в журналах, расположенных в папке %5y5/em7?oo/%\debug (и весьма полезных для анализа причин неудачной установки):
□ csv.log
□ dcpromoui.log
□ dcpromohelp.log
□ NtFrs_xxxx.log
□ NetSetup.LOG
□ NtFrsApi.log
□ DCPROMO.LOG
Удаление контроллера домена
Контроллер домена нельзя просто удалить из имеющейся доменной структуры, т. к. информация о нем остается в Active Directory. С помощью процедуры, называемой понижением роли (demotion), можно корректно удалить Active Directory с контроллера домена и автоматически обновить связанную с ним информацию (если этот контроллер не последний в сети). Если же контроллер домена поврежден или полностью неисправен, эту процедуру выполнить невозможно, и вы должны вручную выполнить "очистку" Active Directory (см. главу 7 "Диагностика и обслуживание Active Directory").
После удаления Active Directory последний контроллер любого домена становится автономным сервером, принадлежащим к рабочей группе WORKGROUP. Суффикс DNS на компьютере не изменяется.
Требования
Как и при установке Active Directory, должны быть доступны другие домены (родительский или корневой), иначе процесс понижения роли не начнется. Службу Active Directory нельзя удалить, если репликация разделов каталога с "понижаемого" сервера закончилась неудачей. Если этот сервер является владельцем какой-нибудь роли FSMO, необходимо также передать эту роль другому серверу. В противном случае система сама пытается найти подходящих кандидатов на эту роль.
Если удаляется последний контроллер в домене, это означает удаление всего домена. Удалить можно только тот домен, который не имеет дочерних доменов и не является корневым доменом леса (который может удаляться только самым последним).
Запуск мастера установки Active Directory
Для удаления Active Directory с некоторого контроллера домена запустите мастер установки Active Directory.
При этом может появиться сообщение, показанное на рис. 3.7.
"i Active Directory Installation Wizard
This domain controller Is a Global Catalog server. Global Catalogs are used to precess user logons. You should make sure other Global Catalogs are: accessible to users of this domain before removing Active Directory from this computer.
Рис. 3.7. He следует удалять последний сервер глобального каталога
Убедитесь в том, что в лесе имеется другой сервер GC. При необходимости создайте новой сервер GC, дождитесь момента, когда он будет объявлен, и только тогда продолжайте процесс удаления контроллера домена.
На следующем шаге мастер установки потребует от вас определить статус флажка This server is the last domain controller in the domain (Этот сервер — последний контроллер домена в данном домене). Для удаления последнего контроллера в некотором дочернем домене (т. е. при удалении этого дочернего домена) или в корневом домене дерева (т. е. при удалении этого дерева) вы должны ввести имя и пароль пользователя, входящего в группу Enterprise Admin. Для удаления последнего контроллера в лесе (т. е. для удаления всего леса) необходимо зарегистрироваться как Administrator или член группы Domain Admins. Для удаления добавочного контроллера домена достаточно указать сведения пользователя, входящего в группу Domain Admins.
Когда Active Directory удаляется с некоторого контроллера домена и процесс понижения роли завершается (после перезагрузки сервера), все субдомены DNS с именами, начинающимися с символа подчеркивания "_", удаляются с предпочитаемого сервера DNS (если, конечно, этот сервер поддерживает динамическое обновление записей) и файл netlogon.dns очищается.
Автоматическая установка и удаление Active Directory
Помимо диалогового режима мастер установки Active Directory может работать в автоматическом режиме, аналогичном режиму автоматической установки операционной системы. Все параметры, необходимые для работы мастера установки, записываются в файл ответов, который запускается с помощью следующей команды:
dcpromo /answer:<answerFile>
Как в диалоговом режиме, в окне Configure Active Directory (Настройка Active Directory) отображаются результаты выполнения всех операций, необходимых для повышения/понижения роли сервера. Если некоторый параметр отсутствует или некорректен, мастер установки запрашивает у пользователя нужное или правильное значение, которое можно ввести интерактивно и продолжить процесс.
Описание параметров, используемых в файле ответов при установке Active Directory (раздел [Deinstall]), можно найти в документе "Microsoft Windows 2000 Guide to Unattended Setup". Файл документа (unattend.doc) копируется в ту папку, в которой устанавливается пакет Windows 2000 Resource Kit, или же его можно извлечь вручную с дистрибутивного компакт-диска Windows 2000. В окне Проводника Windows откройте файл \Support\Tools \Deploy.cab и скопируйте файл unattend.doc в нужную папку.
Службу Active Directory можно устанавливать сразу же после инсталляции системы Windows 2000 Server или независимо от этого, в любой другой момент.
Для понижения роли контроллера домена (только не последнего контроллера в домене!) до рядового сервера достаточно в файле ответов указать следующие параметры (значения параметров указаны лишь для примера!):
[Deinstall]
UserName=EntAdmin
Password=eadml23
UserDomain=w2k.dom
Administratorpassword =ladminl23
RebootOnSuccess=Yes
где первые три параметра являются сведениями о пользователе, входящем в группу Enterprise Admins, а параметр Administratorpassword является паролем локального администратора. Последний параметр указывает на то, что после успешного понижения роли компьютер должен быть перезагружен.
( Примечание )
После того как мастер выполнит указанную ему операцию, все указанные в файле ответов пароли удаляются. Поэтому, если операцию необходимо повторить, пароли нужно ввести снова.
Для создания добавочного контроллера в домене — например, w2k.dom — необходимо указать следующие параметры:
[Deinstall]
UserName=EntAdmin
Password=eadml23
UserDomain=w2k.dom
ReplicaDomainDNSName = w2k.dom
SiteName=W2K-site
RebootOnSuccess=Yes
Параметр siteName не является обязательным. Он указан здесь потому, что домен располагается в сайте, который имеет имя, отличное от имени сайта, созданного по умолчанию — Default-First-Site.
С помощью следующего файла можно в родительском домене w2k.dom создать дочерний домен subdom:
[Deinstall]
= Administrator = eadml23 = w2k.dom= Domain = subdom = SUBDOM = w2k.dom = W2K-site= Yes= Administrator = eadml23 = w2k.dom= Domain = subdom = SUBDOM = w2k.dom = W2K-site= YesUserName Password UserDomain ReplicaOrNewDomain ChildName
= Administrator = eadml23 = w2k.dom
= Domain = subdom = SUBDOM = w2k.dom = W2K-site
= Yes
= Administrator = eadml23 = w2k.dom
= Domain = subdom = SUBDOM = w2k.dom = W2K-site
= Yes
DomainNetBiosName ParentDomainDNSName SiteName
RebootOnSuccess
Добавление членов домена
Когда компьютер под управлением Windows 2000 включается в домен Windows 2000, соответствующая учетная запись компьютера всегда создается в контейнере Computers. Затем, при необходимости, эту учетную запись можно переместить в любой контейнер (подразделение). Однако имеется и другой подход. Учетную запись можно создать до того как компьютер подключается к домену. Создайте эту запись в любом контейнере, а затем используйте ее при добавлении компьютера.
Установка суффикса DNS
Дважды щелкните на значке Му computer на рабочем столе, откройте окно Properties, нажмите кнопку Properties на вкладке Network Identification и кнопку More. В открывшемся окне (рис. 3.8) введите DNS-имя того домена, в который будет входить данный компьютер.
IdNS Suffix and NetBIOS Computer Name
ErimaryDNS suffix of this computer:
|w2k.dom
f? Change primary DNS suffix when domain membership changes
NetBIOS computer name:
twg№ROt|yi^
This name is used for interoperability with older computers and services,
Рис. 3.8. Установка
на компьютере суффикса DNS
( Примечание )
Можно управлять суффиксами DNS с помощью групповой политики. См. политику Primary DNS Suffix (Основной суффикс DNS) в узле Computer Configuration | Administrative Templates | System | DNS Client (Конфигурация компьютера | Административные шаблоны | Система | Клиент DNS).
Рабочие станции и автономные серверы под управлением Windows 2000
Перед тем как добавлять клиентский компьютер в домен Windows 2000, необходимо проверить на этом компьютере установки DNS и доступность контроллеров этого домена. Для этой цели лучше всего использовать обновленную версию утилиты NetDiag.exe. Ниже показаны пример теста и результаты его успешного выполнения:
C:\>netdiag /test:DsGetDc /d:w2k.dom /v
DC discovery test:Passed
Find DC in domain 'w2k.dom':
Found this DC in domain 'w2k.dom':
DC:Ww2kdc4.w2k.dom
Address :\\192.168.0.4
Domain Guid :{BAF0BAAF-5013-43D3-8FAC-62CDBBCFA34A}
Domain Name:w2k.dom
Forest Name:w2k.dom
DC Site Name:W2K-site
Our Site Name:W2K-site
Flags: PDC emulator GC DS KDC TIMESERV
WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE 0x8
Find PDC emulator in domain 'w2k.dom':
Found this PDC emulator in domain 'w2k.dom':
DC:Ww2kdc4.w2k.dom
Find Windows 2000 DC in domain 'w2k.dom':
Found this Windows 2000 DC in domain 'w2k.dom':
DC:Ww2kdc4.w2k.dom
The command completed successfully
Полученные результаты говорят о том, что проверяемый компьютер можно успешно добавлять к указанному домену.
При добавлении к домену некоторого клиента можно также проверить успешность выполнения этой операции. Например, следующая команда со-
общает о том, что по каким-то причинам между клиентом и контроллером домена не установлен безопасный канал (secure channel):
C:\>netdiag /test:DcList /d:w2k.dom
DC list test:Failed.
Found DC 'Ww2kdc4.w2k.dom' in domain 'w2k.dom'.
[WARNING] Cannot call DsBind to w2kdc4.w2k.dom (192.168.0.4).
[SEC_E_SECURITY_QOS_FAILED]
The command completed successfully
Подключение Windows NT 4.0 BDC к домену Windows 2000
Иногда требуется подключить к домену Windows 2000 резервные контроллеры домена (BDC) под управлением Windows NT 4.0. Единственная проблема, которая может при этом возникнуть, состоит в том, что программа установки Windows NT 4.0 при создании BDC указывает неправильный тип учетной записи компьютера. При этом возможно появление следующей ошибки:
The Machine Account for This Computer either does not exist or is inaccessible.
(Учетная запись для этого компьютера или не существует, или недоступна.)
Если, например, при установке BDC использовалась учетная запись NT4DC3, то в системном журнале на контроллере домена под управлением Windows 2000, владеющем FSMO-ролью PDC Emulator, регистрируется следующая ошибка:
Event Source: SAM
Event ID:12298
Description:
The account W2KDC3$ cannot be converted to be a domain controller account as its object class attribute in the directory is not computer or is not derived from computer. If this is caused by an attempt to install a pre windows 2000 domain controller in a windows 2000 domain, then you should precreate the account for the domain controller with the correct object class.
(Учетную запись W2KDC3$ невозможно преобразовать в учетную запись контроллера домена, т. к. она не является в каталоге объектом класса computer или класса, порожденного от класса computer. Если это вызвано тем, что вы устанавливаете пред-Windows 2000 контроллер домена в домене Windows 2000, то предварительно создайте учетную запись для этого контроллера домена,указав правильный объектный класс.)
Для предварительного создания машинной учетной записи для Windows NT 4.0 BDC зарегистрируйтесь на любом входящем в домен компьютере с правами администратора и выполните следующие операции:
Запустите программу Server Manager (введите srvmgr в командной строке), которая включена в состав Windows 2000. (Не используйте Server Manager из поставки Windows NT 4.0!)
Выберите команду Add to Domain в меню Computer.
Выберите опцию Windows NT Backup Domain Controller, введите имя BDC и нажмите кнопку Add, а затем — Close. В списке компьютеров появится учетная запись, имеющая тип "Windows NT Backup". Эта учетная запись создается в определенном по умолчанию подразделении Domain Controllers.
После этого на компьютере, который будет играть роль BDC, можно устанавливать систему Windows NT 4.0 Server. Если же BDC уже существует, может возникнуть необходимость сбросить пароль машинной учетной записи компьютера с помощью утилиты NetDom.exe.
Нужный результат можно получить и по-другому:
. С помощью оснастки Active Directory Users and Computers (Пользователи и компьютеры Active Directory) создайте в любом контейнере объект типа computer.
. Используя оснастку ADSI Edit, найдите в новом объекте атрибут userAccountControl (имеющий тип decimal INTEGER) и измените значение, равное 4128 (0x1020 - WORKSTATION_TRUST_ACCOUNT), на 8192 (0x2000 - SERVER_TRUST_ACCOUNT).
Третий способ создания машинной учетной записи для BDC — установить пакет Support Tools и ввести следующую команду:
netdom ADD <имя-компьютера-ВПСпате> /D:<имя-домена> /DC
Переключение в основной режим
Если в некотором домене Windows 2000 отсутствуют Windows NT 4.0 BDC, этот домен можно переключить из устанавливаемого изначально смешанного режима (mixed mode) в основной режим (native mode).
Для переключения домена в основной режим используется любая из следующих двух оснасток:
Active Directory Users and Computers (Пользователи и компьютеры Active Directory).
Active Directory Domains and Trusts (Домены и отношения доверия Active Directory).
78
Выберите домен и откройте для него окно Properties. Нажмите кнопку Change Mode (Сменить режим) на вкладке General (Общие) и подождите 15 минут, пока изменения не реплицируются на все контроллеры домена. Проверить, работает ли домен в основном режиме, можно, создав универсальную группу или добавив одну локальную группу в другую.
Режим работы доменов удобно проверять с помощью оснастки Active Directory Domains and Trusts. Она позволяет быстро выбирать любые домены в лесе и просматривать их режим работы.
Установка доверительных отношений
Создание доверительных отношений между доменами — это довольно простая операция для администратора, если он понимает, как эти отношения функционируют в Active Directory. Для работы с любыми доверительными отношениями, существующими среди доменов Windows 2000, используется оснастка Active Directory Domains and Trusts. В ее окне легко можно выбрать домен и просмотреть существующие доверительные отношения. Однако для их проверки, создания или удаления нужно запускать оснастку, указывая имя и пароль пользователя, имеющего права на модификацию доверительных отношений. На рис. 3.9 и 3.10 приведен пример доменной структуры, в которой имеются доверительные отношения всех типов.
|w2k.dom PropertiesS3E3]|w2k.dom PropertiesS3E3]Genetai Trusts Managed By |Genetai Trusts Managed By |Domains trusted by this domain;:Domains trusted by this domain;:
|w2k.dom PropertiesS3E3]
|w2k.dom PropertiesS3E3]
Genetai Trusts Managed By |
Genetai Trusts Managed By |
Domains trusted by this domain;:
Domains trusted by this domain;:
Рис. 3.9. Различные типы доверительных отношений в Windows 2000Рис. 3.9. Различные типы доверительных отношений в Windows 2000
Рис. 3.9. Различные типы доверительных отношений в Windows 2000
Рис. 3.9. Различные типы доверительных отношений в Windows 2000
w2000.dom Propertiesw2000.dom PropertiesПёпвгаГДйЖфЙападёёДДия^^Domains trusted by this domain: •DomainName _i_Relationship• Transitive. JПёпвгаГДйЖфЙападёёДДия^^Domains trusted by this domain: •DomainName _i_Relationship• Transitive. Jsubdom.w2k.domShortcut Yessubdom.w2k.domShortcut Yesw2k.domTree Root Yesw2k.domTree Root YesRemoveRemoveDomains that trust this domain:Domains that trust this domain:OK I CancelOK I CancelРис. 3.10. Прямые доверительные отношения (shortcut) между двумя доменами в рамках одного леса
w2000.dom Properties
w2000.dom Properties
ПёпвгаГДйЖфЙападёёДДия^^
Domains trusted by this domain: •
DomainName _i_Relationship• Transitive. J
ПёпвгаГДйЖфЙападёёДДия^^
Domains trusted by this domain: •
DomainName _i_Relationship• Transitive. J
subdom.w2k.domShortcut Yes
subdom.w2k.domShortcut Yes
w2k.domTree Root Yes
w2k.domTree Root Yes
Remove
Remove
Domains that trust this domain:
Domains that trust this domain:
OK I Cancel
OK I Cancel
В этой структуре содержатся следующие домены:
w2k.dom — корневой домен леса, имеющий отношения типа Child с дочерним доменом.
subdom.w2k.dom — дочерний домен, имеющий отношения типа Parent (здесь не показаны) с корневым доменом.
w2000.dom — корневой домен дерева, связанного отношениями типа Tree Root с корневым доменом леса.
Все перечисленные выше доверительные отношения создаются автоматически и являются транзитивными. Вы можете, к примеру, зарегистрироваться в домене subdom.w2k.dom, работая на компьютере, принадлежащем домену w2000.dom. Для ускорения этого процесса можно создавать прямые одно- или двусторонние доверительные отношения между этими доменами:
Домены subdom.w2k.dom и w2000.dom связаны также доверительными отношениями, помеченными как Shortcut (показаны только для домена w2000.dom).
Кроме того, можно установить доверительные отношения (одно- или двусторонние) с другими лесами Windows 2000 или доменами Windows 4.0:
NT4DOM — независимый домен Windows 4.0. Отношения с такими доменами, а также с другими лесами Windows 2000, помечаются как External (внешние).
( Примечания j
Нужно помнить о том, что между доменами Windows NT 4.0 и Windows 2000 всегда можно устанавливать любые доверительные отношения, независимо от того, в каком режиме работают домены Windows 2000.
Можно удалять только прямые (shortcut) или внешние (external) доверительные отношения. При помощи оснастки Active Directory Domains and Trusts нельзя удалить автоматически создаваемые отношения (типа Parent-Child и Tree Root). Это можно сделать, только удалив соответствующий домен или дерево.
Проверка доверительных отношений
Состояние всех имеющихся доверительных отношений можно проверять. Выберите доверительное отношение на вкладке Trusts (Доверия), нажмите кнопку Edit (Изменить) и в открывшемся окне (довольно забавно, но в этом окне ничего нельзя изменить) нажмите кнопку Verify (Проверка). В нормальном состоянии выдается сообщение: "The trust has been verified. It is in place and active" (Доверие проверено, сконфигурировано и активно). При проверке система может потребовать имя и пароль для другого домена (например, если отношение "parent-child" проверяется из дочернего домена, нужно ввести имя и пароль администратора родительского домена).
Создание прямых (shortcut) доверительных отношений
Для создания прямых доверительных отношений необходимо указывать соответствующие учетные данные и в доверенном (trusted) домене, и в домене- доверителе (trusting domain).
Рассмотрим пример. В описанной выше доменной структуре можно создать прямое доверительное отношение, позволяющее ускорить доступ из домена w2000.dom к ресурсам, находящимся в домене subdom.w2k.dom. При этом домен subdom.w2k.dom (домен-доверитель) будет доверять домену w2000.dom (доверенный домен).
Запустите оснастку Active Directory Domains and Trusts, выберите доверенный домен (w2000.dom) и откройте окно Properties.
Нажмите кнопку Add (справа от панели Domains that trust this domain (Домены, которые доверяют этому домену)).
Введите имя домена-доверителя (subdom.w2k.dom) и некоторый пароль (любую комбинацию символов; нужно лишь, чтобы вы ввели эту же комбинацию в домене-доверителе). Нажмите кнопку ОК.
Нажмите кнопку No, когда система спросит о необходимости проверки нового отношения ("Do you want to verify the new trust?"). В этот момент
отношение нельзя проверить, поскольку оно еще не создано в другом домене. Домен-доверитель появится в списке доменов. Нажмите кнопку ОК.
Выберите домен-доверитель (subdom.w2k.dom) и откройте окно Properties.
Нажмите кнопку Add (справа от панели Domains trusted by this domain (Домены, которым доверяет этот домен)).
Введите имя доверенного домена (w2000.dom) и пароль, указанный в п. 3. Нажмите кнопку ОК.
При успешном завершении операции выводится сообщение "The trusted domain has been added and the trust has been verified" (Доверенный домен добавлен, и отношение проверено).
Вот и все. Односторонне доверительное отношение создано. Его можно также проверить с помощью команды NLtest. Первоначально (до создания отношения) утилита диагностирует ошибку на контроллере домена subdom.w2k.dom (поскольку прямые отношения между доменами отсутствуют):
C:\>nltest /sc_query:w2000.dom
I_NetLogonControl failed: Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN
После создания доверительного отношения диагностические сообщения будут другими:
C:\>nltest /sc_query:w2000.dom
Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name Ww2kdc3.w2000.dom
Trusted DC Connection Status Status = 0 0x0 NERR_Success The command completed successfully
Можно установить двусторонние отношения, при которых домены будут доверять друг другу. Чтобы создать доверительное отношение в обратном направлении, повторите описанную выше процедуру, только начните ее в "противоположном" домене (в нашем примере это будут домен subdom.w2k.dom). Не имеет значения, с какого домена — доверенного или доверяющего — начинать создание доверительного отношения. Главное, что нужно запомнить — то, что каждое однонаправленное отношение создается на обоих "концах" пары доменов, и что при этом используется один и тот же пароль.
Установление доверительных отношений с доменами Windows NT 4.0
По сути процедура создания доверительных отношений с доменами Windows NT 4.0 не отличается от описанной выше процедуры для доменов Windows 2000. Если бы в нашем примере доменом-доверителем был бы до-
мен Windows NT 4.0 (например, с именем NT4DOM), пункты 5—8 выглядели бы так:
Запустите программу User Manager for Domains и выберите команду Policies | Trust Relationships.
Нажмите кнопку Add (справа от панели Trusted domains).
Введите NetBIOS-имя (пред-Windows 2000 имя) доверенного домена (W2000) и пароль, указанный в п. 3. Нажмите кнопку ОК.
При успешном завершении операции появляется сообщение: "Trusted Relationship with ...("W2000" в нашем примере) successfully established" (Успешно установлено отношение с доменом...).
( Примечание )
Двусторонние доверительные отношения между доменами должны устанавливать при осуществлении миграции учетных записей из домена Windows NT 4.0 в домен Windows 2000 (который должен функционировать в основном режиме) с использованием утилит Active Directory Migration Tool (ADMT), ClonePrincipal или аналогичных средств от сторонних производителей.
Часть II
Администрирование
Active Directory
Глава 4. Средства управления доменами
Глава 5. Типовые административные задачи
ГЛАВА 4
Средства управления доменами
Эта глава, возможно, самая иллюстрированная в книге. Это неудивительно — "лучше один раз увидеть, чем сто раз услышать!" Содержание этой главы заметно отличается от формальных руководств по использованию всех окон, меню, команд и возможностей административных оснасток. (Кроме того, рассматриваются не все оснастки.) Мне бы хотелось обратить внимание читателя на те возможности оснасток (непосредственно предназначенных для управления службой Active Directory), методы использования которых могут быть неочевидны или на них можно не обратить внимания при первом знакомстве с оснастками. Знание некоторых "know-how" поможет вам эффективно организовать свое рабочее место.
В этой главе представлены лишь некоторые аспекты использования административных оснасток для управления Active Directory. Типовые административные задачи, реализуемые с помощью этих или иных инструментов, описываются в главе 5 "Типовые административные задачи"; в остальных главах детально рассматриваются более специфические задачи.
Основные оснастки
для администрирования Active Directory
После того как на базе некоторого сервера под управлением Windows 2000 создан контроллер домена, в группе Administrative Tools (Администрирование) на Панели управления появляются новые инструменты (табл. 4.1).
Перечисленные в табл. 4.1 инструменты могут также устанавливаться на любом компьютере под управлением Windows 2000, включенном в лес (домен), в составе пакета Windows 2000 Administrative Tools (см. раздел "Удаленное администрирование" в главе 5 "Типовые административные задачи"). В этом случае оснастки Security Policy (Политики безопасности) не появляются в меню Start.
Таблица 4.1. Стандартные средства администрирования Active Directory
Значок
Название инструмента
Основные операции, выполняемые этим инструментом
Active Directory Domains and Trusts (Домены и отношения доверия Active Directory)
Выбор администрируемого домена в больших лесах. Просмотр режима работы домена. Создание, проверка и удаление доверительных отношений между доменами
Active Directory Sites and Services (Сайты и службы Active Directory)
Создание и изменение сайтов, транспортов и подсетей. Настройка расписаний репликации и связей (links). Запуск репликации между контроллерами домена. Установка разрешений на объекты. Привязка объектов групповой политики (GPO) к сайтам. Запуск серверов глобального каталога на контроллерах домена
Active Directory Users and Computers
(Пользователи и компьютеры Active Directory)
Создание и изменение объектов каталога (пользователей, групп, подразделений и т. д.). Установка разрешений на объекты. Привязка объектов групповой политики (GPO) к доменам и подразделениям (OU). Управление ролями FSMO
Domain Controller Security Policy (Политика безопасности контроллера домена)
Модификация узла Security Settings (Параметры безопасности) объекта групповой политики, привязанного к подразделению Domain Controllers. Для редактирования всего GPO используйте оснастку Group Policy
Г I rj
Domain
Security Policy
(Политика безопасности домена)
Модификация узла Security Settings объекта групповой политики, привязанного к контейнеру домена. Для редактирования всего GPO используйте оснастку Group Policy
Group Policy (Групповая политика)
Модификация узла Security Settings (Параметры безопасности) объекта групповой политики, привязанного к некоторому контейнеру Active Directory (сайту, домену, подразделению) или хранящегося локально на компьютере. Эта оснастка не отображается в меню Start (Пуск), однако она доступна из других административных оснасток или может быть добавлена к пользовательской консоли ММС
Некоторые дополнительные инструменты (табл. 4.2) для администрирования Active Directory включены в пакет Support Tools. Администратор может считать эти инструменты обязательными для использования; они рассматриваются в других главах книги.
ADSI Edit(adsiedit.msc)ADSI Edit(adsiedit.msc)ijap"ijap"
ADSI Edit
(adsiedit.msc)
ADSI Edit
(adsiedit.msc)
ijap"
ijap"
Таблица 4.2. Дополнительные инструменты для обслуживания Active Directory (из пакета Support Tools)
Значок
НазваниеОсновные операции, выполняемые
инструментаэтим инструментом
"Низкоуровневое" редактирование объектов Active Directory, расположенных в любом разделе (доменных имен, Configuration и Schema). (Также доступен объект RootDSE.) Установка разрешений на объекты
Active Directory Поиск и модификация объектов Active Directory при Administration Tool помощи запросов LDAP (ldp.exe)
Active Directory Мониторинг состояния и топологии репликации. Replication Monitor Запуск репликации. Мониторинг ролей FSMO и ста- (replmon.exe) туса контроллеров домена
Общие вопросы
Поскольку большая часть инструментов для администрирования Active Directory реализована в виде оснасток Microsoft Management Console (ММС), все они имеют сходный интерфейс и базовые возможности. Знание этих возможностей позволяет с максимальной эффективностью использовать средства администрирования, а также настраивать их под конкретные задачи. Иногда простое изменение пользовательского интерфейса административной оснастки может даже повлиять на стратегию развертывания Active Directory в организации (см. ниже раздел "Выбор отображаемых столбцов"). Рассмотрим сначала некоторые общие возможности административных оснасток.
Создание пользовательской консоли ММС
Большинство стандартных административных инструментов можно запустить из меню Start | Programs | Administrative Tools (Пуск | Программы | Администрирование) или добавить в пользовательскую консоль ММС. Такие инструменты как оснастки Active Directory Schema (Схема Active Directory) или Group Policy всегда нужно сначала добавить к некоторой консоли ММС.
Введите mmc в окне Start | Run (Пуск | Выполнить).
Нажмите клавиши <Ctrl>+<M> или выберите команду Console | Add/Re- move Snap-in (Консоль | Добавить/Удалить оснастку). Нажмите кнопку Add (Добавить) в открывшемся окне.
Выберите нужную оснастку в окне Add Standalone Snap-in (Добавить изолированную оснастку) и нажмите кнопку Add. Повторяя эту операцию, можно добавить все нужные оснастки. После этого нажмите кнопку Close (Закрыть) и ОК.
Сохраните полученную консоль с любым именем.
Использование собственной консоли администрирования дает вам некоторые ощутимые преимущества:
Вы имеете "под рукой" все нужные вам инструменты, которые к тому же сконфигурированы "под вас". Например, можно одновременно использовать оснастки, подключенные к разным доменам, или оснастки Group Policy, связанные с различными объектами GPO.
Появляются дополнительные возможности по конфигурированию и настройке внешнего вида оснасток (см. ниже раздел "Конфигурирование ос- насток'У
Эффективнее используется память компьютера. Несколько инструментов, запущенных независимо друг от друга, занимают памяти больше, чем те же инструменты, добавленные к одной консоли ММС.
Просмотр окна Tree (Структура) в окне оснастки
Работая в окне некоторой оснастки, не забывайте о таких простых, но экономящих время средствах просмотра (в стиле "веб-навигации") на стандартной панели инструментов, как кнопки Forward ^j и Back _4=J, Up one level Й1 и Refresh ®\ Свойства некоторого выбранного объекта можно увидеть либо указав команду Properties (Свойства) в контекстном меню, либо — более быстрый путь — нажав кнопку Properties Ц^ на панели инструментов.
Выбор отображаемых столбцов
При работе с различными объектами Active Directory можно помимо стандартных отображать дополнительные поля или же удалять ненужные, что очень удобно. Выберите команду Choose Columns (Выбор столбцов) в меню View (Вид) и добавьте или удалите нужные столбцы в окне Modify Columns (Изменить столбцы). Для каждого типа объектов имеется свой набор полей.
( Примечание )
Когда оснастка Active Directory Users and Computers используется для создания новых пользователей, поле Full Name (Полное имя) образуется как конкатенация полей First name (Имя) и Last Name (Фамилия). Поле Full name, в свою очередь, определяет значение атрибута ел. (Однако при необходимости такой порядок можно изменить. См. статьи Q250455 и Q277717 в Microsoft Knowledge Base.) В силу разных обстоятельств вы можете предпочесть свои
соглашения по именованию пользователей, принятые в вашей организации. (Это легко реализовать при помощи сценариев или таких средств пакетной обработки, как утилиты LDIFDE или CSVDE. Можно обойтись и ручными манипуляциями.) Например, вы захотели, чтобы атрибут сл (т. е. поле Full name) имел такое же значение, как атрибут sAMAccountName (поле Pre-Windows 2000 Logon Name (Имя входа пользователя (пред-Windows 2000)), или был равным некоторому вами определяемому идентификатору (ID). Нет проблем. Вместо главного окна оснастки Active Directory Users and Computers используйте окно Find Users, Contacts, and Groups (Пользователи, контакты и группы). Это окно (в отличие от главного окна оснастки) позволяет сортировать строки по содержимому любого столбца. "Спрячьте" столбец Name (Имя) и расположите столбцы в удобном для вас порядке. Для просмотра леса и перехода в любой контейнер используйте кнопки Browse (Обзор) и Find Now (Найти).
Экспорт списка объектов
Для документирования информации, хранящейся в Active Directory, можно экспортировать в файл любой отображаемый в окне список, а затем обрабатывать или печатать этот файл из приложений типа Word или Excel. Выберите контейнер или объект и нажмите кнопку Export List ^] или же выполните команду Export List (Экспортировать список) в контекстном меню или в меню Action (Действие). Можно выбирать формат сохраняемого текстового файла, задавая в качестве разделителей полей символы табуляции (.txt) или запятые (.csv). CSV-файлы легко импортируются в документы Microsoft Excel.
Конфигурирование оснасток
В предлагаемых системой (стандартных) административных оснастках отсутствуют некоторые полезные возможности, реализуемые технологией Microsoft Management Console (ММС). Эти возможности являются общими для любых консолей (документов) ММС, однако именно в административных оснастках их использование позволяет администратору сэкономить немало времени и сил. Судите сами.
Окно Favorites (Избранное)
В пользовательских консолях ММС в дополнение к стандартной вкладке Tree (Структура) появляется вкладка Favorites (Избранное). Можно выполнять просмотр Active Directory в стиле "веб" и сохранять страницы для последующего быстрого доступа. Выберите любой контейнер в окне Tree и выполните команду Add to Favorites (Добавить в избранные) в меню Favorites. Такая возможность очень полезна в больших доменах, имеющих множество подразделений (OU) и других объектов. Обратите внимание на то, что в избранные можно добавить любой контейнер Active Directory, про-
сматриваемый в различных оснастках (присутствующих в консоли ММС). Например, на вкладке Favorites могут одновременно отображаться ссылки на основные подразделения из разных доменов, авторитетные зоны DNS, области DHCP, соединения сайтов и т. д. Не забывайте и о традиционных средствах веб-навигации, таких как кнопки Back, Forward, Up one level и Refresh.
Создание пользовательских панелей задач (taskpads)
Администратор может создавать специализированные панели задач как для себя (для выполнения каких-то типовых задач), так и для пользователей, которым нужно выполнять специфические операции, или для младших администраторов, которым делегировано право управления некоторыми подразделениями или объектами.
Давайте рассмотрим пример создания панели задач для администрирования подразделений (OU). Эта панель позволит просматривать все учетные записи в OU и выполнять три конкретные операции — создавать компьютеры, пользователей и группы.
Выберите какое-нибудь подразделение в окне оснастки Active Directory Users and Computers и выполните команду New Taskpad View (Новый вид панели задач) в меню Action. Запустится мастер New Taskpad View Wizard (Мастер создания вида панели задач), который поможет вам выполнить все нужные действия. При его работе вы можете в любой момент вернуться назад и изменить выбранную опцию или введенные данные.
В окнах Taskpad Display (Отображение панели задач) и Taskpad Target (Целевой объект панели задач) согласитесь с предлагаемыми по умолчанию опциями. При таком выборе вкладка создаваемой панели задач будет появляться для всех подразделений в домене (но не для других доменных контейнеров!). Введите соответствующую информацию в окне Name and Description (Имя и описание). Когда мастер заканчивает работу (т. е. создается окно без кнопок задач), установите флажок Start New Task wizard (Запустить мастер создания новой задачи) в последнем окне мастера и нажмите кнопку Finish. Будет запущен следующий мастер — New Task Wizard.
По умолчанию в окне Command Туре (Тип команды) предлагается опция Menu command (Команда меню). В окне Shortcut Menu Command (Команда контекстного меню) выберите в списке Command source (Источник команд) опцию Tree item task (Задача в контексте дерева) (рис. 4.1). В этом случае вы сможете выбирать команды для всего объекта OU. Сначала выберите команду New->Computer (Новый компьютер).
В следующем окне введите имя задачи и ее описание. Затем можно выбрать для нее значок. После этого новая задача будет создана. Для того чтобы добавить к панели две других команды, установите флажок Run this wizard again
[New Task Wizard
х
Shortcut Menu Command
You can select a menu command from an item on the console tree or from the list in the details pane for that item.
Command source: : > i Tree tern task
;£anstildTtee:-:BBSK№^
S ^g Active Directory Domains and ^ r*> gy Active Directory Sites and Ser
В ^ Active Directory Users and Co
A {^1 w2k.dom
; ^ ADMINs ф Q Builtin ш-йа comps
Available cgmmands: g^
Open
Delegate Control...
Add members to a group...
Move...
Find...
New->Computer
New-> Contact New->Container
New-> Group
New->Organizational Unit
< Back | Цех! > I j • Cancel
Рис. 4.1. Выбор источника команд для новой панели задач
Ta Main Console - [Console Root\Active Directory Users and Computers [w2kdc4.w2k.dom]\w2k.dom\A... ИИ В
«*Й Cor>sole Window fclelp
; Action ^iew Eavontes {I Ф •*$ 1
Tree | Favorites |
LJ Console Root
It) ^& Active Directory Domain
IS О Active Directory Sites ar 8-^ Active Directory Users г
E ъУ w2k.dom
Administering OUs
+ I Builtin el comps uJ Computers
♦ <^l Demo
+ el Domain Controlli l+ I ForeignSecurityl
TypOSSilW^^^^^
1 Description В|
f^AdmGrp В Administrator f$DnsAdmins ($Domain Admins C Enterprise Administrator ^Enterprise Admins f$Schema Admins
Security Group - Global
User
Security Group - Domain Local
Security Group • Global
User
Security Group - Universal
Security Group - Universal
Built-in account for admini... DNS Administrators Group Designated administrators...
Designated administrators...
Designated administrators...
Quick creation of computers, users, and groups
Рис. 4.2. Пример панели задач
(Запустить этот мастер снова) в последнем окне мастера и нажмите кнопку Finish (Готово). При повторной работе мастера повторите все нужные действия, выбрав при первом проходе опцию New->User, а при вторичном проходе — опцию New->Group. На рис. 4.2 приведен пример панели задач, созданной в соответствии с описанной процедурой.
Панель задач можно модифицировать: добавлять/удалять задачи, менять ее свойства (опции). Для этого выберите панель (вкладку) и выполните команду Edit Taskpad View (Изменение вида панели задач) в меню Action.
Команды (задачи) можно определять как для всего контейнера, так и для отдельных (выбранных) объектов в нем. При просмотре дерева объектов на панели задач будут разрешены только те команды, которые применимы для выбранного объекта.
Оснастка
Active Directory Users and Computers
Оснастка Active Directory Users and Computers используется, наверное, чаще всех других административных инструментов. Вот почему администратору важно хорошо изучить все ее возможности. Особенно это важно, если домены содержат большое количество объектов, что затрудняет их поиск и работу с ними.
Подключение к домену или контроллеру домена
В каждый момент времени оснастка Active Directory Users and Computers может работать только с одним контроллером и, следовательно, с одним доменом. По умолчанию выбираются домен и контроллер домена, где в настоящий момент зарегистрировался пользователь (если имя домена не было изменено и сохранено при установке флажка Save this domain setting for the current console box (Сохранить установки домена для текущей консоли) — рис. 4.3). Для выбора домена поместите курсор в корень оснастки или доменный объект в окне структуры и выберите команду Connect to Domain (Подключение к домену) в меню Action. В окне Connect to Domain введите имя домена в поле Domain (см. рис. 4.3) или нажмите кнопку Browse (Обзор) и выберите домен в раскрывающемся доменном дереве. Обратите внимание на флажок Save this domain setting for the current console, с помощью которого можно сохранить в консоли несколько оснасток, настроенных на разные домены.
Аналогичным образом вы можете выбрать любой контроллер в текущем домене: используйте команду Connect to Domain Controller (Подключение к контроллеру домена) в меню Action. Это бывает нужным, когда по каким-то причинам (например, при выявлении проблем с репликацией) вам необхо-
димо администрировать какой-нибудь сервер глобального каталога или контроллер домена, владеющий некоторой FSMO-ролью, например, PDC Emulator. В окне Connect to Domain Controller (рис. 4.4) можно видеть имя текущего контроллера домена и список имеющихся контроллеров.
Рис. 4.3. Можно выбрать для администрирования любой домен, входящий в состав лесаРис. 4.3. Можно выбрать для администрирования любой домен, входящий в состав леса?|х?|хConnect to Domain ControllerConnect to Domain Controller
Рис. 4.3. Можно выбрать для администрирования любой домен, входящий в состав леса
Рис. 4.3. Можно выбрать для администрирования любой домен, входящий в состав леса
?|х
?|х
Connect to Domain Controller
Connect to Domain Controller
Domain: jsufcdom w2k dem
Current Domain Controller. w2k^
Change to| «21 do2. subdom. w2k. dom
Available controllers in subdom w2k. dem:
Щатёктг^ЖЫ^^^^^Any Writable Domain ControllerЩатёктг^ЖЫ^^^^^Any Writable Domain ControllerI SiteI Sitew2kdc2. subdom. w2k. domw2kdc2. subdom. w2k. domw2kdc3. subdom. w2k. domw2kdc3. subdom. w2k. domW2K-siteW2K-siteW2K-siteW2K-site
Щатёктг^ЖЫ^^^^^
Any Writable Domain Controller
Щатёктг^ЖЫ^^^^^
Any Writable Domain Controller
I Site
I Site
w2kdc2. subdom. w2k. dom
w2kdc2. subdom. w2k. dom
w2kdc3. subdom. w2k. dom
w2kdc3. subdom. w2k. dom
W2K-site
W2K-site
W2K-site
W2K-site
СафЫЖ,|.СафЫЖ,|.
СафЫЖ,|.
СафЫЖ,|.
Рис. 4.4. Выбор контроллера домена
Управление представлением данных каталога
У оснастки Active Directory Users and Computers есть несколько специфических опций, которые практически не сужают круг операций по администрированию, однако существенно влияют на количество представляемых объектов. Все эти опции рассматриваются ниже.
Режим Advanced Features (Дополнительные функции)
По умолчанию в основном режиме окна оснастки Active Directory Users and Computers отображается только пять узлов. Этого недостаточно для выполнения некоторых административных задач, и вам нужно включить режим Advanced Features, в котором также отображаются некоторые важные "неви-
димые" контейнеры и появляются дополнительные возможности. Для этого используется команда Advanced Features в меню View.
Одним из важнейших узлов, отображаемых в расширенном режиме, является контейнер System (рис. 4.5), который обеспечивает доступ ко многим системным объектам, например, к контейнеру MicrosoftDNS, хранящему информацию об интегрированных зонах DNS.
14 Active Directory Users and Computers14 Active Directory Users and Computers•! <^ Console Window Help• j fiction View ': <#= ** t Tree |•! <^ Console Window Help• j fiction View ': <#= ** t Tree |-1д1 -I-1д1 -I^ Active Directory Users and Comp [w2kdc4.^ Active Directory Users and Comp [w2kdc4.-UJ BuiltinI Computers^ Domain Controllers.| ForeignSecurityPrincipals1 LostAndFound- i1 Systemi| AdminSDHolder• +‘ ^ Default Domain PolicyJ Dfs-Configuration* c2j Fi'e Replication Service+ | FileLinksI IP SecurityIMeetings+ ]MicrosoftDNS+IPoliciesiJRAS and IAS Servers Access Check71 RpcServices• | WinsockServices' -Qj Users-UJ BuiltinI Computers^ Domain Controllers.| ForeignSecurityPrincipals1 LostAndFound- i1 Systemi| AdminSDHolder• +‘ ^ Default Domain PolicyJ Dfs-Configuration* c2j Fi'e Replication Service+ | FileLinksI IP SecurityIMeetings+ ]MicrosoftDNS+IPoliciesiJRAS and IAS Servers Access Check71 RpcServices• | WinsockServices' -Qj Usersw2k.dom 8 objectsName " I Type ~"! iBuilbnbuiltinDomainI ComputersContainer.^1 Domain Controll,.. Organizational Unitw2k.dom 8 objectsName " I Type ~"! iBuilbnbuiltinDomainI ComputersContainer.^1 Domain Controll,.. Organizational Unit_jForeign5ecurity... uJ LostAndFoundI System uJ Users ^t] Infrastructure_jForeign5ecurity... uJ LostAndFoundI System uJ Users ^t] InfrastructureContainer lostAndFound Container Container infrastructureUpdateContainer lostAndFound Container Container infrastructureUpdate| Description^| Description^Default container for upgraded comp Default container for new Windows V Default container for security identif Default container for orphaned obje< Builtin system settingsDefault container for upgraded userDefault container for upgraded comp Default container for new Windows V Default container for security identif Default container for orphaned obje< Builtin system settingsDefault container for upgraded user
14 Active Directory Users and Computers
14 Active Directory Users and Computers
•! <^ Console Window Help
• j fiction View ': <#= ** t Tree |
•! <^ Console Window Help
• j fiction View ': <#= ** t Tree |
-1д1 -I
-1д1 -I
^ Active Directory Users and Comp [w2kdc4.
^ Active Directory Users and Comp [w2kdc4.
-UJ Builtin
I Computers
^ Domain Controllers
.| ForeignSecurityPrincipals
1 LostAndFound
- i1 System
i| AdminSDHolder
• +‘ ^ Default Domain Policy
J Dfs-Configuration
* c2j Fi'e Replication Service
+ | FileLinks
I IP Security
IMeetings
+ ]MicrosoftDNS
+IPolicies
iJRAS and IAS Servers Access Check
71 RpcServices
• | WinsockServices
' -Qj Users
-UJ Builtin
I Computers
^ Domain Controllers
.| ForeignSecurityPrincipals
1 LostAndFound
- i1 System
i| AdminSDHolder
• +‘ ^ Default Domain Policy
J Dfs-Configuration
* c2j Fi'e Replication Service
+ | FileLinks
I IP Security
IMeetings
+ ]MicrosoftDNS
+IPolicies
iJRAS and IAS Servers Access Check
71 RpcServices
• | WinsockServices
' -Qj Users
w2k.dom 8 objects
Name " I Type ~"
! iBuilbnbuiltinDomain
I ComputersContainer
.^1 Domain Controll,.. Organizational Unit
w2k.dom 8 objects
Name " I Type ~"
! iBuilbnbuiltinDomain
I ComputersContainer
.^1 Domain Controll,.. Organizational Unit
_jForeign5ecurity... uJ LostAndFound
I System uJ Users ^t] Infrastructure
_jForeign5ecurity... uJ LostAndFound
I System uJ Users ^t] Infrastructure
Container lostAndFound Container Container infrastructureUpdate
Container lostAndFound Container Container infrastructureUpdate
| Description^
| Description^
Default container for upgraded comp Default container for new Windows V Default container for security identif Default container for orphaned obje< Builtin system settings
Default container for upgraded user
Default container for upgraded comp Default container for new Windows V Default container for security identif Default container for orphaned obje< Builtin system settings
Default container for upgraded user
Рис. 4.5. Просмотр дерева доменных объектов в режиме Advanced Features
Что еще важнее, только в режиме Advanced Features в окне Properties для каждого объекта Active Directory появляются вкладки Object (Объект) и Security (Безопасность). На вкладке Security отображаются, в частности, все изменения, связанные с делегированием прав на управление объектами каталога. Если, например, вам нужно отозвать административные права, данные пользователю или группе в отношении некоторого объекта, то следует открыть эту вкладку в свойствах объекта и удалить соответствующие разрешения.
Существует еще одна замечательная возможность, связанная с описываемым режимом. Возможно, вы обратили внимание на то, что на клиентских компьютерах под управлением Windows 2000 при просмотре узла Directory в папке Му Network Places (Мое сетевое окружение) видны все пять "стан-
дартных" узлов (не считая дочерних доменов, если таковые имеются) (см. рис. 4.6, где изображены корневой домен и два дочерних домена). Иногда пользователям мешает эта информация, а подчас администратор не хочет, чтобы пользователи видели эти узлы. Можно управлять "видимостью" любого контейнера или объекта Active Directory, используя необязательный булевский атрибут showInAdvancedViewOnly (ему можно присваивать значения FALSE или TRUE, регистр букв не имеет значения.) У большинства объектов Active Directory этот атрибут определен, и вы можете задать ему нужное значение с помощью оснастки ADSI Edit (см. раздел "Оснастка ADSI Edit" ниже в текущей главе). Если у некоторого объекта (контейнера) значение этого атрибута равно TRUE, данный объект не будет отображаться при просмотре домена в сетевом окружении или в основном режиме окна оснастки Active Directory Users and Computers. Значение этого атрибута не влияет на работу домена в целом. На рис. 4.7 изображена та же доменная структура, которая была показана на рис. 4.6, однако для некоторых доменных объектов значение атрибута showInAdvancedViewOnly изменено на TRUE, поэтому все пользователи леса не смогут увидеть содержимое этих доменов. (В реальных условиях такое ограничение может оказаться чересчур строгим, поэтому не забывайте о том, что данный пример является лишь иллюстрацией!)
61 ntds://mtra.subdom.w2k.dom/Domain Controllers61 ntds://mtra.subdom.w2k.dom/Domain ControllersView Favorites look Help• 0 ' ©Search 1^0^ ^History j У’ «УView Favorites look Help• 0 ' ©Search 1^0^ ^History j У’ «Уj Folders< it! ^ My Network Placesi ir: Entire Networki:+ -/^ Microsoft Windows Network;- ^ Directory!- _jJ w2ki+; LJBuiltin•& ОComputers1SiиЭ!Domain Controllersii+i ujForeignSecurityPrincipals1 -В-upsubdomI■+bCJBuiltin)• + J I Computersj+^DomainControllers;+ }ForeignSecurityPrincipals1■Ao^JIntra:* | Builtin] •* | Computersj Folders< it! ^ My Network Placesi ir: Entire Networki:+ -/^ Microsoft Windows Network;- ^ Directory!- _jJ w2ki+; LJBuiltin•& ОComputers1SiиЭ!Domain Controllersii+i ujForeignSecurityPrincipals1 -В-upsubdomI■+bCJBuiltin)• + J I Computersj+^DomainControllers;+ }ForeignSecurityPrincipals1■Ao^JIntra:* | Builtin] •* | ComputersW2KDC3W2KDC3Domain ControllersDomain Controllers+ I ForeignSecurityPrincipalsi+ ^ INTRAI+. i | Usersji+j _J Users1 ; _ B-LJ Users1 object(s)+ I ForeignSecurityPrincipalsi+ ^ INTRAI+. i | Usersji+j _J Users1 ; _ B-LJ Users1 object(s)
61 ntds://mtra.subdom.w2k.dom/Domain Controllers
61 ntds://mtra.subdom.w2k.dom/Domain Controllers
View Favorites look Help
• 0 ' ©Search 1^0^ ^History j У’ «У
View Favorites look Help
• 0 ' ©Search 1^0^ ^History j У’ «У
j Folders
< it! ^ My Network Places
i ir: Entire Network
i:+ -/^ Microsoft Windows Network
;- ^ Directory
!- _jJ w2k
i+; LJBuiltin
•& ОComputers
1SiиЭ!Domain Controllers
ii+i ujForeignSecurityPrincipals
1 -В-upsubdom
I■+bCJBuiltin
)• + J I Computers
j+^DomainControllers
;+ }ForeignSecurityPrincipals
1■Ao^JIntra
:* | Builtin
] •* | Computers
j Folders
< it! ^ My Network Places
i ir: Entire Network
i:+ -/^ Microsoft Windows Network
;- ^ Directory
!- _jJ w2k
i+; LJBuiltin
•& ОComputers
1SiиЭ!Domain Controllers
ii+i ujForeignSecurityPrincipals
1 -В-upsubdom
I■+bCJBuiltin
)• + J I Computers
j+^DomainControllers
;+ }ForeignSecurityPrincipals
1■Ao^JIntra
:* | Builtin
] •* | Computers
W2KDC3
W2KDC3
Domain Controllers
Domain Controllers
+ I ForeignSecurityPrincipals
i+ ^ INTRA
I+. i | Users
ji+j _J Users
1 ; _ B-LJ Users
1 object(s)
+ I ForeignSecurityPrincipals
i+ ^ INTRA
I+. i | Users
ji+j _J Users
1 ; _ B-LJ Users
1 object(s)
Рис. 4.6. Процедура просмотра всего доменного дерева может быть неудобной или нежелательной
Рис. 4.7. Можно полностью запретить клиентам просматривать родительские домена и "спрятать" ненужные объекты
Примечание }
Управлять "видимостью" объектов Active Directory можно также с помощью разрешений на доступ (access permissions). Оба метода имеют свои достоинства и недостатки, поэтому следует выбирать решение, наиболее оптимальное для конкретной ситуации. Разрешения, к примеру, позволяют более тонко управлять доступом к объектам, однако с их помощью вы не сможете сделать "невидимыми" лишь некоторые объекты контейнера.
Режим Users, Groups, and Computers as containers (Пользователи, группы и компьютеры как контейнеры)
Некоторые объекты Active Directory являются контейнерами, которые могут содержать другие объекты. По умолчанию это отношение визуально не представлено в окне оснастки Active Directory Users and Computers. Тем не менее, в некоторых ситуациях необходимо видеть отношения между объектами. Сравните, например, два экрана, показанных на рис. 4.8 и 4.9. На первом представлено стандартное изображение подразделения Domain Controllers и контроллера домена W2KDC4; на втором этот же контроллер домена показан как контейнер.
Как видно на рис. 4.9, контроллер домена имеет дочерние объекты, в частности объект опубликованного принтера. (Объект принтера можно переместить в любое другое подразделение. Работа принтера от этого не нарушится.)
[^ Active Directory Users and Computers
: ^ Console Window HelpJ — jSl И
Action View <f= -v , fV|, Щ X ^ Q I ^
v'g i$ ^ v <§ ■&
Tree |: Domain Controllers 1 objects
^ Active Directory Users and Compute!
ЭЙр subdom.w2k.dom5jw2KDC2 Computer
Q Builtin
. ■ ■ ' Computers
Domain Controllers
h Q ForeignSecurityPrincipals Lj Usersh Q ForeignSecurityPrincipals Lj UsersРис. 4.8. Контроллер домена — вид по умолчаниюРис. 4.8. Контроллер домена — вид по умолчанию
h Q ForeignSecurityPrincipals Lj Users
h Q ForeignSecurityPrincipals Lj Users
Рис. 4.8. Контроллер домена — вид по умолчанию
Рис. 4.8. Контроллер домена — вид по умолчанию
14 Active Directory Users and Computers
. <^ Console Window Help
; Action View , Ф> ^ Й'^0 X S’ 0 ^ S; Action View , Ф> ^ Й'^0 X S’ 0 ^ STree |Tree |5^ Active Directory Users and Computei t-j ^ w2k.dom*1Builtin+ I Computers"J tail Domain Controllers- ^W2KDC4: fjj NTFRS Subscriptions S' Jj ForeignSecurityPrincipals E? LJ LostAndFound Ж LJ SystemЖ - □ Usersn5^ Active Directory Users and Computei t-j ^ w2k.dom*1Builtin+ I Computers"J tail Domain Controllers- ^W2KDC4: fjj NTFRS Subscriptions S' Jj ForeignSecurityPrincipals E? LJ LostAndFound Ж LJ SystemЖ - □ UsersnW2KDC4 3 objects NameI Type^3 NTFRS SubscriptionsFR5 SubscyRIDSetrlpSet "W2KDC4 3 objects NameI Type^3 NTFRS SubscriptionsFR5 SubscyRIDSetrlpSet "53 W2KDC4-HP LaserJet...Printer53 W2KDC4-HP LaserJet...PrinterРис. 4.9. В режиме Users, Groups, and Computers as containers можно увидеть опубликованный в каталоге принтер, подключенный к выбранному контроллеру доменаРис. 4.9. В режиме Users, Groups, and Computers as containers можно увидеть опубликованный в каталоге принтер, подключенный к выбранному контроллеру домена
; Action View , Ф> ^ Й'^0 X S’ 0 ^ S
; Action View , Ф> ^ Й'^0 X S’ 0 ^ S
Tree |
Tree |
5^ Active Directory Users and Computei t-j ^ w2k.dom
*1Builtin
+ I Computers
"J tail Domain Controllers
- ^W2KDC4
: fjj NTFRS Subscriptions S' Jj ForeignSecurityPrincipals E? LJ LostAndFound Ж LJ System
Ж - □ Usersn
5^ Active Directory Users and Computei t-j ^ w2k.dom
*1Builtin
+ I Computers
"J tail Domain Controllers
- ^W2KDC4
: fjj NTFRS Subscriptions S' Jj ForeignSecurityPrincipals E? LJ LostAndFound Ж LJ System
Ж - □ Usersn
W2KDC4 3 objects NameI Type
^3 NTFRS SubscriptionsFR5 Subsc
yRIDSetrlpSet "
W2KDC4 3 objects NameI Type
^3 NTFRS SubscriptionsFR5 Subsc
yRIDSetrlpSet "
53 W2KDC4-HP LaserJet...Printer
53 W2KDC4-HP LaserJet...Printer
Рис. 4.9. В режиме Users, Groups, and Computers as containers можно увидеть опубликованный в каталоге принтер, подключенный к выбранному контроллеру домена
Рис. 4.9. В режиме Users, Groups, and Computers as containers можно увидеть опубликованный в каталоге принтер, подключенный к выбранному контроллеру домена
Примечание )
Изначально все принтеры публикуются в Active Directory в виде дочерних объектов соответствующих компьютеров. Для удобства пользователей или администраторов эти объекты можно затем переместить в одно подразделение; однако команда Search (Поиск) является более удобным и корректным средством работы с принтерами.
Параметры фильтрации
При большом количестве объектов в Active Directory на поиск отдельных объектов может уходить много времени. Однако можно установить фильтр и просматривать только нужные объекты. Выберите команду Filter Options
4 Зак. 1096
(Параметры фильтрации) в меню View или нажмите кнопку Set Filtering Options У[ на стандартной панели инструментов. Тип отображаемых объектов можно выбрать из установленного списка или же можно создать собственный пользовательский фильтр. Процесс создания фильтра интуитивно понятен и прост. На рис. 4.10 показан фильтр для выбора пользовательских учетных записей, имена которых начинаются с буквы "а". Для активизации фильтра нужно нажать кнопку Add и добавить условие в список.
Внимание!
При использовании фильтров возникает потенциальная опасность при работе с контейнерами (подразделениями). Предположим, у вас установлен фильтр, который отображает только учетные записи компьютеров. Вам может показаться, что в подразделении нет объектов или оно содержит только ненужные учетные записи компьютеров. Можно забыть о том, что это подразделение может содержать объекты других типов, и нечаянно удалить подразделение целиком, а не только отображаемые учетные записи... Поэтому не забывайте выключать все фильтры перед выполнением операций удаления или перемещения контейнерных объектов!
Внимание!
Многие объекты Active Directory имеют атрибут Name. Имя объекта, к сожалению, никак не отображается в окне Find Custom Search. Поэтому вы сами должны помнить о том, параметры каких объектов используются в условиях поиска.
Поскольку добавленные условия объединяются по логическому И, объекты будут отображаться в окне оснастки, только если выполняются все указанные условия. Условия нельзя объединить по логическому ИЛИ.
Внимание!
Фильтры, особенно сложные, могут заметно уменьшить скорость отображения объектов в окне оснастки.
Рис. 4.10. Пример пользовательского фильтраРис. 4.10. Пример пользовательского фильтра
Рис. 4.10. Пример пользовательского фильтра
Рис. 4.10. Пример пользовательского фильтра
Помимо условий, в фильтрах можно использовать запросы LDAP . Откройте вкладку Advanced в окне Find Custom Search и введите запрос в виде символьной строки. Например, с помощью следующего запроса можно выбрать все пользовательские учетные записи, за исключением встроенных (поскольку у встроенных учетных записей не определен атрибут dispiayName):
(&(objectCategory=Person)(objectClass=user)(displayName=))
Внимание!
Все определенные пользователем условия и запросы LDAP объединяются по логическому И. Вы можете, к примеру, определить первое условие фильтра как "Name + Starts with + а", что позволит выбрать пользовательские учетные записи, имена которых начинаются с буквы "а". Если вы добавите второе условие, "Name + starts with + d" (или добавите запрос LDAP в виде (cn=d*)), то не сможете получить список записей с именами, начинающимися с букв "а" ИЛИ "d". (Для этого следует задать условие ИЛИ внутри одного запроса LDAP!) В этом случае на экране вообще ничего не появится, т. к. не существует учетных записей, имена которых начинаются с букв "а" И "d". Поэтому комбинацию условий фильтрации и запросов LDAP нужно рассматривать как последовательность запросов внутри других запросов, т. е. как пересечение множеств объектов, выбираемых по каждому критерию.
Поиск объектов Active Directory
Другим средством, облегчающим работу с большим числом объектов Active Directory, является опция Find (Поиск). В некотором смысле, она работает как и фильтр, только имеет более широкую область действия: объекты можно находить во всем каталоге (в лесе), в любом домене или в указанном контейнере. Для поиска объектов можно использовать команду Find, имеющуюся в контекстном меню каждого контейнера, или же можно выбрать контейнер и нажать кнопку Find objects in Active Directory (Поиск объектов в Active Directory) ^ на панели инструментов.
Набор полей поиска (и расширенного поиска) меняется в зависимости от типа объекта каталога (можно искать пользователей, компьютеры, принтеры и т. д.). Условия поиска для расширенных операций задаются так же, как и для фильтров, и имеют такие же ограничения. Опция Custom Search (Особый поиск) в списке Find предоставляет наибольшую гибкость в работе: вы можете указать в запросе практически любой атрибут любого объектного типа каталога.
Примечания j
• Обратите внимание на то, что список In (В) содержит список (history) контейнеров (подразделений), которые выбирались при обзоре доменного дерева (кнопка Browse).
В окне обнаруженных объектов вы можете выбирать в контекстных меню объектов те же команды, которые имеются для этих объектов в главном окне оснастки.
mixmixПример окна Find и результаты поиска показаны на рис. 4.11. С помощью указанного запроса во всем каталоге найдены все группы, имена которых начинаются с буквы "s". Этот пример иллюстрирует тот факт, что поиск можно выполнять во всем лесе доменов (в данном случае имеются три домена), а не только в домене или контейнере. Обратите также внимание на то, что группа Server Operators (Операторы сервера) имеется во всех трех доменах, однако только в одном домене (корневом домене леса) есть группа Schema Admins (Администраторы схемы).
mix
mix
| ^ Find Users, Contacts, and Groups
Уе 1 У View Це1р
Find: [Users, Contacts, and Groups *| In: [^ Entire Director Users, Contacts, and Groups '::'А|^^||^:ййFie[d v jFind: [Users, Contacts, and Groups *| In: [^ Entire Director Users, Contacts, and Groups '::'А|^^||^:ййFie[d v j[Name[NameStarts withStarts withзгзг| FjndNow| FjndNow5—™™1'5—™™1'Name(^Server Operators ^Server Operators ^Server Operators ^Schema AdminsName(^Server Operators ^Server Operators ^Server Operators ^Schema Admins^:^bDjs^l$^"'"^CN=5erver Operators,CN=Builtin,DC=w2000,DC=domCN=Server Operators,CN=Builtin,DC=subdom,DC=w2k,DC=domCN-Server Operators,CN=Builtin, DC—w2k,DC—domCN=5chema Admins,CN=Users, DC=w2k,DC=dom^:^bDjs^l$^"'"^CN=5erver Operators,CN=Builtin,DC=w2000,DC=domCN=Server Operators,CN=Builtin,DC=subdom,DC=w2k,DC=domCN-Server Operators,CN=Builtin, DC—w2k,DC—domCN=5chema Admins,CN=Users, DC=w2k,DC=domI Type | DescriptionI Type | DescriptionGroup Group Group GroupGroup Group Group GroupMembers can administer domain servers Members can administer domain serversMembers can administer domain servers Designated administrators of the schemaMembers can administer domain servers Members can administer domain serversMembers can administer domain servers Designated administrators of the schema
Find: [Users, Contacts, and Groups *| In: [^ Entire Director Users, Contacts, and Groups '::'А|^^||^:йй
Fie[d v j
Find: [Users, Contacts, and Groups *| In: [^ Entire Director Users, Contacts, and Groups '::'А|^^||^:йй
Fie[d v j
[Name
[Name
Starts with
Starts with
зг
зг
| FjndNow
| FjndNow
5—™™1'
5—™™1'
Name
(^Server Operators ^Server Operators ^Server Operators ^Schema Admins
Name
(^Server Operators ^Server Operators ^Server Operators ^Schema Admins
^:^bDjs^l$^"'"^
CN=5erver Operators,CN=Builtin,DC=w2000,DC=dom
CN=Server Operators,CN=Builtin,DC=subdom,DC=w2k,DC=dom
CN-Server Operators,CN=Builtin, DC—w2k,DC—dom
CN=5chema Admins,CN=Users, DC=w2k,DC=dom
^:^bDjs^l$^"'"^
CN=5erver Operators,CN=Builtin,DC=w2000,DC=dom
CN=Server Operators,CN=Builtin,DC=subdom,DC=w2k,DC=dom
CN-Server Operators,CN=Builtin, DC—w2k,DC—dom
CN=5chema Admins,CN=Users, DC=w2k,DC=dom
I Type | Description
I Type | Description
Group Group Group Group
Group Group Group Group
Members can administer domain servers Members can administer domain servers
Members can administer domain servers Designated administrators of the schema
Members can administer domain servers Members can administer domain servers
Members can administer domain servers Designated administrators of the schema
4 item(s) found
Рис. 4.11. Поиск объектов в Active Directory
Тонкая настройка окна Find
Режим отображения в окне, показанном на рис. 4.11, не является стандартным. Чтобы увидеть отличительные имена (т. е. все RDN-имена родительских объектов) найденных объектов, выберите команду Choose Columns (Выбор столбцов) в меню View, найдите столбец с именем Х500 Distinguished Name и добавьте его в список Columns shown (Отображаемые столбцы).
Для дальнейшей фильтрации результатов операции поиска выполните команду Filter в меню View. При этом в верхней части панели результатов в окне
Find появится панель фильтров. На рис. 4.12 показано, как можно отфильтровать некоторые учетные записи групп и пользователей среди большого числа аналогичных объектов.
Namei
X500 Distinguished Name^K-":^*№:||$g:'i:M
Description
• -■7
777
tree... Д'
{5 Enterprise Admins
CN=Enterprise Admins, OU=ADMINs, DC=w2k, DC=dom
Group
Designated administrators
Schema Admins
CN=Schema Admins, OU=ADMINs,DC=w2k,DC=dom
Group
Designated administrators
@Dns Admins
CN=DnsAdmins, OU=ADMINs, DC=w2k, DC=dom
Group
DNS Administrators Group
Domain Admins
CN=Domain Admins,OU==ADMIN$,DC==w2k,DC=dom
Group
Designated administrators
ADMINs
CN=ADMINs,OU=ADMINs,DC=w2k,DC=dom
Group
C Enterprise Admini...
CN=Enter prise Administrator, 0U=ADMINs, DC=w2k, DC=dom
User
C Administrator
CN=Administrator,OU=ADMINs,DC=w2k,DC=dom
User
Built-in account for adminis
1 1
1
>7 ltem(s) found and 185 filtered from view
Рис. 4.12. Фильтрация результатов поиска: среди всех административных учетных записей выбраны только те, которые входят в подразделение ADMINs
( Примечание )
Можно разрешить клиентам использовать опцию фильтрации (по умолчанию она выключена) с помощью политики Enable filter in Find dialog box, задаваемой в административных шаблонах пользователя.
Также можно увидеть родительские объекты для других объектов каталога: компьютеров, принтеров и т. д. Для этого нужно в окно Find добавить столбец Published At (Опубликовано). В данном столбце будут отображаться канонические имена родительских объектов. Например, для компьютера W2KPR01, принадлежащего домену w2k.dom и находящегося в подразделении COMPs, отображаемое имя будут таким: ntds://w2k.dom/C0MPs/w2KPR01.
Оснастка
Active Directory Sites and Services
Оснастка Active Directory Sites and Services является основным инструментом с графическим интерфейсом, с помощью которого администратор может конфигурировать Active Directory как распределенную сетевую службу. (Другие административные оснастки представляют Active Directory на логическом уровне как единое целое.) Можно практически забыть об этой оснастке, если вы работаете в небольшой сети, имеющей единственный сайт и несколько контроллеров домена. Однако в больших сетях, состоящих из многих сайтов, эта оснастка становится одним из основных средств администрирования Active Directory.
Оснастка Active Directory Sites and Services позволяет выполнять следующие операции:
Изменение топологии репликации в лесе (создание/удаление сайтов, подсетей, связей (links) и соединений).
Назначение связям стоимости пути (cost).
Изменение расписаний и интервалов для репликации внутри сайта и между сайтами.
Назначение серверов форпостов (bridgehead).
Запуск репликации внутри сайта и между сайтами.
Запуск процесса Knowledge Consistency Checker (КСС) для регенерации топологии репликации.
Делегирование пользователям или группам прав на управление сайтами, подсетями, серверами и другими контейнерами.
Настройка параметров безопасности и аудита для различных объектов, определяющих топологию репликации.
Выбор объектов GPO, привязка объектов GPO к сайтам и запуск оснастки Group Policy для редактирования объектов GPO.
Назначение контроллерам домена роли сервера глобального каталога.
Назначение политик запросов LDAP.
Рис. 4.13. Пример простой сети с двумя сайтами
На рис. 4.13 показано главное окно оснастки Active Directory Sites and Services, в котором представлены практически все основные элементы сетевой топологии: сайты, подсети, межсайтовые связи, соединения и серверы (контроллеры домена). Использование и конфигурирование этих элементов обсуждается в других главах книги, т. к. имеет смысл рассматривать эти вопросы не изолированно, а в контексте конкретных административных задач.
Оснастка
Active Directory Domains and Trusts
Оснастка Active Directory Domains and Trusts в первую очередь ориентирована на администратора предприятия и, в частности, предоставляет ему возможность быстрого просмотра леса доменов и выбора администрируемого домена. На рис. 4.14 показано главное окно этой оснастки, в котором отображается структура простого леса, состоящего из двух деревьев (с корневыми доменами w2000.dom и w2k.dom).
Если выбрать домен в окне структуры и выполнить команду Manage (Управление), присутствующую в контекстном меню или в меню Action, то для домена будет запущена оснастка Active Directory Users and Computer.
№; Active Directory Domains and Trusts№; Active Directory Domains and Trusts_|q|x_|q|xI j Action View J [ 4=010Tree |:v|8 Active Directory Domains and TrustsI j Action View J [ 4=010Tree |:v|8 Active Directory Domains and TrustsNameyjlsubdom.w2k.domNameyjlsubdom.w2k.domI Type domainDNSI Type domainDNSwZk.doiwZk.doi±г£у subcl±г£у subclManageManage
№; Active Directory Domains and Trusts
№; Active Directory Domains and Trusts
_|q|x
_|q|x
I j Action View J [ 4=010
Tree |:
v|8 Active Directory Domains and Trusts
I j Action View J [ 4=010
Tree |:
v|8 Active Directory Domains and Trusts
Name
yjlsubdom.w2k.dom
Name
yjlsubdom.w2k.dom
I Type domainDNS
I Type domainDNS
wZk.doi
wZk.doi
±г£у subcl
±г£у subcl
Manage
Manage
►►
►
►
View
Export List
Properties
Help
Starts the Microsoft Active Directory Users and Computer [
Рис. 4.14. Выбор администрируемого домена в сети предприятия (лесе доменов)
Использование
основного имени пользователя (UPN)
Так называемое основное имя пользователя (user principal name) может значительно упростить процесс регистрации пользователя в больших доменных
деревьях. При входе в сеть пользователи домена указывают свое имя в одном из следующих двух форматов:
В виде имени UPN, например, usergDNSdomainName (в этом случае список доменов в окне регистрации становится недоступным).
В виде имени учетной записи SAM (пред-Windows 2000) (без символа "@") с выбором домена из списка.
Каждый формат имеет свои преимущества. Однако при вводе длинных доменных имен, например domi.compi.entl.com., могут возникнуть неудобства. Первый из упомянутых форматов на самом деле является частным случаем более универсального формата имен: имяПoльзoвaтeля@cyффикcUPN. По умолчанию в качестве суффикса UPN используется DNS-имя того домена, в котором располагается учетная запись пользователя. Можно также задать дополнительные суффиксы, применяемые всеми пользователями леса доменов.
?Гх?ГхЧтобы добавить суффикс UPN, запустите оснастку Active Directqry Domain and Trusts, выберите корневой узел в окне структуры и выполните команду Properties в контекстном меню. Введите суффикс в поле Alternative UPN suffixes (Дополнительные суффиксы UPN) и нажмите кнопки Add и Apply. Введенный суффикс (w2k на рис. 4.15) будет появляться в диалоговом окне при создании нового пользователя.
?Гх
?Гх
Active Directory Domains and Trusts Properties
UPN Suffixes |
The names of the current domain and the root domain are the default user principal name (UPN) suffixes. Adding alternative domain names provides additional logon security and simplifies .user logon nahieso ' g
Alternative UPN suffixes:
OK
If you want alternative UPN suffixes to appear during user creation, add ithemiio the following.WiSSs-jgu
Cancel I Apply
Remove |
Рис. 4.15. Определение дополнительного суффикса UPN
Теперь можно выбирать любой суффикс UPN (имя текущего или родительского домена или один из дополнительных суффиксов) при создании пользователя или же можно изменить имя UPN для существующих пользователей. Создадим, к примеру, учетную запись пользователя с параметрами, показанными на рис. 4.16. При вводе имени входа имя пред-Windows 2000 дублируется, однако его можно изменить.
Созданный пользователь сможет регистрироваться в доменном дереве, используя следующие имена (пароль применяется один и тот же):
EAdmin@w2k — ИМЯ UPN
EAdm (и имя домена, выбранное из списка) — имя учетной записи SAM
Эти имена можно проверить с помощью оснастки ADSI Edit. IsAMAccountName — это обязательный атрибут, a userPrincipalName — необязательный.)
XXNew Object - User
X
X
w2k.dom/ADMIN$w2k.dom/ADMIN$
w2k.dom/ADMIN$
w2k.dom/ADMIN$
First name:First name:kast name:kast name:Fullname;Fullname;^Enterprise ‘^Administrator ^Enterprise Administrator^Enterprise ‘^Administrator ^Enterprise AdministratorInitials: [Initials: [User logon name: jEAdminUser logon name: jEAdmin|W2KD0M\|W2KD0M\@w2k@w2kEAdmEAdmРис. 4.16. Использование суффиксов UPN при создании нового пользователяРис. 4.16. Использование суффиксов UPN при создании нового пользователя
First name:
First name:
kast name:
kast name:
Fullname;
Fullname;
^Enterprise ‘^Administrator ^Enterprise Administrator
^Enterprise ‘^Administrator ^Enterprise Administrator
Initials: [
Initials: [
User logon name: jEAdmin
User logon name: jEAdmin
|W2KD0M\
|W2KD0M\
@w2k
@w2k
EAdm
EAdm
Рис. 4.16. Использование суффиксов UPN при создании нового пользователя
Рис. 4.16. Использование суффиксов UPN при создании нового пользователя
Примечание )
Обратите внимание на то, что по умолчанию встроенные учетные записи Administrator и Guest не имеют имен UPN.
Внимание!
Имена UPN не поддерживаются клиентами Windows 9х/МЕ (даже при установленном клиенте каталога DSCIient).
Понятно, что все имена учетных записей должны быть уникальными. SAM- имена (пред-Windows 2000) не могут дублироваться внутри домена. Полное
имя (full name) внутри некоторого подразделения может использоваться только один раз. Однако одно полное имя можно дать нескольким учетным записям, располагающимся в различных подразделениях (поскольку в этом случае канонические имена объектов будут различаться, например, domain.com/OUl/John Smith И domain.com/0U2/John Smith), если При ЭТОМ имена UPN и SAM будут разными (например, jsmith@domain.com и johnSmith@domain.com; JSMITH И JOHNS).
Проверка доверительных отношений
С помощью оснастки Active Directory Domains and Trusts администратор может проверять доверительные отношения между доменами и создавать новые отношения. В первую очередь это касается доверительных отношений с доменами Windows NT 4.0, поскольку такие отношения должны создаваться вручную (см. главу 3 "Развертывание Active Directory'}. Однако иногда возникает необходимость создания явных, односторонних доверительных отношений между доменами Windows 2000, относящихся к разным доменным деревьям или, даже, к одному дереву. Например, это может потребоваться для уменьшения времени регистрации в "удаленном" домене. Под удаленностью в данном случае подразумевается "расстояние" между доменами в структуре деревьев, образующих лес доменов. В следующем примере (рис. 4.17) домены doml.compl.entl.com И dom2.comp2.ent2.com МОЖНО считать "удаленными", поскольку доверия между доменами в деревьях, входящих в лес, устанавливаются через корневые домены деревьев.
Корневой домен дерева Корневой домен дерева
domt .compi ,ent1 .comdom2.comp2.ent2.com
Рис. 4.17. Прямое доверительное отношение (shortcut trust) между двумя "удаленными" доменами
Для проверки доверительного отношения между доменами откройте окно свойств домена, выберите отношение на вкладке Trusts (Доверия), нажмите
кнопку Edit (Изменить), а в следующем окне — кнопку Verify (Проверка). Если отношение находится в рабочем состоянии, появляется сообщение: "The trust has been verified. It is in place and active." (Доверие проверено, сконфигурировано и активно.) Если система сообщает об ошибке и предлагает сбросить (reset) отношение, ответьте утвердительно. Обычно в этом случае отношения успешно восстанавливаются. Для проверки и обновления доверительных отношений можно также пользоваться утилитой NetDom.exe.
Оснастка ADSI Edit
С помощью оснастки ADSI Edit, входящей в пакет Support Tools, можно получить "низкоуровневый" доступ к Active Directory. Она позволяет выполнять следующие операции:
Непосредственное подключение к любому объекту Active Directory с использованием отличительного имени объекта.
Просмотр, перемещение и переименование объектов Active Directory, а также модификация любых их атрибутов (если эта операция допустима).
Настройка параметров безопасности "с точностью" до одного атрибута.
Выполнение запросов по всему дереву доменов и их сохранение для последующего использования.
Создание и удаление объектов любых типов.
Работа с Глобальным каталогом.
Подключение к разделам каталога
Только что установленная оснастка ADSI Edit сконфигурирована для работы с тремя пространствами имен Active Directory, также называемыми контекстами или разделами. Эти контексты перечислены ниже (для примера в скобках приведены отличительные имена контекстов для домена с DNS- именем domain.com):
Контекст доменных имен (DC=domain,DC=com)
Конфигурация (CN=Configuration,DC=domain,DC=com)
Схема (CN=Schema,CN=Configuration,DC=dontain,DC=com)
Первый контекст имен реплицируется между всеми контроллерами, входящими в конкретный домен. Два других контекста реплицируются между всеми контроллерами, входящими в доменное дерево.
Имеется еще один специальный объект (см. главу 1 "Концепции Active Directory и терминология"), к которому может подключаться оснастка ADSI Edit:
RootDSE
Примечание )
Обратите внимание на то, что оснастка ADSI Edit отображает только информационные (LDAP) атрибуты объекта RootDSE. Операционные (системные) атрибуты, такие как isSynchronized или isGlobalCatalogReady, недоступны.
Автономную оснастку ADSI Edit можно добавлять к любой консоли ММС, открытой в авторском режиме. В этом случае никаких соединений не создается. Как уже говорилось, в пользовательской консоли ММС появляется вкладка Favorites, которая в данном случае может упростить работу с многоуровневыми структурами объектов Active Directory (которые, как правило, имеют довольно длинные имена LDAP).
Для создания нового соединения (connection) выберите корень дерева в окне структуры и выполните команду Connect to в контекстном меню. Дайте соединению имя в поле Name и введите отличительное имя объекта или выберите предопределенное пространство имен в списке Naming Context (рис. 4.18). Для работы можно выбирать любые домены или серверы каталога.
ххConnection
х
х
У amer] Domain NC Path: [iDAPT/wiM ^CtinhSfitidn Points $gC:£listiritiuisheM^
Г5" Naming Context: ijbomain NC
;[Domain NC
Configuration Container
Г Comp RootDSE
Schema
I Г Select or type a domain or server:
) <♦ Default (Domain or server that you Jogged in to)
Advanced... |Advanced... |;|gi#:$^;|gi#:$^Рис. 4.18. Подключение к некоторому пространству именРис. 4.18. Подключение к некоторому пространству имен
Advanced... |
Advanced... |
;|gi#:$^
;|gi#:$^
Рис. 4.18. Подключение к некоторому пространству имен
Рис. 4.18. Подключение к некоторому пространству имен
Соединение с любым объектом каталога можно выполнить в процессе просмотра дерева объектов. Выберите объект и выполните команду New Connection from here (Новое соединение с этим объектом) в контекстном меню. Все новые соединения сохраняются при выходе из оснастки.
В окне Advanced (Дополнительные параметры) (нажмите кнопку Advanced в окне Connection) можно указать альтернативное имя пользователя и его пароль, номер порта и протокол: LDAP или Global Catalog. Для просмотра или
изменения свойств соединения выполните команду Settings в его контекстном меню. Любое соединение можно удалить при помощи команды Remove.
Редактирование атрибутов объектов Active Directory
Рассмотрим работу с оснасткой ADSI Edit на двух примерах, в которых также содержатся некоторые советы, полезные для администратора.
Пример 1. Установка запрета на просмотр объектов каталога
ИЕЗИЕЗДавайте на примере атрибута showInAdvancedViewOnly (см. выше раздел "Режим Advanced Features") рассмотрим методы поиска атрибутов некоторого объекта Active Directory и изменения их значений. Предположим, нам нужно запретить просмотр контейнера Builtin. Найдите его на панели структуры в окне оснастки ADSI Edit и нажмите кнопку Properties на панели инструментов. В появляющемся окне раскрывающийся список Select a property to view (Выбор просматриваемого свойства) содержит все атрибуты выбранного объекта. Можно быстро найти атрибут в списке, вводя первые символы имени атрибута (рис. 4.19). Когда атрибут найден, введите новое значение —
ИЕЗ
ИЕЗ
CN=Builtin Properties
Attributes | Security];
Path: LDAP:7/w2kdc4.w2k.dom/CN4.ui!tin,D£^^^
Class: LuilliriDomain
Select which properties to view: JoptionaT
■Attribute Values■Attribute Values7 Syntax:7 Syntax:(Boolean(BooleanEdit Attribute:Edit Attribute:Value(s):Value(s):jpALSEjpALSEshowl rAdvancedViewO nly queryPolicyBL repIPropertyM etaD ata replUpf oDateVector repsFromrepsTo revision sDRightsEffective serverReferenceBL serverRoleserverStateshowl rAdvancedViewO nly queryPolicyBL repIPropertyM etaD ata replUpf oDateVector repsFromrepsTo revision sDRightsEffective serverReferenceBL serverRoleserverStateshowIrAdvancedViewOnlyshowIrAdvancedViewOnlyClearClear
■Attribute Values
■Attribute Values
7 Syntax:
7 Syntax:
(Boolean
(Boolean
Edit Attribute:
Edit Attribute:
Value(s):
Value(s):
jpALSE
jpALSE
showl rAdvancedViewO nly queryPolicyBL repIPropertyM etaD ata replUpf oDateVector repsFrom
repsTo revision sDRightsEffective serverReferenceBL serverRole
serverState
showl rAdvancedViewO nly queryPolicyBL repIPropertyM etaD ata replUpf oDateVector repsFrom
repsTo revision sDRightsEffective serverReferenceBL serverRole
serverState
showIrAdvancedViewOnly
showIrAdvancedViewOnly
Clear
Clear
Рис. 4.19. Поиск
и редактирование атрибута объекта Active Directory
true (или true, это не имеет значения) в поле Edit Attribute (Редактировать атрибут) и нажмите кнопки Set (Установить) и Apply (Применить). (Для удаления значения некоторого атрибута нажмите кнопку Clear. Если атрибут имеет множество значений, выберите нужное и нажмите кнопку Remove.)
Пример 2. Включение команды создания контейнеров в пользовательский интерфейс
Этот пример показывает, как с помощью оснастки ADSI Edit можно изменять схему каталога.
По умолчанию оснастка Active Directory Users and Computers на позволяет создавать новые объекты типа Container. Однако иногда такая опция может быть полезной. Чтобы ее реализовать, необходимо модифицировать схему.
Подключитесь к разделу (контексту) Schema.
Откройте папку с отличительным именем схемы и найдите объектный класс контейнера (CN=Container).
В окне свойств выберите необязательный атрибут defaultHidingValue (по умолчанию он имеет значение true).
Введите слово false в поле Edit Attribute и последовательно нажмите кнопки Set, Apply и ОК.
Выберите узел Schema и выполните команду Update Schema Now (Обновить схему) в контекстном меню.
Если кэш схемы обновлен успешно, запустите оснастку Active Directory Users and Computers (перезапустите ее, если она была открыта) и проверьте, появился ли объект Container в меню Action | New.
Создание пользовательского запроса
Запрос (query) в среде оснастки ADSI Edit представляет собой пользовательский шаблон для отображения выборочных объектов в окне структуры. Это упрощает работу с большим количеством объектов или с объектами, относящимися к различным контейнерам Active Directory. Запросы можно создавать для любого пространства имен Active Directory. Не забывайте о том, что контекст доменных имен относится только к конкретному домену, и, следовательно, область запросов в этом контексте ограничена рамками одного домена. (Это не распространяется на запросы в контекстах Configuration и Schema, а также на запросы к Глобальному каталогу.)
Давайте для примера создадим запрос для опубликованных в домене папок. В окне структуры выберите узел, относящийся к контексту доменных имен, и выполните команду New | Query в контекстном меню. Дайте запросу произвольное имя и, нажав кнопку Browse (Обзор), откройте окно для выбора
контейнера-базы поиска. В нашем случае это будет корневой домен w2k.dom. Далее нужно определить сам запрос. Можно непосредственно ввести запрос LDAP в поле Query String или, нажав кнопку Edit Query, запустить мастер, который поможет вам создать пользовательский фильтр (см. выше раздел "Параметры фильтрации”, рис. 4.10). Сгенерированная строка отображается в поле Query String (рис. 4.20). (Не забывайте о правилах построения пользовательских фильтров!)
New Query
Mame: ' (All folders
Boot 9tSearclrf™g$6H
Browse..?
Query String:-
l^drt Query. j|l^drt Query. j|Cancel jCancel j(8^(oЬiectCategory=volumeKcn=,))
l^drt Query. j|
l^drt Query. j|
Cancel j
Cancel j
pQuery:St6pe||®^
,k '<• ■ Subtree Search ; '; i
Г One Level Search .ТДД: Д
Рис. 4.20. В этом окне представлены все параметры, необходимые для создания пользовательского запроса
Для того чтобы увидеть все папки, нужно в качестве имени папки указать символ "*". Выберите для запроса нужную область поиска — Subtree Search (Поиск в поддереве) или One Level Search (Поиск на один уровень вглубь).
^ADSIEdit
^ Console Ц/indow Help:. fiction Sew II 4= •♦ | 0[ЁЙ Q G^ I cS"^ Console Ц/indow Help:. fiction Sew II 4= •♦ | 0[ЁЙ Q G^ I cS"laid,laid,Tree |Tree |^ AD5I Edit^ AD5I Edit- J- J0 00 0|aII folders [DC=^|aII folders [DC=^NameI ClassI Distinguished Name® CN=*Working MaterialsvolumeCN“Working MaterialsJOU=Personal,DC=w2k,DC«dom$1 CN-InfovolumeCN=Info,OU=Admini5t:ration,DC=w2k,DC=dommjeCN«DocumentsvolumeCN=Documents,OU=Admini$trationJDC=w2k,DC=dom<1NameI ClassI Distinguished Name® CN=*Working MaterialsvolumeCN“Working MaterialsJOU=Personal,DC=w2k,DC«dom$1 CN-InfovolumeCN=Info,OU=Admini5t:ration,DC=w2k,DC=dommjeCN«DocumentsvolumeCN=Documents,OU=Admini$trationJDC=w2k,DC=dom<1* АН folders ioC-wZk,DC~dom] 3 Obfect(s)* АН folders ioC-wZk,DC~dom] 3 Obfect(s)Configuration Container [w2l Schema [w2kdc4.w2k.dom]Configuration Container [w2l Schema [w2kdc4.w2k.dom]Domain NC [w2kdc4.w2k.dom] I DC=w2k,DC=domDomain NC [w2kdc4.w2k.dom] I DC=w2k,DC=dom
^ Console Ц/indow Help:
. fiction Sew II 4= •♦ | 0[ЁЙ Q G^ I cS"
^ Console Ц/indow Help:
. fiction Sew II 4= •♦ | 0[ЁЙ Q G^ I cS"
laid,
laid,
Tree |
Tree |
^ AD5I Edit
^ AD5I Edit
- J
- J
0 0
0 0
|aII folders [DC=^
|aII folders [DC=^
Name
I Class
I Distinguished Name
® CN=*Working Materials
volume
CN“Working MaterialsJOU=Personal,DC=w2k,DC«dom
$1 CN-Info
volume
CN=Info,OU=Admini5t:ration,DC=w2k,DC=dom
mje
CN«Documents
volume
CN=Documents,OU=Admini$trationJDC=w2k,DC=dom
<1
Name
I Class
I Distinguished Name
® CN=*Working Materials
volume
CN“Working MaterialsJOU=Personal,DC=w2k,DC«dom
$1 CN-Info
volume
CN=Info,OU=Admini5t:ration,DC=w2k,DC=dom
mje
CN«Documents
volume
CN=Documents,OU=Admini$trationJDC=w2k,DC=dom
<1
* АН folders ioC-wZk,DC~dom] 3 Obfect(s)
* АН folders ioC-wZk,DC~dom] 3 Obfect(s)
Configuration Container [w2l Schema [w2kdc4.w2k.dom]
Configuration Container [w2l Schema [w2kdc4.w2k.dom]
Domain NC [w2kdc4.w2k.dom] I DC=w2k,DC=dom
Domain NC [w2kdc4.w2k.dom] I DC=w2k,DC=dom
Рис. 4.21. Пример запроса, который позволяет работать со всеми папками, опубликованными во всех контейнерах домена
Результаты выполненного запроса представлены на рис. 4.21. Обратите внимание на столбец Distinguished Name: выбранные папки относятся к различным подразделениям указанного домена. Это доказывает то, что запрос действительно сделан по всему домену. (Используя Глобальный каталог, можно выполнить запрос по всему лесу.)
Все запросы сохраняются при закрытии окна оснастки и обновляются при ее запуске. Содержимое запроса можно также обновить в любой момент (кнопка Refresh в контекстном меню). Для редактирования запроса выполните команду Settings (Параметры) в его контекстном меню.
Создание объектов Active Directory
С помощью оснастки ADSI Edit можно создавать объекты Active Directory любого типа. Однако такая практика не очень приветствуется, поскольку легко допустить ошибку при определении значений атрибутов объектов: нужно очень хорошо знать назначение всех его обязательных и необязательных атрибутов, а также диапазон допустимых значений атрибутов. Поэтому предпочтительнее пользоваться "стандартными" административными оснастками.
Если вы все же решили создавать некоторый объект вручную, выберите нужный родительский объект в окне структуры и выполните команду New | Object в контекстном меню. Запустится программа-мастер, которая запросит у вас все необходимые значения. Список объектов, которые можно создавать, зависит от типа выбранного родительского объекта. (См. также раздел "Расширение схемы"в главе 13 "Active Directory Service Interfaces (ADSI)".)
Работа с Глобальным каталогом
Возможность работы с серверами глобального каталога (GC) может понадобиться при устранении проблем, связанных с репликацией данных между серверами GC и представлением данных из доменов в Глобальном каталоге. Для этого можно подключаться к различным серверам GC и сравнивать значения хранящихся на них атрибутов (см. описание утилиты DsaStat в главе 8 "Сетевые и распределенные службы"). Также можно проверять представление атрибутов на конкретном сервере GC. (Управлять этим процессом можно с помощью оснастки Active Directory Schema; см. следующий раздел).
( Примечание )
В Глобальном каталоге представлены лишь некоторые атрибуты объектов Active Directory. Когда вы разрешаете/запрещаете копирование некоторого атрибута в Глобальный каталог, то можете протестировать эту операцию, используя оснастку ADSI Edit для проверки присутствия этого атрибута на конкретном сервере GC.
По сути способы работы с Глобальным каталогом ничем не отличаются от описанных выше процедур. Единственное отличие заключается в том, что при создании подключения к некоторому разделу Active Directory вы в окне Advanced должны выбрать переключатель Global Catalog. Понятно, что в Глобальном каталоге нельзя создавать объекты.
Оснастка Active Directory Schema
Оснастка Active Directory Schema является основным GUI-инструментом, позволяющим просматривать и модифицировать классы Active Directory и их атрибуты. (Второй имеющийся инструмент — оснастка ADSI Edit; работа с ней требует значительно более глубокого знакомства с внутренним устройством Active Directory. Два других пути модификации схемы — использование сценариев или утилит для пакетной обработки, таких как LDIFDE и CSVDE.) Эта оснастка позволяет просматривать идентификаторы (Х.500 OID) классов и атрибутов, диапазоны допустимых значений атрибутов, обязательные и необязательные атрибуты классов, а также другую метаинформацию об атрибутах и классах.
Установка
Оснастка Active Directory Schema по умолчанию устанавливается на контроллерах домена. (Она также включена в пакет Windows 2000 Administration Tools и может устанавливаться на любом компьютере под управлением Windows 2000.) При этом оснастка не появляется ни в Start, ни на Панели управления, и ее нужно вручную добавлять к какой-нибудь консоли ММС. Перед этим необходимо лишь зарегистрировать библиотеку DLL с помощью следующей команды: regsvr32 schrnmgmt.dll
Необходимо получить сообщение, показанное на рис. 4.22.
RegSvr32RegSvr32X
RegSvr32
RegSvr32
DIIRegisterServer in schmmgmt.dll succeeded.
|;* OK*|;* OK*Рис. 4.22. При успешной регистрации DLL-файла должно появиться это сообщение
|;* OK*
|;* OK*
При установке на компьютере пакета Windows 2000 Administrative Tools (см. главу 5 "Типовые административные задачи") соответствующая библиотека DLL регистрируется автоматически.
После того как файл schmmgmt.dll зарегистрирован на компьютере, можно создать документ ММС (представляющий собой консоль, сохраненную с
произвольным именем), содержащий оснастку Active Directory Schema, или добавить оснастку к существующей пользовательской консоли.
Модификация схемы
Изменения схемы разрешены только на том контроллере домена, который владеет FSMO-ролью Schema Master. Рекомендуется не обходить это требование. По умолчанию изменения схемы запрещены. Поэтому перед тем, как модифицировать схему, запустите оснастку Active Directory Schema (которая по умолчанию привязана к владельцу роли Schema Master) и в окне Change Schema Master (Изменение основного контроллера операций) установите флажок The Schema may be modified on this Domain Controller (Схема может быть изменена на этом контроллере домена). После этого вы можете изменять саму схему и разрешения на доступ к объектам схемы.
Внимание!
По умолчанию схему могут модифицировать только члены группы Schema Admins (Администраторы схемы). Однако можно предоставить такое право и другим пользователям.
Изменения схемы каждые 5 минут "сбрасываются" из кэша на диск. Для ускорения этого процесса можно перезагрузить схему вручную.
Чтобы модифицировать и, в особенности, расширять схему, нужно глубоко понимать концепции Active Directory и структуру классов. Эти вопросы заслуживают отдельной книги. (Некоторая базовая информация дается в главе 13 "Active Directory Service Interfaces (ADSI)".) Однако даже при обычной эксплуатации каталога у администратора может возникнуть необходимость выполнить некоторые операции, например, перечисленные ниже (даны имена флажков на вкладке General в окне свойств атрибутов; см. рис. 4.24):
Index this attribute in the Active Directory (Индексировать этот атрибут в Active Directory). Индексирование атрибута ускоряет выполнение часто используемых запросов, в которых указан данный атрибут.
Replicate this attribute to the Global Catalog (Репликация этого атрибута в Глобальный каталог). Если некоторый атрибут включен в Глобальный каталог, его значения можно получать, выполняя запросы в рамках всего леса.
Deactivate this attribute (class) (Отключить этот атрибут/класс). Если некоторый вновь созданный (например, тестовый) атрибут или класс еще не используется в Active Directory (т. е. не создавались объекты этого класса, или атрибут не добавлялся к имеющимся классам), можно "запретить" его. (Атрибуты и классы Active Directory нельзя удалить?)
Чтобы выполнить перечисленные операции, в окне структуры раскройте узел Attributes или Classes и найдите нужный атрибут или класс. Откройте окно Properties и установите соответствующий флаг на вкладке General.
Внимание!
После того как новый атрибут добавляется в Глобальный каталог, изменения будут реплицироваться по всему лесу доменов. (Это относится ко всем операциям по модификации схемы.) Этот процесс может создать заметный трафик в сети. Поэтому подобные операции не следует выполнять часто, и их нужно хорошо планировать.
Расширение схемы
На самом деле расширение схемы — не слишком сложная операция, однако весьма серьезная. Всегда нужно помнить о том, что все расширения схемы являются необратимыми (даже если вы восстановите Active Directory с резервной копии!), и последующая репликация может создать заметный сетевой трафик в масштабах всего леса.
Давайте на примерах рассмотрим процесс создания нового атрибута и нового класса. (Вопросы расширения схемы также описаны в главе 13 "Active Directory Service Interfaces (ADSI)" и главе 14 "Использование ADSI для администрирования ".)
Создание атрибута
Перед тем как создавать атрибут, вы должны выполнить следующие операции:
В соответствии с рекомендациями Microsoft выбрать для атрибута общее имя атрибута (common name) и внешнее имя LDAP (LDAP display name).
Получить базовый идентификатор (Х.500 OID) и добавить к нему собственный идентификатор атрибута.
Выбрать синтаксис атрибута.
При необходимости выбрать минимальное и максимальное значения атрибута.
Внимание!
Базовые идентификаторы (Х.500 OID) — один для классов и один для атрибутов — получаются для организации только один раз. Затем к базовым идентификаторам добавляются последовательно увеличивающиеся собственные коды.
Когда вся перечисленная информация собрана, в окне структуры выберите узел Attributes и выполните команду Create Attribute (Создать атрибут) в контекстном меню. В предупреждающем окне нажмите кнопку Continue (Далее). Заполните поля в окне Create New Attribute. (Все поля за исключением Minimum и Maximum являются обязательными.) Нажмите кнопку ОК. В примере на рис. 4.23 представлена вся информация, необходимая для создания строкового атрибута.
Create New Attribute
BB
^ Create a New Attribute Object... '.A?/ .^t-.ridentificatitinTAi;-'-'::--^
i Common Name:■ |My-Corp-TEST-String-Attribute
i: LDAP Display Name: ' jmyCorp-TEST-StringAttribute lAUnique-liSOb^
r Syntax and Range •—
■L^ntax:vv;^t
[Minimum: . . .
| Maximum:
Г Multi-Valued <
[Unicode Siring
Рис. 4.23. Пример создания нового строкового атрибута
ImyCorp-TEST-StringAttribute? Properties '
?|x|
■^[■Geneiail|v^?||:^6^^
Description:|A-Test-Attfibute#
:CommonName: |My-Ccrp-TEST-Stnng-Atlrib;ile / ■
X500 DID: ; ■ |1.2.84O.113556.1.4.7000.233.28688.28684.8.551
■■■A|-|ASyhta^ahd-RahgeA|;B|l®|A^i0/---AA
i Syntax: ■■■■■AA\g'j|Ut^
1 Maximum: :1
l_ T his attribute is single-valued. _ _
Г ghow objects of this class while browsing.
Г Deactivate this attribute.
Г Index this attribute in the Active Directory.
Г" -i'-ijr-i. ^/i. •-Ujir,,;’.N-'1
Г“ Replicate this attribute to the Global Catalog. Г"w'wi* duv" .tng-i uzr
^IKiBsSSE'iii’S^iJWSlSlsl
Рис. 4.24. Свойства атрибута
Внимание!
Если у вас возникла ошибка "Schema update failed in recalculating validation cache" (Ошибка обновления схемы при пересчете кэша проверки), проверьте OID. Возможно, что он уже используется в схеме.
Теперь вы можете найти новый атрибут в списке, просмотреть его свойства (рис. 4.24), дать атрибуту описание и установить нужные флажки. После этого созданный атрибут можно использовать, т. е. добавлять его к имеющимся классам (см. текст ниже и в главе 14).
Создание класса
Чтобы создать класс, нужно собрать следующую информацию:
Общее имя (common name) и внешнее имя LDAP (LDAP display name), которые должны соответствовать рекомендациям Microsoft.
Базовый идентификатор (Х.500 OID) с добавленным собственным идентификатором класса.
Тип класса (обычно структурный) и родительский класс (необязательно; по умолчанию — top).
Список обязательных (mandatory) и необязательных (optional) атрибутов класса (если структурный или вспомогательный класс наследуют атрибуты только от родительского класса и не имеют собственных атрибутов, то зачем же создавать такой класс?).
Возможные старшие (possible superiors) — контейнеры, в которых разрешается создавать объекты данного класса.
В окне структуры выберите узел Classes и выполните команду Create Class в контекстном меню. В окне предупреждения нажмите кнопку Continue. Заполните все поля в окне Create New Schema Class. Этот этап иллюстрирован на рис. 4.25. Нажмите кнопку Next.
В следующем окне (рис. 4.26) можно добавить к классу обязательные и необязательные атрибуты. Если оба списка оставить пустыми, новый класс будет иметь атрибуты только родительского класса. Добавлять и удалять атрибуты можно до тех пор, пока вы не нажмете кнопку Finish.
Внимание!
Необязательные атрибуты можно добавлять к классу в любой момент, однако обязательные атрибуты добавляются только при создании класса.
Чтобы указать возможные старшие объекты для нового класса, выберите класс из списка, откройте окно Properties и выберите вкладку Relationship (Отношения) (рис. 4.27). Добавьте нужный класс, нажмите кнопку Apply и закройте окно. Теперь процесс создания нового класса завершен.
Если создан вспомогательный (auxiliary) класс, его можно добавить к существующему классу. Выберите класс, в окне Properties откройте вкладку Relationship и добавьте новый класс в список Auxilary Classes (рис. 4.27).
Create New Schema Class
Next> | =: • CancelNext> | =: • Cancel
Next> | =: • Cancel
Next> | =: • Cancel
Рис. 4.25. Первый шаг по созданию нового объектного класса
Рис. 4.26. В этом окне вы можете добавлять обязательные и необязательные атрибуты
Рис. 4.27. В этом окне можно к классу добавлять вспомогательные классы и указывать контейнеры (possible superiors), в которых могут создаваться объекты данного класса
Добавление атрибутов к существующему классу
Вновь созданные или существующие атрибуты можно добавлять к классам — новым или стандартным. Для этого выберите нужный класс из списка и откройте окно Properties. Добавляемые атрибуты отображаются на панели Optional, расположенной на вкладке Attributes: нажмите кнопку Add и выберите атрибут из списка Select Schema Object (Выбор объекта схемы). Затем нажмите кнопку Apply и закройте окно. Перезагрузите схему или дождитесь момента, когда обновления схемы будут записаны на диск. После этого новые атрибуты класса будут "видимыми" для других административных инструментов.
Оснастка Group Policy
Основное назначение оснастки Group Policy — редактирование объекта групповой политики (group policy object, GPO), хранящегося или локально на компьютере, или в Active Directory. Во втором случае объекты GPO привязываются к контейнерами Active Directory: сайтам, доменам или подразделениям.
Необходимо хорошо представлять себе различия между оснасткой Group Policy и оснастками Security Policy — Local, Domain Controller или Domain
Security Policy. (По умолчанию три последние оснастки конфигурируются на каждом контроллере домена; оснастка Local Security Policy устанавливается на каждом компьютере под управлением Windows 2000.)
Оснастка Group Policy позволяет работать со всем объектом GPO и может запускаться из некоторых административных оснасток или из пользовательской консоли ММС. Она позволяет конфигурировать как политики компьютера, так и пользовательские политики (узлы GPO-объекта Computer Configuration (Конфигурация компьютера) и User Configuration (Конфигурация пользователя)).
Оснастки Security Policy обеспечивают доступ только к под-узлу Security Setting (Параметры безопасности) соответствующего объекта GPO и запускаются из меню Start (подменю Administrative Tools). Эти оснастки позволяют конфигурировать только политики компьютера.
( Примечания )
Не забывайте о двух других важных оснастках — Security Configuration and Analysis (Анализ и настройка безопасности) и Security Templates (Шаблоны безопасности) — которые помогают развернуть систему безопасности в масштабах предприятия. Механизмы безопасности нужно рассматривать отдельно, поэтому эти две оснастки не описываются в книге.
В главе 5 "Типовые административные задачи" описано, как принудительно обновить на компьютере политики компьютера или пользователя после того, как редактировались параметры некоторого объекта GPO.
Привязка к объекту GPO
Запущенная оснастка Group Policy всегда привязана к какому-нибудь объекту GPO. Следовательно, сначала нужно рассмотреть два вопроса: запуск самой оснастки и ее привязка к некоторому объекту GPO.
Существует три способа запуска оснастки Group Policy:
Из окна оснастки Active Directory Users and Computers. Выберите домен или подразделение, откройте окно Properties и перейдите на вкладку Group Policy (рис. 4.28).
Из окна оснастки Active Directory Sites and Services. Откройте окно Properties и перейдите на вкладку Group Policy.
Запустите Microsoft Management Console (введите mmc в окне Run) или откройте какую-нибудь пользовательскую консоль ММС и добавьте оснастку Group Policy. Окно Select Group Policy Object (Выбор объекта групповой политики) позволяет привязать оснастку к локальному объекту GPO на локальном (опция по умолчанию) или удаленном компьютере. Альтернативный вариант — нажать кнопку Browse (Обзор) и воспользо-
ваться окном Browse for a Group Policy Object (Поиск объекта групповой политики) (см. рис. 4.29).
w2k.dom PropertiesИ13
General j Managed By | Object [ Security Group Policy ]
Current Group Policy' Object Links for w2kCurrent Group Policy' Object Links for w2k
Current Group Policy' Object Links for w2k
Current Group Policy' Object Links for w2k
.Group Policy Object Links
^Default Domain Policy
Qi Special Domain Policy
Group Policy Objects higher in the list hove the highest priority. This list obtained from: w2kdc4 y.'2k dom
NewNewAdd.;.Add.;.EditEditOptions...Options...Delete,.,Delete,.,PropertiesPropertiesDownDown
New
New
Add.;.
Add.;.
Edit
Edit
Options...
Options...
Delete,.,
Delete,.,
Properties
Properties
Down
Down
| Close| CloseГ Block Policy inheritance
| Close
| Close
Рис. 4.28. Список объектов GPO для домена
В каждом из трех случаев вы имеете три возможности:
Выбрать один из существующих (и, как правило, уже подключенных к какому-нибудь контейнеру Active Directory) объектов GPO в списке и редактировать его с помощью оснастки Group Policy.
Создать новый объект GPO.
Добавить (привязать) существующий объект GPO к контейнеру Active Directory.
( Примечание )
Дальше различайте операцию привязки самой оснастки Group Policy к некоторому объекту GPO и операцию привязки некоторого объекта GPO к контейнеру Active Directory, выполняющуюся с помощью оснастки Group Policy.
Рассмотрим подробнее последний случай. Если вы нажмете кнопку Add на вкладке Group Policy, откроется окно Browse for a Group Policy Object. Пример основного вида этого окна представлен на рис. 4.29. (Для создания нового объекта GPO нужно щелкнуть на значке, обведенном кружком.)
[Browse for a Group Policy Object
Oomains/OUs | SiteSL]:=Cbfhp(jter^^^
Look jn: ]^Jw2k.dom
| Domain| DomainDomains. Oils and linked Group Policy Objects:
| Domain
| Domain
“ИётЬЖЙ”-.-:
bjJ subdom.w2k.dom
О ADMINs. w2k.dom
uJ COMPs. w2k.dom
LJdemo.w2k.dom
I Domain Controllers. w2k.dom ф Default Domain Policy
УЦCancel
Рис. 4.29. В этом окне видна вся структура подразделений домена и привязанные к ним объекты GPO
Как показано на рис. 4.30, все объекты GPO, существующие в домене, перечислены на вкладке All (Все), и вы можете быстро найти нужный объект GPO.
Browse for a Group Policy Object
Domains/OUs] Sites ] Computers АН |
Look jn: l^w2k.dom
All Group Policy Objects stored in this domain:
Name
^ADMINs OU's GPO
^COMPs OU's GPO
^Default Domain Controllers Policy
,^ Default Domain Policy ^W2k-Site's GPO
—
Рис. 4.30. Используйте эту вкладку для быстрого поиска объекта GPO, который вы хотите привязать к текущему контейнеру
Когда оснастка Group Policy запущена или добавлена к пользовательской консоли ММС, невозможно привязать эту оснастку к другому объекту GPO. Аналогичным образом, нельзя изменить контроллер домена, с которым работают стандартные оснастки Security Policy. Привязка оснасток возможна только в момент создания пользовательских консолей ММС, включающих оснастку Group Policy.
Можно найти контейнеры, которым привязан выбранный объект GPO. В окне оснастки Group Policy выберите ее корневой узел в окне структуры и откройте окно Properties для объекта GPO. Перейдите на вкладку Links (рис. 4.31). Выберите интересующий вас домен и нажмите кнопку Find Now (Найти). Если данный объект GPO привязан к каким-нибудь контейнерам, вы увидите их имена в списке.
?|х?|хOU Policy Properties
?|х
?|х
Дёпёй1и‘Дв№
Search for Sites. Domains and 0Id's that use this Group Policy Object. Click the Find Now button to start the search. This might take several minutes to complete.
’^omaiKK:| w2k dom’^omaiKK:| w2k domSites,DornaSites,Dorna|w2k.dom|w2k.dom1Э: <_TW_2J1Э: <_TW_2Jsubdom.w2k.dornsubdom.w2k.dornw2k.dom/te^ti^w^omw2k.dom/Personalw2k.dom/te^ti^w^omw2k.dom/Personal
’^omaiKK:| w2k dom
’^omaiKK:| w2k dom
Sites,Dorna
Sites,Dorna
|w2k.dom
|w2k.dom
1Э: <_TW_2J
1Э: <_TW_2J
subdom.w2k.dorn
subdom.w2k.dorn
w2k.dom/te^ti^w^om
w2k.dom/Personal
w2k.dom/te^ti^w^om
w2k.dom/Personal
Cancel ICancel IРис. 4.31. Можно быстро проверить, привязан ли выбранный объект GPO к другим контейнерам, помимо текущего контейнера
Cancel I
Cancel I
Внимание!
Не рекомендуется один и тот же объект GPO привязывать к различным доменам одновременно, т. к. это может создать проблемы с безопасностью и вызвать административные конфликты.
Создание и удаление объектов GPO
Для создания нового объекта GPO достаточно нажать кнопку New на вкладке Group Policy в окне Properties некоторого контейнера (см. рис. 4.28) или щелкнуть на соответствующем значке в окне Browse for a Group Policy Object (см. рис. 4.29). Дайте имя новому объекту GPO и можете редактировать его.
При удалении объекта GPO существует две опции:
□ Remove the link from the list (Изъять ссылку из списка, не удаляя объекта). Выбирая эту опцию, вы только разрываете связь между выбранным объектом GPO и текущим контейнером. Сам объект GPO остается неизменным, и вы можете использовать его впоследствии.
□ Remove the link and delete the Group Policy Object permanently (Изъять ссылку и окончательно удалить объект групповой политики). Как следует из самого сообщения, выбор этой опции приводит к более серьезным последствиям, поскольку не только разрывается связь, но и полностью удаляется весь объект GPO (помните о том, что этот объект может быть привязан к нескольким контейнерам!).
Выбор контроллера домена
Оснастка Group Policy всегда "нацелена" на определенный — предпочитаемый — контроллер домена. (Обратие внимание на строку This list obtained from... на рис. 4.28. По умолчанию все оснастки Group Policy, которые будут запускаться на компьютерах, входящих, к примеру, в домен w2k.dom, будут обращаться к этому же контроллеру домена.) Существует ряд правил, определяющих данное поведение оснастки. Чтобы проверить или изменить параметры оснастки Group Policy, выберите корневой узел в окне структуры и выполните команду View | DC Options (Вид | Параметры контроллера домена) в контекстном меню. Можно выбирать одну из опций, показанных на рис. 4.32. (Эти установки могут быть переопределены с помощью групповой политики; см. ниже.)
Options for domain controller selection
'Wh&iGioHjiSplicy1$$^WnO^
<• iite..°™ ™!ll.fc?..te$£ ShH?1!<~ The one used by the Active Directory Snap-ins<~ Use any available domain controller<• iite..°™ ™!ll.fc?..te$£ ShH?1!<~ The one used by the Active Directory Snap-ins<~ Use any available domain controllerOK |CancelOK |CancelРис. 4.32. Эти опции определяют, к какому контроллеру домена подключается оснастка Group Policy в момент ее запускаРис. 4.32. Эти опции определяют, к какому контроллеру домена подключается оснастка Group Policy в момент ее запуска
<• iite..°™ ™!ll.fc?..te$£ ShH?1!
<~ The one used by the Active Directory Snap-ins
<~ Use any available domain controller
<• iite..°™ ™!ll.fc?..te$£ ShH?1!
<~ The one used by the Active Directory Snap-ins
<~ Use any available domain controller
OK |Cancel
OK |Cancel
Рис. 4.32. Эти опции определяют, к какому контроллеру домена подключается оснастка Group Policy в момент ее запуска
Рис. 4.32. Эти опции определяют, к какому контроллеру домена подключается оснастка Group Policy в момент ее запуска
Достаточно прокомментировать только вторую опцию. Оснастку Group Policy можно запускать из окна оснасток Active Directory Users and Computers или Active Directory Sites and Services, которые в этот момент подключены к определенному контроллеру домена (любому контроллеру в лесе доменов). В данном случае оснастка Group Policy будет работать с установками групповых политик из некоторого объекта GPO, хранящегося на этом контроллере.
Выбранная опция сохраняется и используется при следующем запуске оснастки.
Внимание!
Если указанный контроллер домена недоступен при запуске оснастки, возникает ошибка. Проверьте установленную опцию (и соответствующую политику, если таковая установлена; см. ниже) и выберите другой параметр.
Поскольку при поиске объектов GPO выполняются обращения к DNS, ошибки при запуске оснасток Group Policy нередко объясняются неправильной работой DNS. Поэтому при появлении подобных ошибок всегда проверяйте конфигурацию DNS. Помните о том, что DNS — это динамическая система, и ресурсные записи становятся простроченными и требуют периодической перерегистрации.
Существует групповая политика, позволяющая администратору определить стратегию выбора предпочитаемого контроллера домена. Откройте объект GPO Default Domain Policy (или другой используемый объект GPO) и найдите узел User Configuration | Administrative Templates | System | Group Policy (Конфигурация пользователя | Административные шаблоны | Система | Групповая политика). Откройте политику Group Policy domain controller selection. Выберите переключатель Enable, а затем одну из следующих возможностей:
Use the Primary Domain Controller (Использовать основной контроллер домена).
Inherit from the Active Directory Snap-ins (Унаследовать от оснасток Active Directory).
Use any available domain controller (Использовать любой доступный контроллер домена).
Если эта политика запрещена (disabled) или не установлена (not configured), оснастка Group Policy выбирает владельца роли PDC Operation в домене. Если политика установлена, она переопределяет опцию, заданную в самой оснастке Group Policy.
( Примечание j
Нельзя установить предпочитаемый контроллер домена для оснасток Security Policy.
Конфигурирование объектов GPO
Имеются некоторые общие рекомендации по использованию и настройке объектов GPO. Рассмотрим их ниже.
Запрещайте неиспользуемые параметры объекта GPO. Это ускорит процесс регистрации в домене для компьютера или пользователя. Откройте окно Properties объекта GPO и перейдите на вкладку General. Установите соответствующий флажок: Disable Computer Configuration settings (Отключить параметры конфигурации компьютера) или Disable User Configuration settings (Отключить параметры конфигурации пользователя). Если установлены оба флажка, получается, что объект GPO привязан к контейнеру, но никак на него не влияет.
Для узлов Administrative Templates можно установить флажок Show Configured Policies Only (Показывать только установленные политики). (Выберите узел и установите флажок в меню View). Таким способом вы сможете "спрятать" все ненастроенные политики. Этот флажок устанавливается независимо для узлов Computer Configuration и User Configuration.
Если система установлена как обновление версии Windows NT 4.0 и/или вы используете ADM-файлы старого образца, обратите внимание на значение флажка Show Policies Only (Показывать только политики) в меню View для узла Administrative Templates. Если этот флажок установлен, параметры унаследованной системной политики (system policy) не применяются по отношению к клиентам под управлением Windows 2000.
Обращайте внимание на вкладку Explain в окне Properties каждой политики. На этой вкладке весьма подробно описывается назначение каждой политики, и это может оказаться неплохой заменой многостраничной документации.
ГЛАВА 5
Типовые
административные задачи
В этой главе рассматриваются некоторые типовые задачи, связанные с администрированием Active Directory. (Некоторые аналогичные задачи уже описаны в предыдущей главе.) Все обсуждаемые ниже задачи выполняются с помощью стандартных административных оснасток или различных утилит, входящих в состав пакетов Support Tools или Windows 2000 Resource Kit.
Использование команды RunAs
По соображениям безопасности не рекомендуется, чтобы администраторы постоянно работали в системе (домене), используя учетную запись, имеющую все административные права. В системе Windows 2000 появилась очень полезная стандартная команда — RunAs, которая позволяет системному администратору выполнять текущие задачи, используя учетную запись с ограниченными правами (полномочиями рядового пользователя), и запускать некоторые программы от имени "уполномоченного" пользователя (при этом может использоваться административная учетная запись или учетная запись пользователя с расширенными правами). Таким образом, администратору не нужно каждый раз заново регистрироваться в системе с другим именем.
Рассмотрим использование этой команды вместе с административными оснастками.
Примечание )
Если команда RunAs не выполняется, проверьте, запущена ли на компьютере служба RunAs (запустите оснастку Services и проверьте состояние службы).
Запуск административных оснасток из контекстного меню
Для выбора некоторой административной оснастки можно использовать следующие способы:
Выберите инструмент в меню Start | Programs | Administrative Tools (Пуск | Программы | Администрирование).
Откройте окно, содержащее все оснастки. Выберите подменю Start | Programs | Administrative Tools и выполните команду Open или Open All Users (Открыть общее для всех меню) в контекстном меню. (При выполнении первой команды открывается окно, содержащее только те инструменты, которые были созданы пользователем, а при выполнении второй команды — окно со всеми инструментами, установленными по умолчанию.) Выберите инструмент в открывшемся окне.
Скопируйте (перетащите) на рабочий стол значки нужных инструментов. (Также можно создать на рабочем столе папки и скопировать значки в них.)
Для оснасток Active Directory Domains and Trusts (Домены и доверия Active Directory), Active Directory Sites and Services (Сайты и службы Active Directory), Active Directory Users and Groups (Пользователи и компьютеры Active Directory), Domain Security Policy (Политика безопасности домена), Domain Controller Security Policy (Политика безопасности контроллера домена) и некоторых других можно нажать клавишу <Shift> и, удерживая ее, выбрать команду Run as (Запустить от имени) в контекстном меню. (Многие оснастки, входящие в группу Administrative Tools, изначально имеют эту команду в своих контекстных меню.) Появится окно, пример которого показан на рис. 5.1. Если выбран верхний переключатель, инструмент будет запущен от имени текущей учетной записи (т. е. с использованием текущих полномочий). Опция, предлагаемая по умолчанию (показана на рисунке), позволяет ввести имя и пароль администратора и запустить инструмент в "привилегированном" режиме. Обратите внимание на то, что в этом окне можно использовать только NetBIOS- (пред-Windows 2000) имя домена!
( Примечание )
Описанную выше процедуру можно использовать с любыми EXE- или MSC- файлами, а не только с административными оснастками. (См. ниже о выполнении RunAs из командной строки.)
Кроме того, для многих административных оснасток можно в окне Properties (Свойства) установить флажок Run as different user (Запускать от имени другого пользователя). После выполнения этой операции система всегда будет предлагать запустить данную оснастку с использованием другой учетной записи.
ххRun As Other User
х
х
^Л You may not have the necessary permissions to use all . the features of the program you are about to run, Vou may run this program as a different user or continue to run the program as W2KDOMpessica.
f4 Run the program as WZKDOMpessica
<• Run the program as the following user: ЩегдагпеГЖ Administrator
Password:
Domain:Domain:jw2KDOMjw2KDOM
Domain:
Domain:
jw2KDOM
jw2KDOM
Рис. 5.1. Введя в этом окне соответствующие реквизиты, вы можете запустить программу от имени другого пользователя
Примечание
Обратите также внимание на команду Author (Автор), которая появляется в контекстном меню многих административных оснасток. Эта команда позволяет вам запустить оснастку в авторском режиме и модифицировать ее. По умолчанию все инструменты сохраняются в режиме User mode — limited access, single window (Пользовательский режим — ограниченный доступ, одно окно) и флажок Do not save changes in this console (He сохранять изменения для этой консоли) установлен. Чтобы запретить обычным пользователям изменять административные оснастки, установите с помощью оснастки Group Policy соответствующую политику в административных шаблонах пользователя.
Запуск программ из командной строки
Используя команду RunAs, можно от имени другого пользователя запускать любые исполнимые файлы — EXE, COM, CMD, ВАТ, MSC, ссылки на программы (LNK) и элементы Панели управления (CPL). Рассмотрим несколько примеров. (Полную информацию по команде RunAs можно найти в Справке, или введя runas /? в командной строке.)
Примечания
С некоторыми элементами (программами) команду RunAs применять нельзя, например с программой Windows Explorer, папкой Printers и элементами рабочего стола.
Часто при использовании RunAs инструменты ММС удобнее запускать из командной строки, а не из окна Run, поскольку в этом случае вы сможете увидеть возможные ошибки. Для часто используемых командных строк имеет смысл создать ярлыки на рабочем столе.
Пример 1. Работа в пределах одного домена
Предположим, что в данный момент вы зарегистрированы в домене w2k.dom как рядовой пользователь и хотите сконфигурировать параметры безопасности домена, для чего требуются административные привилегии (табл. 5.1). В окне Run или в командной строке введите команду:
tunas /user:administrator@w2k.dom "mmc dcpol.msc"
где administrator — имя пользователя, входящего в группу Domain Admins. По запросу введите пароль администратора.
Пример 2. Администрирование другого домена
Допустим, вы с помощью оснастки Active Directory Users and Computers хотите создать пользователя в домене subdom.w2k.dom. (То есть вы хотите работать в домене, отличном от того, в котором вы зарегистрированы в данный момент.) Введите следующую команду:
tunas /netonly /user:SUBDOM\administrator "mmc dsa.msc"
( Примечание )
Как вы можете видеть, для представления пользовательской учетной записи используются два формата: формат UPN и стандартный формат SAM — DOMAIIWSER. Допускаются оба формата, хотя в справке, получаемой по команде runas /?, утверждается, что формат UPN не применяется с параметром /netonly.
Пример 3. Проверка пользовательских разрешений
Команду RunAs очень удобно использовать для установки пользовательских разрешений на доступ к файлам или объектам Active Directory. Чтобы задать пользователю разрешения, вы можете запустить нужную оснастку, используя административные привилегии. В то же время можно открыть окно командной строки или запустить какое-нибудь приложение от имени этого пользователя и проверить результирующие разрешения. Вам не нужно многократно регистрировать в системе под разными именами или использовать несколько компьютеров.
Имена административных оснасток
Чтобы с помощью команды RunAs запускать административные оснастки, нужно знать их имена. Определенные оснастки можно запускать, только имея административные привилегии. В табл. 5.1 содержатся сведения о некоторых наиболее важных оснастках.
( Примечание )
Все установленные оснастки находятся в папке %SystemRoot%\system32.
Таблица 5.1. Некоторые административные инструменты и привилегии, необходимые для их использования
Название инструмента
Название оснастки
Необходимые привилегии
Active Directory Domains and Trusts
domain.msc
Пользователь
Active Directory Schema
userCreatedName. msc
Пользователь
Active Directory Sites and Services
dssite.msc
Пользователь
Active Directory Users and Computers
dsa.msc
Пользователь
Computer Management
compmgmt.msc
Пользователь
Distributed File System
dfsgui.msc
Пользователь
DNS
dnsmgmt.msc
Администратор
Domain Controller Security Settings
dcpol.msc
Администратор
Domain Security Settings
dompol.msc
Администратор
Group Policy (see below)
gpedit.msc
Администратор
Local Security Settings
secpol.msc
Администратор
Routing and Remote Access
rrasmgmt.msc
Администратор
Services
services.msc
Пользователь
Оснастки, не отображаемые в меню Administrative Too/s (Администрирование)
Device Manager
devmgmt.msc
Пользователь
Disk Management
diskmgmt.msc
Администратор
Local Users and Groups
lusrmgr.msc
Пользователь
Shared Folders
fsmgmt.msc
Администратор
По умолчанию (при запуске без параметров) оснастка Group Policy "нацелена" на локальный компьютер. Вообще имеются два метода запуска этой оснастки с объектом GPO, который может храниться локально на некотором компьютере или в Active Directory.
В первом случае вы создаете пользовательскую консоль ММС, добавляете к ней оснастку Group Policy и привязываете оснастку к нужному объекту GPO; после чего сохраняете консоль с произвольным именем. Это "статический" подход.
Во втором случае используется тот факт, что оснастка Group Policy (файл gpedit.msc) позволяет менять ее фокус (привязку). Это "динамический" подход. Следующая команда, например, позволяет открыть объект GPO, хра-
нящийся на удаленном компьютере (даже локальный компьютер, указанный в параметре /gpcomputer, считается удаленным):
gpedit.msc /gpcomputer:"w2kdc3.w2k.dom",
L Внимание!
Нельзя просматривать и модифицировать расширение Security Settings (Параметры безопасности) (за исключением IP Security Policies) для объекта GPO, хранящегося на удаленном компьютере. Для локальных объектов GPO не отображаются расширения Software Installation (Установка приложений), Remote Installation Services (Службы удаленной установки) и Folder Redirection (Перенаправление папки).
Также можно указывать отличительное имя объекта GPO.
Я предлагаю использовать следующий подход. Из командной строки выполните поиск, используя сценарий Search.vbs (можно было бы использовать и утилиту Ldp.exe) со следующими параметрами (подставив свои значения):
search "LDAP://DC=w2k,DC=dom" /С:(objectCategory=GroupPolicyContainer)
^ /S:subtree /Р:AdsPath,displayName
На экране появится список всех объектов GPO, хранящихся в домене, например:
<LDAP://DC=w2k,DC=dom>;((objectClass=GroupPolicyContainer))/AdsPath, displayName;subtree
Finished the query.
Found 9 objects.
AdsPath 2 = LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},
CN=Policies,CN=System,DC=w2k,DC=dom
displayName 2 = Default Domain Policy
AdsPath 3 = LDAP://CN={6AC1786C-016F-llD2-945F-00C04fB984F9},
CN=Policies,CN=System,DC=w2k,DC=dom
displayName 3 = Default Domain Controllers Policy
Нужную политику можно легко найти по ее понятному имени (friendly name; определяется атрибутом displayName) и затем использовать ее отличительное имя (атрибут AdsPath) в качестве параметра. (Не забывайте о возможностях "копировать-и-вставить" в окне командной строки.) Чтобы, например, открыть показанный выше объект Default Domain Controllers Policy, используется следующая команда (кавычки обязательны!):
gpedit.msc
Ч> /gpobject:"LDAP://CN={6АС1786С-016F-llD2-945F-00C04fB984F9},
^ CN=Policies,CN=System,DC=w2k,DC=dom"
Эта команда при использовании вместе с RunAs будет иметь такой синтаксис:
tunas /user:w2kdom\administrator "mmc gpedit.msc
^ /gpobject:\"LDAP://CN={6AC1786C-016F-llD2-945F-00C04fB984F9},
^ CN=Policies,CN=System,DC=w2k,DC=dom\""
Удаленное администрирование
Для администрирования Active Directory с некоторого компьютера-клиента домена можно использовать следующие стандартные возможности (порядок случайный, без указания предпочтений):
Службы терминалов (Terminal Services) позволяют администратору работать на клиентском компьютере так, если бы это была консоль сервера. Это — единственная стандартная возможность для запуска административных инструментов на клиентах нижнего уровня (Windows NT, Windows 9х/МЕ) и единственная возможность при работе с низкоскоростными (коммутируемыми) соединениями. Хотя многие административные утилиты командной строки могут работать и на удаленных компьютерах, только службы терминалов позволяют использовать все возможности командной строки на контроллерах домена.
Пакет Windows 2000 Administration Tools содержит практически все административные оснастки (табл. 5.2). Он находится в файле %SystemRoot% \system32\adminpak.msi, имеющемся на каждом контроллере домена под управлением Windows 2000. Пакет Administration Tools можно установить на любом компьютере с Windows 2000, однако для его использования нужно при регистрации в сети указывать реквизиты пользователя, имеющего административные права в домене.
Можно вручную установить некоторые административные оснастки на клиентском компьютере (см. следующий раздел).
Таблица 5.2. Оснастки, включенные в состав пакета
Windows 2000 Administration Tools
Active Directory Domains and Trusts
Distributed File System
Active Directory Sites and Services
DNS
Active Directory Users and Computers
Internet Authentication Service
Certification Authority
Internet Services Manager
Cluster Administrator
QoS Admission Control
Connection Manger Administration Kit
Remote Storage
DHCP
Routing and Remote Access
Таблица 5.2 (окончание)
TelephonyTerminal Services ClientTerminal Services LicensingTelephonyTerminal Services ClientTerminal Services LicensingTerminal Services ManagerWINSTerminal Services ManagerWINS
Telephony
Terminal Services Client
Terminal Services Licensing
Telephony
Terminal Services Client
Terminal Services Licensing
Terminal Services Manager
WINS
Terminal Services Manager
WINS
Выборочная установка административных оснасток
По своим соображениям вы можете установить на клиентском компьютере не весь пакет Administration Tools, а только одну или несколько административных оснасток. Сделать это достаточно легко. (Только не забывайте про требования безопасности в домене!) Нужно выполнить следующие операции:
Скопируйте нужные оснастки (файлы с расширением MSQ из папки %SystemRoot%\system32 контроллера домена в любую локальную папку.
Скопируйте соответствующие библиотеки DLL в локальную папку %SystemRoot%\system32 или в любую локальную папку.
Если файлы DLL копировались в папку, отличную от %SystemRoot% \system32, нужно перейти в соответствующую папку. Для регистрации DLL введите в командной строке
regsvr32 <DLLname>
Например, для регистрации DLL оснастки Active Directory Users and Computers введите строку regsvr32 dsadmin.dll.
Теперь можно создать ярлыки для новых оснасток и запускать их. Конечно, вы должны быть зарегистрированы в домене с соответствующими привилегиями.
В следующей таблице указаны имена файлов DLL для некоторых административных оснасток:
Имя инструмента
Имя оснастки
Имя DLL
Active Directory Domain and Trusts
domain.msc
domadmin.dll
Active Directory Sites and Services
dssite.msc
dsadmin.dll
Active Directory Schema
userCreatedName. msc
schmmgmt.dll
Active Directory Users and Computers
dsa.msc
dsadmin.dll
( Примечание )
После того, как файл schmmgmt.dll скопирован на локальный компьютер, вы можете добавить оснастку в любую пользовательскую консоль (т. к. оснастка схемы по умолчанию не конфигурируется).
Оснастка Group Policy по умолчанию присутствует на любом компьютере под управлением Windows 2000. Поэтому, чтобы использовать ее и привязывать к любому доменному объекту ОРО, необходимо лишь иметь права администратора домена.
Обратите внимание на то, что обе оснастки — Active Directory Users and Computers и Active Directory Sites and Services — используют один и тот же файл dsadmin.dll. На самом деле обе оснастки позволяют выполнять одни и те же операции (просмотр и редактирование свойств) с объектами каталога. Первая из них обеспечивает доступ ко всему разделу доменных имен, а вторая позволяет работать с двумя контейнерами из раздела Configuration: Sites и Services (их можно также увидеть в окне оснастки ADSI Edit).
Поиск в Active Directory
Поиск, или опрос, является одной из наиболее используемых операций в сетевых каталогах, и Active Directory в этом не исключение. Каталог Active Directory может содержать громадное число объектов, точное местоположение которых зачастую неизвестно. Опрос каталога, а не просмотр его дерева, является более предпочтительной операцией как для пользователей, так и для администраторов. Для поиска объектов в Active Directory пользователи доменов Windows 2000 могут использовать следующие инструменты (некоторые из которых доступны всем клиентам, включая клиентов нижнего уровня, а некоторые могут работать только в системах Windows 2000):
□ Встроенные средства поиска (см. следующий раздел) — самый удобный для пользователя способ найти общую папку или принтер, пользователя, группу или иной общедоступный объект. Все другие средства предназначены для администраторов.
□ Оснастка ADSI Edit (из пакета Support Tools) — с помощью этого инструмента администратор может создавать эффективные запросы, а также модифицировать объекты в любом разделе каталога. (См. главу 4 "Средства управления доменами"?)
Сценарий Search.vbs — самое простое средство для выполнения запросов (из пакета Support Tools), использующее протокол LDAP. (См. главу 9 "Манипулирование объектами Active Directory"?)
□ Active Directory Administration Tool (Ldp.exe) (из пакета Support Tools) и Active Directory Browser (AdsVw.exe) (Active Directory SDK) — сложные административные инструменты, позволяющие также просматривать дерево каталога и модифицировать объекты. Утилита Ldp.exe использует
протокол LDAP и является единственным средством, позволяющим получить доступ к удаленным объектам. Утилита AdsVw.exe работает как с LDAP, так и с WinNT, и позволяет обращаться к доменам Windows 2000 и Window NT. (См. главу 9.)
Утилита Guid2obj.exe (из пакета Windows 2000 Resource Kit) — специализированная программа, позволяющая определять отличительное имя объекта по его идентификатору GUID.
При работе с большинством из перечисленных инструментов требуется хорошее знание синтаксиса фильтров LDAP. Только в этом случае вы сможете быстро и точно выбирать нужные объекты.
Настройка команды поиска (Search) на компьютере
По умолчанию клиенты (точнее те из них, кто знает о наличии такой возможности) могут искать различные объекты в Active Directory*, используя команду Find (Поиск) в контекстном меню доменных объектов, отображаемых в папке Directory (в папке Му Network Places (Мое сетевое окружение)). (Также они могут пользоваться оснасткой Active Directory Users and Computer, если установить ее на клиентском компьютере.) Кроме этого, в меню Start | Search (Пуск | Найти) имеются две специализированные команды: For Printers (Принтеры) и For People (Людей).
Вы можете также добавить ярлык для операций поиска на рабочий стол или в любую папку. Выполните следующие действия:
Щелкните на рабочем столе правой кнопкой и выберите команду New | Shortcut (Создать | Ярлык).
В поле Type the location of the item (Укажите местоположение объекта) введите следующую строку:
rundll32.exe cisquery,OpenQueryWindow
В следующем окне дайте ярлыку имя и нажмите кнопку Finish (Готово).
При необходимости переместите созданный ярлык в нужную папку или меню.
После щелчка по ярлыку пользователь увидит окно поиска, аналогичное тому, что было показано на рис. 4.11. Из этого окна можно выполнять поиск пользователей, контактов, групп, принтеров, подразделений и т. д.
Примечание )
Я проверял описанную возможность в системе Windows ME со стандартным клиентом каталога (DSCIient) из поставки Windows 2000 Server. Все работало
замечательно! (Наверняка эту возможность можно использовать и в системах Windows 9х, если установлен клиент каталога.) Только не введите случайно пробел между параметрами dsquery и OpenQueryWindow!
Манипулирование объектами каталога
На самом деле существует довольно много инструментов, позволяющих администратору создавать, удалять и модифицировать объекты Active Directory — как поодиночке, так и в пакетном режиме. Следует познакомиться с ними (по крайней мере, с большей их частью), чтобы при выполнении конкретной задачи выбирать наиболее подходящую утилиту. Ниже перечислены все основные средства модификации Active Directory, предоставляемые системой Windows 2000.
Стандартные, устанавливаемые по умолчанию оснастки (см. главу 4 "Средства управления доменами") — универсальные GUI-средства, позволяющие работать только с одним выбранным объектом и имеющие ограниченные возможности по выполнению групповых операций:
Оснастка Active Directory Users and Computers позволяет работать с пользователями, контактами, группами, компьютерами, принтерами, общими папками и подразделениями.
Оснастка Active Directory Sites and Services предназначена для манипулирования сайтами, подсетями, связями и соединениями.
Оснастка Active Directory Domains and Trusts служит для управления междоменными доверительными отношениями.
Специализированные административные GUI-средства (см. главу 4 и главу 9 "Манипулирование объектами Active Directory') — инструменты, используемые для выполнения специальных операций или для точной настройки и отладки Active Directory:
Оснастка Active Directory Schema позволяет создавать атрибуты и классы.
Оснастка ADSI Edit, утилиты Ldp.exe и AdsVw.exe позволяют создавать объекты любых типов (включая объекты, которые невозможно создать при помощи любых других инструментов); однако в первую очередь они используются для редактирования атрибутов.
□ Инструменты для импорта/экспорта (см. главу 9) — утилиты командной строки, которые можно (и нужно) использовать для повышения эффективности администрирования крупномасштабных инсталляций Active Directory. Утилиту LDIFDE можно также применять для изменения атрибутов множества однотипных объектов:
LDIFDE
CSVDE
□ Утилиты, предназначенные для выполнения специфических задач (см. ниже эту главу и коллекцию сценариев Remote Administration Scripts, входящую в состав пакета Windows 2000 Server Resource Kit):
• Утилита AddUsers.exe, сценарии CreateUsers.vbs, CreateGroups.vbs и другие утилиты (например, утилиту NetDom можно использовать для создания учетных записей компьютеров домена).
Сценарии ADS1 (см. главу 13 "Active Directory Service Interfaces (ADSl)" и главу 14 "Использование ADSI для администрирования") — самый гибкий и на самом деле довольно простой способ манипулирования объектами Active Directory.
Использование оснастки
Active Directory Users and Computers
Оснастка Active Directory Users and Computers является основным инструментом, который администратор постоянно использует для управления различными ресурсами домена. Процедуры создания и удаления объектов Active Directory практически одинаковые для всех типов объектов. Для некоторых часто используемых объектах имеются кнопки на стандартной панели инструментов:
Create a new user in the current container (Создание нового пользователя в текущем контейнере) ’&■
Create a new group in the current container (Создание новой группы в текущем контейнере) ,®
Create a new organizational unit in the current container (Создание нового подразделения в текущем контейнере) ИЗ
Можно выбрать один объект, несколько объектов или все объекты и одновременно переместить их в любой другой контейнер или подразделение текущего домена. При этом можно использовать традиционные клавиши выбора нескольких объектов: <Shift> или <Ctrl>.
Некоторую пользовательскую учетную запись можно использовать как шаблон и с его помощью создавать пользователей, имеющих аналогичные свойства (членство в группах, параметры профиля и т. д.) Для этого нужно выбрать "образцового" пользователя и выполнить команду Сору (Копировать) в контекстном меню.
Примечания j
Подразделения (OU) можно создавать только внутри других подразделений или в доменном контейнере.
Если вы хотите переместить объекты между различными доменами, относящимися к одному дереву или к несмежным деревьям, используйте утилиту MoveTree, входящую в пакет Support Tools (см. главу 10 "Средства реорганизации каталога").
L -• - Внимание!
Встроенные (built-in) локальные группы домена удалить невозможно.
Добавление членов в группу
Оснастка Active Directory Users and Computers предоставляет возможность выполнения групповых операций, с помощью которых можно одновременно добавить в некоторую группу множество выбранных пользователей или контактов. Выберите учетную запись (записи) и выполните команду Add members to a group (Добавить участников в группу) в контекстном меню или меню Action (Действие); или же нажмите кнопку Add the selected objects to a group you specify (Добавление выбранных объектов в группу) lg| на панели инструментов. Затем укажите целевую группу в окне Select Group (Выбор группы).
Если при выполнении данной операции выбрать некоторое подразделение, система поинтересуется, хотите ли вы добавить в указанную группу всех пользователей и контакты, которые содержатся в выбранном контейнере. Такая возможность очень удобна для администрирования подразделений и групп безопасности.
Не забывайте, что для массового "заполнения" групп можно использовать утилиты пакетной обработки LDIFDE и CSVDE, а также утилиту AddUsers.exe. С помощью утилиты LDIFDE можно удалять членов из групп.
Создание пользователей и групп в домене
Существует несколько утилит (помимо утилит импорта LDIFDE и CSVDE и пользовательских сценариев), упрощающих создания большого количества пользовательских учетных записей как в рабочей, так и в тестовой среде.
Сценарий Createllsers.vbs (RK)
Этот сценарий позволяет создавать только пользователей. Он может работать с обоими системными провайдерами: WinNT и LDAP. Следующие атрибуты являются обязательными (это минимальный набор атрибутов пользователей):
WinNT —- пате и password
LDAP — сп, samAccountName и password
( Примечание )
Также можно использовать и другие атрибуты, однако не все атрибуты допустимы. Внимательно проверяйте свои команды и входной файл, если он указывается. Убедитесь в том, что значения атрибутов согласованы, иначе вы можете столкнуться с такой ошибкой;
Error 0X80072035 occurred in settings properties for user cn=...
(Ошибка... возникла при установке свойств пользователя...)
Эта ошибка (код 8245) говорит о том, что "Сервер не склонен обработать запрос" ("The server is unwilling to process the request"). Часто источником этой ошибки являются неправильные атрибуты имен: сп, name, sn, distinguishedName и т. д. Не забывайте заключать в двойные кавычки любые значения атрибутов, в которых встречаются пробелы.
Вот простейшая команда для создания пользователя с помощью сценария CreateUsers.vbs:
createusers WinNT://W2KDOM name:user01 password:pswl
При выполнении сценария на экране появляются следующие сообщения:
Working ...-
Getting domain WinNT://W2KDOM...
Creating user userOl
Succeeded in creating user userOl in W2KDOM.
Чтобы запретить вывод информационных сообщений, используйте параметр /q.
Новые пользователи всегда создаются в контейнере Users. Затем их можно переместить в другие контейнеры (подразделения), однако лучше использовать LDAP-версию сценария CreateUsers.vbs, которая "понимает" структуру Active Directory:
createusers LDAP://OU=Staff,DC=w2k, DC=dom cn:"User UserOl"
4> samAccountName:user-ldapOl password:pswl
Очень часто возникает вопрос: а как создать большое число пользователей одновременно (с помощью одной команды). Очень просто. Создайте файл, описывающий нужные свойства пользователей, и используйте подходящую версию — WinNT или LDAP — сценария CreateUsers.vbs. Например, следующая команда создает пользователей в подразделении Staff:
createusers LDAP://OU=Staff,DC=w2k, DC=dom /i:newUsers.txt
Файл с описаниями пользователей может выглядеть так:
cn:"UserOl" samAccountName:userOl password:pswl
cn:"User02" samAccountName:user02 password:psw2
Утилита AddUsers.exe (RK)
Традиционная для Windows NT утилита AddUsers.exe имеет несколько дополнительных возможностей по сравнению со сценариями CreateUsers.vbs и CreateGroups.vbs. Помимо создания пользователей и групп, она позволяет вам:
Записывать в файл информацию об учетных записях (пользователей и групп).
Указывать для учетных записей управляющие параметры. (По умолчанию новый пользователь должен при регистрации сменить свой пароль.)
Удалять пользователей или группы, имена которых задаются во входном файле.
Использовать входной файл, созданный в виде электронной таблицы (например, в Microsoft Excel) и сохраненный в текстовом формате с разделителями в виде запятых (comma-delimited format). Помимо запятой, можно указать другой символ-разделитель.
Недостатком утилиты AddUsers.exe является то, что она не "видит" структуру Active Directory.
( Примечание )
С помощью утилиты AddUsers.exe можно успешно добавлять пользователей в существующие группы, несмотря на появляющееся сообщение "Group already exists" (Группа уже существует). Группы могут располагаться в любом контейнере Active Directory, а не только в "стандартном" контейнере Users.
Ниже приведен пример дамп-файла, полученного с помощью утилиты AddUsers.exe (имена атрибутов даны для наглядности; они выделены полужирным и на самом деле не включаются в файл). Такой файл можно легко импортировать в электронную таблицу.
[User]
[samAccountName, name, password, description, homeDrive, homeDirectory, profilePath, scriptPath}
Administrator,,,Built-in account for administering the
4> computer/domain,,,,
Guest,,,Built-in account for guest access to the computer/domain,,,, jsmith,John Smith,,,W:,\\w2kdc4\UsersData\jsmith, \\w2kdc4\Proflies\j smith,Users\Logons.vbs
[Global]
(samAccountName, description, member's account names...}
Domain Admins,Designated administrators of the domain,Administrator, Domain Controllers,All domain controllers in the
S> domain,W2KDC4$,W2KDC3$,
Domain Users,All domain users,Administrator,Guest,krbtgt,EAdm,
4> w2kuser008,w2kuser009,w2kuser010,w2kuser011,w2kuser012,NT4DOM$, user025, user044,Staff-Adm,
[Local]
{samAccountName, description, member's account names...}
Administrators,Administrators have complete and unrestricted access to
4> the computer/domain,W2KDOM\Administrator,W2KDOM\Enterprise
Admins,W2KDOM\Domain Admins,NT4DOM\,
w2kLocalGroup,,W2KD0M\w2kLocGrp,W2KDOM\w2kuser009,W2KDOM\w2kuser010,W2 KDOM\w2kuser011,W2KDOM\w2kuser012,
Обратите внимание на последнюю строку: группы могут содержать другие группы (имя группы выделено полужирным), в том числе локальные группы (если домен работает в основном режиме).
• Внимание!
Я сталкивался с ошибками, связанными с отображением членства в глобальных и универсальных группах (помещается в разделе [Global]). Проверьте это в вашей среде перед тем, как выполнять ответственные операции!
Как вы можете видеть, дамп-файл состоит из трех разделов: User, Global и Local. Аналогичный формат входного файла используется и при создании пользователей и групп. В этом файле можно опустить незначащие "хвостовые" запятые (справа от которых нет значений), а также неиспользуемые разделы. Новые группы могут быть пустыми, а могут сразу же содержать членов группы.
Публикация папок и принтеров
Служба Active Directory значительно упрощает работу с общими сетевыми ресурсами по сравнению с традиционными методами просмотра доменов. Если ресурс опубликован (published) в Active Directory, пользователи могут легко найти его (например, с помощью команды Search | For Printers в меню Start) и подключиться к нему. Или же, для упрощения поиска вы можете опубликовать все ресурсы в одном контейнере (подразделении).
Публикация папки или принтера в Active Directory — это, другими словами, создание нового объекта каталога — Shared Folder (Общая папка) или Printer (Принтер), соответственно.
Общие папки в Active Directory имеют одну возможность, которая помогает пользователям искать информацию по ее характеристикам. Выберите опубликованную папку в окне оснастки Active Directory Users and Computers, откройте окно Properties и нажмите кнопку Keywords (Ключевые слова). Вы можете добавить в список слова, логически связанные с содержимым папки. После этого, если пользователь выполняет поиск общих папок с помощью
окна Find, он может указать некоторые ключевые слова и найти ресурсы по их содержимому, а не по их именам.
Принтеры, подключенные к компьютерам под управлением Windows 2000, можно публиковать только из окна свойств принтера (см. флажок List in the Directory (Отображать в каталоге) на вкладке Sharing (Доступ)).
По умолчанию устанавливаемый локальный принтер не публикуется в каталоге, если вы запрещаете общий доступ к нему. Если принтер устанавливается как общее устройство, он сразу же публикуется в Active Directory в контейнере, представляющем тот компьютер, к которому принтер подключен (см. раздел "Режим Users, Groups, and Computers as containers" в главе 4). В любой момент вы можете сбросить флажок List in the Directory, и объект принтера будет удален из Active Directory.
Внимание!
При публикации папки будьте внимательны, поскольку система не проверяет введенное имя папки, которое может оказаться неправильным, однако ошибку вы заметите только при открытии папки или при подключении к ней.
Если RDN- и NetBIOS-(npefl-Windows 2000) имена домена различаются, то при публикации принтера вы можете столкнуться с ошибкой "The system cannot find the file specified" (Система не может найти указанный файл) (см. статью Q255496 в Microsoft Knowledge Base). Для решения этой проблемы следует установить пакет обновлений Windows 2000 Service Pack 1.
Процессом публикации и удаления (pruning) принтеров в домене можно управлять с помощью групповых политик (см. узел Computer Configuration | Administrative Templates | Printers в окне оснастки Group Policy).
Сценарий Pubprn.vbs
Если вы выполните сценарий Pubprn.vbs без параметров, то получите на экране справочную информацию о его использовании. Следующая команда, к примеру, публикует принтер НР6МР, подключенный к компьютеру WKS10, который входит в подразделение Office, относящееся к домену w2k.doni:
pubprn \\wksl0\hp6mp "LDAP://OU=Office,DC=w2k,DC=dom"
Система проверяет имя принтера и существование объекта, заданного с помощью имени LDAP. Если принтер публикуется успешно, вы увидите сообщение, содержащее LDAP-имя принтера в Active Directory.
Подключение к опубликованным ресурсам
Для нахождения общих сетевых ресурсов в доменах Windows 2000 рекомендуется использовать операцию поиска в каталоге. Пользователь может быстро находить нужный принтер или папку и выполнять все те же операции, которые возможны при просмотре доменного дерева.
Рис. 5.2. Поиск всех принтеров в организации (лесе доменов)
Область поиска ресурсов может варьироваться от конкретного контейнера (подразделения) до целого домена или всего леса доменов. (Выбор опции Entire Directory (Вся папка) эквивалентен поиску в Глобальном каталоге.) Рис. 5.2 содержит пример поиска всех принтеров в лесе доменов. Как вы можете видеть (см. колонку Server Name (Имя сервера)), найденные принтеры относятся к разным доменам. Пользователь может указать на любой принтер и выбрать нужную команду в контекстном меню.
С найденными общими папками пользователь может проделывать различные действия: открывать папку, искать внутри папки, подключать сетевой диск и т. д.
Управление ролями FSMO в организации
Поскольку местоположение владельцев ролей FSMO существенно сказывается на правильности работы многодоменного леса, администратор должен постоянно следить за тем, какой контроллер домена владеет определенной ролью. Для этого нужны средства, позволяющие быстро находить владельцев ролей и передавать роли от одного контроллера к другому. Более того,
иногда требуется принудительно передать роль, которой владел отказавший контроллер домена. Такой процесс называется захватом роли (seizing of role).
Поиск владельцев ролей FSMO
Для поиска владельцев ролей FSMO (также называемых мастерами операции) можно использовать стандартные административные оснастки (см. предыдущую главу):
Оснастка Active Directory Users and Computers показывает владельцев ролей RID, PDC и Infrastructure.
Оснастка Active Directory Domains and Trusts показывает мастера именования доменов (Domain Naming master).
Оснастка Active Directory Schema показывает мастера схемы.
Однако работа с оснастками требует времени, и имеет смысл использовать для поставленной задачи специальные программы или сценарии. Некоторые такие программы описаны ниже, а в главе 14 "Использование ADSI для администрирования" вы найдете дополнительную информацию (см. раздел "Как найти владельца FSMO-роли?"и листинг 14.18).
Windows 2000 Domain Manager (NetDom.exe) (ST)
Утилита NetDom.exe (см. главу 9 "Манипулирование объектами Active Directory") может показать всех владельцев ролей в указанном домене. Для этого используется следующая команда:
netdom QUERY /Domain:w2k.dom FSMO
DumpFSMOs.cmd (RK)
На самом деле этот командный файл является набором команд для утилиты NTDSutil. (Вы можете ввести аналогичные команды вручную.) Единственный обязательный параметр — имя контроллера, который является источником информации. Ниже показаны сообщения, появляющиеся в процессе выполнения файла (ответы утилиты выделены полужирным):
С:VdumpFSMOs w2kdc4.w2k.dom
ntdsutil: roles
fsmo maintenance: Connections
server connections: Connect to server w2kdc4.w2k.dom
Binding to w2kdc4,w2k.dom ...
Connected to w2kdc4. w2k.dom using credentials of locally logged on user
server connections: Quit
fsmo maintenance: select Operation Target
select operation target: List roles for connected server
Server "w2kdc4.w2k.dom" knows about 5 roles
Schema - CN=NTDS Settings,CN=W2KDC4, 4> CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom
Domain - CN=NTDS Settings,CN=W2KDC4,
4> CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom
PDC - CN=NTDS Settings,CN=W2KDC4,
4> CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom
RID - CN=NTDS Settings,CN=W2KDC4,
4> CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom
Infrastructure - CN=NTDS Settings,CN=W2KDC3,
4> CN=Servers,CN=W2K-site,CN=Sites, CN=Configuration, DC=w2k, DC=dom
select operation target: Quit
fsmo maintenance: Quit
ntdsutil: Quit
Disconnecting from w2kdc4.w2k.dom . ..
Active Directory Replication Monitor (ReplMon.exe) (ST)
Всех владельцев ролей можно увидеть с помощью утилиты ReplMon.exe (см. главу 8 "Сетевые и распределенные службы'). Запустите ее и добавьте серверы в список Monitored Servers (Наблюдаемые серверы). Выберите в окне
Рис. 5.3. Просмотр всех мастеров операций (владельцев FSMO-ролей) в некотором домене
структуры какой-нибудь контроллер домена, откройте для него окно Properties и перейдите на вкладку FSMO Roles. Примерный вид этой вкладки показан на рис. 5.3.
Нажав в этом окне кнопку Query (Опрос), можно проверить состояние любого владельца роли. При этом программа выдает сообщение "Active Directory Replication Monitor was able/unable to resolve, connect, and bind to the server hosting this FSMO role" (Диспетчер репликации Active Directory смог/не смог разрешить имя, соединиться и привязаться к серверу, владеющему данной ролью FSMO).
( Примечание )
Утилита RepIMon позволяет также увидеть все серверы глобального каталога, имеющиеся в лесе доменов.
Передача и захват ролей FSMO
При нормальной работе для передачи роли FSMO от одного контроллера домена к другому должны использоваться административные оснастки. Для захвата роли нужна утилита NTDSutil.exe.
( Примечание )
Некоторая дополнительная информация, касающаяся процессов передачи и захвата ролей FSMO, содержится в статье Q223787 в Microsoft Knowledge Base.
Мастера операций RID, PDC и Infrastructure
По разным причинам (например, при замене или обслуживании контроллера домена) возникает ситуация, когда нужно передать некоторую роль FSMO от ее текущего владельца другому контроллеру домена. Сначала, используя оснастку Active Directory Users and Computers, вы должны подключиться к тому контроллеру домена, который станет новым мастером операций, а затем выбрать корень дерева в окне структуры и выполнить команду Operation Masters (Основные контроллеры операций) в контекстном меню или в меню Action. Перейдите на нужную вкладку: RID, PDC или Infrastructure. Вы увидите имя текущего владельца роли FSMO и имя целевого контроллера домена. Нажмите кнопку Change (Изменить), и роль перейдет к новому владельцу.
Будьте внимательны при передаче роли Infrastructure. Если в домене имеется несколько контроллеров, проверьте, что в журнале Directory Service на кон- троллере-новом владельце роли не появилось следующее сообщение:
Event Туре:Error
Event Source: NTDS General
Event Category:Directory Access
Event ID:1419
User:Everyone
Computer:W2KDC4
Description:
This DC is both a Global Catalog and the Infrastructure Update master.
These two roles are incompatible. If another machine exists in the domain, it should be made the Infrastructure Update master.
The machine CN=NTDS Settings,CN=W2KDC2,CN=Servers,CN=W2K-site,CN=Sites, CN=Configuration,DC=w2k,DC=dom is a good candidate for this role. If all domain controllers in this domain are Global Catalogs, then there are no Infrastructure Update tasks to complete, and this message may be ignored.
(Этот контроллер домена одновременно является сервером глобального каталога и мастером обновлений инфраструктуры. Эти роли несовместимы. Если в домене существует другой контроллер, назначьте его мастером инфраструктуры. Компьютер ... является подходящей кандидатурой на эту роль. Если все контроллеры этого домена являются серверами глобального каталога, тогда задача обновления инфраструктуры теряет актуальность, и это сообщение можно проигнорировать.)
Мастер именования доменов
Оснастка Active Directory Domains and Trusts позволяет передать FSMO-роль Naming Master другому контроллеру в лесе доменов. Используемая процедура проста: подключитесь к тому контроллеру, который будет владельцем роли, выберите корневой узел в окне структуры и выполните команду Operations Master в контекстном меню. В открывающемся окне проверьте правильность имен текущего владельца роли и нового мастера операций, нажмите кнопку Change и подтвердите выполнение команды. Помните о том, что только один контроллер в лесе (организации) может выполнять роль мастера именования доменов, и этот контроллер должен также быть сервером глобального каталога.
Мастер схемы
Оснастка Active Directory Schema используется для передачи FSMO-роли Schema Master. Подключитесь к будущему владельцу роли, выберите корневой узел в окне структуры и выполните команду Operations Master в контекстном меню. После проверки имен контроллеров домена нажмите кнопку Change. Не забывайте о том, что только один контроллер домена во всем лесе может быть мастером схемы.
Внимание!
Если вы собираетесь модифицировать схему, то сначала разрешите эту операцию (см. предыдущую главу). После того, как вы передали роль мастера схемы другому контроллеру домена, флажок The Schema may be modified on
this Domain Controller (Схема может быть изменена на этом сервере) на старом мастере схемы остается установленным (т. е. изменения разрешены). Это, однако, может не соответствовать вашим намерениям.
Утилита NTDSutil ■
Для передачи ролей FSMO можно использовать утилиту NTDSutil. Она является единственным инструментом, с помощью которого можно принудительно назначить контроллеру домена некоторую роль. (При этом предполагается, что контроллер-старый владелец роли находится в. аварийном состоянии и не может быть восстановлен!) Использование утилиты NTDSutil рассматривается подробно в главе 7 "Диагностика и обслуживание Active Directory".
Обновление групповых политик
Когда администратор изменил некоторый объект GPO, то при проверке новых установок возникает необходимость в обновлении параметров, определяемых этими политиками. (Можно, конечно, перезагрузить компьютер или заставить пользователя перерегистрироваться в домене. Однако это не всегда удобно.) Для выполнения данной задачи можно пользоваться утилитой командной строки SecEdit.exe.
l - °>в- Внимание!
Запомните, что под обновлением политик подразумевается не их редактирование в некотором объекте GPO, а обновление определяемых этими политиками локальных параметров на клиентских компьютерах и контроллерах домена. При этом могут обновляться и политики компьютера, и политики пользователя.
Синтаксис команды очень простой. Для обновления пользовательских политик используется команда
secedit /refreshPolicy user_policy
Следующая команда позволяет обновить политики компьютера:
secedit /refreshPolicy machine_policy
Если вам нужно обновить политики (определяемые различными объектами GPO), даже если они не изменялись со времени последнего применения, добавьте к командам параметр /enforce. (Обычно объекты GPO применяются только один раз, не изменившиеся объекты GPO пропускаются.)
( Примечание )
Можно изменить стандартный интервал применения политик, задаваемых объектами GPO (90 минут для рядовых компьютеров и 5 минут для контроллеров
домена), а также смещение в рамках установленного интервала (30 минут для рядовых компьютеров и 0 минут для контроллеров домена). Для этого используйте соответствующие групповые политики или модифицируйте системный реестр. Дополнительную информацию можно получить в статье Q203607 в Microsoft Knowledge Base.
Выполнение репликации
В распоряжении администратора имеются три инструмента, с помощью которых можно инициировать принудительную (внештатную) репликацию Active Directory для всех разделов каталога (контекстов имен) или для указанного раздела (при этом репликация может выполняться как между парой контроллеров домена, так и между контроллером и всеми его партнерами по репликации):
Оснастка Active Directory Sites and Services
Утилита RepAdmin
Утилита Repl Mon
Как и для выполнения практически любой административной задачи, можно также использовать сценарии (см. пример в главе 14 "Использование ADSI для администрирования").
Примечание )
Запомните, что изменения всегда реплицируются (копируются) с сервера- источника (source DC) на целевой сервер (target DC). Обычно сначала выбирается целевой сервер, а затем — сервер-источник.
Оснастка Active Directory Sites and Services
Эта оснастка позволяет реплицировать все сконфигурированные разделы каталога от каждого отдельного партнера по репликации. Выберите целевой контроллер в контейнере Servers (Серверы) соответствующего сайта и откройте объект NTDS Settings (Параметры NT Directory Service). Можно инициировать репликацию от любого контроллера домена, представленного в правом окне в виде объекта типа Connection (см. пример на рис. 5.4). Выберите соединение и выполните команду Replicate Now (Реплицировать сейчас) в контекстном меню. Вы должны дождаться пока репликация не закончится (при этом в случае успешной репликации появляется сообщение "Active Directory has replicated the connections" (Active Directory произвела репликацию подключений)).
Реплицируются все разделы каталога, которые сконфигурированы для указанного партнера по репликации. При этом вы не можете реплицировать только один раздел.
I-|D|x|I-|D|x|18$ AD Sites and Services
I-|D|x|
I-|D|x|
. ^ Console Window Help
Action View <r=1^1 ^7Tree | x^Active Directory Sites and Services [vAction View <r=1^1 ^7Tree | x^Active Directory Sites and Services [vNameName_J Inter-Site TransportsSubnets^ W2K-stte_J Inter-Site TransportsSubnets^ W2K-stteJ JJ JJJW2KDC3W2KDC2^ NTD5 SettingsW2KDC4W2KDC3W2KDC2^ NTD5 SettingsW2KDC4W2K-siteW2K-siteConnectionConnectionJ From Server | From SiteJ From Server | From SiteУ Automatically generated > W2KDC4У Automatically generated > W2KDC4
Action View <r=1^1 ^7
Tree | x
^Active Directory Sites and Services [v
Action View <r=1^1 ^7
Tree | x
^Active Directory Sites and Services [v
Name
Name
_J Inter-Site Transports
Subnets
^ W2K-stte
_J Inter-Site Transports
Subnets
^ W2K-stte
J J
J J
J
J
W2KDC3
W2KDC2
^ NTD5 Settings
W2KDC4
W2KDC3
W2KDC2
^ NTD5 Settings
W2KDC4
W2K-site
W2K-site
Connection
Connection
J From Server | From Site
J From Server | From Site
У Automatically generated > W2KDC4
У Automatically generated > W2KDC4
Forces immediate replication with this domain controller,
Рис. 5.4. Запуск репликации от прямого партнера по репликации
Replication Diagnostics Tool (RepAdmin.exe) (ST)
Используя утилиту RepAdmin.exe, вы можете реплицировать каждый раздел каталога индивидуально, указывая при этом один сервер-источник или все источники. Чтобы инициировать репликацию между серверами, показанными на рис. 5.4, можно воспользоваться следующей командой:
repadinin /syncall w2kdc4.w2k.dom DC=w2k,DC=dom,
где w2kdc4.w2k.dom— DNS-имя сервера, a DC=w2k,DC=dom — имя раздела (в данном случае это раздел доменных имен).
Различие между этой командой и операцией, показанной на рис. 5.4, состоит в следующем:
Команда выполняет репликацию только одного раздела, однако, от всех источников-партнеров по репликации.
В окне оснастки вы можете инициировать репликацию всех разделов, однако, только от одного партнера.
Чтобы выполнить репликацию во всем домене (лесе), можно создать командный файл, содержащий аналогичные команды для каждого контроллера домена и для всех разделов каталога, а затем запускать этот файл для выполнения полной репликации в домене или лесе (если по каким-то причинам вас не устраивает стандартная репликация по расписанию).
Внимание!
Команда repadmin /syncall имяСервера выполняет репликацию только одного раздела каталога, и одной этой команды недостаточно для того, чтобы полностью реплицировать указанный сервер.
Следующая команда выполняет репликацию одного раздела от одного партнера (заданного при помощи его GUID):
repadmin /sync DC=w2k,DC=dom
Ч> w2kdc4.w2k.dom 0e5b9b82-4818-44a6-a8b9-0e51d2f6d97e
Обычно утилита RepAdmin ожидает окончания репликации. Можно добавить к команде параметр /async, позволяющий начать операцию и не дожидаться ее окончания.
Утилита RepAdmin подробно описывается в главе 8 "Сетевые и распределенные службы".
Active Directory Replication Monitor (ReplMon.exe) (ST)
Утилита ReplMon.exe позволяет для указанного сервера выполнять репликацию следующих видов (перечислены в порядке от самого "глобального" режима до наиболее "детального"):
Синхронизация всех разделов каталога со всеми партнерами (в этом режиме имеются три дополнительных опции).
Синхронизация указанного раздела каталога со всеми партнерами.
Синхронизация указанного раздела каталога с указанным партнером.
Окончания операции репликации любого типа дожидаться не нужно, т. к. все результаты операций записываются в файлы журналов.
Утилита RepAdmin подробно описана в главе 8 "Сетевые и распределенные службы".
Дополнительные средства выполнения репликации
Для принудительной синхронизации реплицируемых наборов (replica sets), которыми управляет служба репликации файлов (File Replication Service, FRS), например, содержимого тома SYSVOL, используется команда ntfrsutl poll. Подробную информацию см. в главе 8 "Сетевые и распределенные службы".
Для синхронизации Windows 2000-сервера, владеющего FSMO-ролью РОС Emulator, с резервными контроллерами домена (Backup Domain Controller, BDC) в смешанном домене можно применять утилиту NLtest.exe. См. параметры /repl, /sync, /pdc_query и др. С помощью командного файла LBridge.cmd, входящего в состав пакета Windows 2000 Server Resource Kit, можно выполнить копирование файлов из системного тома контроллера домена под управлением Windows 2000 (SYSVOL) в каталог экспорта, располагающийся на одном из Windows NT 4.0 BDC.
Используя собственные сценарии, можно инициировать репликацию в соответствии с нужной вам стратегией. См., например, листинг 14.15 в главе 14 "Использование ADSI для администрирования".
Делегирование административных полномочий
Одной из замечательных возможностей доменов Windows 2000, которая реализована благодаря службе Active Directory, является делегирование пользователю или группе всех или некоторых административных прав по управлению подразделением, контейнером или объектом Active Directory. По сути, делегирование административных функций представляет собой предоставление пользователю или группе разрешений на объекты Active Directory, которое осуществляется с помощью программы-мастера. Вы можете и вручную назначить разрешения, необходимые для выполнения этих функций, однако, благодаря мастеру Delegation of Control Wizard (Мастер делегирования управления), эту задачу можно выполнить значительно быстрее и без возможных ошибок. Делегирование управления — это довольно простая операция, и проблемы могут возникнуть только при лишении пользователя или группы переданных им административных прав (т. к. это можно сделать только вручную).
Ниже перечислены объекты Active Directory, право управления которыми можно делегировать с помощью мастера (а не путем ручного назначения разрешений). В скобках перечислены обычные (common) задачи администрирования.
□ В окне оснастки Active Directory Sites and Services (стандартные разрешения: Full Control, Read/Write, Create/Delete All Child Objects, Read/Write All Properties):
Контейнер Sites
Контейнер Inter-Site Transport
Контейнер Subnets
Сайт(ы) (Manage Group Policy Links)
Контейнер Server в сайте (сайтах)
□ В окне оснастки Active Directory Users and Computers (список возможных разрешений зависит от типа контейнера Active Directory):
Весь домен (Join a computer to the domain; Manage Group Policy links)
Подразделение (Create, delete, and manage user account; Reset passwords on user accounts; Read all user information; Create, delete, and manage groups; Modify the membership of a group; and Manage Group Policy links)
Контейнер Computers
Контейнер ForeignSecurityPrincipals
Контейнер System
Контейнер Users
Внимание!
Помните о том, что по умолчанию члены группы Authenticated Users (Прошедшие проверку) (т. е. любой зарегистрированный пользователь) имеет право добавить к домену 10 компьютеров. Эта группа имеет разрешение на чтение всех свойств (Read All Properties) доменного объекта; как следствие, группа может прочитать значение атрибута ms-DS-MachineAccountQuota, по умолчанию равное 10. (Данное значение можно просматривать и модифицировать с помощью оснастки ADSI Edit.) Делайте собственные выводы! (Возможно, вы захотите исправить эту ситуацию.)
Для запуска процесса делегирования управления запустите нужную оснастку, выберите контейнер Active Directory, подразделение или сам домен в окне структуры и выполните команду Delegate control (Делегировать управление) в контекстном меню или в меню Action. В зависимости от типа контейнера, вы можете выбрать общую задачу (или несколько задач) или же создать особую (custom) задачу. В первом случае вы можете использовать предустановленный набор разрешений, а во втором вы самостоятельно выбираете объекты и разрешения, что позволяет вам более точно определить делегируемые административные права.
Делегировать управление довольно просто, однако задача лишения пользователя или группу административных прав сложнее и требует большего понимания деталей этого процесса. Если, например, делегирование выполнялось с помощью оснастки Active Directory Users and Computers, вам нужно включить режим Advanced Features (см. предыдущую главу), выбрать тот контейнер, который указывался при передаче административных прав, открыть для него окно Properties и перейти на вкладку Security (Безопасность). Затем нужно найти разрешения и параметры управления доступом для пользователя или группы и удалить их. Таким образом, вы редактируете элементы списка управления доступом (АСЕ) выбранного объекта каталога. Эта же операция выполняется и при делегировании управления, однако она значительно упрощается, благодаря использованию мастера. Понимая этот механизм, вы можете легко и гибко управлять объектами каталога и, следовательно, точнее настраивать Active Directory под свои задачи.
Взгляните на рис. 5.5. В результате работы мастера делегирования управления право присоединения компьютеров к домену было делегировано группе Admins. Это означает, что в ACL-список доменного контейнера было добавлено разрешение Create Computer Objects (Создание объекта компьютера). Вы могли бы и вручную выполнить эту операцию, однако мастер позволяет сделать это без ошибок и освобождает вас от необходимости разбираться в механизмах безопасности и во всех деталях наследования разрешений на объекты Active Directory.
Access Control Settings for w2kHB
Permissions | Auditing ] Owner]
Permission Entries:Permission Entries:Type J | NameType J | Name| Permission:| Permission:‘ft. Allow Administrators (W2... Replication Synchtoniz... ^ Allow Administrators (W2... Replicating Directory C...‘ft. Allow Administrators (W2... Replication Synchtoniz... ^ Allow Administrators (W2... Replicating Directory C...[Allow Admins (W2KD0M... Create Computer Objects[Allow Admins (W2KD0M... Create Computer ObjectsI Apply to This object only This object onlyI Apply to This object only This object onlyThis object and all childThis object and all child^ Allow ^ Allow^ Allow ^ AllowENTERPRISE DO...ENTERPRISE DO...ENTERPRISE DO...Pre-Windows 2000...ENTERPRISE DO...ENTERPRISE DO...ENTERPRISE DO...Pre-Windows 2000...Manage Replication To... Replication Synchtoniz... Replicating Directory C...SpecialManage Replication To... Replication Synchtoniz... Replicating Directory C...SpecialThis object only This object only This object only User objectsThis object only This object only This object only User objectsAdd...Add...Remdye:Remdye:View/Edit..:::, |View/Edit..:::, |
Permission Entries:
Permission Entries:
Type J | Name
Type J | Name
| Permission:
| Permission:
‘ft. Allow Administrators (W2... Replication Synchtoniz... ^ Allow Administrators (W2... Replicating Directory C...
‘ft. Allow Administrators (W2... Replication Synchtoniz... ^ Allow Administrators (W2... Replicating Directory C...
[Allow Admins (W2KD0M... Create Computer Objects
[Allow Admins (W2KD0M... Create Computer Objects
I Apply to This object only This object only
I Apply to This object only This object only
This object and all child
This object and all child
^ Allow ^ Allow
^ Allow ^ Allow
ENTERPRISE DO...
ENTERPRISE DO...
ENTERPRISE DO...
Pre-Windows 2000...
ENTERPRISE DO...
ENTERPRISE DO...
ENTERPRISE DO...
Pre-Windows 2000...
Manage Replication To... Replication Synchtoniz... Replicating Directory C...
Special
Manage Replication To... Replication Synchtoniz... Replicating Directory C...
Special
This object only This object only This object only User objects
This object only This object only This object only User objects
Add...
Add...
Remdye:
Remdye:
View/Edit..:::, |
View/Edit..:::, |
This permission is defined directly on this object. This permission is inherited by child objects.
OK | J Cancel |
Рис. 5.5. Результат работы мастера делегирования управления: выделенное разрешение позволяет группе Admins подключать компьютеры к домену
Аудит доступа к объектам Active Directory
Стандартная процедура включения аудита состоит из двух этапов. Чтобы разрешить аудит обращений к Active Directory, нужно:
Разрешить соответствующую политику аудита.
Определить события аудита.
Аудит доступа к Active Directory выполняется по отношению к операциям, выполняемым на контроллерах домена. Поэтому логичнее всего разрешать аудит с помощью политики контроллеров домена (Default Domain Controllers Policy) или другого объекта GPO, привязанного к подразделению Domain Controller. При этом можно использовать или оснастку Group Policy, привязанную с соответствующему объекту GPO, или оснастку Domain Controller Security Policy. Откройте узел Computer Configuration | Windows Settings | Security Setting ( Local Policies | Audit Policy (Конфигурация компьютера | Конфигурация Windows | Параметры безопасности | Локальные политики | Политика аудита) и дважды щелкните мышью на политике Audit directory service access (Аудит доступа к службе каталога) (рис. 5.6). (По умолчанию для всех политик аудита задано одно значение — No auditing
(Нет аудита).) Затем установите флажок Define these policy settings (Определить следующие параметры политики) и выберите нужное состояние флажков Success (Успех) и Failure (Отказ).
| g# Group Policy
Action ViewTree |Action ViewTree |^ Default Domain Controllers Policy [w2kdc4.w * HComputer Configuration+■ Software Settings•l I Windows SettingsQ Scripts (Startup/Shutdown)^ Security Settings i+i -d^ Account Policies^ Local Policies+ ^ AiJdit Policyж _=jj User Rights Assignment ж ^ Security Options^ Default Domain Controllers Policy [w2kdc4.w * HComputer Configuration+■ Software Settings•l I Windows SettingsQ Scripts (Startup/Shutdown)^ Security Settings i+i -d^ Account Policies^ Local Policies+ ^ AiJdit Policyж _=jj User Rights Assignment ж ^ Security OptionsPolicy(X^Audit account logon events w^Audit account managementPolicy(X^Audit account logon events w^Audit account managementtAuditdirectory service accesstAuditdirectory service access^Audit logon events L^] Audit object access i«o]Audit policy change SS] Audit privilege use y»]Audit process tracking L^] Audit system events^Audit logon events L^] Audit object access i«o]Audit policy change SS] Audit privilege use y»]Audit process tracking L^] Audit system events| Computer SettingNo auditingNo auditing| Computer SettingNo auditingNo auditingSuccess, FailureSuccess, FailureNo auditing No auditing No auditing No auditing No auditing No auditingNo auditing No auditing No auditing No auditing No auditing No auditing
Action View
Tree |
Action View
Tree |
^ Default Domain Controllers Policy [w2kdc4.w * HComputer Configuration
+■ Software Settings
•l I Windows Settings
Q Scripts (Startup/Shutdown)
^ Security Settings i+i -d^ Account Policies
^ Local Policies+ ^ AiJdit Policy
ж _=jj User Rights Assignment ж ^ Security Options
^ Default Domain Controllers Policy [w2kdc4.w * HComputer Configuration
+■ Software Settings
•l I Windows Settings
Q Scripts (Startup/Shutdown)
^ Security Settings i+i -d^ Account Policies
^ Local Policies+ ^ AiJdit Policy
ж _=jj User Rights Assignment ж ^ Security Options
Policy
(X^Audit account logon events w^Audit account management
Policy
(X^Audit account logon events w^Audit account management
tAuditdirectory service access
tAuditdirectory service access
^Audit logon events L^] Audit object access i«o]Audit policy change SS] Audit privilege use y»]Audit process tracking L^] Audit system events
^Audit logon events L^] Audit object access i«o]Audit policy change SS] Audit privilege use y»]Audit process tracking L^] Audit system events
| Computer Setting
No auditing
No auditing
| Computer Setting
No auditing
No auditing
Success, Failure
Success, Failure
No auditing No auditing No auditing No auditing No auditing No auditing
No auditing No auditing No auditing No auditing No auditing No auditing
Рис. 5.6. Разрешение аудита событий, связанных с обращением к объектам Active Directory
Внимание!
Установки No auditing (Нет аудита) и Not defined (Не определено) имеют разное значение. Если политика не определена, вы можете установить ее на другом уровне. Значение No auditing переопределяет все установки, которые могли быть заданы ранее. Групповые политики для контейнера Domain Controllers применяются последними и, следовательно, имеют самый высокий приоритет. Поэтому установки аудита, определяемые этими политиками по умолчанию, переопределяют любые параметры, заданные на предыдущих уровнях.
Как только политика установлена, ее можно сразу же обновить с помощью команды secedit /refreshpolicy machine_policy.
Для операций чтения рекомендуется задавать аудит неудачных обращений (отказов), поскольку при регистрации большого количества успешных обращений журнал безопасности (Security Log) будет быстро переполняться, и при этом снижается производительность контроллеров домена. Для операций записи, создания/удаления и других критичных операций (которые выполняются гораздо реже, чем чтение) можно устанавливать аудит всех событий, т. е. успешных и неудачных обращений.
По умолчанию для группы Everyone (Все) выполняется аудит специальных обращений (успешных и неудачных) ко всем объектам в домене (рис. 5.7). Все объекты домена наследуют эти установки от корневого доменного кон-
тейнера. У некоторых контейнеров имеются дополнительные параметры аудита. Все установки разрешают аудит критических операций, таких как запись, удаление, изменение и т. д. (Вы можете увидеть их в списке.) Все установки аудита можно просматривать в окне свойств объекта: откройте вкладку Security, нажмите кнопку Advanced и перейдите на вкладку Auditing. Нажмите кнопку View/Edit, и в открывшемся окне вы можете просматривать и изменять параметры. Если вы откроете вкладку Auditing для некоторого дочернего объекта каталога, то заметите, что все установленные флажки затенены. Их нельзя изменить непосредственно, для этого нужно открыть родительский или корневой объект. Если установить еще не отмеченный флажок, система создаст новый набор параметров аудита и добавит его в список.
н - Внимание! ^v j
Поскольку по умолчанию успешные обращения регистрируются, после включения аудита будет возникать громадное количество записей в журналах оснастки Event Viewer (Просмотр событий). Поэтому при выполнении аудита в течение достаточно длительного времени следует изменить параметры, заданные по умолчанию.
Все сообщения аудита можно просматривать в журнале безопасности в окне оснастки Event Viewer. В качестве источника этих сообщений указывается "Security", а категория — "Directory Service Access".
1 Auditing Entry for w2k? jx|0Dject j Properties ]'•lame: (Everyone:уМ:^СЙApply onto: |This object and all child objectsAccessiWy; Successful Failed1Full Control□D™List Contents□□Read All Properties□□Write All PropertiesQ0Delete□0Delete Subtree00Read Permissions□□Modify Permissions00Modify Owner□0All Validated WritesQ0All Extended RightsИ0Create All Child ObjectsИ0r. ,i.i. л и i—1. :i j nu . -l.1731П1— Apply these auditing entries to objectsClear Alland/or containers within this container onlyOK | Cancel1 Auditing Entry for w2k? jx|0Dject j Properties ]'•lame: (Everyone:уМ:^СЙApply onto: |This object and all child objectsAccessiWy; Successful Failed1Full Control□D™List Contents□□Read All Properties□□Write All PropertiesQ0Delete□0Delete Subtree00Read Permissions□□Modify Permissions00Modify Owner□0All Validated WritesQ0All Extended RightsИ0Create All Child ObjectsИ0r. ,i.i. л и i—1. :i j nu . -l.1731П1— Apply these auditing entries to objectsClear Alland/or containers within this container onlyOK | CancelРис. 5.7. Стандартные параметры аудита для контейнера UsersРис. 5.7. Стандартные параметры аудита для контейнера Users
1 Auditing Entry for w2k
? jx|
0
Dject j Properties ]
'•lame: (Everyone:уМ:^СЙ
Apply onto: |This object and all child objects
AccessiWy; Successful Failed
1
Full Control□D™
List Contents□□
Read All Properties□□
Write All PropertiesQ0
Delete□0
Delete Subtree00
Read Permissions□□
Modify Permissions00
Modify Owner□0
All Validated WritesQ0
All Extended RightsИ0
Create All Child ObjectsИ0
r. ,i.i. л и i—1. :i j nu . -l.1731П1
— Apply these auditing entries to objectsClear All
and/or containers within this container only
OK | Cancel
1 Auditing Entry for w2k
? jx|
0
Dject j Properties ]
'•lame: (Everyone:уМ:^СЙ
Apply onto: |This object and all child objects
AccessiWy; Successful Failed
1
Full Control□D™
List Contents□□
Read All Properties□□
Write All PropertiesQ0
Delete□0
Delete Subtree00
Read Permissions□□
Modify Permissions00
Modify Owner□0
All Validated WritesQ0
All Extended RightsИ0
Create All Child ObjectsИ0
r. ,i.i. л и i—1. :i j nu . -l.1731П1
— Apply these auditing entries to objectsClear All
and/or containers within this container only
OK | Cancel
Рис. 5.7. Стандартные параметры аудита для контейнера Users
Рис. 5.7. Стандартные параметры аудита для контейнера Users
Восстановление Active Directory
Общие вопросы
С помощью стандартной программы Windows 2000 Backup можно архивировать и восстанавливать как важные данные, так и службу Active Directory. Операции с Active Directory должны выполняться локально для каждого контроллера домена. Архивирование контроллера домена выполняется "на ходу", в процессе его нормальной работы. Для восстановления Active Directory контроллер домена нужно загрузить в режиме восстановления (Directory Service Restore Mode) (нажав клавишу <F8> при загрузки компьютера).
Состояние системы (System State)
Архивирование Active Directory является частью процесса сохранения состояния системы на некотором контроллере домена. Отдельные элементы состояния системы архивировать (или восстанавливать) нельзя. Состояние системы на рядовом сервере или рабочей станции включает в себя следующие элементы (рис. 5.8):
Boot Files (Загрузочные файлы).
СОМ+ Class Registration Database (База данных регистрации классов СОМ+).
Registry (Реестр).
На контроллерах домена появляются два дополнительных элемента:
Active Directory (файлы ntds.dit, edb.chk, edb*.log, resl.log и res2.log).
Sys Vol (системный том) (по умолчанию папка %SystemRoot%\SYSVOL \sysvol).
Если на сервере или контроллере домена установлены службы сертификатов (Certificate Services), то появляется еще один элемент:
Certificate Server (Сервер сертификатов).
Name ■: - ■ у т ;д АДд - Ад ДА';А(:1 Comment
^ActiveDiiectoty
4^ Boot Files
Certificate Server
C0M+ Class Registration Database
^ Registry
Рис. 5.8. Состояние системы на контроллере доменаРис. 5.8. Состояние системы на контроллере домена2 Sys Vol
Рис. 5.8. Состояние системы на контроллере домена
Рис. 5.8. Состояние системы на контроллере домена
Схема
Расширение схемы является необратимой операцией, и вы не можете восстановить старую версию схемы. Созданные атрибуты и классы невозможно удалить, их можно только отключить (deactivate).
"Захороненные объекты" (tombstones)
План восстановления Active Directory должен учитывать время жизни так называемых "захороненных объектов" (по умолчанию 60 дней: минимальное значение — 2 дня). Эта величина хранится в атрибуте tombstoneLifetime объекта с именем СN=Directory Service,CN=Windows NT,CN=Service,CN=Configuration, DC=< Forest Root Domain>. "Захороненным" называется удаленный объект, который продолжает существовать в Active Directory в течение своего времени жизни, после чего система окончательно удаляет его. Время хранения ("возраст") архивной копии не должно превышать величины времени жизни; в противном случае устаревшие данные не будут восстановлены.
Архивирование Active Directory
Для архивирования состояния системы запустите утилиту Backup, выполнив команду Start | Programs | Accessories | System Tools | Backup. Откройте вкладку Backup и установите флажок System State в окне структуры. (Можно включить в архив и дополнительные файлы.) Выберите тип носителя архива или укажите имя файла и нажмите кнопку Start Backup. В открывшемся окне нажмите кнопку Advanced. Состояние системы всегда должно сохраняться в режиме обычной архивации (normal backup). Если вы хотите получить небольшой архивный файл без системных файлов, сбросьте установленный по умолчанию флажок Automatically backup System Protected Files with the System State (Автоматически архивировать защищенные системные файлы вместе с состоянием системы). Закройте окно и нажмите кнопку Start Backup — начнется процесс архивации.
Примечание )
Только полный архив (с системными файлами) позволяет полностью восстановить отказавший контроллер домена. Систему можно восстановить "с нуля" за 30—40 минут. Восстановите образ системы Windows 2000 Server с компакт- диска или сетевого диска, используя какую-нибудь программу дублирования образов, например, Norton Ghost. Загрузите сервер и восстановите полный архив. Вы получите полностью функциональный контроллер домена, сохранивший идентификаторы SID и GUID, а также другие необходимые параметры Active Directory.
Восстановление Active Directory
Восстановление Active Directory — это значительно более сложный процесс по сравнению с архивированием. Прежде всего, у вас есть две возможности:
Установить заново операционную систему на отказавшем компьютере и повысить его роль (создать контроллер домена); при этом база данных Active Directory будет автоматически скопирована с других контроллеров домена в процессе репликации. В результате получится совершенно новый контроллер, а все ссылки на старый контроллер домена в Active Directory нужно будет удалить вручную.
Восстановить состояние системы с носителя архива, сохранив, таким образом, индивидуальные характеристики контроллера домена.
Существует три различных сценария восстановления состояния системы из архива:
Выполнить основное восстановление (primary restore), если у вас только один контроллер домена, и вы хотите восстановить этот домен. При основном восстановлении создается новая база данных службы репликации файлов (FRS); поэтому восстановленные данные будут затем реплицироваться на другие контроллеры домена.
Если в домене остался хотя бы один контроллер домена, выполняйте неавторитетное восстановление (non-authoritative restore). Восстановленный контроллер получит актуальные данные в процессе репликации Active Directory с других контроллеров домена. Этот тип восстановления используется чаще всего.
Если вам нужно восстановить случайно данные, удаленные из Active Directory, выполняйте авторитетное восстановление (authoritative restore). Существовавшее в прошлом состояние системы полностью восстановить нельзя, т. к. авторитетное восстановление не затрагивает последних изменений, выполненных в каталоге с момента последней архивации.
Не забывайте о том, что при любом сценарии восстановить Active Directory можно только тогда, когда сервер загружен в режиме восстановления каталога.
Основное восстановление
Запустите утилиту Backup и откройте вкладку Restore. Выберите носитель архива и установите флажок System State. Выберите опцию Original location (Исходное размещение) для восстановления файлов. Нажмите кнопку Start Restore и выберите опцию Advanced в окне Confirm Restore (Подтверждение восстановления). Установите флажок, показанный на рис. 5.9, закройте окно и начните процесс восстановления.
Рис. 5.9. Этот флажок используется только при основном восстановлении
Неавторитетное восстановление
Процедура неавторитетного восстановления не отличается от описанной выше процедуры основного восстановления: отличие лишь в том, что вы должны ничего не менять и согласиться с предлагаемыми по умолчанию опциями. Восстановленный контроллер домена получит обновленную информацию от партнеров по репликации.
Авторитетное восстановление
Для выполнения авторитетного восстановления используйте следующую процедуру:
Запустите утилиту Backup и используйте альтернативное местоположение (alternative location) при восстановлении состояния системы. В указанной папке или на диске появятся следующие папки:
Boot Files (с файлами ntdetect.com, ntldr)
Registry (с файлами default, SAM, SECURITY, software, system, userdiff)
Sys Vol (эта папка отражает структуру тома SYSVOL)
Когда утилита Backup будет заканчивать свою работу (т. е. будет выполнено неавторитетное восстановление), она предложит вам перезагрузить компьютер (рис. 5.10). Вы должны ответить отрицательно (NO) и закрыть программу.
Запустите из командной строки утилиту NTDSutil.exe. Ниже приведен пример диалога для команды authoritative restore (подсказки утилиты выделены полужирным):
С: Vntdsutil
ntdsutil: authoritative restore
authoritative restore: restore subtree OU=Staff,DC=w2k,DC=dom
Opening DIT database... Done.
The current time is 09-21-00 17:35.49.
Most recent database update occured at 09-18-00 22:30.43.
Increasing attribute version numbers by 300000.
Counting records that need updating...
Records found: 0000000025
Done.
Found 25 records to update.
Updating records...
Records remaining: 0000000000 Done.
Successfully updated 25 records.
Authoritative Restore completed successfully.
authoritative restore: quit ntdsutil: quit
Загрузите компьютер в нормальном режиме и дождитесь момента публикации тома SYSVOL (для мониторинга используйте команду net share).
Скопируйте том SYSVOL из альтернативной папки в его рабочую папку. При этом изменения тома SYSVOL будут самыми поздними по времени и, следовательно, будут реплицированы на все другие контроллеры домена как авторитетные данные.
Рис. 5.10. При выполнении авторитетного восстановления вы должны нажать кнопку No
Выше был приведен пример восстановления подразделения. Можно пометить как "авторитетные данные" отдельный объект, поддерево или целый раздел каталога. Однако это не относится к разделу Schema.
Обратите внимание на выделенную строку, которая указывает на увеличение номеров версий атрибутов, и на две предыдущие строки. Номера версий увеличиваются на 100 000 для каждого дня, прошедшего с момента создания архива. Для просмотра изменений метаданных можно применять утилиту ReplMon.exe. В нашем примере воспользуемся следующей командой:
repadmin /showmeta OU=Staff,DC=w2k,DC=dom w2kdc4.w2k.dom
Выполняя эту команду на различных контроллерах домена, можно проверить успешность выполнения авторитетного восстановления и проследить за распространением изменений в процессе репликации.
Если в вашей конфигурации объекты Active Directory меняются редко, можно изменить стандартное значение, на которое увеличивается номер версии. При этом используется команда, подобная следующей:
restore subtree OU=Staff, DC=w2k,DC=dom verinc 1000
Часть III
Использование системных утилит
Глава 6. Основные характеристики и назначение системных утилит
Глава 7. Диагностика и обслуживание Active Directory
Глава 8. Сетевые и распределенные службы
Глава 9. Манипулирование объектами Active Directory
Глава 10. Средства реорганизации каталога
Глава 11. Средства управления безопасностью
Глава 12. Работа с групповыми политиками
ГЛАВА 6
Основные характеристики и назначение системных утилит
Когда-то, давным-давно, во времена мэйнфреймов и мини-ЭВМ, каждый системщик знал, что если в компьютере возникли сбои, нужно запустить какой-нибудь тест. Теперь, в эпоху персональных компьютеров и различных программ с графическим интерфейсом, системные администраторы иногда забывают, что удобные и эффективные диагностические средства по-прежнему существуют. Пользуясь этими средствами, вы можете не ломать голову над определением источника неисправности и пытаться логически "вычислить" его. (Не всегда такой подход позволяет добиться результата и — уж как правило! — требует хорошего знания системы.) Вместо этого вы быстро и без особых усилий получаете массу диагностической информации, которую можно использовать для дальнейшего анализа ситуации, а нередко вам сразу же указывается причина ошибок.
В данной главе я попытался классифицировать различные системные утилиты, поставляемые компанией Microsoft и позволяющие администраторам управлять службой Active Directory и диагностировать ее. Эта глава поможет вам быстро найти подходящий инструмент для выполнения конкретной задачи. В последующих главах большая часть этих инструментов описывается подробно. Я не ставил перед собой задачу детально описать каждый параметр или опцию. (Список и описание имеющихся параметров легко можно получить путем запроса справки по конкретной утилите, или выполнив поиск в справочных HTML-файлах.) В первую очередь я обращал внимание на наиболее интересные, полезные и неочевидные возможности системных утилит, а также старался показать на примерах, как их можно использовать в реальных условиях.
Где найти все эти утилиты?
Пакет Windows 2000 Support Tools
Некоторые администраторы забывают или просто не знают о том, что на каждом дистрибутивном диске с системой Windows 2000 имеется пакет очень ценных системных утилит, носящий название Windows 2000 Support Tools. (Набор утилит одинаков для всех версий Windows 2000.) Этот пакет должен устанавливаться отдельно от самой операционной системы. Запустите файл Setup.exe из папки \SUPPORT\TOOLS и установите пакет на жесткий диск (пакет занимает на диске около 20 Мбайт). После этого все утилиты можно запускать из командной строки, а некоторые — из меню Start (Пуск).
Пакет Windows 2000 Resource Kit
Пакет Windows 2000 Support Tools можно рассматривать как усеченный вариант пакета Windows 2000 Resource Kit — отдельно приобретаемого программного продукта, содержащего несколько сотен различных утилит, а также исчерпывающую документацию в электронном и "твердом" виде. (Этот пакет существует в двух версиях: Server и Professional. Большинство описываемых далее утилит присутствует в обеих версиях.)
Пакет Windows 2000 Resource Kit занимает на жестком диске около 60 Мбайт. Хорошая новость: некоторые очень полезные утилиты из этого пакета (а также даже целые главы из сопутствующих книг!) можно свободно загрузить с веб-узла Microsoft (см. приложения).
Пакет Windows 2000 Server Resource Kit содержит коллекцию сценариев на VBScript, названную Remote Administration Scripts. Несколько сценариев из этой коллекции упоминается ниже в таблицах. Если вы собираетесь писать свои сценарии или приложения, ориентированные на Active Directory, обратите внимание на эти сценарии, поскольку с их помощью вы значительно быстрее освоите основные элементы сценариев (включая концепции программирования с использованием ADSI).
Классификация по назначению
Прежде всего, вы должны получить общее представление об имеющихся программных инструментах и административных задачах, для которых эти инструменты используются. Взгляните на табл. 6.1, в которой перечислены некоторые утилиты, входящие в состав Windows 2000 Resource Kit и Windows 2000 Support Tools и поделенные на категории в зависимости от основного их назначения. В некоторых случаях это деление довольно условно, т. к. одни и те же утилиты иногда могут применяться для выполнения разных задач.
Также в таблицу включены утилиты Active Directory Migration Tool (ADMT) и AdsVw.exe (из Active Directory SDK), которые можно свободно загрузить с веб-узла Microsoft. Описание каждого упомянутого в таблице инструмента дается ниже, в табл. 6.2.
Таблица 6.1. Системные утилиты Windows 2000, классифицированные по назначению
Задача администрирования
Используемые инструменты
Просмотр и редактирование объектов Active Directory
ADSIEdit.msc, Ldp.exe, AdsVw.exe, ModifyUsers.vbs
Поиск в Active Directory
Ldp.exe, Search.vbs, UserAccount.vbs, EnumProp.exe
Миграция и реструктуризация. Манипулирование объектами Active Directory
ADMT, MoveTree.exe, NetDom.exe, ClonePrincipal, AddUsers.exe, GrpCpy.exe
Пакетные операции, импорт/экспорт
CSVDE.exe, LDIFDE.exe, AddUsers.exe, CreateUsers.vbs
Диагностика и обслуживание базы данных Active Directory
NTDSutil.exe
Диагностика
NetDiag.exe, NSIookup.exe, DCdiag.exe, NLtest.exe, DNSCmd.exe, RPCPing
Репликация
RepAdmin.exe, ReplMon.exe, DsaStat.exe, NTFRSutl.exe
Безопасность Active Directory
ACLDiag.exe, DsACLs.exe, SDCheck.exe, KerbTray.exe, KList.exe
Безопасность системных объектов (файлов, общих ресурсов, реестра и т. д.)
SIDWalker, SublnACL.exe, ADMT
Групповые политики
GPOTool.exe, GPResult.exe
Примечание )
Не забывайте о том, что система Windows 2000 Server содержит несколько "традиционных" утилит для администрирования доменов Windows NT 4.0: Server Manager (srvmgr.exe), User Manager (usrmgr.exe) и System Policy Editor (poledit.exe). Пакет Windows 2000 Server Resource Kit также содержит утилиту Domain Monitor (dommon.exe). Все перечисленные утилиты являются обновленными версиями своих предшественников из Windows NT 4.0. В некоторых случаях этот факт должен учитываться при работе с ними.
Описание утилит
В табл. 6.2 даны имена файлов и "официальные" названия программных инструментов, а также приводится краткое описание их возможностей. Таблица отсортирована по именам файлов. (Это объясняется тем, что чаще всего вам придется иметь дело именно с именами файла.) Кроме того, указаны имя пакета, в который входит конкретный инструмент, и номер главы, где дана наиболее полная информация по его использованию. (Сокращение ST используется для пакета Windows 2000 Support Tools, RK — для Windows 2000 Resource Kit и RAS — для Remote Administration Scripts. Эти сокращения также присутствуют в подзаголовках последующих глав.)
Таблица 6.2. Избранные системные утилиты Windows 2000 и их назначение
Имя инструмента
Входит в пакет
Назначение
См. главу
ACLDiag.exe (ACL Diagnostics)
ST
Просмотр разрешений (списков ACL) на доступ к объекту каталога. Проверка результатов делегирования управления и сравнение параметров безопасности объекта со значениями, заданными по умолчанию в схеме
11
AddUsers.exe (Add Users)
RK
Вывод в файл, создание и удаление множества пользовательских учетных записей. Добавление пользователей в группы
5
AD SI Ed it. m sc
(оснастка ADSI Edit)
(GUI-инструмент)
ST
Просмотр и изменение объектов Active Directory (включая разделы схемы и конфигурации). Редактирование списков ACL для объектов
4
AdsVw.exe (Active Directory Browser) (GUI-инструмент)
Active Directory SDK
Аналогично вышесказанному — как для доменов Windows 2000, так и для доменов Windows NT (изменение базы данных SAM)
9
ClonePrincipal (набор сценариев)
ST
Создание копии (клона) пользовательской или групповой учетной записи в другом лесе при сохранении прав пользователя или группы на ■ доступ к объектам каталога или общим ресурсам. (Включает в себя библиотеку Clonepr.dll и сценарии Clonepr.vbs, Clonelg.vbs, Clonegg.vbs, Cloneggu.vbs и SIDHist.vbs)
10
Таблица 6.2 (продолжение)
Имя инструмента
ВходитНазначение^м.
в пакетглаву
Createllsers.vbs
RK (RAS) Создание множества пользователь- 5 ских учетных записей в стандартном или указанном контейнере
CSVDE.exe (CSV Directory Exchange)
Система Экспорт и импорт множества объек- 9 (на конт-тов каталога, с использованием фай-
роллерахлов в CSV-формате
домена)
DCdiag.exe
(Domain Controller Diagnostic Tool)
STДиагностика контроллеров домена: 7
наличие связи между контроллерами, работоспособность служб каталога и других служб, вопросы репликации и т. д.
DNSCmd.exe
(DNS Server
Troubleshooting Tool)
STПроверка и модификация зон и ре- 3
сурсных записей, хранящихся на сервере Windows 2000 DNS. Управление конфигурацией сервера
DsACLs.exe
STПросмотр и изменение разрешений 11
(списков ACL) на доступ к объектам каталога. Восстановление разрешений, заданных по умолчанию
DsaStat.exe
(DSA Statistics)
STСравнение разделов каталога, храня- 8
щихся на двух различных контроллерах домена, и вывод статистики или результатов сравнения атрибутов. Также могут проверяться серверы глобального каталога
DumpFSMOs.cmd
RKОтображение владельцев ролей 5
FSMO, известных указанному контроллеру домена
EnumProp.exe
RKОтображения всех или некоторых —
атрибутов (включая QUID, SID и дескриптор безопасности) объекта Active Directory, заданного с помощью его отличительного имени. (Используется LDAP-провайдер)
GPOTool.exe (Group Policy Verification Tool)
GPResult.exe (Group Policy Results)
RKПроверка целостности объектов GPO 12
и их репликации в домене
RKПросмотр параметров групповых по- 12
литик, прикладываемых к пользователю и/или компьютеру
Таблица 6.2 (продолжение)
Имя инструмента
ВходитНазначение^м.
в пакетглаву
GrpCpy.exe (GUI-инструмент)
RKКопирование пользователей из одной —
группы в другую, находящуюся в том же или другом домене
KerbTray.exe (Kerberos Tray) (GUI-инструмент)
RKОтображение и удаление всех кэши- 14
рованных билетов Kerberos для аутентифицированных служб
KList.exe
(Kerberos List)
RKАналогично вышесказанному. Позво- 14
ляет удалять билеты выборочно
Ksetup.exe (Kerberos Setup)
STКонфигурирование клиентов Windows —
2000 для использования сервера MIT Kerberos вместо домена Windows 2000
KTPass.exe
(Kerberos Keytab Setup)
STКонфигурирование не-Windows 2000 —
(UNIX) службы Kerberos в качестве субъекта безопасности (security principal) в Active Directory
LDIFDE.exe
Система Экспорт и импорт множества объек- 9 (на конт- тов каталога с использованием фор- роллерах мата LDIF. Модификация объектов домена)
Ldp.exe (Active Directory Administration Tool) (GUI-инструмент)
STВыполнение операций LDAP с любым 9
LDAP-совместимымикаталогами,
такими как Active Directory или NDS
ModifyUsers.vbs
RK (RAS) Изменения указанных атрибутов — множества пользовательских учетных записей в домене. Можно использовать входной файл с описанием значений атрибутов
MoveTree.exe
(Active Directory Object Manager)
STПеремещение объектов каталога, 10
таких как пользовательские учетные записи, подразделения и универсальные группы из одного домена в другой в рамках одного леса
NetDiag.exe (Network Connectivity Tester)
STПроверка различных элементов и 8
параметров сети (протоколов, служб DNS и WINS, и т. д.) на клиентских компьютерах
Таблица 6.2 (продолжение)
Имя инструмента
Входит в пакет
Назначение
См. главу
NetDom.exe
(Windows 2000 Domain
Manager)
ST
Конфигурирование и проверка доверительных отношений и безопасных каналов; подключение, перемещение и удаление учетных записей компьютеров
9
NLtest.exe
ST
Перечисление контроллеров в домене, опрос доверенных доменов, опрос и сброс безопасных каналов между контроллерами доменов, инициирование репликации с Windows NT 4.0 BDC
8
NTDSutil.exe (Active Directory Diagnostic Too!)
Sys (на контроллерах домена)
Управление файлами базы данных Active Directory, мастерами операций, утраченными доменами и контроллерами доменов. Выполнение авторитетного восстановления
7
NTFRSutl.exe
RK
Управление службой репликации файлов (FRS) (включая репликацию тома SYSVOL и корней DFS)
8
RepAdmin.exe (Replication Diagnostics Tool)
ST
Отображение партнеров по репликации, метаданных и соединений; принудительная репликация разделов каталога, запуск службы Knowledge Consistency Checker (КСС)
8
ReplMon.exe (Active Directory Replication Monitor) (GUI-инструмент)
ST
Мониторинг и запуск процесса репликации, отображение метаданных репликации, топологии и статуса контроллеров домена
8
RPingc.exe (GUI-инструмент) и RPings.exe (RPC Ping: Connectivity Verification Tool)
RK
Проверка связи по протоколу RFC между клиентами и RPC-серверами
8
SDCheck.exe (Security Descriptor Check Utility)
ST
Проверка наследования списков ACL для объектов каталога; проверка репликации дескриптора безопасности между контроллерами домена
11
Search.vbs
ST
Поиск объекта на LDAP-сервере
9
Таблица 6.2 (окончание)
Имя инструмента
Входит в пакет
Назначение
См. главу
Security Administration tools (SIDWalker) (набор утилит)
ST
Изменение заданных идентификаторов SID в ACL-списках для файлов, общих ресурсов и разделов реестра. Предоставление прав на доступ к объектам указанным пользователям и группам. (Включает в себя утилиты ShowAccs.exe и SIDWalk.exe и оснастку SIDWalk.msc.)
SublnACL.exe
RK
Отображение дескрипторов безопасности для файлов, разделов реестра или служб. Изменение параметров безопасности, например, владельца объекта, доменного имени или идентификатора SID
UserAccount.vbs
RK (RAS)
Отображение сведений о нормально работающих, заблокированных или запрещенных пользовательских учетных записях домена
—
ГЛАВА 7
Диагностика и обслуживание Active Directory
Две системных утилиты, описываемые в этой главе, рассматривают контроллеры домена как элементы, из которых строится распределенная структура службы Active Directory. Чтобы служба Active Directory в целом могла функционировать, должны быть работоспособными все ее элементы — контроллеры домена. Поэтому администратору требуются инструменты для индивидуальной проверки каждого контроллера домена. Кроме того, нужны отладочные средства для обслуживания Active Directory в тех случаях, когда выполняются восстановление или чистка базы данных Active Directory, а также другие "низкоуровневые" операции.
Domain Controller Diagnostic Tool (DCdiag.exe) (ST)
Эта утилита представляет собой сложную тестовую программу (точнее сказать — набор специализированных тестов), которая позволяет администратору быстро проверить работоспособность контроллера домена и обнаружить возможные проблемы. Утилита DCdiag проверяет состояние служб контроллера домена, а также его взаимодействие (связь, доверительные отношения, вопросы репликации и т. д.) с партнерами по репликации. Эта утилита в первую очередь проверяет функционирование Active Directory, а не ее логическое наполнение (целостность данных, семантику и т. п.).
Очень полезно (и рекомендуется) запускать DCdiag после установки каждого контроллера домена. Нередко — чаще в небольших сетях — оказывается так, что администратор устанавливает Active Directory на первый контроллер в сети и остается в убеждении, что все работает нормально, поскольку он не видит никаких сообщений об ошибках. Обычно проблемы начинаются потом, когда администратор пытается подключить пользователей к домену или установить другой контроллер домена (в том же самом или в другом домене). Оказывается, что первый контроллер домена скон-
фигурирован неправильно. (Очень часто проблемы возникают в службе DNS, базирующейся на компьютере под управлением Windows 2000 или на сервере от стороннего производителя.) В такой ситуации утилита DCdiag в сочетании с другой утилитой — NetDiag.exe — помогла бы на начальных этапах построения домена устранить многие потенциальные проблемы.
Утилита DCdiag может выводить на экран очень много сообщений, особенно при выполнении корпоративных тестов; поэтому для последующего анализа результатов используйте файлы журналов. Диагностические сообщения достаточно информативны и нередко сразу же указывают на ошибки, которые вы можете устранять без какого-либо дополнительного анализа результатов теста.
Утилита DCdiag документирована не очень хорошо, и лучшим описанием всех ее параметров является встроенная справка (dcdiag /?). Намного больше сведений по применению этой утилиты содержится в документации Windows 2000 Resource Kit. Рассмотрим некоторые наиболее интересные возможности DCdiag и примеры их использования.
( Примечания )
Если устанавливали утилиту DCdiag.exe с дистрибутивного диска Windows 2000, загрузите обновленную версию, используя адрес http:// www.microsoft.com/downloads/release.asp?ReleaselD=22939.
Утилиту DCdiag можно запускать с любого сетевого компьютера и тестировать любой контроллер домена в лесе. Некоторые тесты могут выполняться при регистрации в сети с правами рядового пользователя (при этом не идут тесты Replications, NetLogons и ObjectsReplicated); однако для того, чтобы получить доступ ко всем возможностям утилиты DCdiag, вы должны зарегистрироваться как администратор (или, даже, как администратор предприятия) или ввести реквизиты администратора при запуске утилиты.
Полный стандартный тест
Давайте взглянем на результаты успешного выполнения утилиты DCdiag. Это позволит вам понять структуру и назначение тестов. Тесты Topology, CutofIServers и OutboundSecureChannels по умолчанию не выполняются, и вы должны запускать их индивидуально.
Утилита DCdiag работает быстрее, если указывать DNS-имя контроллера домена, а не NetBIOS-имя. (Если имя контроллера домена опускается, подразумевается текущий сервер регистрации.) Если к команде добавлены параметры /а или /е, выбранный тест будет выполняться на каждом контроллере в сайте или лесе, соответственно.
Чтобы получить от утилиты максимум информации, добавьте к команде параметр /v (verbose). Имеется еще один недокументированный параметр — /а (по сути, эквивалентный параметру /v), который разрешает вывод сводной информации (pDsInfo) по конфигурации вашего леса доменов.
Чаще всего для тестирования контроллера домена используется команда следующего вида:
dcdiag /s:w2kdc4.w2k.dom
Ниже приведен результат ее успешного выполнения:
DC Diagnosis
Performing initial setup:
Done gathering initial info.
Doing initial non skippeable tests
Testing server: W2K-site\W2KDC4
Starting test: Connectivity W2KDC4 passed test Connectivity
Doing primary tests
Testing server: W2K-site\W2KDC4
Starting test: Replications W2KDC4 passed test Replications
Starting test: NCSecDesc
W2KDC4 passed test NCSecDesc
Starting test: NetLogons
W2KDC4 passed test NetLogons
Starting test: Advertising W2KDC4 passed test Advertising
Starting test: KnowsOfRoleHolders W2KDC4 passed test KnowsOfRoleHolders
Starting test: RidManager
W2KDC4 passed test RidManager
Starting test: MachineAccount W2KDC4 passed test MachineAccount
Starting test: Services W2KDC4 passed test Services
Starting test: ObjectsReplicated
W2KDC4 passed test ObjectsReplicated
Starting test: frssysvol
W2KDC4 passed test frssysvol
Starting test: kccevent
W2KDC4 passed test kccevent
Starting test: systemlog W2KDC4 passed test systemlog
Running enterprise tests on : w2k.dom
Starting test: Intersite
w2k.dom passed test Intersite
Starting test: FsmoCheck
w2k.dom passed test FsmoCheck
Тесты в двух первых разделах — Initial setup и Non skippeable tests — выполняются всегда, даже если вы укажите только один тест. Для обнаружения ошибок можно сначала запустить полный тест, однако для более точной диагностики рекомендуется запускать тесты выборочно в режиме подробного протоколирования (verbose mode). Сообщения об ошибках и диагностические сообщения в этом режиме весьма информативны, и нет необходимости приводить много примеров.
Проверка репликации
Утилита DCdiag позволяет достаточно хорошо обнаруживать ошибки, связанные с репликацией. Для примера рассмотрим некоторую ситуацию. Допустим, сайт содержит три контроллера домена, один из которых отказывается выполнять репликацию со своими партнерами. С помощью следующей команды можно проверить все контроллеры домена на наличие ошибок репликации:
dcdiag /s:w2kdc4,w2k.dom /test:Replications /a /v
Результат выполнения команды будет таким:
DC Diagnosis
Performing initial setup:
Connecting to directory service on server w2kdc4,w2k.dom.
Collecting site info.
Identifying all servers.
Found 3 DC(s). Testing 3 of them.
Done gathering initial info.
Doing initial non skippeable tests
Doing primary tests
Testing server: W2K-site\W2KDC4
Starting test: Replications
* Replications Check
[Replications Check,W2KDC4] A recent replication attempt failed: From W2KDC2 to W2KDC4
Naming Context: CN=Schema,CN=Configuration,DC=w2k,DC=dom The replication generated an error (8456):
The source server is currently rejecting replication requests. (В настоящий момент сервер-источник отвергает запросы на репликацию.)
The failure occurred at 2000-11-08 18:52.24.
The last success occurred at 2000-11-08 18:50.52.
1 failures have occurred since the last success. (1 ошибка с момента последней успешной операции.)
Replication has been explicitly disabled through the server options.
W2KDC4passed test Replications
Testing server: W2K-site\W2KDC2
Starting test: Replications
Replications Check
[Replications Check,W2KDC2] Outbound replication is disabled.
To correct, run "repadmin /options W2KDC2 - DISABLE_OUTBOUND_REPL"
W2KDC2failed test Replications
Testing server: W2K-site\W2KDC03
Starting test: Replications
Replications Check
Skipping server W2KDC2, because it has outbound replication disabled
W2KDC03passed test Replications
Как вы можете видеть из диагностических сообщений, утилита DCdiag обеспечивает подробную информацию по неисправным соединениям для каждого контроллера домена в сайте.
Корпоративные тесты
Эти тесты позволяют проверить многие элементы, которые жизненно важны для нормальной работы корпоративной сети (леса доменов); к ним относятся межсайтовые связи (intersite links), серверы форпостов (bridgehead servers), владельцы ролей FSMO и т. д.
Нет смысла выполнять тест Intersite только на одном контроллере домена, поэтому вы должны указать в команде параметр /а (текущий сайт) или /е (все предприятие).
Ниже приведен фрагмент результатов теста для двух сайтов в лесе w2.dom (для наглядности некоторые строки выделены полужирным):
Running enterprise tests on : w2k.dom
Starting test: Intersite
Doing intersite inbound replication test on site W2K-site:
Locating & Contacting Intersite Topology Generator (ISTG) ...
The ISTG for site W2K-site is: W2KDC4.
Checking for down bridgeheads ...
Bridghead Remote-site\W2KDC2 is up and replicating fine.
Bridghead W2K-site\W2KDC4 is up and replicating fine.
Doing in depth site analysis ...
All expected sites and bridgeheads are replicating into site W2K-site.
Doing intersite inbound replication test on site Remote-site:
Locating & Contacting Intersite Topology Generator (ISTG) ...
The ISTG for site Remote-site is: W2KDC2.
Checking for down bridgeheads ...
Bridghead W2K-site\W2KDC4 is up and replicating fine.
Bridghead Remote-site\W2KDC2 is up and replicating fine.
Doing in depth site analysis ...
All expected sites and bridgeheads are replicating into site Remote-site.
w2k.dompassed test Intersite
Active Directory Diagnostic Tool (NTDSutil.exe) (Система)
Эта утилита автоматически устанавливается на каждом контроллере домена. Нельзя сказать, что этот инструмент предназначен для ежедневного пользования, однако каждый администратор должен познакомиться с его возможностями, поскольку он незаменим при выполнении некоторых операций, чрезвычайно важных для нормального функционирования Active Directory, например, при восстановлении Active Directory, автономной дефрагментации, перемещении ролей FSMO и т. д.
Некоторые подменю из главного меню утилиты NTDSutil доступны, только если система загружена в режиме восстановления каталога (Directory Services Restore Mode) (нажмите клавишу <F8> при загрузке системы). (Если вы все же хотите разрешить эти меню, установите переменную среды SAFEBOOT OPTION равной DSREPAIR и перезапустите утилиту. Впрочем, так делать не рекомендуется, поскольку конфликты с запущенными процессами все равно не позволят вам выполнить большую часть имеющихся операций. Это можно сделать только для просмотра некоторых параметров.) Если службы Active Directory запущены, следующие подменю становятся недоступными:
Authoritative restore
Files
Semantic database analysis
Команды, используемые в NTDSutil, имеют довольно большую длину, однако утилита допускает упрощенный синтаксис (или же вы можете использовать операцию "копировать-и-вставить" с применением мыши и вставлять строки из встроенной справки). Например, команду
connect to server ххх
можно сократить до
СО t S XXX
Рассмотрим назначение и способы использования всех команд утилиты NTDSutil в том порядке, в котором соответствующие меню появляются во встроенной справке. (Чтобы получить справку по имеющимся командам, введите ? в ответ на приглашение утилиты.)
( Примечания )
-Для большей наглядности строки-приглашения утилиты в приведенных ниже диалогах выделены полужирным.
Утилита подключается к контроллерам домена быстрее, если вы указываете DNS-имена контроллеров.
Меню Authoritative Restore
В этом меню имеются четыре команды, с помощью которых можно выполнять авторитетное восстановление как целых разделов Active Directory (за исключением схемы!), так и выбранных поддеревьев. Синтаксис этих команд очень прост, гораздо сложнее разобраться в том, как правильно применять эти простые команды. Поскольку использование команд из меню Authoritative Restore, а также выбор правильного значения для параметра verinc тесно связаны с процессом архивирования/восстановления Active Directory в целом, эти команды рассмотрены в разделе "Восстановление Active Directory" в главе 5 "Типовые административные задачи ".
Меню Domain Management
Для создания нового домена нужно иметь больше полномочий, чем требуется при повышении роли сервера. Выполнение этих задач можно поделить между разными администраторами и не давать всех прав тому персоналу, которому разрешено только создавать новые контроллеры домена. В утилите NTDSutil имеется команда, позволяющая заранее создать новый контекст доменных имен в существующем лесе, после чего данный контекст могут использовать другие администраторы при добавлении контроллеров в этот домен.
Приведенный ниже диалог показывает, как создать новый домен (intra.subdom.w2k.dom) в существующем лесе (w2k.dom):
С:\>ntdsutil
ntdsutil: domain management
domain management: connections
server connections: connect to server w2kdc4.w2k.dom
Binding to w2kdc4.w2k.dom ...
Connected to w2kdc4.w2k.dom using credentials of locally logged on user server connections: quit domain management: list Found 4 Naming Context(s) 0 — CN=Configuration,DC=w2k,DC=dom 1 — DC=w2k,DC=dom 2 — CN=Schema, CN=Configuration,DC=w2k,DC=dom 3 — DC=subdom,DC=w2k,DC=dom domain management: precreate DC=intra,DC=subdom,DC=w2k,DC=dom w2kdc03. w2k.dom adding object CN=intra,cn=Partitions,CN=Configuration,DC=w2k,DC=dom domain management: list Found 5 Naming Context(s) 0 — CN=Configuration,DC=w2k,DC=dom 1 — DC=w2k,DC=dom 2 — CN=Schema,CN=Configuration,DC=w2k,DC=dom 3 — DC=subdom,DC=w2k,DC=dom 4 — DC=intra,DC=subdom,DC=w2k,DC=dom domain management: ...
Как вы сами можете видеть из приведенного диалога, после выполнения команды precreate появился новый контекст доменных имен под номером 4.
Меню Files. Обслуживание файлов базы данных Active Directory
С помощью команд из этого меню можно выполнять следующие операции: □ Получать информацию о состоянии Jet-базы данных Active Directory (файл ntds.dit) и файлов журналов транзакций (log-файлы).
Перемещать базу данных и/или файлы журналов в другое место. □ Переопределить пути для файлов Active Directory.
Выполнить восстановление базы данных.
k • Внимание!
Уже установленные файлы базы данных и/или журналов Active Directory можно переместить в другое место (в другую папку или на другой диск), однако невозможно изменить местоположение тома SYSVOL без переустановки Active Directory на конкретном контроллере домена.
Получение информации о файлах Active Directory
С помощью следующей команды можно получить информацию о размере и местоположении всех файлов Active Directory. Рекомендуется использовать
эту команду (проверяя тем самым наличие файлов журналов) после восстановления или обслуживания Active Directory (например, после автономной дефрагментации, перемещения файлов и т. п.).
file maintenance: info Drive Information:
C:\ FAT (Fixed Drive ) free(167.8 Mb) total(454.6 Mb)
G:\ NTFS (Fixed Drive ) free(329.5 Mb) total(1.3 Gb) M:\ NTFS (Network Drive) free(347.9 Mb) total(996.2 Mb)
DS Path Information: Database : G:\WINNT\NTDS\ntds.dit - 16.1 Mb Backup dir : G:\WINNT\NTDS\dsadata.bak Working dir: G:\WINNT\NTDS Log dir : G:\WINNT\NTDS - 40.1 Mb total res2.log — 10.0 Mb resl.log — 10.0 Mb ntds.pat — 16.0 Kb edb00009.log — 10.0 Mb edb.log — 10.0 Mb
Сжатие базы данных. Автономная дефрагментация
Оперативная дефрагментация (online defragmentation) базы данных Active Directory, которая выполняется автоматически через заданные промежутки времени (по умолчанию раз в 12 часов), не уменьшает физического размера файла базы данных (ntds.dit). Чтобы сжать этот файл, необходимо выполнить автономную дефрагментацию (offline defragmentation) (в режиме восстановления каталога). Автономная дефрагментация может потребоваться, если на контроллере домена было удалено большое количество объектов. Например, это может случаться, когда некий сервер глобального каталога становится рядовым контроллером домена. В этом случае на диске может освободиться довольно много места (после дефрагментации).
В общем случае процедура автономной дефрагментации выглядит так:
Загрузите контроллер домена в режиме восстановления каталога.
Запустите процесс дефрагментации. При этом новая, более компактная версия файла базы данных Active Directory сохраняется в указанной альтернативной папке.
Если дефрагментация прошла успешно, скопируйте сжатый файл в исходную папку Active Directory и удалите старые файлы журналов.
Ниже показано, как происходит процесс дефрагментации. В этом примере файл базы данных сжимается и записывается во временную папку
G:\AD\Database, а все файлы журналов остаются в исходной папке — G:\W1NNT\NTDS.
G: Vntdsutil ntdsutil: files file maintenance: compact to G:\AD\Database Opening database [Current]. Using Temporary Path: D:\
Executing Command: G:\WINNT\system32\esentutl.exe /d "G:\WINNT\NTDS\ntds.dit" /8 /о /1"G:\WINNT\NT
DS" /s"G:\WINNT\NTDS" /t"G:\AD\Database\ntds.dit" /! 10240 /p
Initiating DEFRAGMENTATION mode...
Database: G:\WINNT\NTDS\ntds.dit Log files: G:\WINNT\NTDS System files: G:\WINNT\NTDS
Temp. Database: G:\AD\Database\ntds.dit
Defragmentation Status ( % complete)0102030405060708090100
I।।।।।|।।।।
Note:
It is recommended that you immediately perform a full backup of this database. If you restore a backup made before the defragmentation, the database will be rolled back to the state it was in at the time of that backup.
Operation completed successfully in 28.861 seconds.
Spawned Process Exit code 0x0(0)
If compaction was successful you need to:
copy "G:\AD\Database\ntds.dit" to "G:\WINNT\NTDS\ntds.dit"
and delete the old log files:
del G:\WINNT\NTDSV.log
file maintenance:
Перемещение файлов Active Directory
Если на диске остается мало места или меняется конфигурация дисков, вы можете переместить файлы Active Directory на другое место. Для перемещения файла базы данных выполните следующие операции:
Заархивируйте Active Directory.
Перезагрузите контроллер домена и нажмите клавишу <Е8> при загрузке.
Выберите режим Directory Services Restore Mode и загрузите контроллер домена.
Запустите утилиту NTDSutil из командной строки и выберите меню flies. Для проверки текущего местоположения файлов базы данных Active Directory можно выполнить команду info.
Введите команду move db to [диск]:\[новаяПапка]. Для проверки новой конфигурации снова выполните команду info.
Выйдите из утилиты NTDSutil и перезагрузите контроллер домена в нормальном режиме.
Процедура перемещения файлов журналов выглядит аналогичным образом.
Проверка целостности базы данных
Меню Files также содержит три команды — Recover, Integrity и Repair — которые можно использовать для поиска повреждений в базе данных Active Directory (т. е. для проверки базы данных ESENT на семантическую целостность) и выполнения некоторых операций по ее восстановлению. (Для выполнения всех этих команд может потребоваться много времени; в первую очередь это зависит от физического размера базы данных.) Перед использованием команды Repair (Ремонт) требуется провести консультации со службой поддержки Microsoft, т. к. выполнение этой команды может привести к потере данных. Команда Recover (Восстановление) должна выполняться первой, до команды Integrity (Целостность). Эта команда просматривает файлы журналов и обеспечивает завершение всех транзакций. Затем команда Integrity позволяет проверить файл базы данных на наличие "низкоуровневых" повреждений. Процесс выполнения этой команды показан ниже.
file maintenance: integrity Opening database [Current]. Executing Command: G:\WINNT\system32\esentutl.exe /g "G:\WINNT\NTDS\ntds.dit" /110240 /8 /v /х /о
Initiating INTEGRITY mode...
Database: G:\WINNT\NTDS\ntds.dit
Temp. Database: INTEG.EDB got 515464 buffers checking database header checking database integrity Scanning Status ( % complete) 0102030405060708090 100
checking SystemRoot SystemRoot (OE) SystemRoot (AE) checking system table
checking table "datatable" (6) checking data
checking index "LCLJ\BVIEW_index00000419" (89)
checking index "DNT_IsDeleted_Index" (88)
checking index "INDEX_000901FD" (87)
checking index "INDEX_00090092" (7)
rebuilding and comparing indexes
checking table "hiddentable" (16)
checking table "link_table" (14)
rebuilding and comparing indexes
integrity check completed.
Operation completed successfully in 30.514 seconds.
Spawned Process Exit code 0x0(0)
If integrity was successful, it is recommended you run semantic database analysis to insure semantic database consistency as well.
file maintenance:
Меню IP Deny List
Для повышения защищенности контроллера домена администратор может создать так называемый IP Deny List, который может использоваться только вместе с объектом Default-Query Policy (см. также следующий раздел). Этот список содержит IP-адреса, от которых данный контроллер домена не будет принимать запросы LDAP. Элемент списка может представлять отдельный узел (хост) или некоторую подсеть. Например, после выполнения команды
Add 192.168.1.1 NODE
контроллер домена не будет принимать запросы от узла с адресом 192.168.1.1. Следующая команда позволяет запретить доступ со стороны всех узлов, относящихся к подсети с адресом 192.168.1.0:
Add 192.168.1.0 255.255.255.0
Меню LDAP policies
Рассмотрим использование утилиты NTDSutil для работы с объектом Default-Query Policy (см. главу 1 "Концепции Active Directory и терминология')
на следующем примере. Приведенный ниже диалог показывает, как можно изменить значение параметра Initial Receive Timeout с установленной по умолчанию величины 120 на 30 (измененное значение показано полужирным курсивом):-
ntdsutil: Idap policies
Idap policy: connections
server connections: connect to server w2kdc4.w2k.dom
Binding to w2kdc4.w2k.dom ...
Connected to w2kdc4.w2k.dom using credentials of locally logged on user
server connections: q
Idap policy: list
Supported Policies:
MaxPoolThreads
MaxDatagramRecv MaxReceiveBuffer InitRecvTimeout MaxConnections MaxConnIdleTime MaxActiveQueries MaxPageSize MaxQueryDuration MaxTempTableSize MaxResultSetSize MaxNotificationPerConn
Idap policy: set InitRecvTimeout to 30
Current(New)Current(New)Idap policy: show values Policy
Current(New)
Current(New)
MaxPoolThreads MaxDatagramRecv MaxReceiveBuffer InitRecvTimeout MaxConnections MaxConnldleTime MaxActiveQueries MaxPageSize MaxQueryDuration MaxTempTableSize MaxResultSetSize MaxNotificationPerConnMaxPoolThreads MaxDatagramRecv MaxReceiveBuffer InitRecvTimeout MaxConnections MaxConnldleTime MaxActiveQueries MaxPageSize MaxQueryDuration MaxTempTableSize MaxResultSetSize MaxNotificationPerConn4102441024120 (30)5000900120 (30)5000900100010001048576010485760120 10000 2621445120 10000 2621445
MaxPoolThreads MaxDatagramRecv MaxReceiveBuffer InitRecvTimeout MaxConnections MaxConnldleTime MaxActiveQueries MaxPageSize MaxQueryDuration MaxTempTableSize MaxResultSetSize MaxNotificationPerConn
MaxPoolThreads MaxDatagramRecv MaxReceiveBuffer InitRecvTimeout MaxConnections MaxConnldleTime MaxActiveQueries MaxPageSize MaxQueryDuration MaxTempTableSize MaxResultSetSize MaxNotificationPerConn
4
1024
4
1024
120 (30)
5000
900
120 (30)
5000
900
1000
1000
10485760
10485760
120 10000 262144
5
120 10000 262144
5
Idap policy: commit changes
Idap policy: q ntdsutil: q
Disconnecting from w2kdc4.w2k.dom ...
В пакете Windows 2000 Server Resource Kit имеется сценарий ModifyLDAP.vbs, включенный в коллекцию Remote Administration Scripts. С его помощью администратор может просматривать политики LDAP, создавать новые и изменять существующие, а также привязывать политики к контроллерам домена или сайтам. Для примера ниже показаны операционные ограничения LDAP (administrative limits) для объекта Default Queiy Policy, который по умолчанию устанавливается и используется (хотя он и не выбран явно!) на всех контроллерах домена:
modifyldap /Р /О:"Default Query Policy"
LDAP Settings for Default Query Policy
MaxPageSize=1000
InitRecvTimeout=30
MaxRece.iveBuffer=104 85760
MaxDatagramRecv=1024
MaxPoolThreads=4
MaxResultSetSize=262144
MaxTempTableSize=10000
MaxQueryDuration=120
MaxNotificationPerConn=5
MaxActiveQueries=20
MaxConnIdleTime=900
MaxConnect ions=5 000
Примечание j
Для выбора некоторой существующей политики LDAP используется оснастка Active Directory Sites and Services. Выберите объект NTDS Settings нужного контроллера домена и откройте для него окно Properties. Выберите политику в списке Query Policy и нажмите кнопку Apply (Применить).
Меню Metadata Cleanup. Удаление потерянных доменов или контроллеров домена
При нормальном выполнении операции понижения роли контроллера домена выполняется удаление из Active Directory учетной записи компьютера и метаданных, относящихся к этому контроллеру домена. Когда удаляется последний контроллер в некотором домене, удаляются все ссылки (а также другая информация о домене). Однако возникают ситуации, когда контроллер домена удаляется с ошибками (или же он безвозвратно утерян), и в каталоге появляются потерянные (orphaned) метаданные. В этом случае информация о потерянном контроллере домена и/или о доменах удаляется с помощью утилиты NTDSutil. (Не удалите случайно информацию о существующих доменах и контроллерах!) В общих чертах процедура выглядит следующим образом.
Подключитесь к исправному контроллеру домена, который хранит ссылки на утерянные метаданные.
Выберите целевой объект для операции (сайт, контекст имен, домен и сервер). Целевых объектов может быть один или несколько.
Удалите потерянные метаданные.
Приведенный ниже диалог иллюстрирует процедуру удаления отказавшего контроллера домена W2KDC3 и дочернего домена intra.subdom.w2k.dom из леса w2k.dom. (В диалоге используется сокращенный синтаксис команд; в квадратных скобках даны комментарии, выделенные полужирным. На этом примере также видно, как выбирать целевой объект для операции: эта операция используется во многих командах.) ntdsutil: m с metadata cleanup: с server connections: co t s w2kdc4.w2k.dom Binding to w2kdc4.w2k.dom ...
Connected to w2kdc4.w2k.dom using credentials of locally logged on user server connections: q metadata cleanup: sot select operation target: 1 si Found 1 site(s) 0 — CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom select operation target: s si 0 Site — CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom No current domain No current server No current Naming Context select operation target: 1 d Found 3 domain(s) 0 — DC=w2k,DC=dom 1 — DC=subdom,DC=w2k,DC=dom 2 — DC=intra,DC=subdom,DC=w2k,DC=dom select operation target: s d 2 Site — CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom Domain — DC=intra,DC=subdom,DC=w2k,DC=dom No current server No current Naming Context select operation target: 1 se f d i s Found 1 server(s) 0 - CN=W2KDC3,CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration, %> DC=w2k,DC=dom select operation target: s se 0 Site — CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom Domain — DC=intra,DC=subdom,DC=w2k,DC=dom
Server — CN=W2KDC3,CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration, DC=w2k, DC=dom
DSA object - CN=NTDS Settings,CN=W2KDC3,CN=Servers, S> CN=W2K-site,CN=Sites,CN=Configuration,DC=w2k,DC=dom
DNS host name — w2kdc3.intra.subdom.w2k.dom
Computer object — CN=W2KDC3,OU=Domain Controllers, DC=intra,DC=subdom,DC=w2k,DC=dom
No current Naming Context select operation target: q metadata cleanup: r s s [Появляется окно Server Remote Confirmation Dialog — нажмите кнопку Yes.] "CN=W2KDC3,CN=Servers,CN=W2K-site,CN=Sites,CN=Configuration, ^ DC=w2k,DC=dom" removed from server "w2kdc4.w2k.dom" metadata cleanup: r s d [Появляется окно Domain Remote Confirmation Dialog — нажмите кнопку Yes.} "DC=intra, DC=subdom,DC=w2k,DC=dom" removed from server "w2kdc4.w2k.dom" [Проверка правильности выполнения операций:] metadata cleanup: sot select operation target: 1 d Found 2 domain(s) 0 - DC=w2k,DC=dom
1 — DC=subdom,DC=w2k,DC=dom [Выход из утилиты ntdsutil:] select operation target: q metadata cleanup: q ntdsutil: q
Disconnecting from w2kdc4.w2k.dom ...
Домен intra.subdom.w2k.dom удален, и вы можете проверить это с помощью оснастки Event Viewer. В журнале Directory Service появляется следующее информационное сообщение (источник сообщения — NTDS КСС):
The consistency checker deleted connection object... as the source server to which it referred has been deleted.
The domain ... has been removed from the enterprise.
(Служба проверки соответствия удалила объект соединения ..., т. к. сервер-источник, на который оно ссылалось, был удален. Домен ... удален из предприятия.)
Если в предприятии имеются другие домены, то для контекстов Schema и Configuration появляются сообщения, аналогичные следующему:
The consistency checker has terminated change notification for the following:
(Служба проверки соответствия прекратила оповещение об изменениях для следующих контекстов)
L - ~ Внимание!
Записи, соответствующие потерянным контроллерам и доменам, нужно вручную удалить с сервера DNS.
Чтобы убедиться в том, что операция выполнена правильно, вы можете проверить конфигурацию доменов; для этого используйте следующие оснастки: Active Directory Domains and Trusts, ADSI Edit (см. узлы Partitions и Sites | Servers в контейнере Configuration) и Active Directory Sites and Services. Для проверки топологии репликации можно также использовать утилиту DCdiag, а также команду repadmin /showreps.
Меню Roles. Управление ролями FSMO
С помощью утилиты NTDSutil администратор может находить владельцев ролей FSMO и передавать роли. Все способы нахождения владельцев ролей описаны в главе 5 "Типовые административные задачи". В этом разделе мы рассмотрим, как с помощью утилиты NTDSutil назначить контроллер домена владельцем некоторой роли. Возможны следующие операции:
Захват роли (seizing role). Эта команда принудительно назначает подключенный сервер владельцем указанной роли. Команду следует применять только тогда, когда контроллер домена — текущий владелец роли серьезно поврежден и не может быть восстановлен.
Передача роли (transfer role). С помощью этой команды указанную роль можно передать от текущего владельца подключенному серверу. Данную операцию можно выполнять и с помощью различных административных оснасток (см. главу 4 "Средства управления доменами"), однако утилита NTDSutil позволяет сделать это из командной строки, в пакетном режиме (см. описание файла DumpFSMOs.cmd).
Передача роли
Если по каким-то причинам вы не можете или не хотите использовать стандартные административные оснастки, для передачи некоторой FSMO-роли от текущего владельца другому контроллеру домена можно применять утилиту NTDSutil. Процедура передачи роли состоит из двух шагов:
Подключитесь к серверу — новому владельцу роли.
Передайте нужную роль от текущего владельца выбранному серверу.
( Примечание )
Категорически не рекомендуется захватывать FSMO-роль, если ее можно просто передать. Захват роли выполняется только тогда, когда текущий владелец роли безвозвратно утрачен.
Следующий диалог иллюстрирует процесс передачу роли Schema Master серверу w2kdc2.subdom.w2k.dom. (Это всего лишь пример! Перемещать эту роль в дочерний домен не рекомендуется.)
С:\>ntdsutil ntdsutil: roles fsmo maintenance: connections server connections: connect to server w2kdc2.subdom.w2k.dom Binding to w2kdc2.subdom.w2k.dom ...
Connected to w2kdc2.subdom.w2k.dom using credentials of locally logged on user server connections: quit fsmo maintenance: transfer schema master
[В окне Role Transfer Confirmation Dialog нажмите кнопку Yes.]
Server "w2kdc2.subdom.w2k.dom" knows about 5 roles
Schema — CN=NTDS Settings,CN=W2KDC2,CN=Servers,CN=Remote-site,
9> CN=Sites,CN=Configuration,DC=w2k, DC=dom
Domain — CN=NTDS Settings,CN=W2KDC4,CN=Servers,CN=W2K-site,
CN=Sites,CN=Configuration,DC=w2k,DC=dom
PDC - CN=NTDS Settings,CN=W2KDC2,CN=Servers,CN=Remote-site,
4> CN=Sites,CN=Configuration,DC=w2k,DC=dom
RID - CN=NTDS Settings,CN=W2KDC2,CN=Servers,CN=Remote-site,
Ч> CN=Sites,CN=Configuration,DC=w2k,DC=dom
Infrastructure — CN=NTDS Settings,CN=W2KDC2,CN=Servers,CN=Remote-site, CN=Sites,CN=Configuration,DC=w2k,DC=dom
fsmo maintenance: ...
( Примечание )
Обратите внимание на то, что раздел Configuration содержит информацию о серверах, которые относятся к разным доменам и сайтам.
Если даже подключенный контроллер домена уже является владельцем указанной роли, показанные команды и сообщения не изменятся.
Захват роли
Предположим, что контроллер домена, владевший ролью Infrastructure Master, окончательно утрачен, и вы хотите передать эту роль другому контроллеру домена. Приведенный ниже диалог показывает, как принудительно
передать роль новому владельцу — серверу w2kdc4.w2k.dom (в квадратных скобках даны комментарии):
С:\>ntdsutil ntdsutil: roles fsmo maintenance: connections server connections: connect to server w2kdc4.w2k.dom Binding to w2kdc4.w2k.dom ...
Connected to w2kdc4.w2k.dom using credentials of locally logged on user server connections: quit fsmo maintenance: seize infrastructure master [В окне Role Seizure Confirmation Dialog нажмите кнопку Yes.]
Role Seizure Confirmation Dialog
9 \ Are you sure you want server Wlkccl .w2k.dom" tc seize the Infrastructure role with (1
Settings,CN=W2KDC4,CN=5erverS,CN=W2K:site;CN~Sites,CN=Configuration,DC=w2k V)KyKiiBC=domggg|Qw^^^
Attempting safe transfer of infrastructure FSMO before seizure.
[Сервер пытается выполнить стандартную операцию передачи роли и терпит неудачу. Показанная ниже ошибка будет возникать всякий раз, когда вы попытаетесь передать роль от текущего владельца, который выключен или не отвечает на запросы:]
ldap_modify_sW error 0x34(52 (Unavailable).
Ldap extended error message is 000020AF: SvcErr: DSID-03210194, problem 5002 (UNAVAILABLE), data 1722
Win32 error returned is 0x20af(The requested FSMO operation failed. The current FSMO holder could not be contacted.) )
Depending on the error code this may indicate a connection, ldap, or role transfer error.
[Сервер начинает захват роли:]
Transfer of infrastructure FSMO failed, proceeding with seizure ...
[Сервер успешно выполнил операцию захвата роли и выводит обновленную информацию о владельцах ролей:]
Server "w2kdc4.w2k.dom" knows about 5 roles
Меню Security Account Management
Поскольку в некоторых случаях возможно дублирование идентификаторов SIDs (например, из-за проблем с владельцами роли RID Master), возникает
7 Зак. 1096
необходимость проверки домена на наличие конфликтующих SID. Для решения этой проблемы и используются команды из меню Security Account Management.
Меню Semantic Database Analysis
С помощью команд из этого меню можно проверить данные на соответствие семантическим правилам Active Directory (которые отличаются от правил базы данных ESENT!). В генерируемом отчете (записываемом в файл с именем dsdit.dmp.ww) отображается количество активных объектов, включая число объектов-фантомов (phantom) и удаленных записей. Отчет располагается в текущей папке.
Хотя компания Microsoft и не рекомендует пользователям самостоятельно выполнять команды семантического анализа, в некоторых ситуациях (под вашу ответственность!) имеет смысл проверить целостность базы данных и исправить возможные ошибки. (Будьте осторожны с командой Go Fixup, т. к. вы рискуете потерять данные при ее выполнении!) Например, две следующие команды, выполненные одна за другой, позволили обнаружить и исправить ошибку, вызванную удаленным ссылочным объектом:
semantic checker: до
Fixup mode is turned off
Opening database [Current]Done.
Getting record count...2857 records
Writing summary into log file dsdit.dmp.l
Records scanned:2800
Processing records..
Error: Missing subrefs detected.
Done.
semantic checker: go fixup
Fixup mode is turned on
Opening database [Current]Done.
Getting record count...2857 records
Writing summary into log file dsdit.dmp.2
Records scanned:2800
Processing records..Done.
ГЛАВА 8
Сетевые и распределенные службы
Все инструменты, описываемые в этой главе, рассматривают службу Active Directory как распределенную сетевую базу данных, которая, помимо обслуживания клиентов, должна поддерживать собственную целостность и согласованность данных. Эта глобальная системная задача имеет несколько аспектов, или проблемных областей, наиболее важные из которых перечислены ниже:
Наличие связи (включая связь по протоколу RPC) между контроллерами домена, а также между контроллером домена и клиентом.
Правильное разрешение имен.
Взаимная аутентификация (наличие безопасных каналов или доверительных отношений между доменами, контроллерами доменов и между клиентом и контроллером).
Синхронизация копий (реплик) базы данных Active Directory (всех разделов каталога, включая Глобальный каталог), хранящихся на различных контроллерах домена.
Как вы сами можете видеть из этого списка, существует множество „источников возможных ошибок, влияющих на способность служб Active Directory правильно функционировать и отвечать на запросы клиентов. Описываемые ниже инструменты позволяют тестировать инфраструктуру Active Directory в целом и анализировать ее состояние на различных контроллерах домена.
NLtest.exe (ST)
Утилита NLtest позволяет администраторам управлять доменами, работающими как в основном, так и в смешанном режиме (т. е. при наличии в домене BDC-контроллеров под управлением предыдущих версий Windows NT).
Утилита имеет множество возможностей и, в частности, позволяет выполнять следующие операции:
Проверка и сброс безопасных каналов (secure channels).
Получение информации о топологии сети (в том числе списка контроллеров домена, выбранного сайта, списка междоменных доверительных отношений и т. д.).
Выполнение синхронизации с BDC-контроллерами.
Выключение компьютеров.
Утилита NLtest очень полезна при устранении проблем с аутентификацией, т. к. с ее помощью Можно проверять доверительные отношения между двумя конкретными компьютерами (т. е. между двумя контроллерами или между контроллером и клиентом домена).
( Примечания j
Для большинства команд предпочтительнее указывать не NetBIOS-, а DNS- имена компьютеров под управлением Windows 2000.
Некоторые опции утилиты NLtest аналогичны опциям утилиты NetDom. (См. гладу 9 "Манипулирование объектами Active Directory".') Вы можете выбирать наиболее подходящий инструмент для выполнения конкретной задачи.
Проверка безопасных каналов
Прежде всего, не следует путать транзитивные доверительные отношения Windows 2000 (обеспечиваемые протоколом аутентификации Kerberos) с нетранзитивными безопасными каналами (доверительными связями, trust links). Вы можете, например, зарегистрировать в некотором домене, принадлежащем к одному доменному дереву, работая на компьютере, учетная запись которого хранится в другом доменном дереве. Однако это не означает того, что контроллеры из соответствующих доменов имеют непосредственные отношения доверия. (Впрочем, вы можете вручную установить такое отношение, называемое прямым, shortcut trust. См. главу 3 "Развертывание Active Directory"?) Вот почему безопасные каналы можно проверять только непосредственно между дочерним и родительским доменами или между корневыми доменами деревьев.
При нормальной работе домена проверка любого клиента домена должна давать следующий результат:
C:\>nltest /query
Flags: 0
Connection Status = 0 0x0 NERR_Success The command completed successfully
Это сообщение означает, что данный компьютер успешно аутентифицирован некоторым контроллером домена, и между этим контроллером и клиентом установлен безопасный канал. Если пользователь зарегистрирован локально, или по какой-то причине регистрация в сети не выполнена (не найден контроллер домена и т. п.), проверка дает такой результат:
Connection Status = 1311 0x51f ERROR_NO_LOGON_SERVERS
Следующее сообщение указывает на то, что служба Netlogon потерпела неудачу при старте или просто не запущена на компьютере:
I_NetLogonControl failed: Status = 1717 0хбЬ5 RPC_S_UNKNOWN_IF
В данном случае вам нужно запустить оснастку Services (Службы) и проверить состояние этой службы.
Если учетная запись компьютера была сброшена, утилита NLtest выдает сообщение:
Connection Status = 5 0x5 ERROR_ACCESS_DENIED
Если же учетная запись компьютера запрещена администратором, сообщение будет другим:
Connection Status = 1787 0x6fb ERROR_NO_TRUST_SAM_ACCOUNT
Если администратор снова разрешил учетную запись, перезапустите на компьютере службу Netlogon или выполните команду nitest /sc_reset (см. ниже).
Для проверки безопасного канала или для поиска сервера входа (logon server) используйте команду nitest /sc_query, например:
C:\>nltest /sc_query:w2k.dom
Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\w2kdc4,w2k.dom
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully
Если команда отвечает
Connection Status = 1311 0x51f ERROR_NO_LOGON_SERVERS
попробуйте перерегистрироваться в системе или сбросить (переустановить) безопасный канал с помощью команды
nitest /sc_reset:w2k.dom
Если в домене имеется несколько контроллеров, клиентский компьютер устанавливает безопасный канал с тем контроллером домена, который первым ответит на запрос.
( Примечание )
Для проверки и сброса безопасных каналов также можно пользоваться командами netdom /VERIFY Иnetdom /RESET.
Рассмотрим пример. Предположим, что у вас в лесе имеются два домена — родительский и дочерний, — и вы хотите убедиться в том, что контроллер w2kdc4.w2k.dom, относящийся к родительскому домену, аутентифицирован в дочернем домене subdom.w2k.dom, т. е. успешно ли установлено доверие между доменами. Вы используете показанную ниже команду, и по каким-то причинам она показывает отрицательный результат:
C:\>nltest /sc_query:subdom.w2k.dom /server:w2kdc4.w2k.dom
Flags: 0
Trusted DC Name
Trusted DC Connection Status Status = 1311 0x51f ERROR_NO_LOGON_SERVERS The command completed successfully
Это доверительное отношение можно было бы проверить и по-другому. Запустите оснастку Active Directory Domain and Trusts, откройте окно Properties для домена w2k.dom и перейдите на вкладку Trusts (Доверия). Выберите дочерний домен subdom.w2k.dom в списке Domain trusted by this domain (Домены, которым доверяет этот домен) и последовательно нажмите кнопки Edit (Изменить) и Verify (Проверка). (Альтернативный вариант: запустите оснастку Active Directory Users and Computers, выберите контейнер System и откройте окно Properties для объекта subdom.w2k.dom, имеющего тип Trusted Domain. В этом окне нажмите кнопку Verify.) Появится сообщение, показанное на рис. 8.1. Если вы нажмете кнопку ОК, система попытается заново установить отказавший безопасный канал.
Рис. 8.1. Это сообщение указывает на то, что разорван безопасный канал между двумя контроллерами в связанных доменах, однако вы можете переустановить его
Показанная ниже команда позволит вам восстановить безопасный канал из командной строки:
C:\>nltest /sc_reset:subdom.w2k.dom /server:w2kdc4.w2k.dom
Flags: 30 HAS^IP HAS_TIMESERV
Trusted DC Name \\w2kdc2.subdom.w2k.dom
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully
При устранении проблем, связанных с аутентификацией, вы аналогичным образом можете индивидуально проверить нужные контроллеры домена и клиентов и локализовать место неисправности.
Просмотр доверенных доменов
При помощи утилиты NLtest можно отобразить все доверительные отношения, установленные между текущим доменом и другими доменами в том же или в другом лесе. В режиме подробного протоколирования (verbose mode) можно также увидеть для доменов их идентификаторы SID и GUID. Взгляните на следующий пример:
C:\>nltest /trusted_domains /v
List of domain trusts:
0: NT4DOM (NT 4) (Direct Outbound) (Direct Inbound)
Dorn Sid: S-l-5-21-1090471030-1714903380-1691616715
SUBDOM subdom.w2k.dom (NT 5) (Forest: 2) (Direct Outbound) (Direct Inbound)
Dorn Guid: 2a0a419f~0b2d-4ela-958b-51eadlbe3f0e
Dorn Sid: S-l-5-21-2523187317-3632519984-2123532372
W2KD0M w2k.dom (NT 5) (Forest Tree Root) (Primary Domain) (Native) Dorn Guid: baf0baaf-5013-43d3-8fac-62cdbbcfa34a
Dorn Sid: S-l-5-21-2153319400-2659097208-1957364326
The command completed successfully
Как анализировать полученную информацию? В приведенном выше примере можно сделать следующие выводы:
Домен Window NT 4.0 с именем NT4D0M имеет прямые, двусторонние доверительные отношения с текущим доменом.
Домен Windows 2000 с именем subdom.w2k.dom работает в смешанном режиме и принадлежит к тому же лесу (Forest: 2), что и текущий домен.
Текущий (Primary) домен w2k.dom работает в основном режиме и является корневым доменом леса.
Получение сведений о топологии сети
Имя сайта, к которому подключается клиентский компьютер (в многосайтовой сети), никак не задается на этом компьютере. (Сайт выбирается с учетом IP-адресов клиента и подсети.) С помощью следующей команды можно увидеть, к какому сайту подключился локальный или удаленный компьютер после регистрации в домене:
C:\>nltest /dsGetSite
W2K-site
The command completed successfully
(Для удаленного компьютера добавьте параметр /server: <имяКомпыотера>.)
В некоторых случаях один контроллер домена может обслуживать несколько сайтов. (Например, если создан новый сайт, но в него еще не помещены контроллеры домена, некоторый контроллер из существующего сайта выбирается для того, чтобы обслуживать этот новый сайт. Для увеличения отказоустойчивости сети вы можете сами сконфигурировать контроллер домена так, чтобы он обслуживал некоторый сайт в случае, если контроллеры домена этого сайта станут недоступны.) Следующая команда перечисляет все сайты, которые может обслуживать указанный контроллер домена:
C:\>nltest /dsGetSiteCov /server:w2kdc4,w2k.dom
Remote-Site
W2K-site
The command completed successfully
(Если эта команда выполняется на контроллере домена, то параметр /server указывать не обязательно.)
Очень часто бывает нужно увидеть список контроллеров, относящихся к некоторому домену. Для доменов Windows 2000 можно использовать команду, подобную следующей:
C:\>nltest /DClist:w2k.dom
Get list of DCs in domain 'w2k.dom' from '\\w2kdc4.w2k.dom'.
w2kdc4.w2k.dom [PDC] [DS] Site: W2K-site
w2kdc3.w2k.dom[DS] Site: W2K-site
nt4bdc2
The command completed successfully
Контроллеры, показанные в этом списке, могут в данный момент быть недоступны (выключены)! (Обратите внимание на то, что контроллер домена, выполняющий роль PDC, отмечен. Для поиска PDC можно также использовать команду nitest /DCname: <ыеев1оз-имяДомена>.) Следует заметить, что для Windows 4.0 BDC с именем nt4dc2 не указано наличие службы каталога (directory service, DS) и этот компьютер не входит в топологию сайтов.
Чтобы найти в домене контроллер, выполняющий определенную роль (например, роль PDC, сервера глобального каталога, владельца обновляемой реплики каталога и т. д.), используйте команду, аналогичную показанной ниже (для поиска сервера GC):
C:\>nltest /dsGetDC:subdom.w2k.dom /GC
DC: Ww2kdc2 . subdom. w2k. dom
Address: \\192.168.0.2
Dom Guid: 2a0a419f-0b2d-4ela~958b-51eadlbe3fOe
Dom Name: subdom.w2k.dom
Forest Name: w2k.dom
De Site Name: W2K-site
Our Site Name: W2K-site
Flags: PDC GC DS LDAP KDC TIMESERV WRITABLE DNSJ3C DNS_DOMAIN DNS_FOREST CLOSEJSITE
The command completed successfully
Если к этой команде добавить параметр /force, она при каждом новом запуске будет пытаться найти другой контроллер домена с указанным свойством.
( Совет )
Чтобы найти в лесе все серверы GC, используйте утилиту RepIMon или запросите у сервера DNS ресурсные записи в субдомене DNS с именем gc._msdcs. <0Ы5имяЛеса>. Вы получите IP-адреса серверов GC, например:
C:\>nslookup gc,_msdcs.w2k.dom
Server: w2kdc4.w2k.dom
Address: 192.168.0.4
Name:gc,_msdcs.w2k.dom
Address: 192.168.0.3, 192.168.0.4
Следует помнить о том, что все серверы GC регистрируют свои IP-адреса в одном и том же субдомене DNS, независимо от того, к какому домену они относятся, и, следовательно, при поиске сервера GC вы всегда должны указывать DNS-имя корневого домена леса.
Примечание J
Для поиска контроллеров домена также можно использовать команды netdiag /test:DcList Иnetdiag /test:DsGetDc.
Вспомогательные опции
Выключение удаленного компьютера
Утилиту NLtest можно использовать в качестве аналога команды Shutdown.exe (из пакета Windows 2000 Resource Kit). Например, показанная ниже команда генерирует предупреждение на компьютере w2kdc3.w2k.dom и выключает его через 60 секунд:
C:\>nltest /shutdown:"Администратор просит завершить работу!" 60 'Ъ /server:w2kdc3.w2k.dom
Примечание )
В отличие от команды Shutdown.exe, утилита NLtest не может перезагрузить компьютер после завершения работы системы.
Преобразование временных величин
Некоторые атрибуты, например, pwdLastSet, lastLogon или badPasswordTirne, хранятся в Active Directory в формате Large Integer (INTEGERS). С помощью утилиты NLtest эти значения можно преобразовать в понятный формат. Процедура преобразования не очень проста, и вы, возможно, предпочтете пользоваться командой repadmin /showtime (см. ниже в этой главе). Для примера посмотрим, как преобразовать значение времени 126191956001314960, полученное с помощью утилиты Ldp.exe. Скопируйте и вставьте (copy-and- paste) значение в Калькулятор (Calculator) и преобразуйте его в шестнадцатеричный формат. Получится число 1C052EA56F85890. Введите в командной строке nitest /time: и вставьте шестнадцатеричное число. Затем нужно выделить восемь правых цифр и поместить их перед оставшимися цифрами. Вы должны получить следующий результат:
C:\>nltest /time:56F85890 1С052ЕА
56f85890 01с052еа = 11/20/2000 15:06:40
Обратите внимание на то, что показанная команда преобразует введенное значение в локальное время, а не в формат UTC (всемирное время).
Network Connectivity Tester (NetDiag.exe) (ST)
Утилита NetDiag.exe — это мощный инструмент, который можно использовать для диагностирования практически любых сетевых неисправностей — от проверки физической связи до проверки разрешения имен и аутентификации. Чтобы увидеть полный список опций (тестов) утилиты NetDiag, введите в командной строке netdiag /?. Утилита позволяет выполнять все тесты, выбранный тест и все тесты, за исключением указанных. Диагностические сообщения тестов достаточно развернуты и понятны (особенно в режиме полного протоколирования и в отладочном — verbose и debug). В первую очередь вы должны обращать внимание на строки [fatal] и [warning]. Все проблемы, отмеченные как фатальные, должны быть устранены немедленно, иначе система не сможет функционировать правильно. Предупреждения (warning) нужно проанализировать и попытаться найти (и, возможно, удалить) их источник. Однако иногда предупреждения можно игнорировать (если вы уверены, что на самом деле проблемы отсутствуют).
Два теста, реализуемых утилитой NetDiag, уже рассматривались в главе 3 "Развертывание Active Directory". Эти тесты полезно выполнить на сервере — перед созданием на его базе контроллера домена или на клиентских компьютерах (рабочих станциях или серверах) — перед их подключением к домену. В данной главе мы рассмотрим результаты успешного выполнения всех тестов (т. е. то, что вы должны получить на любом компьютере домена для его успешной работы) и способы устранения ошибок с DNS.
Примечание )
Если вы используете утилиту NetDiag, установленную с дистрибутивного компакт-диска Windows 2000, загрузите обновленную версию по адресу http:// www.microsoft.com/downloads/release. asp?ReleaselD=22938.
Выполнение тестов
Рассмотрим результаты выполнения всех тестов, полученные администратором домена на компьютере (w2kprol.w2k.dom), который был успешно подключен к домену. (Если утилиту NetDiag будет запускать рядовой пользователь домена, результаты будут немного другими.) Обратите внимание на то, что параметры WINS на компьютере не сконфигурированы. Может оказаться полезным сравнить приведенный листинг с результатами, полученными на ваших компьютерах домена, и проанализировать различия. (В квадратных скобках даны комментарии, выделенные полужирным.)
С:\>netdiag
Computer Name: W2KPR01
DNS Host Name: w2kprol.w2k.dom
System info : Windows 2000 Professional (Build 2195) Processor : x86 Family 5 Model 4 Stepping 3, Genuinelntel List of installed hotfixes :
Q147222
Netcard queries test : Passed
Per interface results:[Ниже перечисляются все установленные
сетевые адаптеры.]
Adapter : LANI Netcard queries test . . . : Passed
Host Name: w2kprol
IP Address : 192.168.0.1 [Одному адаптеру
можно назначить несколько IP-адресов и других параметров.
Все они перечислены в этом разделе.] Subnet Mask:255.255.255.0
Default Gateway:192.168.0.4
Dns Servers:192.168.0.4
AutoConfiguration results: Passed
Default gateway test . . . : Passed [Этот тест может выполниться неудачно, если отсутствует связь с другими подсетями и основной шлюз не указан.] NetBT name test: Passed
WINS service test:Skipped
There are no WINS servers configured for this interface.
Global results:
Domain membership test :Passed
NetBT transports test:Passed
List of NetBt transports currently configured:
NetBT_Tcpip_{2B76E7F9-lDBA-433E-8144-E5BD86C6E71A}
1 NetBt transport currently configured. [Этот тест пропускается, если NetBIOS over TCP/IP запрещен.]
Autonet address test :Passed
IP loopback ping test:Passed
Default gateway test :Passed
NetBT name test:Passed [Этот тест пропускается,
если NetBIOS over TCP/IP запрещен.]
Winsock test:Passed
DNS test:Passed [На контроллерахдомена
этот тест должен сообщать следующее:
DNS test:Passed
PASS — All the DNS entries for DC are registered on DNS server ' x. x. x. x' .
Все предупреждения в этом разделе нужно тщательно анализировать, т. к. фактически они могут представлять собой серьезные ошибки. Иногда предупреждения появляются на контроллерах домена с несколькими сетевыми адаптерами — их можно игнорировать.
См. также предупреждение после листинга.]
Redir and Browser test:Passed
List of NetBt transports currently bound to the Redir NetBT_Tcpip_{2B76E7F9-1DBA-433E-8144-E5BD86C6E71A}
The redir is bound to 1 NetBt transport.
List of NetBt transports currently bound to the browser NetBT_Tcpip_[2B76E7F9-lDBA-433E-8144-E5BD86C6E71A}
The browser is bound to 1 NetBt transport. [Этот тест пропускается, если NetBIOS over TCP/IP запрещен.]
DC discovery test:Passed
DC list test:Passed
Trust relationship test:Passed
Secure channel for domain 'W2KDOM' is to '\\w2kdc4,w2k.dom'.
[Этот тест пропускается на PDC Operations Master.]
Kerberos test:Passed [Этот тест пропускается,
если пользователь зарегистрирован на компьютере локально.]
LDAP test:Passed
[WARNING] Failed to query SPN registration on DC 'w2kdc4.w2k.dom'.
[WARNING] Failed to query SPN registration on DC 'w2kdc3.w2k.dom'.
[Вы должны проверить, действительно ли имеются проблемы с протоколом LDAP; используйте команду netdiag /test:LDAP /v.J
Bindings test:Passed
WAN configuration test:Skipped
No active remote access connections.
Modem diagnostics test:Passed
IP Security test:Passed
IPSec policy service is active, but no policy is assigned.
The command completed successfully
Внимание!
Если на компьютерах-клиентах домена на вкладке DNS в окне Advanced TCP/IP Settings (Дополнительные параметры TCP/IP) не установлен флажок Register this connection's addresses in DNS (Зарегистрировать адреса этого подключения в DNS), тест DNS может пройти, даже если нет соответствующей записи узла (типа А) на сервере DNS.
Перерегистрация ресурсных записей DNS (/f/x)
Если утилита NetDiag обнаруживает, что для контроллера домена не выполнена регистрация некоторых SRV-записей, мы можем попытаться устранить проблему автоматически. Выполните команду netdiag /fix; это дает такой же результат, что и перезапуск службы Netlogon. Эта команда просматривает все записи DNS, имеющиеся в файле %5ys/e/n/?ooZ%\system32\config \netlogon.dns и перерегистрирует их на сервере DNS. В процессе выполнения команды в разделе 'DNS test' появляются строки, аналогичные следующей:
[FIX] re-register DC DNS entry '_ldap._tcp.w2k.dom.' on DNS server '192.168.0.4' succeed.
(Перерегистрация записи ... на DSN-сервере ... выполнена успешно.)
Процесс исправлений записей заканчивается сообщением:
FIX PASS — netdiag re-registered missing DNS entries for this DC successfully on DNS server '192.168.0.4'.
(Исправления окончены — netdiag успешно перерегистрировала недостающие DNS-записи для этого контроллера домена на сервере ...)
Вы можете проанализировать выводимые сообщения, чтобы понять, какие записи были неправильны или отсутствовали. После того, как утилита NetDiag попыталась исправить ошибки DNS, запустите ее еще раз, чтобы убедиться в том, что все проблемы разрешены.
Внимание!
Помните о том, что только команды ipconfig /registerdns перерегистрирует для компьютера запись узла (типа А) на сервере DNS как в зоне прямого просмотра, так и в зоне обратного просмотра. Команда netdiag /fix обрабатывает только SRV-записи.
Внимание!
После выполнения команды netdiag /fix ИЛИ ipconfig /registerdns не очищайте кэш на сервере DNS, указанном на компьютере как предпочтительный! (Или же вручную удалите из кэша хотя бы те записи, которые перерегистрируются этими командами.) Даже если эти команда и обновят информацию, хранящуюся в динамических зонах на авторитетном сервере DNS, для некоторых записей кэш может по-прежнему содержать устаревшую информацию. В результате может создаться иллюзия того, что проблемы все еще существуют из-за того, что в процессе тестирования используются кэшированные ответы от основного сервера DNS. Нужно также очищать кэш локального перенаправителя (requester); для этого используется команда ipconfig /flushdns.
RPC Ping:
RPC Connectivity Verification Tool (RK)
Инструмент RPC Ping проверяет в сети наличие связи по протоколу RPC (Remote Procedure Call — удаленный вызов процедур). Этот инструмент состоит из двух компонентов:
Серверного, который отвечает на запросы клиентов и подсчитывает статистику.
Клиентского, который подключается к указанному целевому RPC-серверу, привязывается к нему и посылает запросы.
Ниже в таблице перечислены эти компоненты и поддерживаемые ими системы.
Имя файла утилитыПоддерживаемые платформы
Серверный компонент
Rpings.exeWindows 2000 и Windows NT
(окончание)
Имя файла утилиты
Поддерживаемые платформы
Клиентский компонент
Rpingc.exe (32-битная версия)
Rpingc16.exe (16-битная версия)
Windows 2000, Windows NT, Windows 9x/ME
Windows 3.1 x
Серверный компонент (RPings.exe)
Серверный компонент выполняет только две RPC-функции: Echo и Stats. Вы можете запустить этот компонент со всеми установленными протоколами или выбрать всего лишь один протокол (параметр -р). Если, например, на сервере установлен только протокол TCP/IP, утилита RPings.exe при запуске выдает следующие сообщения (имена конечных узлов, endpoints, выделены полужирным; эти имена впоследствии будут отображаться клиентским компонентом):
+endpoint \pipe\rping on protocol sequence ncacn__np is set for use.
-cannot create endpoint 52 on ncacn_nb_nb
tendpoint rping on protocol sequence ncalrpc is set for use.
tendpoint 2256 on protocol sequence ncacn_ip_tcp is set for use. tendpoint 53 on protocol sequence ncacn_nb_tcp is set for use.
-protocol Sequence ncacn_spx not supported on this host
+endpoint 2256 on protocol sequence ncadg_ip_udp is set for use.
-protocol Sequence ncadg_ipx not supported on this host
-protocol Sequence ncacn_vns_spp not supported on this host
Enter '@q' to exit rpings.
После этого сервер готов отвечать на RPC-запросы (до тех пор, пока вы не остановите его) и может обслуживать любое количество клиентов.
Клиентский компонент (RPingc.exe)
Клиентский компонент отображает всю информацию об установленных RPC-соединениях. Он работает в двух режимах:
Ping Only (Только опрос; режим по умолчанию) — может выполняться однократно или непрерывно (пока вы не нажмете кнопку Stop).
Endpoint Search (Поиск конечного узла) — одноразовая операция, позволяющая найти все имеющиеся (отвечающие) конечные узлы на RPC- сервере.
( Примечание )
Обратите внимание на то, что программа RPingc.exe не появляется на системной панели задач.
Пример окна утилиты RPingc показан на рис. 8.2. (Для RPC-сервера — поле Exchange Server — я бы рекомендовал указывать как DNS-имя, так и NetBIOS-имя сервера. Это объясняется тем, что результаты тестов могут различаться в зависимости от указанного имени и типа выбранной операции.)
Рис. 8.2. В этом окне показаны результаты выполнения нескольких успешных операций опроса (ping)
Ниже показан пример выполнения операции Endpoint Search. (Выбраны опции Protocol Sequence = ANY и Endpoint = Rping.)
Successful RPC binding using these parameters:
network address = w2kdc4.w2k.dom
endpoint = \pipe\rping
UUID =
protocol sequence = ncacn_np
...searching for uuids and endpoints...
FOUND: uuid for _Rping_ on w2kdc4.w2k.dom's protocol sequence: ncacn_np FOUND: endpoint for _Rping_ on w2kdc4.w2k.dom's protocol sequence: ncacn_np
Endpoint Search done.
Вид отображаемых строк "FOUND:..." зависит от типа и количества конечных узлов, созданных на целевом сервере при помощи утилиты RPings.exe.
Если клиент утилиты RPC Ping не может найти указанного сервера или привязаться к нему с использованием заданного набора протоколов, после всех диагностических сообщений появится следующая строка:
Endpoint Search failed to find anything.
(Операция Endpoint Search ничего не смогла найти.)
При некоторых отказах клиентский компонент выдает окна ошибок, в которых выводится сообщение "Unknown exception" (Неизвестная исключительная ситуация) и могут появляться коды ошибок.
Для проверки аутентифицированных RPC-запросов установите флажок Run with Security. При нормальных условиях это никак не должно влиять на результаты любых операций.
NTFRSutl.exe (RK)
Данная утилита командной строки практически недокументированна. Вы можете ввести ее имя в командной строке и получить список параметров. Это вся доступная информация. Утилита выводит много различных сообщений, ориентироваться в которых довольно сложно. Тем не менее, утилита NTFRSutl может быть очень полезной для мониторинга, обслуживания и — в некоторой степени — для управления службой репликации файлов (File Replication Service, FRS), которая выполняет репликацию системного тома SYSVOL и наборов данных распределенной файловой системы (Distributed File System, DFS). Утилиту можно запускать как для локального, так и для удаленного контроллера домена. Рассмотрим некоторые параметры утилиты NTFRSutl и способы их применения.
ntfrsuti ds и ntfrsuti sets — эти команды отображают конфигурацию службы FRS (партнеров по репликации, фильтры файлов, расписания и т. д.). Частично эту информацию можно увидеть в окне оснастки Active Directory Users and Computers (см. узел File Replication Service в контейнере System и дочерние объекты типа FRS Subscriptions, имеющиеся у каждого контроллера домена).
ntfrsuti stage — эта команда оказывает объем дискового пространства, занимаемого реплицируемыми объектами. В нормальном состоянии, когда конфигурация стабильна, занято 0 Кбайт. Наличие выделенного про-
странства означает, что не все данные еще реплицированы. Следующие две команды позволяют увидеть, какая именно информация еще должна реплицироваться.
ntfrsuti outiog и ntfrsuti inlog — в нормальном состоянии (когда конфигурация устойчива) эти команды не отображают никакой информации. Если имеются объекты, которые должны быть реплицированы, в журналах регистрируются сведения об этих объектах, которые могут быть интересны для администратора, например, имя файла реплицируемого объекта, дата и время его изменения и т. д.
ntfrsuti poll /now — эта команда позволяет вне установленного расписания запустить репликацию промежуточных данных (staging data) между указанным контроллером домена и его партнерами. Затем вы можете проверять журналы или области промежуточных данных (staging areas) и следить за тем, все ли данные были реплицированы.
DsaStat.exe (ST)
Эта утилита позволяет сопоставлять полные копии (реплики) каталога, хранящиеся на различных контроллерах домена, а также сравнивать доменный раздел с частичной репликой, хранящейся в Глобальном каталоге. Утилита генерирует сводный статистический отчет или выполняет сравнение содержимого каждого атрибута. При этом может проверяться весь раздел каталога или только некоторое поддерево. По умолчанию сравниваются все объекты, однако с помощью фильтра LDAP можно отобрать объекты определенного типа. Более того, при тестировании могут просматриваться все или только указанные атрибуты, или же атрибуты, реплицированные в Глобальный каталог. Таким образом, утилита DsaStat служит инструментом для проверки репликации между контроллерами домена и информации, реально хранящейся на конкретном контроллере.
( Совет )
Утилита работает быстрее, если указывать DNS-имена, а не NetBIOS- имена.
Тщательно планируйте использование этой утилиты. Для прогона тестов может потребоваться значительное время, и их нельзя прервать в произвольный момент. Кроме того, утилита заметно увеличивает сетевой трафик и нагрузку на выбранные контроллеры домена.
Статистическое сравнение
Давайте рассмотрим, как утилита DsaStat сравнивает реплики каталога и генерирует статистику. В этом режиме утилита лишь подсчитывает число объектов каталога и выводит итоговые результаты. В приведенном ниже
примере выполняется проверка раздела Configuration на контроллерах, относящихся к разным доменам. (Если параметр -ь отсутствует, сравниваются все сконфигурированные разделы.)
С:\>dsastat -s:w2kdc4.w2k.dom;w2kdc2.subdom.w2k.dom
Ч> -b:CN=Configuration,DC=w2k,DC=dom
Stat-Only mode.
Unsorted mode.
Opening connections...
w2kdc4.w2k.dom...success.
Connecting to w2kdc4,w2k.dom...
reading...
*> ntMixedDomain = О[0—основной режим]
reading...
*> Options = 1[1—сервер глобального каталога]
Setting server as [w2kdc4,w2k.dom] as server to read Config Info...
w2kdc2.subdom.w2k.dom...success.
Connecting to w2kdc2.subdom.w2k.dom...
reading...
*> ntMixedDomain = 1[1—смешанный режим]
reading...
*> Options = О[0—"нормальный" контроллер]
Generation Domain List on server w2kdc4.w2k.dom...
Searching server for GC attribute partial set on property attributeld.
Searching server for GC attribute partial set on property IdapDisplayName.
Retrieving statistics...
[Команду можно прервать не ранее этих сообщений.]
Paged result search...
Paged result search...
50 entries processed (7 msg queued, 0 obj stored, 0 obj deleted)...
2650 entries processed (7 msg queued, 0 obj stored, 0 obj deleted)...
...(Terminated query to w2kdc4,w2k.dom. <No result present in message>)
...(Terminated query to w2kdc2.subdom.w2k.dom. <No result present in message>)
2700 entries processed (2 msg queued, 0 obj stored, 0 obj deleted)...
-=»|*** DSA Diagnostics ***|«=-
Objects per server:
Obj/SvrObj/Svrw2kdc2.subdom.w2k.dom w2kdc4.w2k.dom Total
Obj/Svr
Obj/Svr
configuration container controlAccessRight crossRef
112
393978
484896
6612
crossRefContainer
1
1
2
dHCPClass
1
1
2
dSUISettings
24
24
48
displayspecifier
1152
1152
2304
foreignSecurityPrincipal
16
16
32
infrastructureUpdate
2
2
4
interSiteTransport
2
2
4
interSiteTransportContainer
1
1
2
licensingSiteSettings
2
2
4
lostAndFound
1
1
2
mSMQEnterpriseSettings
1
1
2
nTDSConnection
20
20
40
nTDSDSA
6
6
12
nTDSService
1
1
2
nTDSSiteSettings
2
2
4
pKICertificateTemplate
24
24
48
physicalLocation
1
1
2
queryPolicy
1
1
2
rRASAdministrationDictionary
1
1
2
server
5
5
10
serversContainer
2
2
4
site
2
2
4
siteLink
1
1
2
sitesContainer
1
1
2
subnet
2
2
4
subnetcontainer
1
1
2
1367
1367
2734
Bytes per object:
configuration
658
container
10816
controlAccessRight
19142
crossRef
1692
crossRefContainer
322
dHCPClass
280
dSUISettings
8400
displayspecifier
416448
foreignSecurityPrincipal
6056
InfrastructureUpdate
572
interSiteTransport
596
interSiteTransportContainer
408
licensingSiteSettings
830
lostAndFound
334
mSMQEnterpriseSettings
350
nTDSConnection
8036
nTDSDSA
1944
nTDSService
nTDSSiteSettings pKICertificateTemplate physicalLocation queryPolicy
rRASAdministrationDictionary server
324
760
18120
420
336
398
1462
serversContainer site siteLink sitesContainer subnet subnetcontainer
578
548
312 288
564
300
Bytes per server:
w2kdc2.subdom.w2k.dom
w2kdc4.w2k.dom
250647
250647
Checking for missing replies...
No missing replies!INFO: Server sizes are equal. (Отсутствующих элементов нет. Размеры о&ъектов на серверах совпадают.)
*** Identical Directory Information Trees ***
PASS-=» PASS «=-
closing connections...
w2kdc4. w2k.dom; w2kdc2.subdom.w2k.dom;
Как вы можете видеть, отображается количество объектов определенного типа, а также общий размер объектов определенного типа.
Анализ различий между разделами каталога
Существует три основных типа несогласованности реплик каталога, распознаваемых утилитой DsaStat. Рассмотрим их ниже на примерах. В каждом примере мы будем анализировать результаты статистического и полного сравнения реплик для некоторого подразделения. Для экономии места будут показаны наиболее интересные и информативные строки из тех сообщений, которые утилита DsaStat отображает на экране.
Отличающиеся значения атрибутов одного и того же объекта
В случае, когда значения одного или нескольких атрибутов одного и того же объекта, хранящегося на указанных контроллерах домена, отличаются друг от друга (т. е. имеются различия в репликах каталога), при статистическом
сравнении выполняется только подсчет общего размера объектов и результат получается следующим:
Checking for missing replies...
No missing replies I INFO: Server sizes are not equal (min=..., max=...).
*** Identical Directory Information Trees ***
PASS-=» PASS «=
Единственный вывод, который вы можете сделать, получив подобное сообщение, — то, что реплики каталога отличаются друг от друга.
При полном сравнении указывается как имя объекта, в котором имеются расхождения (cN=John Smith,...), так и имя атрибута (description), например:
FAIL Value [0] of Attr[description] did not compare on dn [<GUID=f905066ccb49el439bc520f45c3b223f>;
<SID=010500000000000515000000e80b5980789a7e9e6602ab741e0c0000>;
CN=John Smith,OU=Staff,DC=w2k,DC=dom]
[Значение атрибута... не прошло проверку на сравнение для объекта...]
Servers [w2kdc4.w2k.dom]-[w2kdc3. w2k.dom]
FAIL FAIL[1]: mismatch with current DIT image
[Несовпадение указанных DIT-деревьев]
Checking for missing replies...
No missing replies!INFO: Server sizes are not equal (min=..., max=...).
*** Different Directory Information Trees. 1 errors (see above). * FAIL-=» FAIL «=-
Таким образом, вы можете видеть как количество ошибок, так и их местоположение.
Несовпадения в количестве атрибутов одного и того же объекта
Если реплики одного и того же объекта имеют разное количество атрибутов, при статистическом сравнении — опять-таки — тесты только показывают, что размеры реплик не совпадают. Рассмотрим результаты полного сравнения. (Обратите внимание на то, что в этом случае используется параметр
-t: FALSE.)
С:\>dsastat -s:w2kdc4.w2k.dom;w2kdc3.w2k.dom -b:OU=Staff,DC=w2k,DC=dom S> -t: FALSE
Unsorted mode.
FAIL AttrCount mismatch : Attrcount[9]@Server[w2kdc4.w2k.dom] ! =
Attrcount[8]@Server[w2kdc3.w2k.dom]
[He совпадает количество атрибутов ... для объекта ...]
for Dn '<GUID=008805cd96cl664a85a6el0632d375ad>;OU=Staff,DC=w2k,DC=dom'
********** Dumping Attribute List ********** [Список атрибутов]
> Server [w2kdc4,w2k.dom] <
Attr[0] = description
Attr[l] = gPLink
Attr[2] = name
Attr[3] = nTSecurityDescriptor
Attr[4] = objectcategory
Attr[5] = objectclass
Attr[6] = ou
Attr[7] = replPropertyMetaData
Attr[8] = whenCreated > Server [w2kdc3.w2k.dom] <
AttrfO] = gPLink
Attr[l] = name
Attr[2] = nTSecurityDescriptor
Attr[3] = objectcategory
Attr[4] = objectclass
Attr[5] = ou
Attr[6] = replPropertyMetaData
Attr[7] = whenCreated
FAIL FAIL[1]: mismatch with current DIT image
Checking for missing replies...
No missing replies!INFO: Server sizes are not equal (min=11270, max=11292).
*** Different Directory Information Trees. 1 errors (see above). ***
FAIL-=» FAIL «=-
Вы можете видеть, что утилита выводит количество атрибутов для каждой реплики объекта, показывает отличительное имя (DN) этого объекта, а затем перечисляет имена атрибутов для каждой реплики. Поэтому отсутствующий атрибут можно очень быстро найти.
Различное количество объектов
Для следующего примера пользователь userOl был удален из подразделения Staff на одном из контроллеров домена; при этом изменения еще не были реплицированы на другой контроллер. В этом случае и статистическая, и полная проверка указывают на невыполнение теста и сообщают, что "общее количество объектов на серверах не совпадают" ("Server total object count mismatch"). Однако полный тест более точно локализует ошибку: он пока-
зывает тип и имя отсутствующего объекта. Взгляните на приведенные ниже результаты теста:
Objects per server:
Obj/Svr
w2kdc3.w2k.dom w2kdc4.w2k.dom Total
computer contact
112
112
group
organizationalUnit
6612
224
user
151429
volume
336
282755
FAIL Server total
object count mismatch
Bytes per server:
1129211292w2kdc3.w2k.dom
11292
11292
w2kdc4.w2k.dom11072
Checking for missing replies...
[Проверка отсутствующих элементов...]
Fail [2]: missing 1 replies for
'<GUID=e3806dfa0bb96e4e99aa47e6dbb26ad5>;<SID=010500000000000515
0000e80b5980789a7e9e6602ab743e0c0000>;CN=user01,OU=Staff,DC=w2k,DC=dom' INFO: Server sizes are not equal (min=11292, max=11072).
*** Different Directory Information Trees. 2 errors (see above). *** FAIL-=» FAIL «=-
Replication Diagnostics Tool (RepAdmin.exe) (ST)
Утилита RepAdmin — это единственный инструмент, с помощью которого администратор может просматривать топологию репликации Active Directory и управлять ею из командной строки или из командного файла. Эта утилита в сочетании с DsaStat позволяет локализовать проблемы, связанные с несогласованностью информации в Active Directory, в рамках всего леса доменов.
В этой главе рассматриваются часто используемые опции утилиты RepAdmin. Некоторые опции могут показаться слишком сложными и запутанными.
Однако если вы хорошо разберетесь с моделью репликации Active Directory, то быстро научитесь использовать эту утилиту с максимальной отдачей.
Примечание )
Чтобы работать с утилитой RepAdmin, зарегистрируйтесь в сети как администратор домена. Некоторые операции можно выполнять только на контроллерах домена, а не на клиентских компьютерах.
Мониторинг топологии репликации
Запуск службы КСС
При нормальной работе служба Knowledge Consistency Checker (КСС) периодически проверяет и автоматически перестраивает топологию репликации. Вы можете принудительно запустить этого процесс после некоторых изменений топологии (например, после удаления соединений). Взгляните на пример:
С:Vrepadmin /ксс w2kdc4.w2k.dom
Consistency check on w2kdc4.w2k.dom successful.
Просмотр партнеров по репликации (/showreps)
Первым и очень важным шагом в процессе управления репликацией является отображение контроллеров-партнеров (соседей), имеющих соединения с указанным контроллером домена, а также просмотр топологии репликации для каждого контекста имен каталога. (Эта информация впоследствии используется во многих параметрах утилиты RepAdmin.) Приведенный ниже пример был получен для леса, состоящего из двух доменов и двух сайтов. Корневой домен w2k.dom располагается в сайте W2K-site и содержит два контроллера домена (W2KDC2 и W2KDC3). Дочерний домен subdom.w2k.dom находится в сайте Remote-site и имеет единственный контроллер домена (W2KDC2). Давайте посмотрим, какую информацию отображает утилита RepAdmin для указанного контроллера. (Комментарии даны в квадратных скобках и выделены полужирным.)
С:\>repadmin /showreps w2 kdc 4 . w2 k.dom
W2K-site\W2KDC4
DSA Options : IS_GC [Указанный контроллер является сервером глобального каталога]
objectGuid : 09317c0e-fb52-4a63-a9d0-8899068bc2a0 [Используя этот идентификатор (GUID), вы можете привязаться (bind) к объекту DSA (Directory Service Agent, агент службы каталога) с именем
CN=NTDS Settings,CN=W2KDC4,C№=Servers,CN=W2K-site,CN=Sites, CN=Configuration,DC=w2k,DC=dam.]
invocationlD: c6357684-efca-441d-aalb-fa5adbe75a02
==== INBOUND NEIGHBORS ======================================
CN=Schema,CN=Configuration,DC=w2k, DC=dom [Разделы Schema и Configuration реплицируются между всеми контроллерами домена в лесе.]
Remote-site\W2KDC2 via RPC objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0 Last attempt @ 2000-10-22 17:26.53 was successful.
[Для каждого соединения указаны время и результат последней операции репликации.]
W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e-e681-44 9f-blbe-38dadf6f4c06 Last attempt @ 2000-10-22 18:18.23 was successful.
CN=Configuration,DC=w2k,DC=dom
Remote-site\w2KDC2 via RPC objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0 Last attempt @ 2000-10-22 17:26.53 was successful.
W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06 Last attempt @ 2000-10-22 18:18.23 was successful.
DC=w2k,DC=dom [Раздел доменных имен реплицируется только между контроллерами этого домена.]
W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06 Last attempt @ 2000-10-22 18:18.23 was successful.
DC=subdom,DC=w2k,DC=dom [Этот раздел доменных имен также — частично — реплицируется на указанный контроллер домена, т. к. он является сервером глобального каталога.]
Remote-site\W2KDC2 via RPC objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0 Last attempt @ 2000-10-22 17:26.53 was successful.
==== OUTBOUND NEIGHBORS FOR CHANGE NOTIFICATIONS ============
CN=Schema,CN=Configuration,DC=w2k, DC=dom W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06 Remote-site\W2KDC2 via RPC objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0
CN=Configuration,DC=w2k,DC=dom
W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e~e681-44 9f-blbe-38dadf6f4c06
DC=w2k,DC=dom
W2K-site\W2KDC3 via RPC objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06
С Примечание
На самом деле контроллеры домена W2KDC4 и W2KDC2 связаны с помощью транспорта "IP" (т. к. эти контроллеры относятся к разным сайтам). Однако оба транспорта — и IP, и RPC — отображаются как "via RPC" (через RPC). Более детальную информацию можно получить с помощью параметра /showconn (см. ниже).
Режим подробного протоколирования позволяет получить дополнительную информацию, например:
CN=Schema,CN=Configuration,DC=w2k,DC=dom
Remote-site\W2KDC2 via RPC
objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0
Address: 161d093e-426e-47cc-8da6-f40ce5bb7el0._msdcs.w2k.dom ntdsDsa invocationld: 8ccafl3e-d8bf-4002-ae30-a7b2de062c2b
WRITEABLE DO_SCHEDULED_SYNCS COMPRESS_CHANGES
'Ъ NO_CHANGE_NOTIFICATIONS
USNs: 25321/OU, 25321/PU
Last attempt @ 2000-10-28 20:08.56 was successful.
W2K-site\W2KDC3 via RPC
objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06
Address: a9d28d8e-e681-44 9f-blbe-38dadf6f4c06._msdcs.w2k.dom ntdsDsa invocationld: 7528dbeb-ddf7-45e6-9c8c-d67bb5ae89e6
WRITEABLE SYNC_ON_STARTUP DO_SCHEDULED_SYNCS
USNs: 51730/OU, 51730/PU
Last attempt @ 2000-10-28 21:33.52 was successful.
Взглянув в приведенном листинге на выделенные флаги, можно, в частности, сделать следующие выводы:
Репликация и внутри сайта, и между сайтами выполняется по расписанию (только это разные расписания!) (DOSCHEDULEDSYNCS).
Трафик репликации между сайтами сжимается (COMPRESS CHANGES).
Извещения об изменениях (change notification) не передаются между контроллерами домена, входящими в разные сайты (это опция устанавливается по умолчанию) (NOCHANGENOTIFICATIONS).
Контроллеры доменов внутри сайта синхронизируются при их загрузке (SYNCONSTARTUP).
Просмотр соединений с партнерами по репликации (/showconn)
Самую подробную информацию о соединениях топологии репликации, установленных для контроллера домена, можно увидеть с помощью параметра
/showconn. Нужно указать DNS-имя контроллера домена, который будет служить источником информации, и идентификатор GUID (или отличительное имя объекта DSA) интересующего вас контроллера. Из приведенного ниже листинга можно, например, увидеть, что контроллер домена W2KDC4 имеет два входящих (inbound) соединения:
С:\>repadmin /showconn w2kdc4.w2k.dom 09317c0e-fb52-4a63-a9d0~ 8899068bc2a0
Show Connection Objects
<GUID=09317c0e-fb52-4a63-a9d0-8899068bc2a0>:
W2KDC4\00cfca04-dcaf-4c92-b5bb-c634455d7d40
enabledConnection: TRUE
fromServer: W2K-site\W2KDC3
TransportType: intrasite RPC
options: isGenerated
ReplicatesNC: CN=Schema,CN=Configuration,DC=w2k,DC=dom Reason: RingTopology ReplicatesNC: DC=w2k,DC=dom Reason: RingTopology ReplicatesNC: CN=Configuration,DC=w2k,DC=dom Reason: RingTopology
whenChanged: 20000705222131.02
whenCreated: 20000705222028.02
W2KDC4\8f4339b2-e731-4af5-9691-cl59aaf2c349
enabledConnection: TRUE
fromServer: Remote-Site\W2KDC2
TransportType: IP
options: isGenerated overrideNotifyDefault ReplicatesNC: CN=Configuration,DC=w2k,DC=dom ReplicatesNC: DC=subdom,DC=w2k, DC=dom
whenChanged: 20000705222028.02
whenCreated: 20000705222028.02
Обратите внимание на то, что отображаются два различных типа транспортов — один для репликации внутри сайта, а другой для репликации между сайтами.
Принудительный запуск репликации
С помощью утилиты RepAdmin можно очень гибко управлять репликацией. Можно инициировать репликацию следующих видов:
Один раздел каталога реплицируется с одного контроллера домена на другой контроллер.
Один раздел каталога реплицируется от всех партнеров по репликации.
Раздел каталога реплицируется между сайтами.
Репликация в обратном направлении: обычно изменения копируются от партнеров (pull mode); можно выбрать обратное направление (push mode), когда изменения на контроллере будут копироваться его партнерам по репликации.
Рассмотрим эти виды репликации подробнее.
Репликация между двумя партнерами (соседями)
Для выполнения самой "элементарной" операции по репликации вы должны указать некоторый раздел каталога, DNS-имя целевого сервера и идентификатор GUID сервера-источника (с которого будут копироваться изменения). Например, следующая команда позволяет реплицировать раздел доменных имен (DC=w2k,DC=dom):
С:\>repadmin /sync DC=w2k,DC=dom w2kdc4.w2k.dom a9d28d8e-e681-449f-blbe- 38dadf6f4c06
Sync from a9d28d8e-e681-449f-blbe-38dadf6f4c06 to w2kdc4.w2k.dom completed successfully.
Вы должны ждать до тех пор, пока операция не будет закончена. Или же вы можете запустить операцию в асинхронном режиме и проверять очередь репликаций, чтобы увидеть момент окончания этой операции. С помощью следующей команды, к примеру, можно инициировать полную репликацию контекста:
С:\>repadmin /sync DC=w2k,DC=dom w2kdc4.w2k.dom a9d28d8e-e681-449f-blbe- 38dadf6f4c06 /full /async
Successfully enqueued sync from a9d28d8e-e681-449f-blbe-38dadf6f4c06 to w2kdc4.w2k.dom.
Следить за выполнением операции можно с помощью команды
C:\>repadmin /queue
Вот пример выполнения этой команды:
Queue contains 1 items.
Current task began executing at 2000-10-28 22:12.35.
Task has been executing for 0 minutes, 3 seconds. [Время выполнения операции]
[353] Enqueued 2000-10-28 22:12.35 at priority 90
SYNC FROM SOURCE
NC DC=w2k,DC=dom
DSA W2K-site\W2KDC3
DSA objectGuid a9d28d8e-e681-449f-blbe-38dadf6f4c06
DSA transport addr a9d28d8e-e681-449f-blbe-38dadf6f4c06._msdcs.w2k.dom ASYNCHRONOUS OPERATION WRITEABLE FULL
Репликация от всех партнеров
Параметр /syncail позволяет синхронизировать раздел каталога между контроллером домена и всеми его партнерами. В процессе выполнения команд могут возникать и ошибки. Взгляните, к примеру, на результат выполнения некоторой команды:
С:\>repadmin /syncail w2kdc4.w2k.dom DC=w2k, DC=dom
CALLBACK MESSAGE: Win32 error 1722 contacting server (network error):
161d093e-426e-47cc-8da6-f40ce5bb7el0._msdcs.w2k.dom
CALLBACK MESSAGE: The following replication is in progress:
From: a9d28d8e-e681-449f-blbe-38dadf6f4c06._msdcs.w2k.dom
To : 09317c0e-fb52-4a63-a9d0-8899068bc2a0._msdcs.w2k.dom
CALLBACK MESSAGE: The following replication completed successfully:
From: a9d28d8e-e681-449f-blbe-38dadf6f4c06._msdcs.w2k.dom
To : 09317c0e-fb52-4a63-a9d0-8899068bc2a0._msdcs.w2k.dom
CALLBACK MESSAGE: SyncAll Finished.
SyncAll reported the following errors:
Win32 error 1722 contacting server (network error):
161d093e-426e-47cc-8da6-f40ce5bb7el0._msdcs.w2k.dom
Показанная ошибка означает, что "RPC-сервер недоступен" ("The RPC server is unavailable"). Описание ошибки можно получить, запустив утилиту RepAdmin с параметром /showmsg и указав код ошибки (см. ниже).
Когда показанная команда выполняется успешно, она отображает имена всех партнеров по репликации и в конце должна выдать сообщение:
SyncAll terminated with no errors.
(Операция SyncAll завершилась без ошибок.)
Внимание!
Если в команде repadmin /syncail вы не указываете контекст имен, реплицируется только контекст Configuration.
С помощью команды repadmin /syncail /h можно получить справочную информацию о дополнительных параметрах утилиты, два из которых особенно важны:
/е — разрешает репликацию между сайтами. Попробуйте, например, синхронизировать раздел Configuration, не указывая этот параметр и указывая его — вы сами увидите разницу.
/р (заглавная буква!) — реверсирует направление репликации. Когда используется этот параметр, изменения распространяются от указанного контроллера к всем его партнерам (по умолчанию все наоборот).
Неудавшиеся операции репликации
Если партнер по репликации не функционирует или с ним отсутствует связь, операции репликации, периодически запускаемые по расписанию, оказываются неудачными. С помощью следующей команды можно получить статистику по неудачным операциям репликации:
С:\>repadmin /failcache w2kdc4.w2k.dom
==== KCC DSA CONNECTION FAILURES ============================ (none)
==== KCC DSA LINK FAILURES ================================== Remote-site\W2KDC2
objectGuid: 161d093e-426e-47cc-8da6-f40ce5bb7el0
2 consecutive failures since 2000-10-22 18:32.57. W2K-site\W2KDC3
objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06 No failures.
Просмотр изменений каталога
Утилита RepAdmin имеет несколько опций, которые можно использовать для проверки текущего состояния контроллеров домена. Например, легко можно определить, выполнялись ли на контроллере домена какие-либо изменения в каталоге, или синхронизированы ли разделы каталога на разных контроллерах домена.
Актуальна ли информация на контроллере домена?
Предположим, нам нужно определить, синхронизирован ли раздел доменных имен (DC=w2k,DC=dom) на двух контроллерах домена — W2KDC4 и W2KDC3. Найдем сначала самое большое значение USN (Update Sequence Number — порядковый номер обновления) на первом контроллере. Для этого используется следующая команда:
С:Vrepadmin /showvector DC=w2k,DC=dom w2kdc4.w2k.dom
W2K-site\W2KDC4@USN 43490
leel7992-dea9-423d-9693-3864297217f8 @ USN 4870
W2K-site\W2KDC3@USN 51877
b6b967e6-ba90-4eb.3-abbf-b20cc31460b3 @ USN 7541
W2K-site\W2KDC4@USN 122618
d24ccd55-52e2-44c6-alle-d227b2634754 @ USN 5097
Затем нужно проверить значение, известное второму контроллеру. Для этого нужно указать значение invocationlD, присвоенное первому контроллеру
(см. выше описание параметра /showreps), найденный номер USN и DNS- имя одного из контроллеров домена:
C:\>repadmin /propcheck DC=w2k,DC=dom c6357684-efca-441d-aalb- fa5adbe75a02 122618 w2kdc4.w2k.dom
W2K-site\W2KDC4: yes (USN 122618)
W2K-site\W2KDC3: ** NO! ** (USN 122593)
Как мы видим, на втором контроллере хранится устаревший номер USN. Если мы реплицируем изменения с контроллера W2KDC4 на контроллер W2KDC3 и снова выполним команду, то должны получить следующий результат:
G:\>repadmin /propcheck DC=w2k,DC=dom c6357684-efca-441d-aalb- fa5adbe75a02 122618 w2kdc4.w2k.dom
W2K-site\W2KDC4: yes (USN 122618)
W2K-site\W2KDC3: yes (USN 122618)
Отображение метаданных репликации
Анализируя метаданные репликации, полученные для некоторого объекта каталога, вы можете проверять на согласованность различные реплики каталога: для этого нужно сравнить версии (version numbers) атрибутов и номера USN на различных контроллерах домена. Кроме того, вы можете увидеть, на каком контроллере домена (называемом порождающим, originating DSA) атрибуты изменялись в последний раз. Ниже приведен пример метаданных для подразделения. (Для компактности сообщения, отображаемые на экране, сжаты по горизонтали.)
C:\>repadmin /showmeta OU=Staff,DC=w2k,DC=dom w2kdc4.w2k.dom
13 entries.
Loc.USN
Originating DSA Org.USN
Org.Time/Date
Ver Attribute
4300
W2K-site\W2KDC44300
2000-09-03 20:28.12
1 objectclass
56898
W2K-site\W2KDC34306
2000-12-10 19:50.43
2 c
122308
W2K-site\W2KDC4 122308
2001-01-28 20:42.22
5 ou
56898
W2K-site\W2KDC34306
2000-12-10 19:50.43
3 description
4300 W2K-site\W2KDC44300
instanceType
2000-09-03 20:28.12
1
4300
W2K-site\W2KDC44300
2000-09-03 20:28.12
1 whenCreated
56898
W2K-site\W2KDC34306
2000-12-10 19:50.43
2 co
118271 W2K-site\W2KDC4 118271
’b nTSecurityDescriptor
2001-01-27 17:09.08
86
122308
W2K-site\W2KDC4 122308
2001-01-28 20:42.22
5 name
56898
W2K-site\W2KDC34306
2000-12-10 19:50.43
2 countryCode
4300W2K-site\W2KDC443002000-09-0320:28.121
'Ъ objectcategory
48227W2K-site\W2KDC4482272000-11-2418:32.224gPLink
24638W2K-site\W2KDC4246382000-10-0712:14.551gPOptions
Результат выполнения команды полезно сравнить с метаданными, полученными с помощью утилиты Ldp.exe (см. рис. 9.15 в главе 9 "Манипулирование объектами Active Directory"}. Как вы можете видеть, здесь показаны символьные имена атрибутов, а не идентификаторы.
( Примечание )
Если на контроллере домена выполнялось авторитетное восстановление, версии атрибутов будут иметь большие значения, поскольку по умолчанию номера версий увеличиваются на 100.000 при каждой "нормальной" операции восстановления (когда не используется параметр verinc).
Регистрация изменений, выполненных на контроллере домена
С помощью утилиты RepAdmin можно зарегистрировать все изменения, сделанные на указанном контроллере домена, начиная с определенного времени. Показанная ниже команда анализирует текущее состояние раздела доменных имен и записывает результаты в файл:
C:\>repadmin /getchanges DC=w2k,DC=dom w2kdc3.w2k.dam /cookie:logl.txt
Using cookie from file logl.txt (228 bytes)
===== SOURCE DSA: w2kdc3.w2k.dom ====
No changes.
New cookie written to file logl.txt (228 bytes)
Спустя некоторое время, вы можете снова выполнить эту команду:
С:\>repadmin /getchanges DC=w2k,DC=dom w2kdc3.w2k.dom /cookie:logl.txt Using cookie from file logl.txt (228 bytes)
==== SOURCE DSA: w2kdc3 . w2k. dom =====
Objects returned: 3
(0) modify CN=Backup Operators,CN=Builtin,DC=w2k,DC=dom
1> objectGUID: 200f9656-dl8d-47f4-ab38-c31fdld4el9a
1> instanceType: 4
modify CN=John Smith,OU=STAFF,DC=w2k,DC=dom
1> objectGUID: 6c0605f9-49cb-43el-9bc5-20f45c3b223f
1> instanceType: 4
1> nTSecurityDescriptor: <1516 byte blob>
1> userPrincipalName: jsmith@w2k
delete OU=Ouname\
DEL:ce5ee5d8-7bd5-47fa-ba40-ad34fe4f45е0,CN=Deleted Objects,DC=w2k,DC=dom
1> parentGUID: 8f627029-b7ec-4610-94d5-c62c727b7e85
1> objectGUID: ce5ee5d8-7bd5-47fa-ba40-ad34fe4f45e0
1> instanceType: 4
1> isDeleted: TRUE
1> name: Ouname
DEL:ce5ee5d8-7bd5-47fa-ba40-ad34fe4f45e0
New cookie written to file logl.txt (228 bytes)
Как можете видеть, за прошедшее время два объекта были изменены, а один объект был удален. При выполнении команды временная метка в файле обновляется, и, начиная с этого момента, будут регистрироваться только новые изменения.
Аналогичная информация отображается и при выполнении команды
C:\>repadmin /getchanges DC=w2k,DC=dom w2kdc4.w2k.dam a9d28d8e-e681-449f- blbe-38dadf6f4c06
Обратите внимание на то, что эта команда содержит имя раздела доменных имен, DNS-имя партнера по репликации и идентификатор GUID исходного контроллера домена (w2kdc3.w2k.dom). Данная команда отображает изменения, сделанные до того момента, как выполнилась репликация и две реплики каталога стали синхронизированными.
Сравнение информации, хранящейся на разных контроллерах домена
Команда, с помощью которой можно сравнить реплики разделов каталога, хранящиеся на разных контроллерах домена, должна содержать DNS-имя "ссылочного" ("reference") контроллера и GUID контроллера-источника. Будут отображаться все изменения, сделанные на контроллере-источнике. По сути, эта команда выполняет те же действия, что и утилита DsaStat. Ниже представлены результаты выполнения команды, полученные в процессе создания 1000 пользовательских учетных записей на контроллере домена W2KDC3.
0:\>repadmin /getchanges DC=w2k,DC=dom w2kdc4.w2k.dom a9d28d8e-e681-449f- blbe-38dadf6f4c06 /statistics
Building starting position from destination server w2kdc4.w2k.dom [Определение начального состояния на целевом сервере ...]
Source Neighbor:
DC=w2k,DC=dom
W2K-site\W2KDC3 via RPC
objectGuid: a9d28d8e-e681-449f-blbe-38dadf6f4c06
Address: a9d28d8e-e681-44 9f-blbe-38dadf6f4c06,_msdcs.w2k.dom ntdsDsa invocationld: 7528dbeb-ddf7-45e6-9c8c-d67bb5ae89e6
WRITEABLE SYNC_ON_STARTUP DO_SCHEDULED_SYNCS
USNs: 45417/OU, 45417/PU
Last attempt @ 2000-10-28 16:48.51 was successful.
Destination's Up To Dateness Vector:
09317c0e-fb52-4a63-a9d0-8899068bc2a0
@
USN
43490
Ieel7992-dea9-423d-9693~3864297217f8
@
USN
4870
7528dbeb-ddf7-45e6-9c8c-d67bb5ae89e6
@
USN
45417
b6b967e6-ba90-4eb3-abbf-b20cc31460b3
@
USN
7541
c6357 684-efca-441d-aalb-fa5adbe75a02
@
USN
119925
d24ccd55-52e2-44c6-alle-d227b2634754
@
USN
5097
== SOURCE DSA: a9d28d8e-e681-449f-blbe-38dadf6f4c06. msdcs.w2k.dom ==
**t*‘***Cumulative packet totals******** [Общее число пакетов]
Packets:
1
Objects:100
Object Additions:100
Object Modifications: 0
Object Deletions:0
Object Moves:0
Attributes:1691
Values:1989
Dn-valued Attributes: 100
MaxDnVals on any attr:1
#dnvals 1-250251-500 501-750
751-1000
1001+
add1000
0
00
mod00
0
00
***********************************************
Packets:6Objects:585Object Additions:582Object Modifications: 3Object Deletions:0Object Moves:0Attributes:9894Values:11638Dn-valued Attributes: 582MaxDnVals on any attr:1#dnvals 1-250251-500 501-750751-1000add5820000mod00000Packets:6Objects:585Object Additions:582Object Modifications: 3Object Deletions:0Object Moves:0Attributes:9894Values:11638Dn-valued Attributes: 582MaxDnVals on any attr:1#dnvals 1-250251-500 501-750751-1000add5820000mod00000*********Grand total*****************Grand total********1001 +1001 +
Packets:
6
Objects:585
Object Additions:582
Object Modifications: 3
Object Deletions:0
Object Moves:0
Attributes:9894
Values:11638
Dn-valued Attributes: 582
MaxDnVals on any attr:1
#dnvals 1-250251-500 501-750
751-1000
add5820
0
00
mod00
0
00
Packets:
6
Objects:585
Object Additions:582
Object Modifications: 3
Object Deletions:0
Object Moves:0
Attributes:9894
Values:11638
Dn-valued Attributes: 582
MaxDnVals on any attr:1
#dnvals 1-250251-500 501-750
751-1000
add5820
0
00
mod00
0
00
*********Grand total********
*********Grand total********
1001 +
1001 +
Если обе реплики синхронизированы, то команда выдает сообщение
No changes. [Изменений нет.]
Вспомогательные опции
Установка параметров DSA
Каждый DSA (Directory System Agent — агент службы каталога) представлен в Active Directory объектом типа nTDSDSA с именем CN=NTDS Settings. Этот объект является дочерним для соответствующего серверного объекта в разделе Configuration. (Атрибуты объектов DSA можно просматривать с помощью оснастки ADSI Edit.) У объектов DSA имеется атрибут options, который в значительной степени влияет на состояние и функциональные свойства DSA-агентов. Администратор может менять значения этого атрибута, используя утилиту RepAdmin и недокументированный параметр /options. Рассмотрим несколько примеров.
Следующая команда позволяет определить, является ли указанный контроллер домена сервером глобального каталога:
С:\>repadmin /options w2kdc4.w2k.dom
Current options: IS_GC
В этом случае значение атрибута options равно 1. Установив флаг IS GC, вы можете назначить указанный контроллер сервером глобального каталога. Обычно эту операцию выполняют с помощью оснастки Active Directory Sites and Services.
Описанные ниже два параметра позволяют "изолировать" определенный контроллер домена от его партнеров по репликации в процессе поиска неисправностей или для других специфических целей. На следующем примере видно, что репликация от указанного контроллера домена (исходящая репликация, outbound replication) запрещена:
С:\>repadmin /options w2kdc2.subdom.w2k.dom
Current options: DISABLE_OUTBOUND_REPL
В данном случае значение атрибута options равно 0x4 (hex).
Состояние входящей репликации (inbound replication) (от партнеров к указанному контроллеру) определяется флагом DISABLE_INBOUND_REPL. (Этот флаг соответствует значению атрибута options, равному 2.) Можно установить оба флага и полностью запретить репликацию для контроллера домена.
Для установки флага укажите его в команде со знаком "+" (плюс), для сброса флага используйте знак "-" (минус). Например, следующая команда сбра-
сывает флаг и снова разрешает репликацию от заданного контроллера домена:
C:\>repadmin /options w2kdc2.subdom.w2k.dom -DISABLE_OUTBOUND_REPL Current options: DISABLE_OUTBOUND_REPL
New options : (none)
Каждая операция типа "запретить репликацию" регистрируется в журнале Directory Service (Event ID 1113, 1114, 1115 и 1116). Взгляните на два следующих примера:
Event Туре: Warning [Предупреждение]
Event Source: NTDS General
Event Category:Replication
Event ID:1115
Computer:W2KDC4
Description:
Outbound replication is disabled. [Исходящая репликация запрещена.]
Когда репликация разрешается, в журнале регистрируется информационное событие:
Event Туре:Information [Информация]
Event Source: NTDS General
Event Category:Replication
Event ID:1114
Computer:W2KDC4
Description:
Inbound replication is re-enabled. [Входящая репликация снова разрешена]
Преобразование значений времени, хранящихся в каталоге (/showtime)
С помощью уитилиты RepAdmin можно преобразовать в понятный формат различные значения времени, хранящиеся в Active Directory. (См. также описание утилиты NLtest в начале этой главы.) Давайте преобразуем приведенное ранее для примера значение 126191956001314960. Введите repadmin /showtime в командной строке и скопируйте значение. Сотрите семь правых цифр и нажмите клавишу <Enter>. Вы должны получить следующий результат:
C:\>repadmin /showtime 12619195600
12619195600 = 0x2f029a4d0 = 00-11-20 12:06.40 UTC = 2000-11-20 06:06.40 local
Как вы можете видеть, время отображается в двух форматах: локальное время и всемирное время (UTC).
Отображение описания ошибки (/showmsg)
Утилита RepAdmin.exe имеет опцию, очень полезную при написании и отладке сценариев ADSI, при анализе журналов событий и во многих других случаях. Вы можете не искать описания ошибок в документации, воспользоваться данной утилитой; при этом вы получите значительно больше возможностей, чем предоставляет команда net helpmsg. Утилита RepAdmin.exe может отображать описание как для кодов ошибок Win32 (включая ошибки ADSI 2.5), так и для стандартных (generic) кодов ошибок СОМ.
Код ошибки можно указывать в любом виде: как длинное целое (например, -2147016684) или как шестнадцатеричное значение (например, 0x80072014; префикс 0х является обязательным, не забывайте добавлять его, если код копируется из окна оснастки Event Viewer). Также можно указывать короткие целые, например, 8453. Вот пример использования этого параметра (код ошибки ADSI-сценария):
C:\repadmin /showmsg 0x80072014
-2147016684 = 0x80072014 = "The requested operation did not satisfy one or more constraints associated with the class of the object."
(Запрошенная операция не удовлетворяет одному или нескольким ограничениям, накладываемым на объекты данного класса.)
Active Directory Replication Monitor (ReplMon.exe) (ST)
Active Directory Replication Monitor — это GUI-инструмент, предназначенный исключительно для мониторинга репликации в доменах Windows 2000 и управления всеми видами репликации. С помощью этого инструмента можно просматривать и регистрировать все события, связанные с репликацией, инициировать репликацию, запускать операцию генерирования топологии репликации, находить серверы глобального каталога и серверы форпостов, просматривать доверительные отношения, а также метаданные репликации для объектов Active Directory. Список возможностей инструмента ReplMon можно продолжить. Он имеет простой и дружественный интерфейс.
Подготовка к работе
После запуска утилиты нужно создать список наблюдаемых (monitored) серверов. Эта операция может оказаться довольно утомительной, однако ее нужно выполнить один только раз. Когда все необходимые серверы добавлены в окно утилиты ReplMon, сохраните текущую конфигурацию, выбрав команду Save Monitored List As в меню File. При следующем запуске утили-
ты выполните команду Open Script (Открыть сценарий) и загрузите нужную конфигурацию. Пример главного окна утилиты ReplMon показан на рис. 8.3.
4 Active Directory Replication MonitorH0B
File Edit Action View HelpMonitored Servers:Monitored Seivers-. [г] W2K-siteJs w2kdc4 w2k.dom4 CN=Schema.CN=Configuration,DC=w2k,DC=dom Ш W2K-$ite\W2KDC3File Edit Action View HelpMonitored Servers:Monitored Seivers-. [г] W2K-siteJs w2kdc4 w2k.dom4 CN=Schema.CN=Configuration,DC=w2k,DC=dom Ш W2K-$ite\W2KDC3lRemote-SiteW2KDC2lRemote-SiteW2KDC2• Sr/ ^ CN=Configuration,DC=w2k,DC=domШ W2K-site\W2KDC3Щ Remcte-Site\W2KDC2+ ф DC=w2k,DC=dom'♦."4 DC=$ubdom,DC=w2k,DC=domJ w2kdc3.w2k.domi+: ф CN=Schema,CN=Configuration,DC=w2k,DC=dom.+: ^ CN=Configuration,DC=w2k,DC=dom'+ ^ DC=w2k,DC=dom}|] Remote-Site- ^ w2kdc2.subdom.w2k.domф DC=subdom,DC=w2k,DC=dom;+; ф CN=Schema,CN=Configuration,DC=w2k,DC=dom'+ ф CN=Configuration,DC=w2k,DC=dom+. DC=w2k,DC=dom• Sr/ ^ CN=Configuration,DC=w2k,DC=domШ W2K-site\W2KDC3Щ Remcte-Site\W2KDC2+ ф DC=w2k,DC=dom'♦."4 DC=$ubdom,DC=w2k,DC=domJ w2kdc3.w2k.domi+: ф CN=Schema,CN=Configuration,DC=w2k,DC=dom.+: ^ CN=Configuration,DC=w2k,DC=dom'+ ^ DC=w2k,DC=dom}|] Remote-Site- ^ w2kdc2.subdom.w2k.domф DC=subdom,DC=w2k,DC=dom;+; ф CN=Schema,CN=Configuration,DC=w2k,DC=dom'+ ф CN=Configuration,DC=w2k,DC=dom+. DC=w2k,DC=domLog: g;W)\w2kdc4 v^kdom42N=SchemaServer is current through Property Update USN: 13946Replication Failure: Changes have not been successfully replicatReplication Failure: The reason is: The RPC server is unavailableReplication Failure: The last replication attempt was: 4/19/2000Status as of: 4/19/2000 9:53:11 PMServer has seen all changes for this directory partition through USN:Status as of: 4/19/2000 9:53:12 PM» Direct Replication Partner Data «Server is current through Property Update USN: 19946Replication Failure: Changes have not been successfully replicatReplication Failure: The reason is: The RPC server is unavailableReplication Failure: The last replication attempt was: 4/19/2000Status as of: 4/19/2000 9'55:50 PMServer has seen all changes for this directory partition through USN:Status as of: 4/19/2000 9.55:51 PM» Direct Replication Partner Data <<Server is current through Property Update USN: 19973The last replication attempt was successful. This look place at: ^JLog: g;W)\w2kdc4 v^kdom42N=SchemaServer is current through Property Update USN: 13946Replication Failure: Changes have not been successfully replicatReplication Failure: The reason is: The RPC server is unavailableReplication Failure: The last replication attempt was: 4/19/2000Status as of: 4/19/2000 9:53:11 PMServer has seen all changes for this directory partition through USN:Status as of: 4/19/2000 9:53:12 PM» Direct Replication Partner Data «Server is current through Property Update USN: 19946Replication Failure: Changes have not been successfully replicatReplication Failure: The reason is: The RPC server is unavailableReplication Failure: The last replication attempt was: 4/19/2000Status as of: 4/19/2000 9'55:50 PMServer has seen all changes for this directory partition through USN:Status as of: 4/19/2000 9.55:51 PM» Direct Replication Partner Data <<Server is current through Property Update USN: 19973The last replication attempt was successful. This look place at: ^J
File Edit Action View Help
Monitored Servers:
Monitored Seivers
-. [г] W2K-site
Js w2kdc4 w2k.dom
4 CN=Schema.CN=Configuration,DC=w2k,DC=dom Ш W2K-$ite\W2KDC3
File Edit Action View Help
Monitored Servers:
Monitored Seivers
-. [г] W2K-site
Js w2kdc4 w2k.dom
4 CN=Schema.CN=Configuration,DC=w2k,DC=dom Ш W2K-$ite\W2KDC3
lRemote-SiteW2KDC2
lRemote-SiteW2KDC2
• Sr/ ^ CN=Configuration,DC=w2k,DC=dom
Ш W2K-site\W2KDC3
Щ Remcte-Site\W2KDC2
+ ф DC=w2k,DC=dom
'♦."4 DC=$ubdom,DC=w2k,DC=dom
J w2kdc3.w2k.dom
i+: ф CN=Schema,CN=Configuration,DC=w2k,DC=dom
.+: ^ CN=Configuration,DC=w2k,DC=dom
'+ ^ DC=w2k,DC=dom
}|] Remote-Site
- ^ w2kdc2.subdom.w2k.dom
ф DC=subdom,DC=w2k,DC=dom
;+; ф CN=Schema,CN=Configuration,DC=w2k,DC=dom
'+ ф CN=Configuration,DC=w2k,DC=dom
+. DC=w2k,DC=dom
• Sr/ ^ CN=Configuration,DC=w2k,DC=dom
Ш W2K-site\W2KDC3
Щ Remcte-Site\W2KDC2
+ ф DC=w2k,DC=dom
'♦."4 DC=$ubdom,DC=w2k,DC=dom
J w2kdc3.w2k.dom
i+: ф CN=Schema,CN=Configuration,DC=w2k,DC=dom
.+: ^ CN=Configuration,DC=w2k,DC=dom
'+ ^ DC=w2k,DC=dom
}|] Remote-Site
- ^ w2kdc2.subdom.w2k.dom
ф DC=subdom,DC=w2k,DC=dom
;+; ф CN=Schema,CN=Configuration,DC=w2k,DC=dom
'+ ф CN=Configuration,DC=w2k,DC=dom
+. DC=w2k,DC=dom
Log: g;W)\w2kdc4 v^kdom42N=Schema
Server is current through Property Update USN: 13946
Replication Failure: Changes have not been successfully replicat
Replication Failure: The reason is: The RPC server is unavailable
Replication Failure: The last replication attempt was: 4/19/2000
Status as of: 4/19/2000 9:53:11 PM
Server has seen all changes for this directory partition through USN:
Status as of: 4/19/2000 9:53:12 PM
» Direct Replication Partner Data «
Server is current through Property Update USN: 19946
Replication Failure: Changes have not been successfully replicat
Replication Failure: The reason is: The RPC server is unavailable
Replication Failure: The last replication attempt was: 4/19/2000
Status as of: 4/19/2000 9'55:50 PM
Server has seen all changes for this directory partition through USN:
Status as of: 4/19/2000 9.55:51 PM
» Direct Replication Partner Data <<
Server is current through Property Update USN: 19973
The last replication attempt was successful. This look place at: ^J
Log: g;W)\w2kdc4 v^kdom42N=Schema
Server is current through Property Update USN: 13946
Replication Failure: Changes have not been successfully replicat
Replication Failure: The reason is: The RPC server is unavailable
Replication Failure: The last replication attempt was: 4/19/2000
Status as of: 4/19/2000 9:53:11 PM
Server has seen all changes for this directory partition through USN:
Status as of: 4/19/2000 9:53:12 PM
» Direct Replication Partner Data «
Server is current through Property Update USN: 19946
Replication Failure: Changes have not been successfully replicat
Replication Failure: The reason is: The RPC server is unavailable
Replication Failure: The last replication attempt was: 4/19/2000
Status as of: 4/19/2000 9'55:50 PM
Server has seen all changes for this directory partition through USN:
Status as of: 4/19/2000 9.55:51 PM
» Direct Replication Partner Data <<
Server is current through Property Update USN: 19973
The last replication attempt was successful. This look place at: ^J
'4/19/2000'" S57PM
Рис. 8.3. Главное окно утилиты ReplMon, в котором вы можете просматривать доменное дерево и журналы событий для выбранных разделов каталога и партнеров по репликации
Для представления наблюдаемого сервера и его партнеров по репликации в окне утилиты ReplMon используются различные значки, помогающие администратору быстро определять состояние объектов репликации. Значение этих значков описано ниже в таблице.
Значок
Описание
Разделы каталога, имеющие проблемы с репликацией
Mi у я
Сервер форпоста (bridgehead server)
Сервер глобального каталога
Прямой партнер по репликации, у которого имеются проблемы с репликацией
ш
Успешно реплицированный прямой партнер по репликации
(окончание)
Значок Описание
^ Транзитивный партнер по репликации
Файлы журналов событий
По умолчанию утилита ReplMon записывает все журналы состояния репликации —■ Replication Status Logs — в папку Му Documents текущего пользователя. Имя файла журнала образуется из DNS-имени контроллера домена, имени раздела каталога и NetBIOS-имени партнера по репликации. При желании можно указать для журналов другую папку. Выполните команду Options в меню View, установите флажок Default Path for Replication Status Logs (Текущий путь для журналов состояния репликации) и введите нужный путь. (Для отладки проблем, связанных с репликацией, можно разрешить регистрацию отладочных сообщений, debug logging, позволяя утилите ReplMon записывать в журнале каждую выполняемую операцию.) Утилита ReplMon обновляет журналы состояния репликации при своем запуске, и вы можете задать временной интервал для их автоматического обновления. Если это сделать, то все выполняемые на наблюдаемых серверах операции, относящиеся к репликации, будут регистрироваться в журналах.
Управление репликацией
С помощью утилиты ReplMon можно инициировать любую операцию репликации, допустимую для выбранного контроллера домена. Большинство операций запускаются из контекстного меню выбранного контроллера. Эти операции достаточно просты для понимания, а все возможности утилиты легко доступны из меню.
Утилита ReplMon предоставляет очень удобную возможность просмотра характеристик производительности, которые обычно доступны в окне оснастки Performance (Производительность). (См. раздел "Мониторинг репликации" в главе 2 "Конфигурирование доменов Windows 2000 и устранение неисправностей".) Сначала запустите оснастку Performance и выберите интересующие вас счетчики. Затем запустите утилиту ReplMon, выполните команду Options в меню View и откройте вкладку Status Logging (Регистрация состояния). Установите флажок Performance Statistics (Статистика производительности), нажмите кнопку Add и введите имя счетчика. Повторите эту операцию для каждого счетчика. Теперь вы можете выбрать контроллер домена и выполнить в контекстном меню команду Show Current Performance Data (Показать текущие параметры производительности). Обратите внимание на то, что эта опция работает только для контроллеров домена из одного и того же сайта.
ГЛАВА 9
Манипулирование объектами Active Directory
Поиск объектов в Active Directory
Поскольку каталог Active Directory может содержать громадное число объектов, а структура доменов может быть весьма разветвленной, возникает необходимость в средствах быстрого поиска или выбора отдельных объектов или однотипных объектов. Для решения этой задачи имеются следующие инструменты:
Оснастка Active Directory Users and Computers. Данная оснастка имеет средства фильтрации, позволяющие сузить диапазон просматриваемых объектов. Режим поиска (Find) помогает выбирать объекты как в отдельных доменах, так и во всем лесе (поскольку оснастка может обращаться к Глобальному каталогу). (Эта оснастка была описана в главе 4 "Средства управления доменами".)
Search.vbs. Сценарий из пакета Windows 2000 Support Tools. Позволяет выполнять поиск в пределах одного домена, работает только с провайдером LDAP.
AdsVw.exe и Ldp.exe. С помощью этих мощных утилит можно создавать сложные запросы и выполнять их в домене или во всем лесе. Утилита AdsVw.exe позволяет одновременно открывать множество окон запросов. (Обе утилиты описываются далее в этой главе.)
Active Directory Search Tool (Search.vbs) (ST)
Сценарий Search.vbs представляет собой простое, удобное средство для выбора атрибутов указанных объектов. По умолчанию сценарий выводит на экран значение атрибута AdsPaths для объектов, являющихся дочерними для указанного объекта, задаваемого с помощью отличительного имени. Дочерние объекты могут иметь тот или иной тип.
Любые пользователи могут использовать этот сценарий на любой платформе Windows, если на ней установлен сервер сценариев Windows Scripting Host (WSH). Это уникальная особенность, т. к. другие инструменты поиска работают только в системах Windows 2000.
Внимание!
Сценарий Search.vbs не отображает некоторые атрибуты объектов, такие как objectGUID, objectSID, lastLogon (все эти атрибуты имеют "сложный" тип, например, Octetstring, Largelnteger и т. д.). Еще хуже то, что в сценарии имеется внутренняя ошибка, из-за которой выводимые сообщения могут формироваться неправильно, когда такие атрибуты включаются в список возвращаемых значений (выполните, к примеру, поиск атрибутов objectSID, lastLogon и ел для пользовательских объектов).
Анализ листинга этого сценария поможет вам понять причины названных ограничений и ошибок, а также методы получения данных различных типов при написании собственных сценариев (см. главу 13 "Active Directory Service Interfaces (ADS I)").
Формат выводимой информации
Сценарий Search.vbs выводит информацию на экран в виде строк следующего формата:
имяАтрибута объект# [=] значениеСвойства
Если сценарий не может отобразить значение некоторого атрибута, то выводятся только два первых компонента строки результатов, например, objectsid 1. Если значение некоторого атрибута пусто или не определено (not defined), то к двум первым компонентам добавляется символ "=", например, description 1 =.
Ниже приведены примеры использования сценария Search.vbs.
Пример 1. Поиск объекта по его идентификатору GUID
Предположим, что вы хотите проверить, принадлежит ли имеющийся у вас GUID некоторому объекту каталога, или вы хотите узнать имя объекта по его идентификатору. Вы можете воспользоваться командой поиска, например:
search "LDAP://<GUID=ac8a4d9c59d0b54782ebbl4b8989e57e>" /S:Base
Результат выглядит следующим образом:
<LDAP://<GUID=ac8a4d9c59d0b54782ebbl4b8989e57e>>;(ObjectCategory=*);ADsPa th;Base
Finished the query.
Found 1 objects.
ADsPath 1 = LDAP://OU=ADMINs,DC=w2k,DC=dom
В общем случае, вы можете расширять область поиска (т. е. указывать параметры /s:oneLevei или /S: subTree), а также задавать вывод дополнительных атрибутов.
( Примечание }
Если вам достаточно знать имя объекта, можно также использовать утилиту Guid2obj.exe, входящую в состав пакета Windows 2000 Resource Kit. Вы указываете GUID объекта в качестве параметра, а утилита возвращает отличительное имя объекта, полученное от ближайшего сервера глобального каталога.
Пример 2. Поиск всех политик в домене
Иногда нужно знать, какие политики (объекты GPO) имеются в домене и какие имена им соответствуют в административных оснастках. Для этого можно просмотреть значения атрибута displayName всех объектов политик, хранящихся в поддереве CN=Policies,CN=System в доменном контейнере. Однако гораздо быстрее выполнить операцию поиска. Для сценария Search.vbs можно использовать такую команду:
search "LDAP://DC=w2k,DC=dom" /С:(objectClass=GroupPolicyContainer) /S:subtree /Р:cn,displayName
Пример результата:
<LDAP://DC=w2k,DC=dom>;((objectClass=GroupPolicyContainer));
cn,displayName;subtree
Finished the query.
Found 5 objects.
cn 1 = {31B2F340-016D-11D2-945F-00C04FB984F9}
displayName 1 = Default Domain Policy
cn 2 = {6AC1786C-016F-llD2-945F-00C04fB984F9}
displayName 2 = Default Domain Controllers Policy
cn 3 = (2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
displayName 3 = W2k-Site's GPO
cn 4 = {C176B4F5-C854-4068-B147-6A246D3A6473}
displayName 4 = COMPs OU's GPO
cn 5 - {478374B0-9857-4A3E-B06B-A7C839F05155}
displayName 5 = ADMINs OU's GPO
Как вы можете видеть, в этом домене помимо двух стандартных (default) политик имеются три дополнительных объекта GPO (один для сайта и два для подразделений).
Просмотр и редактирование объектов Active Directory
Существует три основных "стандартных" инструмента, с помощью которых можно просматривать структуру объектов Active Directory и редакторов атрибуты объектов каталога:
□ Оснастка ADSI Edit - входит в состав пакетов Windows 2000 Support Tools и Windows 2000 Administration Tools. Эта оснастка описывалась в главе 4 "Средства управления доменами". Она отображает не все объекты каталога и их атрибуты, однако имеет простой пользовательский интерфейс и гибкий механизм пользовательских запросов. Оснастка обеспечивает доступ ко всем разделам Active Directory и серверам глобального каталога, а также предоставляет стандартные средства просмотра и изменения разрешений на доступ к объекту. Оснастка работает только с протоколом LDAP.
Active Directory Browser (ADsVw.exe) — из пакета Windows Active Directory Software Development Kit (AD SDK). Единственный инструмент, который может работать с обоими протоколами — LDAP и WinNT. Поэтому с его помощью вы можете одновременно работать с доменами Windows 2000 и доменами Windows NT. Этот инструмент практически не документирован и требует достаточно хорошего понимания архитектуры Active Directory. Позволяет работать с дескрипторами безопасности.
Active Directory Administration Tool (Ldp.exe) — входит в состав пакета Windows 2000 Support Tools. Это самый сложный из инструментов. Он позволяет работать с объектами каталога по протоколу LDAP. Для работы с ним нужно хорошо разбираться в основах протокола LDAP (принципах именования, запросах и т. д.), а также в архитектуре Active Directory. Позволяет просматривать дескрипторы безопасности и метаданные репликации Active Directory.
Перечисленные инструменты можно рассматривать как обязательный набор утилит, необходимых для устранения различных неисправностей в Active Directory, а также для создания собственных административных сценариев и приложений, ориентированных на Active Directory.
( Примечание)
Если вам нужно работать с идентификаторами GUID (атрибутом objectGUID), применяйте утилиту Ldp.exe, поскольку два других инструмента (AdsVw.exe и ADSI Edit) отображают GUID как двоичное число (в виде байтовой строки), и эту информацию нельзя затем использовать для привязки к объекту, обращения к нему и т. д.
237
Active Directory Browser (AdsVw.exe) (AD SDK)
Утилита Active Directory Browser входит в состав пакета Active Directoiy SDK (известного также под именем ADSI SDK), который можно загрузить только с веб-узла Microsoft (см. ссылки в приложении Г).
Уникальным свойством утилиты Active Directory Browser является ее способность работать как с доменами Windows 2000, так и с доменами Windows NT 4.0 (рис. 9.1 и рис. 9.2). Более того, это единственный инструмент просмотра структуры доменных объектов, имеющий многооконный интерфейс (multiple-document interface, MDI), который позволяет открывать отдельные окна для разных объектов или запросов, размещать эти окна в главном окне и, следовательно, одновременно работать со многими объектами каталога, находящимися в одном домене или в разных доменах.
К сожалению, утилита AdsVw.exe практически недокументирована. Поскольку методы ее использования далеко не очевидны, некоторые основные возможности утилиты будут рассмотрены подробнее.
О Active Directory Browser - [WinNT://nt4dom]
ВВЕЗ
23 File £dit View Options Window ^
nt4domi
g l)DAdmin2
g 2) Guest
Account Operators 4) Administrators
@ 5) Backup Operators
■ ® 6) Domain Admins
: s 7) Domain Guests s 8) Domain Users
' ■ ^ 9) Guests
- -^ 10) Print Operators
■ s 11) Replicator
d 12) Server Operators
i ^13) Users it: В 14)NT4DC2 ♦ •; 15) Schema
ADsPalh: WinNT:/7nt4dom
Class: Domain
: ‘: CLSID: {01544ED0-FD16-11СЁ-АВС4-02608С9Ё7553}
Primary Interface: (b0E4C220-FD1E-11CEABC4-02608C9E7553}
Derived From: NA
ИНЙрЙЙ'атК|ОИйййЯ^^^
ЩЙрЙ1еЁМёв:Й'ВКав
DID:
Abstract: No
ri jMinPasswordLength
Property Value.
Property Type; Integer Min Range:
fv'-MaxHangia^ Multivalued: No
Mandatory: No
DsNames: NA
Reload
Рис. 9.1. Просмотр плоского пространства имен объектов домена Windows NT 4.0
^JeJil^JeJilDC*w2kDC*w2k- ;3fi 1) CN=Builtin- ^^ 1) CM—Account Operator:-^J 2) CN=Administratorsд ^ 3) CN=8ackup Operators:. ■ i^ 4) CN=Guests; ^ 5) CN=Pre-Windows 200C^ 6) CN=Print Operators ■ ^ 7) CN=Replicator: ^3 8) CN=5erver Operators ^ 9) CN=UsersЯ 2) CN=Computers® 3) CN=Foreign5ecurityPrincip<i* 4) CN=InfrastructureД® 5) CN=lostAndFound- ;® 6)CN=Systemя 1) CN=Admin5DHolder: ® 2) CN=BCKUPKEY_P Seen: i® 3) CN=BCKUPKEYJ0957c- :® 4) CM=Default Domain Po® 1) CN=AppCategorie’ i® 5) CN—Dfs-Configuration g- i® 6) CN=File Replication SerEi i® 1) CN=Domain SystelJIB 1)CN=W2KDC3: i® 2) CN=W2KDC4 ■ B- r® 7) CN=HleUnksI® 1) CN=ObjectMoveT<- ;3fi 1) CN=Builtin- ^^ 1) CM—Account Operator:-^J 2) CN=Administratorsд ^ 3) CN=8ackup Operators:. ■ i^ 4) CN=Guests; ^ 5) CN=Pre-Windows 200C^ 6) CN=Print Operators ■ ^ 7) CN=Replicator: ^3 8) CN=5erver Operators ^ 9) CN=UsersЯ 2) CN=Computers® 3) CN=Foreign5ecurityPrincip<i* 4) CN=InfrastructureД® 5) CN=lostAndFound- ;® 6)CN=Systemя 1) CN=Admin5DHolder: ® 2) CN=BCKUPKEY_P Seen: i® 3) CN=BCKUPKEYJ0957c- :® 4) CM=Default Domain Po® 1) CN=AppCategorie’ i® 5) CN—Dfs-Configuration g- i® 6) CN=File Replication SerEi i® 1) CN=Domain SystelJIB 1)CN=W2KDC3: i® 2) CN=W2KDC4 ■ B- r® 7) CN=HleUnksI® 1) CN=ObjectMoveT<AD sPath: LDAP: //D C=w2k.DC=domAD sPath: LDAP: //D C=w2k.DC=dom№i;f!f:M;S Class: domainDNS"№CLSID: {228D9A8E-C302-11CF.9AA4-00AA004A5691)Primary Interface: {00E4C220-FD16-11CE-ABC4-02608C9E7553} igiDerived From: domaingifgf; Containment: a-m# rerrroteMailRecipient# samServertt Container: rYESjijgSliigfJg.№i;f!f:M;S Class: domainDNS"№CLSID: {228D9A8E-C302-11CF.9AA4-00AA004A5691)Primary Interface: {00E4C220-FD16-11CE-ABC4-02608C9E7553} igiDerived From: domaingifgf; Containment: a-m# rerrroteMailRecipient# samServertt Container: rYESjijgSliigfJg.Ji HelpFileName:HelpFileContext:OID:Abstract;Ji HelpFileName:HelpFileContext:OID:Abstract;01.2.840.113556.1.;NcigEf;fg;g01.2.840.113556.1.;NcigEf;fg;gi Propertiesi PropertiesProperty ValueProperty ValueProperty Type:Min Range: ДЛИax Range; Д Multivalued: ■ Mandatory: ;: OIDgjSOsN'arpes;Property Type:Min Range: ДЛИax Range; Д Multivalued: ■ Mandatory: ;: OIDgjSOsN'arpes;DirectorystringDirectorystring:NoS6*Yes' eSBSS0.9.2342.19200300.100:1.25:NoS6*Yes' eSBSS0.9.2342.19200300.100:1.25Reload IReload I
^JeJil
^JeJil
DC*w2k
DC*w2k
- ;3fi 1) CN=Builtin
- ^^ 1) CM—Account Operator:
-^J 2) CN=Administrators
д ^ 3) CN=8ackup Operators:
. ■ i^ 4) CN=Guests
; ^ 5) CN=Pre-Windows 200C
^ 6) CN=Print Operators ■ ^ 7) CN=Replicator
: ^3 8) CN=5erver Operators ^ 9) CN=Users
Я 2) CN=Computers
® 3) CN=Foreign5ecurityPrincip<
i* 4) CN=Infrastructure
Д® 5) CN=lostAndFound
- ;® 6)CN=System
я 1) CN=Admin5DHolder
: ® 2) CN=BCKUPKEY_P Seen
: i® 3) CN=BCKUPKEYJ0957c
- :® 4) CM=Default Domain Po
® 1) CN=AppCategorie
’ i® 5) CN—Dfs-Configuration g- i® 6) CN=File Replication Ser
Ei i® 1) CN=Domain Systel
JIB 1)CN=W2KDC3
: i® 2) CN=W2KDC4 ■ B- r® 7) CN=HleUnks
I® 1) CN=ObjectMoveT<
- ;3fi 1) CN=Builtin
- ^^ 1) CM—Account Operator:
-^J 2) CN=Administrators
д ^ 3) CN=8ackup Operators:
. ■ i^ 4) CN=Guests
; ^ 5) CN=Pre-Windows 200C
^ 6) CN=Print Operators ■ ^ 7) CN=Replicator
: ^3 8) CN=5erver Operators ^ 9) CN=Users
Я 2) CN=Computers
® 3) CN=Foreign5ecurityPrincip<
i* 4) CN=Infrastructure
Д® 5) CN=lostAndFound
- ;® 6)CN=System
я 1) CN=Admin5DHolder
: ® 2) CN=BCKUPKEY_P Seen
: i® 3) CN=BCKUPKEYJ0957c
- :® 4) CM=Default Domain Po
® 1) CN=AppCategorie
’ i® 5) CN—Dfs-Configuration g- i® 6) CN=File Replication Ser
Ei i® 1) CN=Domain Systel
JIB 1)CN=W2KDC3
: i® 2) CN=W2KDC4 ■ B- r® 7) CN=HleUnks
I® 1) CN=ObjectMoveT<
AD sPath: LDAP: //D C=w2k.DC=dom
AD sPath: LDAP: //D C=w2k.DC=dom
№i;f!f:M;S Class: domainDNS"№
CLSID: {228D9A8E-C302-11CF.9AA4-00AA004A5691)
Primary Interface: {00E4C220-FD16-11CE-ABC4-02608C9E7553} igiDerived From: domaingifgf
; Containment: a-m# rerrroteMailRecipient# samServertt Container: rYESjijgSliigfJg.
№i;f!f:M;S Class: domainDNS"№
CLSID: {228D9A8E-C302-11CF.9AA4-00AA004A5691)
Primary Interface: {00E4C220-FD16-11CE-ABC4-02608C9E7553} igiDerived From: domaingifgf
; Containment: a-m# rerrroteMailRecipient# samServertt Container: rYESjijgSliigfJg.
Ji HelpFileName:HelpFileContext:
OID:
Abstract;
Ji HelpFileName:HelpFileContext:
OID:
Abstract;
0
1.2.840.113556.1.
;NcigEf;fg;g
0
1.2.840.113556.1.
;NcigEf;fg;g
i Properties
i Properties
Property Value
Property Value
Property Type:
Min Range: ДЛИax Range; Д Multivalued: ■ Mandatory: ;: OID
gjSOsN'arpes;
Property Type:
Min Range: ДЛИax Range; Д Multivalued: ■ Mandatory: ;: OID
gjSOsN'arpes;
Directorystring
Directorystring
:NoS6*
Yes' eSBSS
0.9.2342.19200300.100:1.25
:NoS6*
Yes' eSBSS
0.9.2342.19200300.100:1.25
Reload I
Reload I
238
iQActivti Directory Browser - {LDAP://Dt;=w2k,DC==dom]
^1 File Edit View' Options ^
Рис. 9.2. Просмотр дерева объектов домена Windows 2000
Утилита AdsVw.exe позволяет открывать дочерние окна двух типов:
□ Objectviewer (Окно просмотра). Окно с двумя панелями, в которых вы можете просматривать дерево объектов и редактировать атрибуты объектов (см. рис. 9.1 и рис. 9.2). Если текущий пользователь не имеет разрешений на доступ к некоторому атрибуту, то вместо значения этого атрибута отображается строка"???".
□ Query (Окно запроса). Табличная форма (рис. 9.5), содержащая выбранные атрибуты для объектов, найденных в соответствии с заданной строкой запроса (фильтром LDAP).
Чтобы открыть новое окно просмотра, нажмите клавиши <Ctrl>+<N>, выберите опцию Objectviewer и в следующем окне заполните поле Enter ADs path (рис. 9.3). (Не забывайте о том, что вы можете включить в строку пути имя конкретного сервера.)
XXNew object
X
X
Enter ADs path: .[iDAP'/SSw^^
f7 sUSS OpenObject,f7 sUSS OpenObject,Г* Use Extended SyntaxГ* Use Extended Syntax
f7 sUSS OpenObject,
f7 sUSS OpenObject,
Г* Use Extended Syntax
Г* Use Extended Syntax
г Open Object parameters ;
г u 0 pen As: | administrator
i ■ nJxxxxxxx
| Password:
I:P (SecureAuthentication}
fSgsM
| OK| OKCancel; |Cancel; |Рис. 9.3. Исходная информация для запуска новой сессии просмотра объектов каталога
| OK
| OK
Cancel; |
Cancel; |
Чтобы ввести альтернативные учетные данные (отличные от данных текущего пользователя), установите флажки Use OpenObject и Secure Authentication (Безопасная аутентификация) и заполните поля Open As и Password.
Некоторые атрибуты, например primary GroupToken, можно просматривать, только если вы установите флажок Use Extended Syntax (Использовать расширенный синтаксис).
(" Примечание )
В окне свойств объекта (в списке Properties) (см. рис. 9.1 и 9.2) сначала отображаются обязательные атрибуты, а затем — необязательные в алфавитном порядке.
Результаты некоторого запроса показаны на рис. 9.5. Чтобы выполнить запрос, нажмите клавиши <Ctrl>+<N>, выберите опцию Query и заполните все поля в окне Edit query (Редактирование запроса) (рис. 9.4). (Необходимо явно указать все имена выбираемых атрибутов.) После этого нажмите кнопку ОК. В следующем окне, Set Search Preferences (Параметры поиска), вы можете оставить пустыми все поля. (Чтобы лучше понять назначение параметров, представленных в этом окне, познакомьтесь ниже с описанием утилиты Ldp.exe, а также с описанием запросов LDAP в главе 13 "Active Directory Service Interfaces (ADSI)".)
( Примечание )
При просмотре дерева объектов каталога (с применением любого протокола — LDAP или WinNT) вы можете использовать права текущего пользователя, однако при создании запроса вы должны всегда указывать учетные данные пользователя. В противном случае запрос получается неаутентифицированным (и, следовательно, очень ограниченным), и результирующий набор записей скорее всего будут пустым.
Рис. 9.4. Подготовка демонстрационного запроса: выбор всех подразделений (OU) в домене
Н LDAP://DC=w2k,DC=dom (&(objectClass=*)(ou=*)) ADsPath,name,whenCreated МЫВ
ADsPath
name—.1I whenCreated|
LDAP: //OU—ADMINs, DC=w2k, DC=dom
LDAP://OU=Domain Controllers,DC=w2k,DC=dom
£3iB23iff/ESIBi231SsSS9$^^
4)LDAP://OU=Sales,OU=Marketing,DC=w2k,DC=dom
5) LDAP://OU=5TAFF,DC=w2k,DC=dom
ADMINs9/4/2000 5:09:04 PM
Domain Controllers 8/28/2000 1:37:44 PM
Marketing10/22/2000 10:44:32AM
Sales10/22/2000 10:44:36AM
STAFF9/3/2000 4:28:12 PM
Рис. 9.5. Пример запроса
Результаты выполнения демонстрационного запросы показаны на рис. 9.5.
Если полученный набор записей не помещается в окне, при первом его просмотре нужно прокрутить вниз все строки.
Active Directory Administration Tool (Ldp.exe) (ST)
Утилита Active Directory Administration Tool (Ldp.exe) представляет собой GUI-инструмент, позволяющий запрашивать, просматривать и модифицировать LDAP-совместимые сетевые каталоги, используя для этого протокол LDAP. С помощью данной утилиты администратор может обращаться к информации, которую нельзя получить посредством других инструментов, а также выполнять сложные запросы с различными областями поиска.
( Примечание )
При просмотре дерева объектов утилита Ldp.exe не очень удобно отображает строки, имеющие кодировку Unicode. Все Unicode-значения атрибутов представляются как двоичные данные и выводятся на экран в виде строк <1ф: Binary ЫоЬ>.
Подключение и привязка
ConnectConnectГ" Connectionles:.Г" Connectionles:.При работе с серверами LDAP нужно выполнять две предварительные операции: подключение (connecting) и привязку (binding). (Возможности операций без выполнения подключения или привязки (без аутентификации) чрезвычайно ограничены.) На рис. 9.6 показана информация, которую нужно вводить при выполнении этих двух операций.
Connect
Connect
Г" Connectionles:.
Г" Connectionles:.
Server: |w2kdc4^2k.dom
Port: ' |389; "
: Cancel ' : ' •
Рис. 9.6. Подключение и привязка к LDAP-серверу
Поле Server в окне Connect может содержать DNS-имя сервера или его IP- адрес, а также — DNS-имя домена. По умолчанию для протокола LDAP используется порт 389, а для Глобального каталога — порт 3268. Если в среде Windows 2000 вы оставите пустым поле Server, то выполняется подключение к контроллеру домена, выполнившему регистрацию в сети (LOGONSERVER). (Чтобы работать с утилитой Ldp.exe в среде Windows 2000, вам нужно зарегистрироваться в лесе доменов.) Если оставить пустыми поля User и Password, используются учетные данные текущего зарегистрированного пользователя.
При успешном выполнении подключения утилита отображает информацию об объекте RootDSE. После привязки к серверу можно выполнять запросы и/или просматривать дерево объектов (выполните команду Tree (Дерево) в окне View) (рис. 9.7).
Как показано на рис. 9.7, окно утилиты имеет две панели: окно структуры (слева) и окно результатов (справа). Чтобы раскрыть некоторый узел в дереве объектов, достаточно дважды щелкнуть на этом узле. То, какие объекты отображаются в окне результатов, зависит от прав того пользователя, учетные данные которого вы ввели при привязке к серверу.
| |g<„ ldap:://w2kdc4.w2k.dom/DE =w2k,DC =dom
Connection Browse View Options Utilities
|DC^w2k"DC-»dom]|DC^w2k"DC-»dom]* OU=ADMINs)DC=w2kJDC=dc^i♦ CN=Butltin(DC=w2k,DC=dom&• OU=COMPs,DC=w2k,DC»dom> CN=ComputersJDC=w2k,DC=dc‘t? OU=Demo,DC=w2k,DC=dom;+} OU=Domain Controllers,DC=w2k S CN=ForeignSecurityPnncipals,D(:J. CN=Infrastructure,DC=w2k,DC-;Ч- CN==lostAndFound,DC=w2k,DCi :S CN=5y$tem,DC=w2k,DC=dom* CN=Users,DC»w2k,DC=dom '+' CN=ConFiguration,DC=w2k,DC=* OU=ADMINs)DC=w2kJDC=dc^i♦ CN=Butltin(DC=w2k,DC=dom&• OU=COMPs,DC=w2k,DC»dom> CN=ComputersJDC=w2k,DC=dc‘t? OU=Demo,DC=w2k,DC=dom;+} OU=Domain Controllers,DC=w2k S CN=ForeignSecurityPnncipals,D(:J. CN=Infrastructure,DC=w2k,DC-;Ч- CN==lostAndFound,DC=w2k,DCi :S CN=5y$tem,DC=w2k,DC=dom* CN=Users,DC»w2k,DC=dom '+' CN=ConFiguration,DC=w2k,DC=Established connection tu w2kdc4.w2k.dom. ) ..
|DC^w2k"DC-»dom]
|DC^w2k"DC-»dom]
* OU=ADMINs)DC=w2kJDC=dc^i
♦ CN=Butltin(DC=w2k,DC=dom
&• OU=COMPs,DC=w2k,DC»dom
> CN=ComputersJDC=w2k,DC=dc
‘t? OU=Demo,DC=w2k,DC=dom
;+} OU=Domain Controllers,DC=w2k S CN=ForeignSecurityPnncipals,D(:
J. CN=Infrastructure,DC=w2k,DC-;
Ч- CN==lostAndFound,DC=w2k,DCi :S CN=5y$tem,DC=w2k,DC=dom
* CN=Users,DC»w2k,DC=dom '+' CN=ConFiguration,DC=w2k,DC=
* OU=ADMINs)DC=w2kJDC=dc^i
♦ CN=Butltin(DC=w2k,DC=dom
&• OU=COMPs,DC=w2k,DC»dom
> CN=ComputersJDC=w2k,DC=dc
‘t? OU=Demo,DC=w2k,DC=dom
;+} OU=Domain Controllers,DC=w2k S CN=ForeignSecurityPnncipals,D(:
J. CN=Infrastructure,DC=w2k,DC-;
Ч- CN==lostAndFound,DC=w2k,DCi :S CN=5y$tem,DC=w2k,DC=dom
* CN=Users,DC»w2k,DC=dom '+' CN=ConFiguration,DC=w2k,DC=
Ht^i£vmg base DSA information.
ResultxO^lnUlir-.
Matched DNs:■ • ■
Getting 1 entries:■■
» Dn:
. 1 > currentTime: 11/25/2000 11:3G:22 Central Standard Time Central Daylight Time: ■.■
1 > subschemaSubentry:
CN=Aggregate.CN=Schema,CN=Configuration,DC=w2k,DC=dom;.
■ 1 > dsServiceNamel CN=NTDS :.•.
Settings,CN-W2KDC4.CN-Servers,CN=:W2K^sitc,CN=Sites,CN=Configuration,DC -w2k.DC=dom; • ■■
3> namingContexts: CN=Schema,CN=Configuration,DC=w2k,DC=dom; CN=Configuration,DC=w2k,DC=dom; DC=w2k,DC=dom:.■
1 > defaultNamingContext: DC=w2k,DC=dom:■
1 > schemaNamingContext:■
CN=Schcma,CN=Configuration,DC=w2k.DC=dom;■ ■ ■
1> configurationNamingContext: CN=Configuration,DC=w2k,DC=dom;
> rootDomainNamingContext: DC=w2k»DC-dom;
1G> supportedControl: 1.2.840.113550.1.4.319:.
1.2.840.113556.1.4.601; 1.2.840.113556.1.4.473; 1.2.040.113556.1.4.528;
040.113556.1.4.417; 1.2.840.113556.1,4.619; 1.2.840.113556.1.4.841; . .
040.113556.1.4.529; 1.2.840.113556.1.4.805; 1.2.840,113556.1.4.521;
Ready
Рис. 9.7. Подключение к контроллеру домена Windows 2000 и просмотр дерева объектов домена
General Options (Общие параметры)
Общие параметры утилиты определены в окне General Options. Чтобы открыть его, выполните команду General в меню Options (рис. 9.8).
г Value Parsing ■ i <~ Binary : : iilF' IStringgMi:■ LDAP Version 1 T~ versionj'*♦ versions,:г Value Parsing ■ i <~ Binary : : iilF' IStringgMi:■ LDAP Version 1 T~ versionj'*♦ versions,:P iAuibliSsstit^P iAuibliSsstit^г QN processing -'1йЖ:£*рШб||||!, Buffer Size ■- , |$a^sl5i,2™ ||||||^| ЙК |г QN processing -'1йЖ:£*рШб||||!, Buffer Size ■- , |$a^sl5i,2™ ||||||^| ЙК |Рис. 9.8. Общие параметры, установленные по умолчаниюРис. 9.8. Общие параметры, установленные по умолчаниюGeneral Options
г Value Parsing ■ i <~ Binary : : iilF' IStringgMi:
■ LDAP Version 1 T~ versionj
'*♦ versions,:
г Value Parsing ■ i <~ Binary : : iilF' IStringgMi:
■ LDAP Version 1 T~ versionj
'*♦ versions,:
P iAuibliSsstit^
P iAuibliSsstit^
г QN processing -
'1йЖ:£*рШб||||!
, Buffer Size ■- , |$a^sl5i,2™ ||||||^
| ЙК |
г QN processing -
'1йЖ:£*рШб||||!
, Buffer Size ■- , |$a^sl5i,2™ ||||||^
| ЙК |
Рис. 9.8. Общие параметры, установленные по умолчанию
Рис. 9.8. Общие параметры, установленные по умолчанию
Value Parsing (Обработка значений)
В некоторых случаях вам может понадобиться, чтобы значения выбранных атрибутов отображались в двоичном формате. Выберите переключатель Binary, и вместо обычного представления значения атрибута в виде симво-
лов вы получите "низкоуровневое" значение. Например, строковое представление может выглядеть следующим образом:
1> whenCreated: 8/28/2000 8:37:43 Central Standard Time Central Daylight Time;)
В двоичном формате значение атрибута будет представлено так:
1> whenCreated:
32 30 30 30 30 38 32 38 31 33 33 37 34 33 2е 30 20000828133743.0
5аZ
LDAP Version (Версия LDAP)
Версию протокола LDAP можно выбрать только до того, как выполнено подключение. После этого момента оба переключателя в группе LDAP Version недоступны (затенены).
Auto Base DN Query (Автоматическая подстановка базового отличительного имени в запросе)
Когда этот флажок установлен, при подключении к LDAP-серверу утилита отображает сведения об объекте RootDSE. Кроме того, при выборе просмотра дерева в качестве базового отличительного имени автоматически выбирается контекст доменных имен. При этом вы всегда можете указать другое отличительное имя.
DN Processing (Представление имен)
С помощью переключателя из группы DN Processing вы можете указать способ представления отличительных имен найденных объектов. Все возможные варианты вместе с примерами перечислены ниже:
None (умолчание)
» Dn: CN=Administrator,OU=ADMINs,DC=w2k,DC=dom
» Dn: CN=Administrator,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=w2k,DC=dom
Explode (Разбивать)
» Dn: CN=Administrator; OU=ADMINs; DC=w2k; DC=dom;
» Dn: CN=Administrator; CN=Certificate Templates; CN=Public Key Services; CN=Services; CN=Configuration; DC=w2k; DC=dom;
No type (Без спецификатора)
» Dn: Administrator; ADMINs; w2k; dom;
» Dn: Administrator; Certificate Templates; Public Key Services;
Services; Configuration; w2k; dom;
Ufn
» Dn: CN=Administrator, OU=ADMINs, DC=w2k, DC=dom
» Dn: CN=Administrator, CN=CertificateTemplates,
CN=PublicKeyServices, CN=Services, CN=Configuration, DC=w2k, DC=dom
Обратите внимание на то, что в последнем случае в RDN-именах отсутствуют пробелы.
Buffer Size (Размер буфера)
Параметр Page (Страница) определяет максимальное число строк, отображаемых в окне результатов без перезаписи (wrapping). Не забывайте о том, что в запросе не должно получаться строк больше, чем допускает значение MaxPageSize в действующей политике запросов.
Параметр Line (Строка) задает максимальное число отображаемых символов в строке. Более длинные строки обрезаются.
Ссылки (referrals) и их влияние на результаты поиска
Ссылки очень важны при выполнении операций поиска, т. к. они могут существенно влиять на результаты поиска. Флажок Chase referrals (Следовать по ссылкам) в окне Search Options (Параметры поиска) (см. рис. 9.11, слева) определяет, будет ли сервер генерировать ссылки LDAP при поиске объекта. (По умолчанию этот флажок не установлен, поскольку в этом случае поиск выполняется быстрее.) Однако иногда при установке этого флажка может появиться следующая ошибка:
Error: Search: Referral. <10> Result <10>: 0000202В: RefErr: ...
Существуют и другие ситуации, в которых вы можете получить не те результаты, которые ожидали. Поэтому состояние флажка Chase referrals нужно выбирать весьма продуманно. Рассмотрим этот вопрос с привлечением двух примеров.
Предположим, что вы зарегистрировались на компьютере, входящем в некоторый дочерний домен, и хотите выполнить поиск в родительском домене (или в домене, относящемся к другому дереву доменов), т. е. вводите отличительное имя этого домена в качестве базы поиска. Вам нужно либо подключиться по протоколу LDAP к контроллеру домена в родительском домене, либо разрешить обработку ссылок (chasing referrals). В противном случае возникнет ссылочная ошибка (referral error). Почему ссылки помогают в такой ситуации, станет ясно немного позже. (Может быть, вы уже и догадываетесь о том, что происходит.)
Перейдем ко второму примеру. Предположим, что вы хотите найти в своем домене ссылочные объекты (referral object) или объекты DSA-агентов. Для
ЭТОГО МОЖНО ИСПОЛЬЗОВаТЬ фильтр (objectClass=crossRef) ИЛИ (cn=NTDS settings), соответственно. В качестве базы поиска указывается отличительное имя домена.
Если флажок Chase referrals не будет установлен, вы получите пустой набор записей. Должен напомнить или сообщить о том, что подобные объекты находятся в пространстве имен (разделе каталога) Configuration. Кроме того, необходимо помнить о том, что если обработка ссылок не разрешена, то поиск выполняется только в одном пространстве имен. Чтобы описанная выше операция поиска была успешной, нужно одно из двух: либо вы непосредственно указываете соответствующий контекст имен в качестве базы поиска, либо разрешаете генерирование ссылок.
Когда флажок Chase referrals установлен, поиск выполняется
во всех разделах, хранящихся на сервере
в разделах доменных имен всех доменов, на которые указывают ссылки
Если вернуться к первому примеру, то теперь ясно, что если сервер обнаруживает объект, ссылающийся на другой домен и не может (т. е. ему не позволено) обратиться к тому серверу, который хранит соответствующий раздел каталога, он генерирует сообщение о ссылочной ошибке.
( Примечание )
Проблему поиска объектов в разных разделах, доменах или деревьях можно также решить с помощью подключения к порту Глобального каталога (3268). Может быть, это даже самый предпочтительный подход. Только не забывайте о том, что не все атрибуты реплицируются в Глобальный каталог.
Страничный поиск
Иногда при запросе сервер возвращает больше строк, чем разрешено параметром MaxPageSize. (Не путайте число строк, возвращаемых сервером в ответ на запрос, и число строк, отображаемых без перезаписи в окне результатов утилиты Ldp.exe и определяемых параметром Page.) В этом случае генерируется следующая ошибка:
Error: Search: Size Limit Exceeded. <4>
(Поиск: Превышен лимит "Размер набора результатов".)
Result <4>: [null]
В подобном случае нужно использовать так называемый страничный поиск (paging search). Вы можете указать серверу, чтобы тот выдавал результаты в виде страниц заданного размера. Откройте окно Search Options (см. рис. 9.11) и установите переключатель Paged (Страничный) в группе Search Call Туре (Тип запросов). Значение Page size (Размер страницы) определяет длину страницы (в строках). После этого вы можете получать результаты операции поиска в виде страниц по 16 строк (задано по умолчанию):
Result <0>:
Matched DNs:
Getting 16 entries: [Получение 16 строк]
-=» 'Run' for more, 'Close' to abandon «=-
(Нажмите 'Run' для получения следующей страницы или 'Close' — для выхода)
Нажав кнопку Run, вы можете продолжить поиск (т. е. сервер будет искать следующие объекты, отвечающие вашим требованиям) или в любой момент завершить операцию. При использовании страничного поиска вам не нужно думать о том, какой размер будет иметь результирующий набор записей.
Сохранение результатов
Если вам нужно очистить окно результатов перед выполнением новой операции, выполните команду New в меню Connection. Любую информацию, представленную в этом окне, можно скопировать и вставить в любой документ для сохранения или составления отчетов.
Содержимое окна результатов можно в любой момент сохранить; для этого выполните команду Save или Save As в меню Connection. (Окно Search при этом закрывать не нужно.) При выполнении второй команды всегда запрашивается имя файла. Первая команда позволяет сохранять информацию в текущем выходном файле, имя которого запрашивается только после запуска утилиты или после выполнения команды New.
Просмотр леса доменов
Все домены и контроллеры, имеющиеся в лесе доменов, можно просматривать как дерево объектов. Выполните команду Enterprise Configuration (Конфигурация предприятия) в меню View. В открывшемся окне нажмите кнопку Refresh (Обновить). Через некоторое время в окне будет отображена текущая конфигурация вашего предприятия (рис. 9.9). Конфигурацию можно увидеть только после выполнения операции привязки к некоторому серверу.
Рис. 9.9. В этом окне можно видеть всю доменную структуру (лес) и состояние всех контроллеров домена
Как видно на рис. 9.9, два контроллера домена (W2KDC4 и W2KDC2) в лесе находятся в рабочем состоянии, а один контроллер (W2KDC3) выключен. Знание реального состояния сети поможет вам выбирать серверы для подключения и выполнения запросов.
Поиск
Для большей наглядности и простоты рассмотрим процесс поиска объектов в Active Directory (и любом LDAP-совместимом каталоге) с помощью двух примеров.
( Примечание )
Напомню, что каждый контроллер в домене хранит, как минимум, три раздела Active Directory (см. сведения об объекте RootDSE при выполнении подключения). Хотя эти разделы имеют смежные DNS-имена— и это может несколько сбивать с толку, — они представляют собой совершенно разные пространства имен, если говорить о поиске в каталоге.
Пример 1. Поиск удаленных объектов
Удаленные объекты Active Directory (так называемые tombstones — захороненные объекты) на определенное время помещаются в контейнер Deleted Objects, а только затем удаляются окончательно при выполнении операции сбора мусора (garbage collection). С помощью стандартных оснасток этот контейнер увидеть нельзя. Для поиска удаленных объектов следует воспользоваться элементом управления (control) Show Deleted. Object (controlType = = 1.2.840.113556.1.4.417) и командой поиска. (При этом вы должны иметь права администратора.)
Запустите утилиту Ldp.exe и выполните следующие операции:
Подключитесь к какому-нибудь контроллеру домена и выполните операцию привязки, введя административные учетные данные.
Выполните команду Search в меню Browse (Просмотр) и введите отличительное имя домена и строку фильтра (isDeieted=*). Выберите переключатель Subtree и нажмите кнопку Options (рис. 9.10).
Search
sBas е On: jp^^' J#
Filter: |(isDeieted=Kj
у S cope::
gase Qne Level Subtree |f Run" ~^|
Options IClose I Рис. 9.10. Основные
_——-—-—jZZ2^параметры поиска
В группе Search Call Type установите переключатель Extended и введите
имена нужных атрибутов удаленных объектов (рис. 9.11, слева). (Воз-
можно, вам потребуется увеличить стандартное значение Timeout (s), равное 0. Эта величина определяется экспериментально.) Нажмите кнопку Controls.
( Примечание }
Если вы получаете приведенное ниже сообщение, увеличьте время задержки (timeout):
Error: Search: Timeout. <85>
Error<94>: ldap_parse_result failed: No result present in message
Getting 0 entries:
Введите тип элемента управления в поле Object Identifier и нажмите кнопку Check in.
( Примечание )
Можно одновременно использовать несколько элементов управления.
В группе Control Туре выберите переключатель Server (рис. 9.11, справа).
Закройте окна Controls и Search Options.
Нажмите кнопку Run и выполните операцию поиска.
Search OptionsИSearch OptionsИTime limit: Size limit: Timeout (s): Timeout (ngs): Page size Attributes:Time limit: Size limit: Timeout (s): Timeout (ngs): Page size Attributes:t F Attributes 0 nlyF Chase referrals display R esultst F Attributes 0 nlyF Chase referrals display R esultsIcontrolsIcontrolsObject J identifier i:|l 2840113^6^^4417Value:f : Control Type ■■ • •••• •■ ■:FVF Server F ClientObject J identifier i:|l 2840113^6^^4417Value:f : Control Type ■■ • •••• •■ ■:FVF Server F ClientActive Controls:Active Controls:1.2.840.113556.1.4.4171.2.840.113556.1.4.417г Search Call Type i j: C. Async.;। F Sync.j; F T imed Sync.i F Extended ]<^ ЭДде^Ш$1г Search Call Type i j: C. Async.;। F Sync.j; F T imed Sync.i F Extended ]<^ ЭДде^Ш$1F CriticalDescription: | < unavailable)-F CriticalDescription: | < unavailable)-S ort Keysi t ControlsS ort Keysi t Controls
Search OptionsИ
Search OptionsИ
Time limit: Size limit: Timeout (s): Timeout (ngs): Page size Attributes:
Time limit: Size limit: Timeout (s): Timeout (ngs): Page size Attributes:
t F Attributes 0 nly
F Chase referrals display R esults
t F Attributes 0 nly
F Chase referrals display R esults
Icontrols
Icontrols
Object J identifier i:|l 2840113^6^^4417
Value:
f : Control Type ■■ • •••• •■ ■
:FVF Server F Client
Object J identifier i:|l 2840113^6^^4417
Value:
f : Control Type ■■ • •••• •■ ■
:FVF Server F Client
Active Controls:
Active Controls:
1.2.840.113556.1.4.417
1.2.840.113556.1.4.417
г Search Call Type i j: C. Async.;
। F Sync.j
; F T imed Sync.
i F Extended ]
<^ ЭДде^Ш$1
г Search Call Type i j: C. Async.;
। F Sync.j
; F T imed Sync.
i F Extended ]
<^ ЭДде^Ш$1
F Critical
Description: | < unavailable)-
F Critical
Description: | < unavailable)-
S ort Keysi t Controls
S ort Keysi t Controls
Рис. 9.11. Настройка параметров поиска для нахождения удаленных объектов
Пример 2. Поиск идентификаторов (GUID) объектов
Имя объекта каталога (например, значение атрибута си) можно изменить с помощью операции переименования объекта. Если некоторое приложение ссылается на объект по имени, то после смены имени объекта приложение
"потеряет" этот объект. Поэтому для ссылок лучше пользоваться GUID- идентификатором объекта, поскольку тот не изменяется в течение всего времени существования объекта.
Следовательно, вопрос состоит в том, как найти GUID заданного объекта? Можно, конечно, выполнить поиск объекта и указать атрибут objectGUID в окне Search Options. Можно, однако, сразу же получать GUID-идентификаторы всех найденных объектов. Для этого нужно при поиске использовать элемент управления LDAP Return Extended Distinguished Names (controlType = 1.2.840.113556.1.4.529).
( Примечание
Значение атрибута objectGUID можно получить и при помощи оснастки ADSI Edit. Однако это может оказаться неудобным, т. к. атрибут objectGUID (как и атрибут objectSid) имеет формат Octetstring (например, "Oxaf Oxba OxfO Oxba ..." — всего 16 байтов). Такую строку нельзя непосредственно подставить в команду поиска или привязки.
Для поиска GUID нужно выполнить те же операции, которые были описаны выше для поиска удаленных объектов. Допустим, что нам нужно найти GUID-идентификаторы всех подразделений, имеющихся в домене. Введите следующую информацию для выполнения запроса:
Base DN — отличительное имя домена
Filter — (ou=*)
Глубина поиска — One Level
Attributes — ADsPath
□ Active Controls — 1.2.840.113556.1.4.529
Вы должны получить список всех подразделений в виде строк следующего вида:
Dn: <GUID=0855ae368790cb4b8726cf37cb2222a5>;OU=Domain Controllers, 'Ъ DC=w2k,DC=dom
В отличительном имени появился новый компонент (выделен полужирным). Найденный GUID можно проверить с помощью сценария Search.vbs (см. в начале главы раздел "Пример 1. Поиск объекта по его идентификатору GUID'), либо всю выделенную строку (включая угловые скобки) можно использовать в сценарии в операторе привязки к объекту.
Обновление атрибутов
Протокол LDAP позволяет выполнять следующие операции обновления (update operations): Add, Modify, Modify RDN и Delete. С одной стороны (если говорить о пользовательском интерфейсе утилиты), способы выполнения этих операций достаточно просты и интуитивно понятны; с другой сто-
роны, они требуют хорошего знания архитектуры Active Directory (в особенности, схемы, классов и атрибутов). Вот почему для изменения объектов Active Directory намного удобнее пользоваться другими инструментами, например, административными оснастками (такими как ADSI Edit, Active Directory Users and Computers и т. д.). Ниже на примере показаны лишь самые общие принципы использования утилиты Ldp.exe для этих целей.роны, они требуют хорошего знания архитектуры Active Directory (в особенности, схемы, классов и атрибутов). Вот почему для изменения объектов Active Directory намного удобнее пользоваться другими инструментами, например, административными оснастками (такими как ADSI Edit, Active Directory Users and Computers и т. д.). Ниже на примере показаны лишь самые общие принципы использования утилиты Ldp.exe для этих целей.Примечание )Операция Modify RDN эквивалентна переименованию или перемещению объекта.Примечание )Операция Modify RDN эквивалентна переименованию или перемещению объекта.Модификация атрибутаДавайте изменим основное имя (UPN) некоторого пользователя. Сначала выполните команду Modify в меню Browse. В открывшемся окне введите отличительное имя (DN) пользователя, имя атрибута и его новое значение. В группе Operation выберите переключатель Replace (поскольку атрибут уже существует) и, нажав кнопку Enter, добавьте данные в поле Entry List (Список атрибутов). Будьте внимательны, поскольку вводимые данные никак не проверяются. Для корректировки введенной информации можно нажать кнопку Edit (и редактировать данные) или кнопку Remove (Удалить). Пример заполненного окна показан на рис. 9.12.Модификация атрибутаДавайте изменим основное имя (UPN) некоторого пользователя. Сначала выполните команду Modify в меню Browse. В открывшемся окне введите отличительное имя (DN) пользователя, имя атрибута и его новое значение. В группе Operation выберите переключатель Replace (поскольку атрибут уже существует) и, нажав кнопку Enter, добавьте данные в поле Entry List (Список атрибутов). Будьте внимательны, поскольку вводимые данные никак не проверяются. Для корректировки введенной информации можно нажать кнопку Edit (и редактировать данные) или кнопку Remove (Удалить). Пример заполненного окна показан на рис. 9.12.ModifyModifyXX• fin: ] Г Edit Entry i Attribute:| Values:• fin: ] Г Edit Entry i Attribute:| Values:![сцДо1тД!тМШ^^![сцДо1тД!тМШ^^userPrincipalName]jSmith@w2kuserPrincipalName]jSmith@w2k!1ъгФрегЯ6п1ВХЖШ^J j <" Add f" Delete f* Replace] Insert file] | LEt®j|!1ъгФрегЯ6п1ВХЖШ^J j <" Add f" Delete f* Replace] Insert file] | LEt®j|Entry ListEntry List[R eplaceJuserPrincipalName: J S mith@w2k[R eplaceJuserPrincipalName: J S mith@w2kEdit |Edit |P SynchronousГ ExtendedP SynchronousГ Extended'Close'CloseRUQ : J |RUQ : J |Рис. 9.12. Информация, которую нужно ввести, чтобы изменить UPN-имя пользователяРис. 9.12. Информация, которую нужно ввести, чтобы изменить UPN-имя пользователя
роны, они требуют хорошего знания архитектуры Active Directory (в особенности, схемы, классов и атрибутов). Вот почему для изменения объектов Active Directory намного удобнее пользоваться другими инструментами, например, административными оснастками (такими как ADSI Edit, Active Directory Users and Computers и т. д.). Ниже на примере показаны лишь самые общие принципы использования утилиты Ldp.exe для этих целей.
роны, они требуют хорошего знания архитектуры Active Directory (в особенности, схемы, классов и атрибутов). Вот почему для изменения объектов Active Directory намного удобнее пользоваться другими инструментами, например, административными оснастками (такими как ADSI Edit, Active Directory Users and Computers и т. д.). Ниже на примере показаны лишь самые общие принципы использования утилиты Ldp.exe для этих целей.
Примечание )
Операция Modify RDN эквивалентна переименованию или перемещению объекта.
Примечание )
Операция Modify RDN эквивалентна переименованию или перемещению объекта.
Модификация атрибута
Давайте изменим основное имя (UPN) некоторого пользователя. Сначала выполните команду Modify в меню Browse. В открывшемся окне введите отличительное имя (DN) пользователя, имя атрибута и его новое значение. В группе Operation выберите переключатель Replace (поскольку атрибут уже существует) и, нажав кнопку Enter, добавьте данные в поле Entry List (Список атрибутов). Будьте внимательны, поскольку вводимые данные никак не проверяются. Для корректировки введенной информации можно нажать кнопку Edit (и редактировать данные) или кнопку Remove (Удалить). Пример заполненного окна показан на рис. 9.12.
Модификация атрибута
Давайте изменим основное имя (UPN) некоторого пользователя. Сначала выполните команду Modify в меню Browse. В открывшемся окне введите отличительное имя (DN) пользователя, имя атрибута и его новое значение. В группе Operation выберите переключатель Replace (поскольку атрибут уже существует) и, нажав кнопку Enter, добавьте данные в поле Entry List (Список атрибутов). Будьте внимательны, поскольку вводимые данные никак не проверяются. Для корректировки введенной информации можно нажать кнопку Edit (и редактировать данные) или кнопку Remove (Удалить). Пример заполненного окна показан на рис. 9.12.
Modify
Modify
X
X
• fin: ] Г Edit Entry i Attribute:
| Values:
• fin: ] Г Edit Entry i Attribute:
| Values:
![сцДо1тД!тМШ^^
![сцДо1тД!тМШ^^
userPrincipalName
]jSmith@w2k
userPrincipalName
]jSmith@w2k
!1ъгФрегЯ6п1ВХЖШ^
J j <" Add f" Delete f* Replace] Insert file] | LEt®j|
!1ъгФрегЯ6п1ВХЖШ^
J j <" Add f" Delete f* Replace] Insert file] | LEt®j|
Entry List
Entry List
[R eplaceJuserPrincipalName: J S mith@w2k
[R eplaceJuserPrincipalName: J S mith@w2k
Edit |
Edit |
P Synchronous
Г Extended
P Synchronous
Г Extended
'Close
'Close
RUQ : J |
RUQ : J |
Рис. 9.12. Информация, которую нужно ввести, чтобы изменить UPN-имя пользователя
Рис. 9.12. Информация, которую нужно ввести, чтобы изменить UPN-имя пользователя
Когда все будет готово, нажмите кнопку Run. Сервер проверит все введенные данные (синтаксис, допустимые значения и т. п.) и, если все требова-
ния соблюдены, выполнит операцию. Вот пример сообщения о завершении операции:
***Call Modify...
ldap_modify_s(Id, 'CN=John Smith,OU=Stuff,DC=w2k,DC=dom',[1] attrs);
Modified "CN=John Smith,OU=Stuff,DC=w2k,DC=dom".
Если в процессе выполнения операции возникает ошибка, утилита генерирует сообщение, указывающее на ее причину: синтаксические ошибки во введенной информации, ошибки в базе данных каталога и т. д. Например:
***Call Modify...
ldap_modify_s(Id, 'CN=John Smith,OU=Stuff,DC=w2k,DC=dom',[1] attrs);
Error: Modify: No Such Object. <32> [Нет такого объекта.] Unwilling To Perform. <53>
Удаление объектов
Операция удаления также достаточно проста. Проблемы могут возникнуть при попытке удаления объекта, имеющего дочерние объекты, например, при удалении подразделения, содержащего пользовательские учетные записи. При этом генерируется следующее сообщение:
Error: Delete: Not allowed on Non-leaf. <66>
(Удаление: Запрещено для не-листьев.)
Чтобы все-таки выполнить подобную операцию, следует использовать элемент управления LDAP Tree Delete (controlType = 1.2.840.113556.1.4.805). С помощью данного элемента управления можно удалить все поддерево (если у вас имеются достаточные для этого полномочия).
Чтобы удалить не-оконечный объект (контейнер, содержащий дочерние объекты):
Добавьте элемент управления Tree Delete в список активных элементов.
Выполните команду Delete в меню Browse.
В окне Delete введите отличительное имя контейнера и установите флажок Extended. (Пример окна представлен на рис. 9.13.)
Нажмите кнопку ОК.
Рис. 9.13. Удаление непустого контейнера (в данном случае — подразделения)
Внимание!
При удалении целого контейнера будьте особенно внимательны — никаких особых предупреждений при этом не генерируется!
( Примечание )
Для просмотра и активизации/дезактивизации элементов управления вы можете в любой момент с помощью команды Controls из меню Options открыть окно Controls.
Просмотр дескрипторов безопасности
Утилита Ldp.exe позволяет просматривать дескрипторы безопасности для любых объектов каталога. Эта опция помогает при устранении проблем, связанных с разрешениями на доступ к объектам каталога, например, при перемещении субъектов безопасности в другой домен или при отладке сценариев или приложений, обращающихся к дескрипторам безопасности (см. главу 13 "Active Directory Service Interfaces (ADSI)" и главу 14 "Использование ADSI для администрирования"). Чтобы использовать эту опцию, нужно хорошо знать модель безопасности Active Directory (списки и элементы управления доступом, ACL и АСЕ, механизмы наследования ACL-списков и т. д.).
Чтобы увидеть дескриптор безопасности некоторого объекта каталога, выполните команду Security | Security Descriptor в меню Browse и укажите отличительное имя объекта. Если вы хотите видеть непосредственно назначенные или унаследованные параметры аудита (системный ACL-список) для данного объекта, установите флажок SACL. Пример дескриптора безопасности показан на рис. 9.14. Также эта команда отображает дескриптор в строковом формате SDDL (Security Descriptor Definition Language — язык описания дескрипторов безопасности) (на рисунке не показано).
Как видно на рис. 9.14, вы получаете всю информацию о дескрипторе безопасности (некоторые важные элементы выделены на рисунке). Вы можете видеть управляющие флаги, владельца объекта, количество АСЕ-элементов и компоненты каждого ACE-элемента, такие как тип ACE-элемента, маска доступа, имя и идентификатор безопасности (SID) того субъекта безопасности, кому предоставлено данное право. Все перечисленные сведения можно также получить из дескриптора безопасности при помощи сценария (глава 14 "Использование ADSI для администрирования" содержит пример подобного сценария). ACE-элементами можно управлять программно, т. е., модифицируя их, предоставлять или отзывать права на доступ к объектам каталога.
Просмотр метаданных репликации
Утилита Ldp.exe может отображать для объектов каталога метаданные (содержимое атрибута replPropertyMetaData), которые используются при реп-
|^ Map://w2kdc4.w2k.dom/DC=w2k,DC=dom
Connection Browse View Options Utilities i
Revision: 1Revision: 1Sbz1:Sbz1:ОО
Revision: 1
Revision: 1
Sbz1:
Sbz1:
О
О
Control: (0x8c14) SE DACE PRESENT SE^SACl "PRESENT SC DACL AUIO INRLItllLD SE SACI. AUTO INHERITED SE SELI .HI lAFIVF
Owner:
5-1-0x000005-0x15-0x80590be8-0x9e7e9a70-0x74ab0266-0x200 W2KDOM\Domain Admins
Group:
5-1-0x000005-0x15-0x80590be0-0x9e7e9a78-0x74ab0266-0x201 W2KDOM\L)oinain Users
Dad: Revision: 4 Sbzi:о
Size:732
NoofAces:^7^ Sbz2:0
Ace[0J:
Type: (0J ACCESS Al I OWED ACE TYPE
AceSize: 0x14 AceETaiis: 10x01 Mask:<g00020093> Sid:
8-1-0х0ПППП5-ПуЬ
CTRl AUTHORITY\Authenticated UsersD
Ready
Рис. 9.14. Фрагмент дескриптора безопасности, показанного с помощью утилиты Ldp.exe
R^JdaP2//w2kdc4^w2k^^
Connection Browse View Options Utilities
Getting'OU=Staff,DC=w2k,DC=dom'metadata...J
13 entries. AttIDVerLoc.USNOriginating DSAOrg.USN Org.Tirne/Date
01430009317c0e-fb52-4a63-a9d0-8899068bc2a043002000-09-03 20:28.12
62568987528dbeb-ddf7-45e6-9c8od67bb5ae89e643062000-12-1019:50.43
b5122308c6357684-efca-441d-aa1b-ta5adbe75a021223082001-01-2820:42.22
d3568987528dbeb-ddf7-45e6-9c8c-d67bb5ae89e643062000-12-1019:50.43
2000114300O9317cOe-fb52-4a63-a9dO-8899O68bc2aO43002000-09-0320:28.12
200021430009317c0e-fb52-4a63-a9d0-8899068bc2a043002000-09-03 20:28.12
200832568987528dbeb-ddf7-45e6-9c8c-d67bb5ae89e643062000-12-1019:50.43
2011956118271c6357684-efca-441d-aa1b-fa5adbe75a021182712001-01-2717:09.00
900015122308c6357684-efca-441 d-aa1 Ma5adbe75a021223082001-01-2820:42.22
900192568987528dbeb-ddl7-45e6-9c8c-d67bb5ae89e643062000-12-1019:50.43
9030e1430009317cOe-fb52-4a63-a9dO-8899O68bc2aO43002000-09-0320:28.12
9037b448227c6357684-efca-441d-aa1b-fa5adbe75a02482272000-11-2418:32.22
9037c12463809317c0e-fb52-4a63-a9d0-8899068bc2a0248382000-10-07 12:14.55
Ready
Рис. 9.15. Просмотр метаданных репликации для объекта каталога
ликации объектов. Эту же информацию также выводит утилита RepAdmin.exe с параметром /showmeta (см. главу 8 "Сетевые и распределенные службы").
Чтобы увидеть метаданные некоторого объекта, выполните команду Replication | View Metadata в меню Browse и введите отличительное имя объекта. Пример метаданных показан на рис. 9.15.
При локализации проблем, связанных с репликацией, вы можете подключаться к различным контроллерам домена и сравнивать метаданные для хранящихся на них реплик интересующего вас объекта.
Импорт, экспорт и пакетная обработка объектов каталога
По умолчанию на каждом контроллере домена Windows 2000 устанавливаются две утилиты — LDIF Directory Exchange (LDIFDE.exe) и CSV Directory Exchange (CSVDE.exe), — которые в первую очередь предназначены для выполнения групповых операций с объектами. С помощью этих утилит вы можете:
Экспортировать информацию из Active Directory в текстовый файл (в формате LDIF или CSV), который легко можно просматривать и/или редактировать. Полученную информацию можно использовать в следующих целях:
для документирования сведений об объектах каталога.
для выполнения групповых операций редактирования, не реализованных в стандартных административных оснастках.
для создания шаблонов для новых пользователей (если стандартная операция копирования пользовательских учетных записей вас не устраивает) или для любых других объектов каталога.
для переноса объектов каталога между доменами, относящимися к одному лесу или разным лесам.
архивирования существующей доменной конфигурации (в целях безопасности или для переустановки контроллеров домена).
Импортировать информацию из файла в Active Directory. Эта операция подразумевает создание новых объектов или изменение атрибутов существующих объектов в пакетном (автоматическом) режиме. Кроме уже упомянутых выше операций экспорта, которые подразумевают импорт (операций группового редактирования, миграции, архивирования и создание шаблонов объектов), импорт информации в Active Directory может осуществляться для решения следующих задач:
для развертывания заранее сконфигурированной доменной структуры (кстати говоря, операция импорта выполняется при установке кон-
троллеров домена: для создания стандартной структуры Active Directory используется утилита CSVDE);
для развертывания Active Directory-ориентированных приложений (при этом возможно расширение схемы).
С Примечание )
Как правило, для архивирования и восстановления Active Directory используется стандартная утилита Backup. Однако в некоторых случаях более удобными могут оказаться операции экспорта/импорта.
Для решения своих задач вы можете использовать любую из двух утилит. Не забывайте при этом два главных отличия между ними (с точки зрения пользователя):
Формат данных. Утилита LDIFDE использует файлы в формате LDIF, а утилита CSVDE поддерживает формат CSV (см. ниже описание каждой утилиты).
Возможные операции. Утилита CSVDE обеспечивает только экспорт и импорт данных (создание объектов); утилита LDIFDE также позволяет вам модифицировать атрибуты и удалять объекты.
В книге приведены несколько примеров использования утилит LDIFDE и CSVDE. Эти примеры можно выполнять с любой утилитой, все зависит лишь от ваших конкретных условий.
Все перечисленные выше задачи можно также выполнить (причем иногда и с большей эффективностью!) с помощью пользовательских ADSI-сценариев. Знание возможностей и ограничений всех средств поможет вам экономить время и выбирать для каждой конкретной задачи соответствующий инструмент.
Основная информация об утилитах LDIFDE и CSVDE имеется в Справке (выполните поиск строки "Importing and exporting directory information"). (В Справке отсутствует описание параметра -и!) Для получения на экране справочной информации можно также запустить утилиту без параметров.
Журналы ошибок
Каждая утилита создает файл ошибок (csvde.err или Idif.err) и журнал выполненных операций (csvde.log или ldif.log). По умолчанию эти файлы располагаются в текущей папке, однако их местоположение можно также указывать явно.
Параметры
В табл. 9.1 перечислены некоторые часто используемые параметры обеих утилит - LDIFDE и CSVDE.
Таблица 9.1. Некоторые параметры утилит LDIFDE и CSVDE
Параметр
Описание и комментарии
Значение, если параметр отсутствует (умолчание)
Общие параметры
-f
Имя входного или выходного файла. Для вывода на консоль можно использовать строку -f con. Обязательный параметр
Нет
-S
Имя контроллера домена
Имя контроллера, обеспечившего регистрацию в сети текущего пользователя
-t
Номер порта. Также можно использовать порт Глобального каталога (3268)
389 (LDAP)
-u
Использовать формат Unicode
Используется формат ANSI
Параметры для операций экспорта
-d
База поиска
Контекст доменных имен
-с
Заменить все вхождения строки string 1 на строку string 2. Очень удобен для копирования данных из одного домена в другой
Нет
-г
Фильтр поиска
(objectClass=*)
-р
Область (глубина) описка
Subtree (поддерево)
-I
Выборка. Список атрибутов. Строку "1.1" или пустую строку можно использовать при отсутствии атрибутов (если вам нужно получить просто список объектов)
Все атрибуты
Параметры для операций импорта
-i
Задает режим импорта
Режим экспорта
-k
Пропуск ошибок. Если одни объекты были успешно импортированы в каталог, а другие вызвали ошибки, то вы можете исправить параметры в файле импорта и повторить его обработку
Нет
Примечание
Не забывайте о пропущенных параметрах (которые получают значения по умолчанию), иначе вы можете получить нежелательный или непредсказуемый
результат. Сравните, например, два случая: когда вам нужно экспортировать только объекты подразделений и когда вы хотите экспортировать все поддерево подразделения (опция по умолчанию).
Экспорт объектов с последующим импортом
Обычно при выполнении операций экспорта ошибок не возникает. (В наихудшем случае может оказаться так, что файл экспорта содержит не те объекты, которые вы ожидали в нем увидеть.) Нужно лишь учитывать следующий момент: когда вы в команде экспорта задаете список атрибутов (с помощью параметра -1), утилиты LDIFDE и CSVDE не включают в выходной файл никакой информации об атрибутах, не имеющих значений. Поэтому вы должны вручную включить в файл импорта имена этих атрибутов (если эти атрибуты вам нужны) и указать для них соответствующие значения.
( Примечания )
Дескрипторы безопасности экспортировать нельзя (как и объекты групповых политик, привязанных к доменах и/или подразделениям). Также будьте внимательны со встроенными (built-in) и стандартными группами, такими как группа Domain Users (Пользователи домена). Список членов групп в файле экспорта может отличаться от того списка, который вы видите с помощью оснастки Active Directory Users and Computers snap-in.
Фильтр (givenName=*) позволяет выбрать учетные записи только для вновь созданных пользователей, встроенные записи при этом исключаются. Дело в том, что у встроенных пользователей (Administrator, Guest и т. д.) этот атрибут не определен.
При экспорте информации из Глобального каталога (с использованием порта 3268) не забывайте о том, что Глобальный каталог хранит усеченный набор атрибутов. Например, для пользовательского объекта по умолчанию экспортируется 40—50 атрибутов (сравнительно небольшое число, т. к. их минимальное количество приблизительное равно 32, а максимальное — почти двумстам). При обращении к Глобальному каталогу экспортируются только 25—30 атрибутов.
Число и тип экспортируемых объектов определяется комбинацией базы поиска и фильтра LDAP (см. главу 1 "Концепции Active Directory и терминология"'). Экспортировать можно отдельный объект каталога или все объекты. Выбор базы поиска и фильтра не составляет проблемы, если вы используете их одновременно или не забываете об умолчаниях. Дело в следующем. Две приведенные ниже команды (в одной не указан фильтр, в другой — база поиска; в обеих командах не указана область поиска) могут показаться эквивалентными, поскольку они обе экспортируют учетную запись компьютера (подразумевается, что атрибут сп компьютерного объекта имеет в домене уникальное значение):
Idifde -f Export.Idf -d "CN=Compl,OU=STAFF,DC=w2k,DC=dom"
Idifde -f Export.Idf -r "(&(objectCategory=computer)(cn=Compl))"
На самом же деле, первая команда может экспортировать несколько объектов, а вторая экспортирует только один объект. В обеих командах отсутствует параметр -р (область поиска), что означает выполнение поиска в поддереве (умолчание для этого параметра). Поскольку компьютерный объект является контейнером и может иметь дочерние объекты, первая команда будет экспортировать все "семейство" объектов. Вторая же команда находит в домене указанный компьютерный объект и экспортирует только его (поскольку других компьютеров с таким именем в домене нет).
После некоторой практики вы научитесь правильно указывать базу поиска и фильтры, что позволит вам быстро и точно выбирать из Active Directory только нужные объекты. (См. также ниже дополнительные примеры команд.)
Примечание )
Я предпочитаю указывать в фильтрах атрибут objectcategory, а не objectclass. Оба эти атрибута реплицируются в Глобальный каталог. Однако первый атрибут индексируется, а второй нет. Фильтры, включающие индексированный атрибут, обрабатываются быстрее.
Однако при таком подходе имеется одна "ловушка". Условие objectCategory=Person определяет как пользователей, так и контакты. Поэтому для выбора пользователей к фильтру нужно также добавить атрибут objectclass.
Ошибки обычно возникают при выполнении операций импорта. Существует три основных причины ошибок:
Атрибуты, доступные только для чтения и изменяемые только системой. Типичное сообщение об ошибке: ‘Unwilling То Perform. The server side error is "Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM)." ’ (Невозможность выполнения операции. Ошибка на сервере — Доступ к атрибуту не разрешен, поскольку им владеет Диспетчер безопасности учетных записей.) В файлы импорта нельзя включать такие атрибуты, как objectSid, objectGUID и т. д., и вы всегда должны указывать параметр -ш при экспорте объектов, которые в дальнейшем собираетесь импортировать. При наличии в команде параметра -ш все атрибуты, находящиеся в ведении SAM, игнорируются (также см. ниже раздел "Работа с объектами пользователей").
Отсутствующие обязательные атрибуты. В табл. 9.2 перечислены атрибуты, которые должны быть определены в файле импорта при создании новых объектов. Атрибут objectSid выделен полужирным для того, чтобы обратить ваше внимание на то, что хотя этот атрибут обязательный, его не нужно указывать в файле импорта (т. к. его значение генерируется системой).
Нарушения правил синтаксиса, несогласованность значений атрибутов, ошибки в типе значений или недопустимые значения атрибутов. Напри-
мер, при использовании параметра -с могут появиться неправильные имена объектов (см. ниже). Если новые объекты создаются "с нуля", тщательно проверяйте типы и значения атрибутов и при необходимости уточняйте их, обращаясь к абстрактной схеме и контейнеру схемы (см. описание схемы в главе 13 "Active Directory Service Interfaces (ADSI)'Y
Таблица 9.2. Некоторые важные объектные классы и их обязательные атрибуты
Объектный класс Обязательные атрибуты
(Категория)
computer (Computer)
on, instanceType, objectCategory, objectClass, objectSid, sAMAccountName
group
(Group)
on, groupType, instanceType, objectCategory, objectClass, objectSid, sAMAccountName
organizationalUnit (Organizational-Unit)
instanceType, objectCategory, objectClass, ou
printQueue (Print-Queue)
cn, instanceType, objectCategory, objectClass, printerName, serverName, shortServerName, uNCName, versionNumber
user
(Person)
cn, instanceType, objectCategory, objectClass, objectSid, sAMAccountName
volume (Volume)
cn, instanceType, objectCategory, objectClass, uNCName
Если объекты каталога копируются (посредством операций экспорта и импорта) из одного домена в другой, может оказаться весьма удобным параметр -с (см. ниже).
Поддержка Unicode
При использовании утилит LDFIDE и CSVDE возникают некоторые проблемы с символами в формате Unicode (например, с локализованными строковыми значениями). Это нужно учитывать при хранении в Active Directory значений, представленных в He-ANSI-кодах. Перед началом операций импорта/экспорта проверьте наличие в вашем каталоге таких символов. Поскольку подобные значения не записываются в выходной файл в нормальном текстовом формате, их редактирование затруднено. Ниже перечислены ограничения утилит, касающиеся кодировки значений.
LDIFDE
Если параметр -и не указан, утилита LDIFDE экспортирует Unicode- значения в кодировке Base64 (например., sn:: OJ/QtdGCOYDQvtcy; обратите
внимание на то, что в таких строках символ двоеточия повторяется). Двоичные значения всегда представляются в кодированном виде. Если Unicode-символы входят в отличительное имя объекта каталога, все имя (атрибут dn) кодируется. Все подобные значения можно свободно импортировать.
Утилита LDIFDE допускает использование Unicode-символов во входном файле, если тот сохранен в кодировке Unicode (не-ANSI). Применяйте при этом обычный формат с одним двоеточием!
CSVDE
Если параметр -и не указан, утилита CSVDE сообщает об ошибке, когда символы Unicode присутствуют в отличительном имени объекта каталога. Однако утилита всегда допускает использование Unicode-значений в других атрибутах. Сообщение об ошибке выглядит так:
Error writing to file. This error happens when the entry cannot be written, it can be caused by writing a Unicode value to a non-unicode file.
(Ошибка при записи в файл. Ошибка возникла из-за того, что элемент нельзя записать; возможно, это вызвано тем, что Unicode-значение не сохранено в файле формата Unicode.)
Вне зависимости от наличия параметра -и, утилита CSVDE экспортирует Unicode- и двоичные значения (за исключением dn) в следующем формате: х’8с39.. . сЗЬс*. Эти значения можно свободно импортировать.
Утилита CSVDE допускает использование Unicode-символов во входном файле, если тот сохранен в кодировке Unicode (не-ANSI).
Утилита LDIFDE (Sys)
Утилита командной строки LDIFDE устанавливается по умолчанию на каждом контроллере домена и может использоваться для создания, модификации, переименования и удаления объектов каталога. Утилита работает с форматом LDAP Data Interchange Format (LDIF — формат обмена данными по протоколу LDAP) — стандартом Интернета, определяющим формат файла для выполнения пакетных операций в LDAP-совместимых сетевых каталогах. LDIFDE является предпочтительным инструментом для расширения схемы Active Directory. ■
Примеры LDIF-файлов приведены ниже. Утилита LDIFDE может работать на любых клиентских системах Windows 2000 при условии, что вы предоставите ей соответствующие административные учетные данные.
Работа с объектами пользователей
Табл. 9.3 представляет собой фрагмент файла экспорта; в ней перечислены все атрибуты экспортированного объекта пользователя, представленные в формате LDIF. Обратите внимание на атрибуты, выделенные полужирным: эти атрибуты не экспортируются, если указан параметр -ш, и не должны импортироваться. Заметьте также, что атрибуты objectGUID и objectSid экспортируются как двоичные значения (это отмечено двойным символом двоеточия). Несколько дополнительных замечаний помещены после таблицы. В ней указаны не все возможные атрибуты, а лишь типичный минимальный набор. В квадратных скобках даны имена некоторых атрибутов в том виде, в каком они представлены в пользовательском интерфейсе оснастки Active Directory Users and Computers. Также указано относительное отличительное имя (RDN), хотя оно не отображается в пользовательском интерфейсе и не может быть непосредственно изменено.
Таблица 9.3. Влияние параметра ш на список экспортируемых атрибутов
Экспортируемые атрибуты и их значения
dn: CN=John Smith,OU=STAFF,DC=w2k,DC=dom
changetype: add
memberOf: CN=Server Operators,CN=Builtin,DC=w2k,DC=dom
memberOf: CN=Account Operators,CN=Builtin,DC=w2k,DC=dom
accountExpires: 9223372036854775807
badPasswordTime: 0
badPwdCount: 0
**cn: John Smith
codePage: 0
countryCode: 0
displayName: John Smith[Display name — Выводимое имя]
distinguishedName: CN=John Smith,OU=STAFF,DC=w2k,DC=dom
givenName: John[First name — Имя]
homeDirectory: Ww2kdc4\UsersData\jsmith
homeDrive: W:
**instanceType: 4
lastLogoff: 0
lastLogon: 0
Таблица 9.3 (окончание)
Экспортируемые атрибуты и их значения
logonCount: О
name: John Smith[RON]
**objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=w2k,DC=dom
*objectClass: user
objectGUID:: +QUGbMtJ4UObxSDO...
objectSid:: AQUAAAAAAAUVAAAA6...
primaryGroupID: 513
p rof i Ie Path: Ww2 kdc\P rof ile s\j s m ith
pwdLastSet: 126205092770106560
*sAMAccountName: jsmith
sAMAccountType: 805306368
scriptPath: Users\Logons.vbs
sn: Smith[Last Name — Фамилия]
***userAccountControl: 512
userPrincipalName: jsmith @w2k
f uSNChanged: 54011
t uSNCreated: 54007
twhenChanged: 20001205170117.0Z
t whenCreated: 20001205170115.0Z
* — эти атрибуты являются обязательными при импорте (создании) пользовательских объектов. Чтобы создать нового пользователя, достаточно определить значения атрибутов objectclass и sAMAccountName. Для объектов других типов потребуются некоторые дополнительные атрибуты (см. табл. 9.2).
** — данные атрибуты являются обязательными для объекта пользователя, однако они не обязательны в операциях импорта, поскольку система сама присваивает атрибутам соответствующие значения.
*** — если эта строка включена в файл импорта, новый пользователь должен будет сменить пароль при первом входе в систему; если эта строка отсутствует, новая! учетная запись будет запрещена.
"I" — данные атрибуты хотя экспортируются при наличии параметра -т, однако не имеет никакого смысла импортировать их.
Ниже показана командная строка, позволяющая экспортировать указанные атрибуты всех пользователей (за исключением встроенных учетных записей) из текущего домена:
Idifde -f ExportedUSERs.Idf
'Ъ -г " (&(objectCategory=Person)(objectClass=User)(givenName=*))" 'Ъ -1 "cn,givenName,objectclass,sAMAccountName"
Работа с контейнерами (доменами и подразделениями)
При работе с контейнерами всегда нужно помнить о том, что комбинация базы поиска и фильтра LDAP определяет результат операции: либо вы экспортируете только контейнерные объекты заданного типа, либо экспортируете весь контейнер с его содержимым.
Сравните для примера следующие две команды. Первая команда экспортирует все объекты подразделений текущего домена (не забывайте об умолчаниях для пропущенных параметров -1, -d и -р):
Idifde -f ExportedOUs.Idf -r "objectCategory=OrganizationalUnit" -v
Вторая команда экспортирует все поддерево указанного подразделения, т. е. сам объект подразделения и все его дочерние объекты (любого типа):
Idifde -f ExportedOU.Idf -d "OU=Staff, DC=w2k,DC=dom" -v
Расширение схемы
Компания Microsoft рекомендует использовать утилиту Ldp.exe при расширении схемы (хотя можно применять и утилиту CSVDE). (Вопросы расширения схемы рассматриваются в главе 13 "Active Directory Service Interfaces (ADSI)'Y Перед тем как выполнять команду, подобную приведенной ниже, вы должны сгенерировать (получить) базовый идентификатор (OID) для ваших атрибутов и классов. Ниже приведен пример импортируемого LDIF- файла, с помощью которого создается строковый атрибут со внешним именем LDAP (LDAP display name) stringAttribute-.
dn: CN=String Attribute,CN=Schema,CN=Configuration, DC=w2k,DC=dom changetype: add attributelD: 1.2.840.113556.1.4.7000.2331[OID]
attributesyntax: 2.5.5.12 cn: String Attribute isSingleValued: TRUE objectcategory: CN=Attribute-Schema,CN=Schema,CN=Configuration, ’b DC=w2k,DC=dom objectclass: attributeschema oMSyntax: 64
При успешном выполнении команды на экране появляются сообщения, подобные следующим (w2kdc4.w2k.dom — имя контроллера домена, являющегося мастером схемы):
Idifde -i -f AddStrAttr.Idf
Connecting to "w2kdc4.w2k.dom"
Logging in as current user using SSPI
Importing directory from file "AddStrAttr.Idf"
Loading entries..
entry modified successfully.
The command has completed successfully
Модификация атрибутов. Удаление объектов
Только утилита LDIFDE позволяет выполнять групповое изменение объектов Active Directory. Чтобы изменить (установить) одно или несколько значений объекта каталога (или множества объектов), используйте следующую процедуру:
Экспортируйте в файл нужный объект (объекты). Используйте для этого соответствующие фильтры. Можно экспортировать все атрибуты или только некоторые. Этот шаг необязателен — вы можете и вручную создать файл экспорта, который затем будет импортироваться.
Отредактируйте экспортированный файл. Удалите строки для ненужных (неизменяемых) атрибутов. Замените тип операции (changetype) с add на modify. Замените каждую строку на следующие строки:
replace: <имяАтрибута>
<имяАтрибута>: <новоеЗначение>
Если вторая строка опускается, значение атрибута будет сброшено. После строк, относящихся к одному атрибуту (включая последний), должен стоять знак "-" (минус). Перед отличительным именем каждого атрибута (за исключением первого) должна стоять пустая строка. Давайте рассмотрим эти требования на примере. Демонстрационный файл импорта предназначен для изменения атрибутов двух объектов пользователей (комментарии даны в квадратных скобках; они не включаются в файл!):
dn: CN=user3,0U=Staff, DC=w2k, DOdom changetype: modify replace: description description: A test user
replace: scriptpath
scriptPath: Users\Logons.vbs
[Эта пустая строка обязательна]
tin: CN=user4,OU=Staff,DC=w2k,DC=dom changetype: modify replace: description description: A user
[Вое символы "-" обязательны]
Импортируйте отредактированный файл. Операция импорта выполняется до появления первой ошибки, однако вы можете неоднократно повторять операцию, постепенно исправляя ошибки.
Модифицируя значения атрибутов, можно также изменить членство в группе (группах). Следующие строки позволяют добавить пользователя в группу:
dn: СМ=ИмяГруппы,OU=Staff,DC=w2k,DC=dom changetype: modify replace: member
member: CN=user2,OU=Staff,DC=w2k,DC=dom
( Примечание )
Если утилита LDIFDE.exe не отвечает вашим специфическим требованиям, создайте собственный сценарий (см. главу 14 "Использование ADSI для администрирования"). Если вы знакомы с ADSI-сценариями, это потребует у вас времени не больше, чем редактирование файла. Однако сценарии обладают значительно большей гибкостью и их можно использовать многократно. Например, при каждом добавлении (удалении) пользователя вам нужно повторять операцию экспорта и/или заново редактировать файл импорта, а один и тот же сценарий может модифицировать указанные атрибуты для любого числа пользователей в некотором контейнере.
Для удаления оконечного (leaf) объекта достаточно включить в файл импорта две следующих строки:
dn: CN=user2,OU=Staff,DC=w2k,DC=dom changetype: delete
Если некоторый контейнер имеет дочерние объекты, его удалить нельзя. В принципе, подобную операцию (удаление поддерева) можно выполнить с помощью протокола LDAP (см. выше описание утилиты Ldp.exe), однако утилита LDIFDE не реализует такие операции.
Утилита CSVDE (Sys)
Утилита CSVDE использует файлы в формате Comma-Separated Value (CSV — значения, разделенные запятыми) (с расширением .csv). Файлы данного формата легко просматривать (импортировать) или готовить (редактировать и экспортировать) при помощи различных приложений, таких как Microsoft Excel. Первая строка файла содержит имена атрибутов, разделенные запя-
тыми. Следующие строки содержат значения атрибутов — по строке на объект. Пример CSV-файла приведен ниже.
Работа с Unicode-значениями
Рассмотрим особенности при работе с Unicode-строками на примере утилиты CSVDE. Следующая команда экспортирует минимальный набор атрибутов подразделений, что позволяет скопировать (импортировать) структуру подразделений в другой домен:
csvde -f ExportedOUs.csv -г "(objectCategory=OrganizationalUnit)"
Ч> -1 "objectclass,ou" -v -u
( Примечание )
Если экспортируются все атрибуты (параметр -1 отсутствует), добавьте к команде параметр -ш.
При выполнении команды на экране появляются следующие сообщения (в режиме подробного протоколирования — параметр -v):
Connecting to "(null)"
Logging in as current user using SSPI
Exporting directory to file ExportedOUs.csv
Searching for entries...
Writing out entries
Exporting entry: "OU=Domain Controllers,DC=w2k,DC=dom"
Exporting entry: "OU=STAFF,DC=w2k, DC=dom"
Exporting entry: "Ои=Персонал,OU=HQ,DC=w2k,DC=dom"
Export Completed. Post-processing in progress...
7 entries exported
The command has completed successfully
Обратите внимание на Unicode-строку в имени подразделения (иои=персонал,..."). Если не указать параметр -и, команда выдает следующую ошибку (которая также записывается в файл журнала csv.err):
Error writing to file. This error happens when the entry cannot be written, it can be caused by writing a Unicode value to a non-unicode file. An error has occurred in the program
Ниже показан фрагмент экспортированного CSV-файла (в первой строке перечисляются имена атрибутов):
DN,objectclass, ou
"OU=Domain Controllers,DC=w2k,DC=dom",organizationalUnit, Domain
4> Controllers
"OU=STAFF, DC=w2k,DC=dom",organizationalUnit,STAFF
"Ои=Персонал,OU=HQ,DC=w2k,DC=dom",organ!zationalUnit,X'd09fd0b5dl80dl8
IdObedObddObOdObb'
Обратите внимание на то, что в последней строке значение атрибута ои закодировано.
L ‘-^ Внимание!
Если вы "с нуля" создаете файл импорта, содержащий Unicode-значения, не забудьте сохранить его в кодировке Unicode (не в ANSI, как предлагается по умолчанию) и при импорте указать параметр -и.
Экспорт информации с последующим импортом
Как уже говорилось, если в файле импорта указаны некоторые атрибуты или если значения некоторых атрибутов определены неправильно (или значения несогласованны), то при обработке файла возникают ошибки. Ниже показаны сообщения об ошибках, часто встречающихся при выполнении операций импорта:
Add error on line 2: Unwilling To Perform
The server side error is "The modification was not permitted for security reasons."
(Серверная ошибка "Модификация не разрешается по соображениям безопасности.) О entries modified successfully.
An error has occurred in the program
Следующая ошибка указывает на то, что вы хотите импортировать атрибут, изменять который может только система:
Add error on line 3: Constraint Violation [Нарушение ограничения] The server side error is "Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM)."
Если вы сталкиваетесь с подобной ошибкой, используйте при экспорте параметр -т, а если ошибка не исчезает, проверьте импортируемый файл на согласованность значений атрибутов (в первую очередь, это относится к различным именам объекта). Попытайтесь при экспортировании объектов избавиться от "ненужных" атрибутов. Рассмотрим ситуацию, когда вы сами можете спровоцировать критическую ошибку при использовании параметра -с.
Имеется следующий сценарий. Предположим, что вы хотите целиком скопировать некоторое подразделение из одного домена (w2k.dom) в другой (subdom.w2k.dom) и одновременно переименовать подразделение. С помощью параметра -с ou=Personnel ou=staff,DC=subdom вы меняете исходное
отличительное имя "OU=Personnel,DC=w2k,DC=dom" на целевое имя "OU=Staff,DC=subdom, DC=w2k,DC=dom". Ошибка возникает из-за того, что при такой операции контекстной замены имен не изменяется значение атрибута ои. В результате значения атрибутов dn и ои становятся несогласованными. Для устранения ошибки нужно либо изменить параметр -с, либо опустить атрибут ои при выполнении экспорта (с помощью параметра -о). Присутствие атрибута sIDHistory во входном файле также помешает успешному выполнению операции импорта. В следующей команде учтены все замечания, и с ее помощью можно успешно выполнить требуемое действие:
csvde -f Subtree.csv -d OU=Personnel,DC=w2k,DC=dom
^ -c OU=Personnel OU=Staff,DC=subdom -o ou,sidhistory -m -v
Если копируемое подразделение содержит учетные записи компьютеров, вы можете экспортировать их с помощью следующей команды (или в предыдущей команде добавьте атрибут primaryGroupID в список пропускаемых атрибутов):
csvde -f Comp.csv -d OU=Personnel,DC=w2k,DC=dom.
^ -r "objectCategory=Computer" -c OU=Personnel OU=Staff,DC=subdom
'b -o primaryGroupID -m -v
Внимание!
Обратите внимание на то, что атрибут memberOf не экспортируется, поэтому от вас может потребоваться проверка (и восстановление) членства в группах для всех импортированных учетных записей. Чтобы добавить пользователей в группу (группы), можно также использовать команду AddUsers.exe из пакета Windows 2000 Resource Kit (см. главу 5 "Типовые административные задачи").
Windows 2000 Domain Manager (NetDom.exe) (ST)
Утилита командной строки Windows 2000 Domain Manager имеет несколько уникальных возможностей; например, с ее помощью можно перемещать между доменами учетные записи компьютеров или присоединять компьютеры к домену. Эта утилита позволяет вам выполнять следующие операции:
Получать разнообразную информацию о доменах.
Добавлять, присоединять и перемещать компьютеры в домене (все эти операции позволяют указывать рабочее подразделение), а также удалять компьютеры из домена.
Переустанавливать и проверять безопасные каналы между компьютерами.
Проверять, устанавливать, сбрасывать, разрывать и изменять доверительные отношения между доменами (включая отношения доверия Kerberos).
( Примечание )
Будьте внимательны: в документации на эту утилиту встречаются неточности, например, имеется немало расхождений между описанием параметров в файле Support Tools Help и встроенной справке утилиты.
Рассмотрим на примерах некоторые интересные возможности утилиты NetDom.exe. Для получения подробной информации о ходе выполнения операций к любой команде следует добавлять параметр /verbose. Во многих командах можно использовать DNS-имена компьютеров и доменов, однако в некоторых случаях предпочтительнее указывать NetBIOS-имена.
Опрос доменов
Утилита NetDom.exe является одним из инструментов, с помощью которых можно находить в лесе владельцев FSMO-ролей. Следующая команда, например, показывает, что контроллер W2KDC2 владеет всеми ролями в своем домене, а ролями, уникальными для всего леса, владеет контроллер W2KDC4 из корневого домена:
netdom QUERY /D:subdom.w2k.dom FSMO
Schema ownerw2kdc4.w2k.dom
Domain role ownerw2kdc4,w2k.dom
PDC rolew2kdc2.subdom.w2k.dom
RID pool managerw2kdc2.subdom.w2k.dom
Infrastructure ownerw2kdc2.subdom.w2k.dom
The command completed successfully.
С помощью следующей команды можно увидеть все домены, имеющие непосредственные доверительные отношения с указанным доменом (эти отношения можно также проверить посредством команды netdom trust; cm. ниже):
netdom QUERY /D:w2k.dom TRUST /Direct
Direction Trusted\Trusting domainTrust type
DownlevelUplevelDownlevelUplevel<->NT4DOM
Downlevel
Uplevel
Downlevel
Uplevel
<->subdom.w2k.dom
The command completed successfully.
Команда netdom query позволяет проверить и/или переустановить (параметр /Reset) доменные доверительные отношения. Ниже приведена команда, которая проверяет отношения между родительским (текущим) доменом и некоторым дочерним доменом (команда запускается в родительском домене; при этом необходимо указать учетные данные администратора дочернего домена):
netdom QUERY /D:subdom.w2k.dom TRUST /UD:administrator /PD:* /Verify
Type the password associated with the domain user:[Ввести пароль]
Direction Trusted\Trusting domain Via domainStatus
<->w2k.domVerified
The command completed successfully.
После того как вы делегировали пользователю (в нашем примере — j smith) управление некоторым подразделением, вы можете проверить административные полномочия этого пользователя (при этом вы должны знать его пароль). Для этого используется такая команда:
netdom QUERY /D:w2k.dom OU /UD:jsmith /PD:*
Type the password associated with the domain user:[Ввести пароль]
List of Organizational Units within which the specified user can create a machine account: [Список подразделений, в которых указанный
пользователь может создавать учетные записи компьютеров:]
OU=STAFF,DC=w2k,DC=dom
OU=Sales,OU=Marketing,DC=w2k,DC=dom The command completed successfully.
Сравните эти результаты с результатами, полученными для какой-нибудь административной учетной записи.
Управление учетными записями компьютеров
С помощью показанной ниже команды можно создать в домене учетную запись компьютера (при этом компьютер не присоединяется к домену). Обратите внимание на то, что для этой учетной записи можно указать подразделение. Напомню, что если вы, работая на автономном компьютере, присоединяете его к домену с использованием вновь создаваемой учетной записи, эта учетная запись помещается в контейнер Computers. Указанную команду можно применять для предварительного создания записей в подразделениях (доменах), после чего приступать к непосредственному подключению компьютеров к лесу доменов.
netdom ADD compName /D:w2k.dom /OU:OU=Staff,DC=w2k, DC=dom
The command completed successfully.
Утилита NetDom.exe может использоваться для переноса (миграции) учетных записей компьютеров из ресурсных доменов Windows NT в домены Windows 2000 или между доменами Windows 2000. Во всех командах — ADD, JOIN, MOVE и REMOVE — допускается указывать подразделения, следовательно, вы можете манипулировать компьютерами с учетом структуры подразделений ваших доменов.
Для переноса компьютера (в нашем примере — compName) из текущего домена в целевой домен (вы должны быть зарегистрированы как администратор
в текущем домене и указать учетные данные администратора целевого домена, adminName) можно использовать команду:
netdom MOVE compName /D:subdom.w2k.dom
'Ъ /OU:OU=Personal,DC=subdom,DC=w2k,DC=dom /UO:adminName /РО:*
( Примечание j
Перемещаемый компьютер должен быть включен и доступен, в противном случае команда генерирует ошибку "The network path was not found" (Сетевой путь не найден).
Проверка и переустановка безопасных каналов
С помощью утилиты NetDom.exe можно проверять и переустанавливать безопасные каналы, существующие между каждым компьютером в домене и некоторым контроллером домена. Для того чтобы проверить, что компьютер W2KPRO1 установил безопасный канал со своим доменом W2KD0M, и увидеть, какой контроллер домена осуществил аутентификацию данного компьютера в сети, можно использовать следующую команду (также показаны выводимые сообщения):
netdom VERIFY w2kprol.w2k.dom /D:w2k.dom
The secure channel from W2KPR01.W2K.DOM to the domain W2K.D0M has been verified. The connection is with the machine WW2KDC4.W2K.DOM.
(Безопасный канал от W2KPR01.W2K.DOM к домену W2K.D0M проверен. Подключение выполнено к компьютеру WW2KDC4.W2K.DOM.)
The command completed successfully.
Эту же операцию можно выполнить и с помощью утилиты NLtest:
nltest /sc_query:w2k.dom /server:w2kprol,w2k.dom
Чтобы переустановить разорванный безопасный канал, используйте команду:
netdom RESET w2kprol.w2k.dom /D:w2k.dom
The secure channel from W2KPR01.W2K.DOM to the domain W2K.D0M has been reset. The connection is with the machine WW2KDC4.W2K.DOM.
The command completed successfully.
Для этой цели также пригодна утилита NLtest:
nltest /sc_reset:w2k.dom /server:w2kprol.w2k.dom
Управление междоменными доверительными отношениями
С помощью утилиты NetDom.exe можно диагностировать ошибки, связанные с функционированием доверительных отношений между доменами (включая отношения, реализованные с помощью протокола аутентификации
Kerberos v5). Например^ следующая команда проверяет отношения Kerberos между двумя доменами в лесе — текущим и указанным (необходимо указывать учетные данные администраторов обоих доменов!):
netdom TRUST subdom.w2k.dom /D:w2k.dom /Kerberos /UD:administrator ’Ъ /PD:* /UO:administrator /Р0:* /Verify
Type the password associated with the domain user:
Type the password associated with the object user:
The trust between subdom.w2k.dom and w2k.dom has been successfully verified
The command completed successfully.
Для переустановки междоменных отношений используется команда:
netdom TRUST subdom.w2k.dom /D:w2k.dom /UD:administrator /PD:* ’Ъ /UO:administrator /Р0:* /Reset
При ее успешном выполнении на экране должны появиться такие сообщения:
Resetting the trust passwords between subdom.w2k.dom and w2k.dom (Переустановка паролей отношений доверия между доменами ...) The trust between subdom.w2k.dom and w2k.dom has been successfully reset and verified (Отношение доверия между доменами ... успешно установлено и проверено) The command completed successfully.
Если имеются проблемы, связанные с доверительными отношениями, постарайтесь локализовать их и с помощью команды netdom verify или nitest /sc query проверьте отношения между двумя отдельными контроллерами домена, т. е. проверьте контроллеры попарно.
( Примечание )
Для проверки и переустановки доверительных отношений можно также использовать оснастку Active Directory Domains and Trusts (см. главу 4 "Средства управления доменами").
Удаление несуществующих доменов
Утилита NetDom.exe позволяет удалить несуществующий ("потерянный") домен (включая объекты ссылок и доверенных доменов), в котором отсутствуют контроллеры домена. Для этого используется команда netdom trust /Remove /Force.
ГЛАВА 10
Средства реорганизации каталога
Перемещать объекты Active Directory внутри домена довольно просто. Достаточно запустить оснастку Active Directory Users and Computers, указать на объект и выбрать для операции перемещения (Move) целевой контейнер. Перемещение объектов между доменами — значительно более сложная операция, для выполнения которой нужны специальные средства. Если домены принадлежат к разным лесам, то следует уже говорить не о перемещении, а о миграции объектов.
В этой главе описываются две утилиты — MoveTree.exe и ClonePrincipal, с помощью которых администраторы могут реконфигурировать домены или выполнять миграцию пользователей и групп из одного леса (или домена Windows NT 4.0) в другой лес. Главное различие между этими двумя утилитами заключается в том, что утилита MoveTree может использоваться только внутри одного леса, a ClonePrincipal обеспечивает выполнение операций только между лесами. Кроме этого, утилита MoveTree удаляет исходный объект (назначая его GUID новому объекту), a ClonePrincipal создает копию (клон) объекта, не затрагивая исходного объекта.
"Похождения" атрибута ObjectSID
Изменение домена, которому принадлежит объект Active Directory, влечет за собой изменение идентификатора безопасности (SID) этого объекта. В доменах Windows 2000, работающих в основном режиме, имеется специальный механизм, благодаря которому субъекты безопасности (security principals; пользователи, группы и т. д.) могут сохранять доступ к сетевым ресурсам даже после того, как эти субъекты были перемещены в другое место в пределах доменной структуры. Рассмотрим, как механизм используется при работе утилит MoveTree и ClonePrincipal.
Когда домен работает в основном режиме, у каждого объекта каталога, представляющего субъект безопасности, имеется многозначный атрибут sIDHistory.
Этот атрибут вместе с идентификатором безопасности SID (атрибут objectSid) используется в маркере доступа, принадлежащем этому объекту, для определения прав доступа к сетевым ресурсам. Если какой-нибудь из SID- идентификаторов присутствует в ACL-списке сетевого ресурса, то объекту каталога предоставляется предопределенное право доступа к этому ресурсу (при условии, что указано разрешение на доступ, Allow, а не запрет доступа, Deny). Этот механизм схематически представлен на рис. 10.1.
После того как утилита ClonePrincipal или MoveTree создает новый объект, она добавляет SID исходного объекта в список sIDHistory нового объекта. В результате, новый объект получит право доступа ко всем ресурсам, которые были доступны исходному объекту (рис. 10.2).
Кроме этого, список sIDHistory исходного объекта — если этот список не пустой — добавляется к атрибуту sIDHistory целевого объекта.
Исходный объектИсходный объектЦелевой объект (клон)Целевой объект (клон)Рис. 10.1. Атрибут sIDHistory позволяет новому объекту сохранить права доступа, предоставленные исходному объектуРис. 10.1. Атрибут sIDHistory позволяет новому объекту сохранить права доступа, предоставленные исходному объекту
Исходный объект
Исходный объект
Целевой объект (клон)
Целевой объект (клон)
Рис. 10.1. Атрибут sIDHistory позволяет новому объекту сохранить права доступа, предоставленные исходному объекту
Рис. 10.1. Атрибут sIDHistory позволяет новому объекту сохранить права доступа, предоставленные исходному объекту
Рис. 10.2. Клонированный (или перемещенный) объект наследует права доступа исходного объекта
Active Directory Object Manager (MoveTree.exe) (ST)
Утилита MoveTree является основным (и единственным инструментом, если исключить Active Directory Migration Tool) инструментом, позволяющим администраторам реорганизовывать домены Windows 2000, относящиеся к одному лесу. С помощью этой утилиты можно перемещать из одного домена в другой как отдельные объекты Active Directory, так и целые контейнеры (подразделения). Ниже перечислены объекты, с которыми можно работать:
Пользователи (пароли сохраняются)
Пустые локальные в домене и глобальные группы
Универсальные группы (вместе со всеми членами)
Подразделения (вместе с содержимым)
Утилита MoveTree не позволяет перемещать учетные записи компьютеров, системные объекты или контроллеры домена.
Примечание )
Если вам больше нравятся GUI-инструменты, обратите внимание на утилиту Active Directory Migration Tool (ADMT), которая по сравнению с MoveTree имеет много дополнительных возможностей, хотя ее и нельзя использовать в командных файлах.
Внимание!
В описании утилиты MoveTree в файле Windows 2000 Support Tools Help явно не упоминается самое главное ограничение этой утилиты: целевой домен должен функционировать в основном режиме (native mode). Это объясняется тем, что только такие домены поддерживают для субъектов безопасности атрибут sIDHistory (который обновляется утилитой). Возможно, вы не посчитаете это требование за ограничение, только не забывайте о нем при работе с доменами, находящимися в смешанном режиме (mixed mode)!
Синтаксис утилиты MoveTree весьма прост: вы должны указать исходный и целевой объекты, а также тип операции. Практически все параметры являются обязательными. Утилита MoveTree функционирует в двух режимах:
В "тестовом режиме" проверяются различные необходимые условия, при этом объекты не перемещаются.
В "рабочем режиме" инициируется операция фактического перемещения объектов.
Перемещение подразделения вместе с содержимым
Возможность подразделений вместе со всеми дочерними объектами является, возможно, самым ценным качеством утилиты MoveTree. Нужно помнить о том, что если перемещается некоторое подразделение, сохраняются все связи с объектами групповых политик (GPO), привязанными к этому подразделению. Необходимо заново создать эти объекты GPO в целевом домене и разорвать связи с объектами GPO из исходного домена.
Предположим, к примеру, что нам нужно переместить подразделение Personnel из домена w2k.dom в домен subdoni.w2k.dom и переименовать его в Staff. Вы должны иметь административные полномочия в исходном домене и, возможно, вам потребуется указать учетные данные администратора в целевом домене. С помощью следующей команды "тестового режима" можно проверить, будет ли операция успешной:
С:\>movetree /check /s w2kdc4.w2k.dom /d w2kdc2.subdom.w2k.dom
'Ъ /sdn OU=Personnel,DC=w2k,DC=dom
/ddn OU=Staff,DC=subdom,DC=w2k, DC=dom
/u W2KDOM\administrator /p *
Обратите внимание на то, что имя целевого подразделения отличается от имени исходного подразделения. Предположим, что при запуске утилиты вы получили следующие сообщения:
MOVETREE PRE-CHECK FINISHED.
MOVETREE DETECTED THERE ARE SOME OBJECTS CAN NOT BE MOVED.
PLEASE CLEAN THEM UP FIRST BEFORE TRYING TO START THE MOVE TREE OPERATION.
READ movetree.chk FOR DETAILS.
(Предварительная проверка MOVETREE закончена.
Утилита обнаружила, что некоторые объекты не могут быть перемещены.
Пожалуйста, устраните связанные с ними проблемы до того, как начинать операцию перемещения поддерева.
Подробная информация помещена в файл movetree.chk.)
Файл movetree.chk (располагающийся в той же папке, из которой запускается команда) всегда содержит диагностические сообщения о каждом этапе выполнения команды (успешные операции имеют код "0x0"). Этот файл генерируется для каждой операции "тестового режима" или успешной операции перемещения. (Можно также добавить к команде параметр /verbose и получить на консоли подробную диагностику.) Локализовать проблему и найти источник ошибки (выделен ниже полужирным) довольно легко, например:
ReturnCode: 0x0 The operation completed successfully. MoveTree check destination RDN conflict for object: 0U=Personnel,DC=w2k,DC=dom
ReturnCode: 0x0 The operation completed successfully. MoveTree cross domain move check for object: OU=Personnel,DC=w2k,DC=dom
ReturnCode: 0x212d Can't move objects with memberships across domain boundaries as once moved, this would violate the membership conditions of the account group. Remove the object from any account group memberships and retry. MoveTree cross domain move check for object:
CN=userO48,OU=Personnel,DC=w2k,DC=dom
(He могу переместить объекты, имеющие членство в группах из другого домена, поскольку при перемещении нарушатся условия членства в группе учетных записей. Удалите объект из всех групп и повторите операцию. Проверка перемещения между доменами для объекта: ...)
( Примечание )
Ошибка 0x212d появится также, если вы попытаетесь переместить учетную запись компьютера (как отдельный объект или в составе подразделения). Для этого нужно использовать утилиты NetDom или ADMIT.
Когда вы удалите указанный объект пользователя (cn=user048) изо всех групп безопасности (за исключением первичной группы — Domain Users) и повторите операцию, то получите следующий результат:
MOVETREE PRE-CHECK FINISHED.
MOVETREE IS READY TO START THE MOVE OPERATION.
MOVETREE FINISHED SUCCESSFULLY.
(MOVETREE готова начинать операцию перемещения.
MOVETREE успешно завершила работу.)
Эти сообщения означают, что утилита не обнаружила ошибок, и операция перемещения может выполниться успешно. Теперь можно завершить операцию перемещения, заменив в строке параметр /check на параметр /startnocheck или /start. Все диагностические сообщения всегда записываются в файл movetree.log, располагающийся в текущей папке.
Внимание!
"Тестовый режим" (при использовании параметра /check) не гарантирует того, что операция закончится успешно. Например, следующая ошибка ("Insufficient access rights to perform the operation" — Прав доступа недостаточно для выполнения операции) может появиться только в "рабочем режиме ":
MOVETREE FAILED. 0x2098
READ movetree.err FOR DETAILS.
( Примечание j
После перемещения объектов каталога инициируйте репликацию или дождитесь ее выполнения (по расписанию). Должна обновиться информация на кон-
троллере домена, являющемся мастером инфраструктуры (Infrastructure operations master), и в Глобальном каталоге. В противном случае некоторые изменения в доменах могут быть не сразу "поняты" другими членами леса доменов.
Перемещение учетных записей пользователей и групп
Перед перемещением учетной записи пользователя или группы необходимо, чтобы целевой контейнер уже существовал. При перемещении объект можно переименовать, нужно лишь вместе с параметрами /sdn и /ddn указать соответствующие отличительные имена.
Можно перемещать только пустые локальные и глобальные группы. (Лишь при перемещении универсальных групп сохраняются все их члены.) В противном случае для перемещаемой группы в файле movetree.chk появится сообщение, аналогичное следующему:
ReturnCode: 0x2133 Cross-domain move of resource groups is not allowed. MoveTree cross domain move check for object:
CN=LocalGroup,OU=Personnel,DC=w2k,DC=dom
(He разрешается перемещать между доменами ресурсные группы.)
Клонирование субъектов безопасности (ClonePrincipal) (ST)
ClonePrincipal на самом деле не утилита и не команда, а набор сценариев, позволяющих выполнять миграцию объектов между лесами и, в первую очередь, переносить (копировать) учетные записи из существующих доменов Windows NT 4.0 в новый домен Windows 2000. (В отличие от утилиты MoveTree, ClonePrincipal не затрагивает исходные объекты.). ClonePrincipal и сходная по функциям GUI-утилита — Active Directory Migration Tool (ADMT) — являются единственными средствами, с помощью которых можно постепенно обновлять существующие домены Windows NT 4.0, когда в процессе обновления пользователи сохраняют доступ к общим сетевым ресурсам, а администраторы могут в экстренных случаях вернуть исходную доменную конфигурацию. Средства ClonePrincipal также можно использовать и для реорганизации лесов Windows 2000.
( Примечание j
Утилита ADMT представляет собой более мощный инструмент, чем ClonePrincipal. Она располагает множеством дополнительных возможностей, например, поддерживает операции, выполняемые в пределах одного леса, и может копировать профили пользователей, компьютеры и отношения доверия. ClonePrincipal и ADMT имеют довольно много одинаковых возможностей. Однако они отличаются внутренней реализацией, и компания Microsoft не рекомен-
дует применять их одновременно в процессе миграции. Если вы поймете основные принципы использования ClonePrincipal (в особенности, требования к среде и механизм миграции идентификаторов SID), то без труда сможете работать и с утилитой ADMT.
Хорошо известные (well-known) идентификаторы SIDnRID
Для начала уточним некоторые термины, используемые ниже.
Уникальный идентификатор безопасности (security identifier, SID), принадлежащий некоторому субъекту безопасности (например, пользователю, компьютеру или группе), используется для предоставления субъекту прав доступа к общим сетевым ресурсам. SID состоит из двух компонентов: уникального "доменного компонента", одинакового для всех субъектов, относящихся к одному домену, и относительного идентификатора (relative identifier, RID), который уникальным образом определяет субъект в домене. .
Учетные записи с хорошо известными RID (well-known RID) имеют SID- идентификатор, образованный с помощью RID, одинакового для всех доменов, и "доменного компонента", который уникален для каждого домена. Такую учетную запись можно клонировать только в учетную запись с аналогичным RID. Ниже перечислены учетные записи с хорошо известными RID:
Administrator (Администратор)
Guest (Гость)
Domain Users (Пользователи домена)
Domain Admins (Администраторы домена)
Domain Guests (Гости домена)
Учетную запись с хорошо известным SID (well-known SID) нельзя клонировать, т. к. ее SID одинаков в любом домене. (Поэтому нет смысла копировать учетную запись, SID-идентификатор которой уже существует в целевом домене.) Учетные записи с хорошо известными SID:
Users (Пользователи)
Administrators (Администраторы)
Guests (Гости)
Account Operators (Операторы учета)
Backup Operators (Операторы архива)
Print Operators (Операторы печати)
Server Operators (Операторы сервера)
Power Users (Опытные пользователи)
Replicator (Репликатор)
Поддерживаемые типы объектов
С помощью Clone Principal вы можете клонировать следующие объекты:
Учетные записи пользователей
Учетные записи групп безопасности:
Локальные группы
Глобальные группы
Доменные локальные группы (только для доменов Windows 2000 в основном режиме)
Универсальные группы (только для доменов Windows 2000 в основном режиме)
ClonePrincipal не поддерживает следующие объекты:
Учетные записи компьютеров (клиентов или контроллеров домена)
Междоменные доверительные отношения
Учетные записи с хорошо известными SID (например, локальные группы Administrators или Users)
Компоненты ClonePrincipal
ClonePrincipal состоит из следующих файлов:
Clonepr.dll — COM-сервер, реализующий все функции.
Clonepr.vbs — сценарий, клонирующий отдельного субъекта безопасности (пользовательскую учетную запись; глобальную, локальную или локальную в домене группу) и при необходимости создающий целевой объект.
Clonelg.vbs — сценарий, клонирующий все имеющиеся в домене локальные группы (за исключением встроенных) или локальные группы домена.
Clonegg.vbs — сценарий, клонирующий все глобальные и универсальные группы, имеющиеся в домене.
Cloneggu.vbs — этот сценарий клонирует всех пользователей и все имеющиеся в домене глобальные группы (т. е. учетные записи пользователей, глобальных и универсальных групп), включая хорошо известные глобальные группы, например, Domain Admins, Domain Users и Domain Guests.
SIDHist.vbs — этот сценарий копирует (добавляет) значение атрибута objectSid исходного субъекта безопасности в атрибут sIDHistory целевого субъекта безопасности.
Использование всех этих сценариев описывается ниже.
Конфигурирование среды
Одним из самых важных требований для нормальной работы ClonePrincipal (а также утилиты ADMT) является правильная конфигурация исходного и целевого доменов. Если вы собираетесь применять утилиту ADMT, см. также ниже дополнительные требования. Если хотя бы одно из перечисленных требований не будет выполнено, ClonePrincipal работать не будет.
Сначала некоторые общие соображения:
Если ClonePrincipal устанавливается отдельно от пакета Windows 2000 Support Tools, проверьте, что файл Clonepr.dll зарегистрирован на целевом контроллере домена.
Все сценарии ClonePrincipal должны выполняться на контроллере, владеющем FSMO-ролью PDC Emulator в целевом домене.
Вы должны зарегистрироваться на контроллере домена как член группы Domain Admins целевого домена.
Установки реестра (TcpipCIientSupport)
На контроллере домена, выполняющем роль PDC в домене Windows NT 4.0 (с установленным пакетом Service Pack 4 или поздней версии) или являющемся владельцем роли PDC Emulator в домене Windows 2000, создайте в указанном ниже разделе реестра параметр TcpipCIientSupport, имеющий тип REG_DWORD и значение, равное 0x1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
Перезагрузите этот контроллер домена.
Параметры аудита
В обоих доменах — исходном и целевом — нужно разрешить аудит. Для этого воспользуйтесь описанными ниже процедурами.
Для доменов Windows 2000 (исходного и целевого):
Откройте объект GPO для подразделения Domain Controller. (Можно использовать оснастку Domain Controller Security Policy или Active Directory Users and Computers.)
Откройте узел Security Settings | Local Policies | Audit Policy (Параметры безопасности | Локальные политики ] Политики аудита).
Дважды щелкните на политике Audit account management (Аудит управления учетными записями) и установите флажки Success (успех) и Failure (отказ). Нажмите кнопку ОК. Пример получаемого экрана показан на рис. 10.3. Обновите политику компьютера или дождитесь, пока изменения не начнут действовать.
-1Р|х-1Р|х3# Group Policy
-1Р|х
-1Р|х
tin:^tioh<';g3i»irsL^Bei'ItiitSM^ Default Domain Controllers Policy 5 "• Si Computer Configuration* _J Software Settings'-' ' I Windows Settings: #3 Scripts (Startup/Shu 6'_^) Security Settings+ J^ Account Policies=g Local Policies.+ ^ Audit Policy+ =jj User Rights.' to-^ Security Opt®r Event Log4 3 Restricted Group+ 9 System Services* 3 Registry+ . Э File System й* I Public Kev Policies# йз Д IP Security Polict“- ♦ i I Administrative Template: 66 .- 1$ User Configuration:±H I Software Settingstin:^tioh<';g3i»irsL^Bei'ItiitSM^ Default Domain Controllers Policy 5 "• Si Computer Configuration* _J Software Settings'-' ' I Windows Settings: #3 Scripts (Startup/Shu 6'_^) Security Settings+ J^ Account Policies=g Local Policies.+ ^ Audit Policy+ =jj User Rights.' to-^ Security Opt®r Event Log4 3 Restricted Group+ 9 System Services* 3 Registry+ . Э File System й* I Public Kev Policies# йз Д IP Security Polict“- ♦ i I Administrative Template: 66 .- 1$ User Configuration:±H I Software Settingsi§S]Audit account logon eventsi§S]Audit account logon events^MudiE account management^MudiE account managementяЯ Audit directory service access53 Audit logon events>53 Audit object access-53 Audit policy change$53 Audit privilege use$53 Audit process tracking1дУДAudit system eventsяЯ Audit directory service access53 Audit logon events>53 Audit object access-53 Audit policy change$53 Audit privilege use$53 Audit process tracking1дУДAudit system events| CornpUter Setting No auditing| CornpUter Setting No auditingSuccess, FailureSuccess, FailureNo auditing No auditing No auditing No auditing No auditing No auditing No auditingNo auditing No auditing No auditing No auditing No auditing No auditing No auditing
tin:^tioh<';g3i»i
rsL^Bei'ItiitSM
^ Default Domain Controllers Policy 5 "• Si Computer Configuration
* _J Software Settings
'-' ' I Windows Settings
: #3 Scripts (Startup/Shu 6'
_^) Security Settings
+ J^ Account Policies
=g Local Policies
.+ ^ Audit Policy
+ =jj User Rights.
' to-^ Security Opt®
r Event Log
4 3 Restricted Group
+ 9 System Services
* 3 Registry
+ . Э File System й
* I Public Kev Policies# йз Д IP Security Polict“- ♦ i I Administrative Template: 66 .- 1$ User Configuration
:±H I Software Settings
tin:^tioh<';g3i»i
rsL^Bei'ItiitSM
^ Default Domain Controllers Policy 5 "• Si Computer Configuration
* _J Software Settings
'-' ' I Windows Settings
: #3 Scripts (Startup/Shu 6'
_^) Security Settings
+ J^ Account Policies
=g Local Policies
.+ ^ Audit Policy
+ =jj User Rights.
' to-^ Security Opt®
r Event Log
4 3 Restricted Group
+ 9 System Services
* 3 Registry
+ . Э File System й
* I Public Kev Policies# йз Д IP Security Polict“- ♦ i I Administrative Template: 66 .- 1$ User Configuration
:±H I Software Settings
i§S]Audit account logon events
i§S]Audit account logon events
^MudiE account management
^MudiE account management
яЯ Audit directory service access
53 Audit logon events
>53 Audit object access
-53 Audit policy change
$53 Audit privilege use
$53 Audit process tracking
1дУДAudit system events
яЯ Audit directory service access
53 Audit logon events
>53 Audit object access
-53 Audit policy change
$53 Audit privilege use
$53 Audit process tracking
1дУДAudit system events
| CornpUter Setting No auditing
| CornpUter Setting No auditing
Success, Failure
Success, Failure
No auditing No auditing No auditing No auditing No auditing No auditing No auditing
No auditing No auditing No auditing No auditing No auditing No auditing No auditing
Рис. 10.3. Разрешение аудита на контроллерах домена под управлением Windows 2000
Для исходного домена Windows NT 4.0:
В окне утилиты User Manager for Domains выберите команду Audit в меню Policies.
Выберите переключатель Audit These Events и установите флажки Success и Failure для группы User and Group Management (рис. 10.4).
Audit Policy
Domain: NT4D0M<~ £o Not Audit■■ (• Audit These Events:. -Logon and Logoff file and Object Access Use of User Rights ■ User and Group Management Security Policy Changes Bestart, Shutdown, and System process TrackingDomain: NT4D0M<~ £o Not Audit■■ (• Audit These Events:. -Logon and Logoff file and Object Access Use of User Rights ■ User and Group Management Security Policy Changes Bestart, Shutdown, and System process TrackingI OKCancelSuccess Failure i HelpГ ’ Г II OKCancelSuccess Failure i HelpГ ’ Г IРис. 10.4. Разрешение аудита на контроллере домена под управлением Windows NT 4.0Рис. 10.4. Разрешение аудита на контроллере домена под управлением Windows NT 4.0
Domain: NT4D0M
<~ £o Not Audit
■■ (• Audit These Events:. -
Logon and Logoff file and Object Access Use of User Rights ■ User and Group Management Security Policy Changes Bestart, Shutdown, and System process Tracking
Domain: NT4D0M
<~ £o Not Audit
■■ (• Audit These Events:. -
Logon and Logoff file and Object Access Use of User Rights ■ User and Group Management Security Policy Changes Bestart, Shutdown, and System process Tracking
I OK
Cancel
Success Failure i HelpГ ’ Г I
I OK
Cancel
Success Failure i HelpГ ’ Г I
Рис. 10.4. Разрешение аудита на контроллере домена под управлением Windows NT 4.0
Рис. 10.4. Разрешение аудита на контроллере домена под управлением Windows NT 4.0
Создание группы для аудита
В исходном домене (Windows NT 4.0 или Windows 2000) необходимо создать специальную группу, которая будет использоваться для аудита операций клонирования. Имя группы образуется из NetBIOS- (pre-Windows 2000) имени исходного домена, к которому добавляются три символа доллара, например, NT4DOM$$$.
Доверительные отношения
Установите двунаправленные доверительные отношения между исходным и целевым доменами (т. е. исходный домен должен доверять целевому, и наоборот). (Подробно процедура описана в разделе "Установка доверительных отношений" в главе 3 "Развертывание Active Directory"?) Перед этим проверьте, что в вашей конфигурации правильно выполняется разрешение имен. Вы должны успешно "пинговать" целевой контроллер домена с исходного контроллера, используя при этом NetBIOS- (pre-Windows 2000) имя контроллера, и наоборот.
Конфигурирование групп
Для успешного функционирования ClonePrincipal нужно, чтобы вы имели соответствующие административные права; для этого добавьте глобальную группу Domain Admins из целевого домена в локальную группу Administrators в исходном домене.
Дополнительные требования для утилиты ADMT
Помимо общих соображений и необходимых действий, описанных выше, нужно также выполнить следующие операции:
□ Добавьте глобальную группу Domain Admins из исходного домена в локальную группу Administrators в целевом домене.
□ Добавьте глобальную группу Domain Admins из исходного домена в локальную группу Administrators на каждом переносимом компьютере. Это относится и к каждому компьютеру, для которого выполняется трансляция параметров безопасности (security translation).
Проверьте наличие административных общих ресурсов (administrative shares) на целевом контроллере домена, а также на каждом переносимом компьютере.
Клонирование пользователей
Даже если исходный домен является доменом Windows 2000, ClonePrincipal не обрабатывает пользовательские атрибуты, реализованные в Active Directory. Из исходного объекта в целевой копируются только следующие традиционные для Windows NT 4.0 свойства:
Общие:
Full name (Полное имя)
Description (Описание)
Флаги учетной записи (например, Account Expires, Logon Hours, Logon To и др.)
□ Свойства профиля:
Профиль пользователя (Profile path и Logon script)
Домашняя папка (Local path и параметры Connect)
Свойства удаленного доступа
Свойства службы файлов и печати для серверов NetWare
Свойства сервера терминалов (Terminal Server)
У существующей или клонированной (вновь созданной) учетной записи устанавливаются флаги:
User must change password at next logon (Потребовать смену пароля при следующем входе в систему)
Account is disabled (Отключить учетную запись)
Следующие два флага сбрасываются:
User cannot change password (Запретить смену пароля пользователем)
Password never expires (Срок действия пароля не ограничен)
Устанавливается пустой (null) пароль пользователя.
По умолчанию клонированный пользователь становится членом группы Domain Users. Пользователь сохраняет членство в группах целевого домена, если эти глобальные и/или универсальные группы являются клонами групп исходного домена, членами которых был исходный пользователь. То есть если одновременно копировались учетные записи пользователей и глобальных (универсальных) групп (с помощью сценария Cloneggu.vbs), то эти группы сохраняют всех своих членов (при условии, что все эти члены клонируются).
Клонирование групп
При клонировании глобальных групп нужно учитывать тот факт, что сценарии Cloneggu.vbs и Clonegg.vbs копируют учетные записи с хорошо известными RID и они завершаются с ошибкой, если вы укажете целевой контейнер (параметр /dstou), отличный от стандартного контейнера Users, в котором располагаются эти учетные записи. Например, выполнение следующей команды заканчивается фатальной ошибкой:
cloneggu /srcDC:nt4dc2 /srcDom:nt4dom
Ч> /dstOC:w2kdc4 /dstDom:w2k.dom /dstOU:OU=Staff, DC=w2k, DC=dom
Имеются три пути решения проблемы:
Указать в качестве целевого подразделения контейнер Users, например, /dstOU:CN=Users,DC=w2k,DC=dom.
В целевом домене переместить все учетные записи с хорошо известными RID (Administrator, Guest, Domain Admins и т. д.) в целевое подразделение.
Не клонировать (т. е. игнорировать) учетные записи с хорошо известными RID. Откройте сценарий Cloneggu.vbs или Clonegg.vbs в текстовом редакторе, найдите приведенный ниже фрагмент кода и "раскомментируйте" указанные операторы:
'То Stop Cloning Well Known Sids Uncomment 4 lines below
' if HasWellKnownRid(sidString) then
' ShouldCloneObject = False
' exit function
' end if
( Примечание )
Скорее всего, в листинге опечатка, и имеются в виду, все-таки, объекты с хорошо известными RID.
В этом случае целевые "хорошо известные" учетные записи не будут иметь доступа к тем сетевым ресурсам, которые были доступны для аналогичных учетных записей в исходном домене (поскольку атрибут sIDHistory этих целевых объектов не будет обновлен). Вы можете вручную обновить ACL-списки соответствующих общих ресурсов или скопировать SID-идентификаторы исходных учетных записей в целевые объекты с помощью сценария SIDHist.vbs.
Примеры использования ClonePrincipal
Рассмотрим несколько примеров использования сценариев ClonePrincipal. Все параметры сценариев ClonePrincipal являются обязательными. Чтобы увидеть список параметров для любого сценария, введите в командной строке имя сценария и знак вопроса.
Клонирование идентификаторов SID (SIDHist.vbs)
Обычно сценарий SIDHist.vbs запускается из других сценариев ClonePrincipal. Однако в некоторых специфических случаях его можно выполнить и вручную. Например, вы хотите, чтобы группа Domain Admins в целевом домене имела права доступа к тем же сетевым ресурсам, которые доступны аналогичной группе в исходном домене.
( Примечание j
Все изменения атрибута sIDHistory можно наблюдать с помощью утилиты Ldp.exe. Утилита AdsVw.exe позволяет просматривать (в шестнадцатеричном байтовом формате) атрибут objectSid на исходном контроллере домена под управлением Windows NT. Чтобы увидеть содержимое этого атрибута в том же формате на целевом контроллере домена, можно также использовать оснастку ADSI Edit.
Следующая команда добавляет содержимое атрибута objectSid пользователя nt4userl из домена nt4dom в атрибут sIDHistory пользователя w2kuserl, относящегося к домену w2k.dom:
C:\>sidhist /srcDC:nt4dc2 /srcDom:nt4dom /srcSAM:nt4userl
4> /dstDC:w2kdc4 /dstDom:w2k.dom /dstSAM:w2kuserl
В результате этой операции пользователь w2kuserl будет иметь те же права доступа к ресурсам, что и пользователь nt4userl.
Подобную операцию можно выполнить только для одной учетной записи, выбранной в целевом домене. В противном случае сценарий завершится со следующей ошибкой:
Connected
Error 0x8007215В occurred.
Error Description: Failed to add the source SID to the destination object's SID history. The error was: "The source object's SID already exists in destination forest."
(Описание ошибки: He могу добавить исходный SID в историю SID- идентификаторов целевого объекта. Возникла ошибка: "SID исходного объекта уже существует в целевом лесе.")
Error HelpContext: О
Error HelpFile:
Error Source: DSUtils.ClonePrincipal.1
При успешном выполнении сценария на экране появляется минимум информации:
C:\>sidhist /srcDC:nt4dc2 /srcDom:nt4dom /srcSAM:nt4userl
^ /dstDC:w2kdc4 /dstDom:w2k.dom /dstSAM:w2kuserl
Connected
Success
После выполнения приведенной выше команды на целевом контроллере домена в журнале безопасности (Security Log) появляется такое сообщение:
Event Type:Success Audit
Event Source: Security
Event Category:Account Management
Event ID:669
Computer:W2KDC4
Description:
Add SID History:
Source Account Name: NT4DOM\nt4userl
Source Account ID: W2KDOM\w2kuserl
Target Account Name: w2kuserl
Target Domain:W2KD0M
Target Account ID: W2KDOM\w2kuserl
Caller User Name:administrator
Caller Domain:W2KD0M
Caller Logon ID:(0x0,0xl93AE)
Privileges:
Клонирование пользователя (ClonePr.vbs)
Приведенная ниже команда клонирует пользователя из домена Windows NT 4.0 в домен Windows 2000, где объект пользователя помещается в указанное подразделение. Это подразделение (контейнер) уже должно существовать перед тем, как выполняется данный сценарий. (Обратите внимание на то, что объект пользователя уже может существовать на целевом контроллере домена.)
C:\>clonepr /srcDC:nt4dc2 /srcDom:nt4dom /srcSAM:nt4userl
^ /dstDC:w2kdc4 /dstDom:w2k.dom /dstSAM:ntUserl
/dstDN:CN=userl,OU=Staff,DC=w2k,DC=dom
Connected to source and destination domain controllers
Bound to source User nt4userl
Destination object ntUserl not found (by SAM name) path used:
WinNT://w2k.dom/w2kdc4/ntUserl
Destination DN found
Setting properties for target user CN=userl
Downlevel properties set.
Fixing group memberships for user CN=userl
Found global group WinNT://nt4dom/nt4dc2/Domain Users
Skipping WinNT:Z/nt4dom/nt4dc2/Domain Users — not cloned yet
User's Group memberships restored.
User changes commited.
Adding SID for source User nt4userl to SID history of target user CN=userl
SID history set successfully. nt4userl cloned successfully. 1 object(s) cloned
В журнале безопасности на целевом контроллере домена регистрируются два события: Event ID 642 (User Account Changed — изменение учетной записи
пользователя) и Event ID 669 (Add SID History — запись в историю SID). Таким образом, вы можете отслеживать все операции клонирования, выполняемые в домене.
Поиск групп определенного типа
При клонировании групп для мониторинга процесса миграции вам может понадобиться список уже скопированных групп. Существует способ, позволяющий найти все группы заданного типа, независимо от их расположения в дереве доменных объектов. ’
Для этого можно выполнить поиск с применением протокола LDAP, указав в фильтре поиска правило сравнения LDAP_MATCHING_RULE_BIT_AND. (Если вам нужна подробная информация, осуществите поиск по строке "query filter" в справочном файле пакета Active Directory SDK.) Например, следующая команда отображает свойство ADsPath всех универсальных групп, существующих в домене:
search "LDAP://DC=w2 k,DC=dom"
/С:"groupType:1.2.840.113556.1.4.803:=2147483656" /Sisubtree
Этот фильтр поиска можно использовать и в других LDAP-совместимых инструментах, например в утилите Ldp.exe. Ниже в таблице перечислены значения, подставляемые в фильтр, для различных типов групп. (Используются только десятичные значения. Обратите также внимание на знак "минус" в последней строке таблицы.)
Тип группы
Шестнадцатеричное значение
Десятичное значение фильтра
Встроенные и локальные группы домена
0x80000004
2147483652
Глобальные
0x80000002
2147483650
Универсальные
0x80000008
2147483656
Только встроенные
OxZFFFFFFB
-2147483643
ГЛАВА 1 1
Средства управления безопасностью
В этой главе рассматриваются инструменты, позволяющие управлять параметрами безопасности Active Directory и в первую очередь — разрешениями на доступ к объектам каталога. С помощью этих инструментов администратор может выполнять следующие задачи:
Просматривать и/или модифицировать разрешения (списки Access Control List, ACL) на доступ к объектам каталога (утилиты ACLDiag и DsACLs), а также проверять результаты делегирования административных прав.
Проверять наследование списков ACL на разных уровнях иерархии объектов каталога и репликацию ACL-списков между контроллерами домена (утилита SDCheck).
Проверять аутентификацию Kerberos (утилиты KerbTray и KList).
ACL Diagnostics (ACLDiag.exe) (ST)
Чаще всего администратор просматривает и модифицирует параметры безопасности (списки ACL) объектов Active Directory, пользуясь вкладкой Security (Безопасность) в окне свойств (Properties) объекта. Это окно можно открыть из соответствующей оснастки. В некоторых случаях, однако, ACL- списки удобнее анализировать как обычный текст. Утилита ACLDiag позволяет просматривать всю информацию об установках безопасности выбранного объекта каталога. Эту утилиту может запускать любой пользователь, однако отображение информации зависит от тех прав, которые имеет данный пользователь по отношению к тому или иному объекту каталога.
Ниже использование опций утилиты ACLDiag рассматривается на примерах. (Возможно, вы предпочтете пользоваться утилитой DsACLs, которая описывается далее в этой главе; хотя она не реализует некоторые возможности
К) Зак. I 096
утилиты ACLDiag, зато позволяет модифицировать списки ACL, и к тому же надежнее работает.)
( Примечание )
Нужно заметить, что для выполнения тестов утилиты ACLDiag требуется довольно много времени, особенно если используется параметр /geteffective; при этом утилита генерирует очень много сообщений, и их рекомендуется перенаправлять в файл.
Просмотр всех разрешений
Утилита ACLDiag позволяет вывести на экран (в нормальном текстовом формате или с разделителями — символами табуляции) все непосредственно определенные или унаследованные разрешения на доступ к объекту, а также параметры аудита. Выводимая информация структурируется таким образом, чтобы администратору было проще ее анализировать. По сути, данная утилита выполняет два теста: Security Diagnosis (Диагностика безопасности; этот тест можно пропустить, указав параметр /skip) и Effective Rights Diagnosis (Диагностика действующих прав; см. ниже). Давайте для примера посмотрим, в каком виде утилита ACLDiag отображает разрешения на объект типа "подразделение". (Для наглядности некоторые заголовки выделены полужирным.)
С:\>acldiag "OU=Staff,DC=w2k,DC=dom"
Security Diagnosis for OU=Staff,DC=w2k,DC=dom Description
Owner: W2KD0M\Domain Admins
Permissions effective on the object: [Действующие разрешения на доступ к о&ьекту]
Allow NT AUTHORITY\Authenticated Users Read all properties
Allow NT AUTHORITY\Authenticated Users List contents
Allow NT AUTHORITY\Authenticated Users List object
Allow W2KD0M\Domain AdminsCreate all subobjects
Allow W2KD0M\Domain AdminsDelete all subobjects
Permissions inherited by subobjects: [Разрешения, наследуемые дочерними о&ьектами]
Inherit to All Subobjects:
Allow BUILTIN\AdministratorsCreate all subobjects
(Inherited permission from DC=w2k,DC=dom) Allow BUILTIN\AdministratorsRead all properties
(Inherited permission from DC=w2k, DC=dom)
Inherit to Group objects only:
Inherit to User objects only:
Inherit to Computer objects only:
Auditing effective on this object: [Действующие параметры аудита для этого объекта]
Audit Successful and Failed Create all subobjects attempts by \Everyone
Audit Successful and Failed Delete all subobjects attempts by \Everyone
Auditing inherited to subobjects: [Параметры аудита, наследуемые дочерними объектами]
Inherit to All Subobjects:
Audit Successful and Failed Create all subobjects attempts by \Everyone
Audit Successful and Failed Delete all subobjects attempts by \Everyone
Просмотр действующих прав
Чтобы увидеть действующие права для всех или некоторых пользователей или групп, используйте параметр /geteffective. Например, следующая команда перечисляет права на доступ к указанному подразделению для всех пользователей и групп. Если некоторый пользователь или группа не имеют никаких прав на доступ к объекту, соответствующий раздел в результатах будет пустым. Как вы можете видеть, информация весьма детализирована — вплоть до разрешений на отдельные атрибуты (properties).
C:\>acldiag "OU=Staff,DC=w2k,DC=dom" /geteffective:* /skip
Security Diagnosis for OU=Staff,DC=w2k,DC=dom
Effective Rights Diagnosis
W2KDOM\Domain Admins:
Can Modify Membership (via W2KD0M\Domain Admins membership)
All control accesses for class Organizational Unit (via W2KD0M\Domain Admins membership)
Can List object (via W2KD0M\Domain Admins membership)
Can read the following properties
Read, flags (via w2KD0M\Domain Admins membership)
Read replUpToDateVector (via W2KDOM\Domain Admins membership)
Can write the following properties
Write subClassOf (via W2KD0M\Domain Admins membership)
Write mayContain (via W2KDOM\Domain Admins membership)
jsmith@w2k.dom:
Staff-Adm@w2k.dom:
W2KD0M\Enterprise Admins:
Can Modify Membership
All control accesses for class Organizational Unit
Can List object
Can List contents
Can read the following properties
Read flags
Read replUpToDateVector
Can write the following properties
Write subClassOf
Write mayContain
Проверка делегирования управления
С помощью утилиты ACLDiag администратор может проверить, запускался ли для некоторого объекта Мастер делегирования управления (Delegation of Control Wizard) и была ли успешной операция делегирования управления. Рассмотрим пример. Два пользователя — jsmith@w2k.dom и Staff-Adm@w2k.dom — получили некоторые административные полномочия в подразделении Staff. (Напомню, что для подразделений определено шесть обычных (common) административных задач.) С помощью приведенной ниже команды легко можно определить, кому были делегированы административные права и что это за права:
C:\>acldiag "OU=Staff,DC=w2k,DC-dom" /chkdeleg /skip
Security Diagnosis for OU=Staff,DC=w2k,DC=dom
Delegation Template Diagnosis:
Create, delete, and manage user accounts allowed to Staff-
Adm@w2k.dom
Status: OK
Applies on this object: YES Inherited from parent: NO
Reset passwords on user accounts allowed to jsmith@w2k.dom Status: OK
Applies on this object: YES Inherited from parent: NO
Read all user information
Status: NOT PRESENT
Create, delete and manage groups allowed to Staff-Adm@w2k.dom
Status: MISCONFIGURED
Applies on this object: YES Inherited from parent: NO
Modify the membership of a group
Status: NOT PRESENT
Manage Group Policy links allowed to Staff-Adm@w2k.dom Status: OK Applies on this object: YES Inherited from parent: NO
Обратите внимание на то, что если общая задача не была делегирована, утилита определяет status как not present (отсутствует). Как вы можете видеть, статус одной задачи определен как misconfigured (сконфигурирован неправильно). (В данной ситуации был удален один из элементов АСЕ (Access Control Entry), входящих в состав данной административной задачи.) Хотя в документации по ACLDiag и утверждается, что эту проблему можно устранить с помощью параметра /fixdeieg, на самом деле это не удается, и вы должны снова запустить мастер делегирования управления. Можно также запустить утилиту DsACLs.exe с параметром /s (см. ниже), при этом все разрешения на доступ к объекту будут установлены в соответствии с исходными (defaults) разрешениями, определенными в схеме каталога. (Будьте осторожны с этим параметром! См. ниже раздел "Восстановление параметров безопасности".)
Сравнение существующих разрешений с исходными (default)
Чтобы проверить, сохранил ли объект все разрешения, которые были установлены при его создании, используйте команду, подобную следующей:
C:\>acldiag "OU=Staff,DC=w2k,DC=dom" /schema /skip
Security Diagnosis for OU=Staff,DC=w2k,DC=dom
Schema Defaults Diagnosis
Schema defaults: Present
Obtained: At CREATION
В данном случае утилита сообщает, что разрешения, определенные для объекта, не менялись с момента его создания. Если какие-то разрешения были удалены, утилита сообщает:
Schema defaults: Partial [Частичные]
Чтобы увидеть исходные разрешения (schema defaults) для некоторого объекта каталога, нужно обратиться к разделу схемы, например (для объекта типа Organizational- Unit):
С:\>acldiag "CN=Organizational-Unit,CN=Schema,CN=Configuration, DC=w2k,DC=dom"
DsACLs.exe (ST)
В отличие от ACLDiag, утилита DsACLs позволяет как просматривать, так и модифицировать списки ACL для объектов каталога, т. е. выполнять все те операции, которые имеются на вкладке Security в окне свойств объекта. (Для объектов каталога утилита DsACLs выполняет те же функции, что и утилита CACLs.exe для объектов файловой системы.) Процедура редактирования дескрипторов безопасности требует от администратора хорошего понимания модели безопасности объектов Active Directory, в особенности механизма наследования разрешений.
Утилита DsACLs хорошо документирована, поэтому я рассмотрю лишь несколько примеров.
( Примечание )
Для параметров утилиты DsACLs имеет значение регистр символов, и все буквы должны задаваться в верхнем регистре.
Просмотр параметров безопасности
Вы можете проанализировать результаты выполнения приведенной ниже команды и сами решить, какой инструмент — DsACLs или ACLDiag — больше подходит вам для просмотра дескрипторов безопасности объектов каталога. (Первая из двух утилит работает быстрее, однако она генерирует меньше информации по сравнению со второй утилитой. Например, в результатах, полученных от обеих команд, обратите внимание на строки, относящиеся к группе Domain Admins. Возможно, вы получите более ясную картину, если сами выберете объект и сравните полные результаты выполнения утилит.) Если в команде указан параметр /а, помимо всего отображается информация о владельце объекта и параметрах аудита. В списке параметров аудита "all" означает, что аудит выполняется и для успешных, и для неудачных обращений к объекту.
C:\>dsacls OU=Staff,DC=w2k, DC=dom /А
Owner: W2KD0M\Domain Admins
Group: W2KD0M\Domain Users
Audit list:
Effective Permissions on this object are:
All Everyone SPECIAL ACCESS clnherited from parent> DELETE WRITE PERMISSIONS
Permissions inherited to subobjects are:
Inherited to all subobjects
All Everyone SPECIAL ACCESS <Inherited from parent>
DELETE
WRITE PERMISSIONS
Access list:
Effective Permissions on this object are:
SPECIAL ACCESS READ PERMISSONS LIST CONTENTS READ PROPERTY FULL CONTROL FULL CONTROL SPECIAL ACCESSDELETEREAD PERMISSONS WRITE PERMISSIONSSPECIAL ACCESS READ PERMISSONS LIST CONTENTS READ PROPERTY FULL CONTROL FULL CONTROL SPECIAL ACCESSDELETEREAD PERMISSONS WRITE PERMISSIONSAllow NT AUTHORITY\Authenticated Users
SPECIAL ACCESS READ PERMISSONS LIST CONTENTS READ PROPERTY FULL CONTROL FULL CONTROL SPECIAL ACCESS
DELETE
READ PERMISSONS WRITE PERMISSIONS
SPECIAL ACCESS READ PERMISSONS LIST CONTENTS READ PROPERTY FULL CONTROL FULL CONTROL SPECIAL ACCESS
DELETE
READ PERMISSONS WRITE PERMISSIONS
Allow W2KD0M\Domain Admins Allow NT AUTHORITY'S SYSTEM Allow BUILTIN\Administrators <Inherited from parent>
Permissions inherited to subobjects are:
Inherited to all subobjects
Allow BUILTIN\AdministratorsSPECIAL ACCESS
<Inherited from parent>
DELETE
READ PERMISSONS
Inherited to user
Inherited to group
The command completed successfully
Предоставление и удаление разрешений
Рассмотрим два примера того, как можно модифицировать дескрипторы безопасности. Первая команда предоставляет пользователю jsmith@w2k.doni право Generic Read (разрешения List Contents, Read All Properties и Read Permissions) для подразделения Staff:
dsacls OU=Staff,DC=w2k,DC=dom /G jsmith@w2k.dom:GR
Результат выполнения этой операции можно проверить всеми возможными (в том числе и описанными в этой главе) средствами.
Вторая команда запрещает пользователю читать два атрибута этого подразделения:
dsacls OU=Staff,DC=w2k, DC=dom /D jsmith@w2k.dom:RP;gPLink 'b jsmith@w2k.dom:RP;gPOptions
Внимание!
Имена атрибутов в последней команде чувствительны к регистру символов. В одной команде можно указать любое допустимое число атрибутов.
Восстановление параметров безопасности
По разным причинам у вас может возникнуть необходимость возвратить установки безопасности для некоторого объекта в их начальное состояние. Умолчания для некоторого объектного класса определяются в схеме Active Directory. (Кроме того, на объект распространяются параметры, унаследованные от родительских объектов.) Например, следующая команда позволяет восстановить исходные установки (умолчания) для указанного подразделения:
C:\>dsacls OU=Staff,DC=w2k,DC=dom /S
(Можно также добавить к команде параметр /т и восстановить умолчания для всего поддерева объектов.)
Будьте осторожны! Эта команда удаляет параметры аудита для указанного объекта. При выполнении команды
С:\>dsacls OU=Staff,DC=w2k,DC=dom /А
вы получите следующее сообщение:
Audit list:
(This object is protected from inheriting permissions from the parent} THERE ARE NO ACCESS CONTROL ENTRIES
(Список параметров аудита:
Этот объект защищен от наследования разрешений от родительского объекта ЭЛЕМЕНТЫ УПРАВЛЕНИЯ ДОСТУПОМ ОТСУТСТВУЮТ)
Чтобы восстановить исходные параметры аудита, откройте окно свойств объекта (например, используя оснастки Active Directory Users and Computers или ADSI Edit), перейдите на вкладку Security и нажмите кнопку Advanced (Дополнительно). На вкладке Auditing (Аудит) в окне Access Control Settings (Параметры управления доступом) установите флажок Allow inheritable auditing entries from parent to propagate to this object (Переносить наследуемый от родительского объекта аудит на этот объект) и нажмите кнопку Apply (Применить). В окне с предупреждением нажмите ОК и закройте все открытые ранее окна. Если операция выполнится успешно, команда acldiag <objectName> /schema /skip сообщит следующее:
Schema Defaults Diagnosis
Schema defaults: Present
Obtained: At CREATION
L < Внимание! j
Если вы не восстановите параметры аудита после выполнения команды dsacls /з, утилита ACLDiag с параметрами /chkdeleg или /schema будет выдавать ошибки.
Security Descriptor Check Utility (SDCheck.exe) (ST)
Утилита командной строки SDCheck в первую очередь нужна администраторам для того, чтобы проверять и просматривать дескрипторы безопасности объектов каталога и, в частности, контролировать, как выполняются следующие операции:
Распространение (propagation) наследуемых ACL-списков для указанного объекта каталога.
Репликация ACL-списков между различными контроллерами домена.
Рассмотрим выполнение перечисленных задач на приведенном ниже примере. Мы будем проверять ACL-списки пользовательского объекта user2@w2k.dom, принадлежащего подразделению, которое является вложенным для других подразделений. (Также в команде необходимо указать конкретный контроллер домена.) В приведенном листинге некоторые строки, а также комментарии, включенные в текст, выделены полужирным.
C:\>sdcheck w2kdc4.w2k.dom user2@w2k.dom
Microsoft(R) Windows (R) 2000 Operating System
Security Descriptor Check Utility — build(2160)
Input: user2@w2k.dom
Object: CN=UserO2,OU=Inside,OU=Staff,DOw2k, DC=dom
Domain: w2 к.dom
Domain: DC=w2k,DC=dom Server: w2kdc4.w2k.dom
*** Warning: No values returned for dSCorePropagationData on
DC=w2k,DC=dom[Это предупреждение, по всей видимости, можно
игнорировать]
Object:CN=UserO2,OU=Inside,OU=Staff,DC=w2k,DC=dom
Classes: top person organizationalPerson user
SD:1124 bytes
Metadata: 12/21/2000 20:21:38 @ w2kdc3.w2k.dom ver: 300002
[Просматривая метаданные, администратор может отслеживать репликацию измененного дескриптора безопасности. Обратите внимание на изменение номера версии и на то, что изменения выполнялись на другом контроллере домена. Для просмотра метаданных репликации можно также использовать команду repadmin /showmeta.]
History:
12/28/2000 01:23:50
flags(0x1)
SD propagation
12/28/2000 02:04:51
flags(0x1)
SD propagation
12/28/2000 02:47:53
flags(0x1)
SD propagation
12/28/2000 03:05:14
flags(0x1)
SD propagation [Распространение
дескриптора безопасности]
Object:OU=Inside,OU=Staff,DC=w2k,DC=dom
Classes: top organizationalunit
SD:536 bytes
Metadata:
History:
12/21/2000 20:11:38
12/28/2000 01:23:50
12/28/2000 02:04:51
12/28/2000 02:47:53
12/28/2000 03:05:14
@ w2kdc4.w2k.dom ver: 300001
flags (0x1) flags(0x1) flags (0x1) flags(0x1)
SD propagation SD propagation SD propagation SD propagation
Object:
OU=Staff,DC=w2k,DC=dom
Classes: top organizationalunit SD:536 bytes
Metadata: 12/28/2000 03:05:14 @ w2kdc4.w2k.dom ver: 300019
History: 12/28/2000 02:04:51 flags(0x1) SD propagation
12/28/2000 02:26:37 flags(0x1) SD propagation 12/28/2000 02:42:04 flags(0x1) SD propagation 12/28/2000 03:05:14 flags(0x1) SD propagation
[Обратите внимание на то, последние строки в истории изменений совпадают для всех трех объектов. Это означает то, что изменение дескриптора безопасности "на уровне" подразделения Staff успешно распространились до уровня пользовательского объекта. Если значения времени различаются, наследование может быть запрещено (заблокировано) и это предположение необходимо проверить.]
Object:DC=w2k,DC=dom
Classes: top domain domainDNS SD:612 bytes
Metadata: 12/22/2000 17:17:35 @ w2kdc4.w2k.dom ver: 400006
Checking ACL inheritance ... [Этот тест покажет обнаруженные ошибки наследования ACL-списков, возникшие на любом уровне.]
Parent: 3 — DC=w2k,DC=dom
Child: 2 - OU=Staff,DC=w2k,DC=dom
Checking ACL inheritance ...
Parent: 2 — OU=Staff,DC=w2k,DC=dom
Child: 1 — OU=Inside,OU=Staff,DC=w2k,DC=dom Checking ACL inheritance ...
Parent: 1 — OU=Inside,OU=Staff, DC=w2k, DC=dom
Child: 0 — CN=UserO2,OU=Inside,OU=Staff,DC=w2k,DC=dom
Приведенные сообщения иллюстрируют успешное выполнение теста.
Чтобы проверить "непрерывность" наследования ACL-списков, используйте параметр -debug. Предположим, что в нашем примере, распространение ACL-списков было заблокировано на уровне подразделения Inside. Это означает, что флажок Allow inheritable permissions from parent to propagate to this object (Переносить наследуемые от родительского объекта разрешения на этот объект) на вкладке Security в окне свойств подразделения Properties был сброшен. Этот факт легко диагностировать с помощью следующей команды:
C:\>sdcheck w2kdc4.w2k.dom user2@w2k.dom -debug
В определенный момент команда выдаст предупреждение:
Checking ACL inheritance ...
Parent: 2 - OU=Staff,DC=w2k, DC=dom
Child: 1 - OU=Inside,OU=Staff,DC=w2k,DC=dom
*** Warning: Child has SE_DACL_PROTECTED set, therefore doesn't inherit — skipping test
(Предупреждение: У дочернего объекта установлен флаг SE_DACL_PROTECTED, поэтому он не наследует разрешений — тест пропускается)
Если бы наследование ACL-списков не было блокировано, этот тест выполнился бы без каких-либо предупреждений.
Kerberos Tray (KerbTray.exe) (RK)
Утилита Kerberos Tray позволяет просмотреть список всех кэшированных билетов Kerberos и их свойства, а также — удалить их. Эта информация может быть полезной при локализации проблем, связанных с аутентификацией
и доступом к сетевым ресурсам. (Если компьютер под управлением Windows 2000 не получил начальный билет на сеанс работы (initial ticket-granting- ticket, TGT) от Центра распространения ключей Kerberos (Kerberos Distribution Center, KCC) в процессе первой регистрации пользователя в домене, или же если истек срок действия кэшированных билетов и они не были обновлены, компьютер не сможет получить доступ к общим сетевым ресурсам.)
Утилита KerbTray сворачивается после запуска, и ее значок можно найти на панели задач (в правом нижнем углу экрана). Если поместить курсор мыши на этот значок, отображается время, через которое истекает срок действия начального TGT (рис. 11.1).
Рис. 11.1. Утилита Kerberos Tray отображает время, оставшееся до момента окончания срока действия начального TGT (слева); контекстное меню утилиты (справа) позволяет выбрать выполняемую операцию
Если дважды щелкнуть на этом значке или выбрать команду List Tickets (Список билетов) в его контекстном меню, то появится главное окно утилиты (рис. 11.2). В нем отображаются все кэшированные билеты Kerberos, полученные в момент первой регистрации пользователя в домене и после него. Команда Purge Tickets (Удалить билеты) очищает весь кэш билетов (в отличие от этого, утилита Kerberos List позволяет удалять билеты индивидуально). Перед очисткой кэша не выдается никаких предупреждений, поэтому будьте внимательны! Если кэш оказывается пустым, доступ к сетевым ресурсам может быть закрыт, и вам потребуется заново зарегистрироваться в домене.
( Примечание
Окно утилиты не обновляется. Поэтому если вы полагаете, что могли появиться новые билеты (например, при подключении к новым ресурсам или службам), то закройте окно и откройте снова.
Рассмотрим основные свойства билетов, отображаемые утилитой KerbTray.
Поле Client Principal содержит имя текущей зарегистрированной учетной записи. Если кэш билетов пуст, в этом поле отображается строка "No network credentials" (Нет сетевых учетных данных).
Все билеты, полученные с момента регистрации, перечислены в прокручиваемом окне. Свойства выбранного билета отображаются ниже, на вкладках.
ххkerberas Tickets ‘
х
х
Client Principal Admini$trator@W2k.D6M
W2K.D0M
krbtgt/SUBD0M.W2K.D0M krbtgb^SKDOM
kibtgt/W2K DOM
LDAP/w2kdc4. w2k. donVw2k. dom
■ W2KDC2$ wrnmt
Service Principal
rkrbtgt/v/2K.DOM@W2K.DOM
Names | Times ] Flags ] Encryption type-1
Client NameClient NameAdrnini$trator@W2K.DOMAdrnini$trator@W2K.DOMService NameService Namekrbtgt/W2K D0M@W2K.D0Mkrbtgt/W2K D0M@W2K.D0MTarget NameTarget Name^btgt/W2KDOM@W2K DOM^btgt/W2KDOM@W2K DOM
Client Name
Client Name
Adrnini$trator@W2K.DOM
Adrnini$trator@W2K.DOM
Service Name
Service Name
krbtgt/W2K D0M@W2K.D0M
krbtgt/W2K D0M@W2K.D0M
Target Name
Target Name
^btgt/W2KDOM@W2K DOM
^btgt/W2KDOM@W2K DOM
Рис. 11.2. В этом окне
вы можете видеть список кэшированных билетов и их свойства
Строка, расположенная ниже прокручиваемого списка, содержит имя субъекта безопасности (security principal) для выбранного билета. Если время действия билета истекло, выводится строка "Expired" (Срок истек) и на вкладках не отображается никакой информации.
Вкладка Names (Имена) содержит:
Client Name (Имя клиента) — клиент, запросивший билет. В большинстве случаев (при доступе к ресурсам из того же домена) это имя совпадает с именем, показанном в поле Client Principal.
Service Name (Имя службы) — основное имя службы. Это имя хранится в атрибуте samAccountName объекта каталога, представляющего учетную запись этой службы.
Target Name (Имя целевого объекта) — одно из имен службы, содержащихся в атрибуте servicePrincipalName объекта каталога, представляющего компьютер (данный атрибут может иметь множество значений). Это имя той службы, для которой получен данный билет.
Время получения билета (Start time) и время окончания действия билета (End time) показаны на вкладке Time. Для интерпретации значений, представленных на вкладке Flags (Флаги), требуется более глубокое по-
нимание основ протокола Kerberos — это отдельная тема для обсуждения. Флаг Initial установлен только для того билета, который был получен без TGT.
Kerberos List (KList.exe) (RK)
Возможности этой утилиты командной строки практически совпадают с возможностями описанной выше утилиты КегЬТгау. Утилита KList выполняет следующие команды:
kiist tgt — отображает начальный TGT (initial TGT).
kiist tickets — выдает список всех кэшированных билетов (см. пример ниже).
kiist purge — позволяет в диалоговом режиме удалить некоторый билет. Ниже показан пример такого диалога:
C:\>klist purge
Cached Tickets: (4) [Кэшированные билеты]
Server: krbtgt/SUBDOM.W2K.DOM@W2K.DOM
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT) End Time: 12/18/2000 2:32:53 Renew Time: 12/24/2000 16:32:53
Purge? (y/n) : у [Удалить?]
Deleting ticket:
ServerName = krbtgt/SUBDOM.W2K.DOM (cb=42)
RealmName = W2K.DOM (cb=14)
Submit Buffer size =84
Ticket purged!
Вы должны ответить у (да) или п (нет) на запрос по каждому билету.
Если у клиента отсутствуют кэшированные билеты, утилита выдает сообщение: "Cached Tickets: (0)".
ГЛАВА 1 2
Работа с групповыми политиками
Только два инструмента — GPResult и GPOTool — могут помочь администратору устранять проблемы, связанные с групповыми политиками. С их помощью можно анализировать результаты воздействия объектов групповых политик (group policy object, GPO) на компьютер и/или пользователя, а также проверять целостность объектов GPO и их репликацию между контроллерами домена.
Group Policy Results (GPResult.exe) (RK)
Утилита GPResult — это очень мощный и в то же время простой инструмент, с помощью которого администратор может тестировать средства конфигурирования систем, реализованные посредством групповых политик (настройка реестра, установка приложений, выделение дисковых квот, перенаправление папок, управление безопасностью IP, назначение сценариев и т. д.). Утилита генерирует отчеты очень больших размеров, изобилующие множеством деталей. (Как правило, отчет следует перенаправлять в файл для последующего анализа; или же нужно использовать конвейер more.) Такое большое количество информации не должно вас пугать, поскольку утилита довольно хорошо документирована, а ее результаты (на самом деле) достаточно просты для анализа.
Утилиту GPResult можно запускать только на том компьютере, на котором пользователь регистрировался в сети. (Нельзя, к примеру запускать GPResult с помощью команды RunAs.) На удаленном компьютере утилиту можно запустить, используя telnet-сессию.
( Примечания )
Если некоторый объект GPO только создан и привязан к некоторому контейнеру, но еще не сконфигурирован (т. е. он имеет номер версии 0:0; см.
ниже описание утилиты GPOTool), он будет "невидимым" для утилиты GPResult, даже если групповые политики, привязанные к этому контейнеру, должны влиять (прямо или косвенно — через наследование) на пользователя или компьютер.
Если установлен регион "Russia", утилита неправильно отображает дату и время в некоторых строках отчета.
Копию утилиты GPResult.exe можно свободно загрузить с веб-узла Microsoft.
Общая структура тестов
Для первого знакомства с утилитой GPResult следует проанализировать приведенное далее краткое описание примерного отчета, генерируемого утилитой. Сначала рассмотрим общую структуру тестов. Утилита GPResult отображает следующую информацию:
Дату и время выполнения теста.
Сведения об информационной системе, в которой тест запускался.
Сведения о пользователе, запустившем тест (эта информация опускается, если указан параметр /с):
Дата и время, когда последний раз применялась политика пользователя.
Параметры (установки), заданные пользователю.
Сведения о компьютере, на котором выполнялся тест (эта информацию опускается, если указан параметр /и):
Дата и время, когда последний раз применялась политика компьютера.
Параметры (установки), заданные компьютеру.
Утилита работает в трех режимах:
Normal — отображается только общая информация. Этот режим можно использовать, чтобы проверить, получил ли пользователь или компьютер установки от интересующего вас объекта GPO, или чтобы определить, какие объекты GPO влияют на пользователя или компьютер.
Verbose — основной режим для просмотра детальной информации (режим подробного протоколирования).
Super-verbose — специальный режим, который используется только для получения следующей информации: двоичных значений параметров реестра, списка приложений, присутствующих в окне Add/Remove Programs (Установка/Удаление программ) (так указано в документации; мне не удалось получить данную информацию), и номера версий обоих компонентов, составляющих объекты GPO (AD-компонента и SYSVOL-kom- понента).
Описание тестов
Теперь рассмотрим пример отчета, который утилита GPResult сгенерировала в режиме подробного протоколирования (verbose mode). Комментарии делят отчет на логические подразделы. Для наглядности некоторые строки и комментарии (в квадратных скобках) выделены полужирным. Итак, запускаем утилиту:
C:\>gpresult /v
Microsoft (R) Windows (R) 2000 Operating System Group Policy Result tool Copyright (C) Microsoft Corp. 1981-1999
Дата и время выполнения теста:
Created on Tuesday, December 12, 2000 at 10:31:11 PM
Сведения о системе:
Operating System Information:
Operating System Type:Domain Controller
Operating System Version:5.0.2195
Terminal Server Mode:None
Общие сведения о пользовательской учетной записи:
User Group Policy results for: [Групповые политики для пользователя:]
CN=Jessica,OU=Sales,OU=Marketing,DC=w2k,DC=dom
Domain Name:W2KDOM
Domain Type:Windows 2000
Site Name:W2K-site
Roaming profile:(None)
Local profile:E:\Documents and Settings\jessica
The user is a member of the following security groups: [Пользователь является членом следующих групп безопасности:]
W2KDOM\Domain Users
\Everyone
BUILTIN\Pre-Windows 2000 Compatible Access
BUILTIN\Users
W2KDOM\W2kUNI \LOCAL
NT AUTHORITY\INTERACTIVE
NT AUTHORITY\Authenticated Users
The user has the following security privileges: [Пользователь имеет следующие привилегии:]
Bypass traverse checking
[Помните о том, что рядовой[Помните о том, что рядовойAdd workstations to domain
[Помните о том, что рядовой
[Помните о том, что рядовой
пользователь по умолчанию имеет право добавить в домен до 10 клиентских компьютеров!]
Время, когда групповые политики последний раз применялись к пользователю (отображается неправильно для региона "Russia"!):
Last time Group Policy was applied: Tuesday, December 12, 2000 at 10:29:10 PM
Group Policy was applied from: w2kdc4.w2k.dom [Применялись групповые
политики с контроллера...]
Ниже подробно перечисляются все установки (сортированные по типу: Registry, Folder Redirection и т. д.), полученные пользователем (в этом примере показаны не все возможные установки). Для каждого объекта GPO отображается следующая информация: понятное (friendly) имя и GUID-имя, а также отличительное имя того контейнера, к которому объект привязан.
MARKETING'S GPORevision Number:MARKETING'S GPORevision Number:Unique Name:Domain Name:Linked to:Unique Name:Domain Name:Linked to:The user received "Registry" settings from these GPOs: [Пользователь получил установки реестра от следующих объектов GPO:]
MARKETING'S GPO
Revision Number:
MARKETING'S GPO
Revision Number:
Unique Name:
Domain Name:
Linked to:
Unique Name:
Domain Name:
Linked to:
5
{1D6C9700-CBC3-4BO3-A3BE-6A3E3D3D3772} w2k.dom
Organizational Unit
4> (OU=Marketing,DC=w2k,DC=dom)
SALES' GPO
Revision Number:Unique Name: Domain Name: Linked to:Revision Number:Unique Name: Domain Name: Linked to:3
Revision Number:
Unique Name: Domain Name: Linked to:
Revision Number:
Unique Name: Domain Name: Linked to:
{C3A33B77-388B-4C89-AF3B-OA18B8AEBE4F} w2k.dom
Organizational Unit
t> (OU=Sales,OU=Marketing,DC=w2k,DC=dom)
Следующие далее описания позволяют администратору точно узнать, какие именно установки получил пользователь от каждого объекта GPO. В качестве комментария в квадратных скобках приведены имена, данные групповым политикам в окне оснастки Group Policy (Групповая политика).
. The following settings were applied from: MARKETING'S GPO [Следующие установки заданы объектом GPO:]
KeyName:
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ValueName: NoSMHelp [Remove Help menu from Start Menu] ValueType:REG_DWORD Value:0x00000001
KeyName:
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ValueName:NoNetworkConnections [Remove Network &
Dial-in Connections from Start Menu]
ValueType:REG_DWORD
Value:0x00000001
The following settings were applied from: SALES' GPO
KeyName:
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ValueName:NoRecentDocsMenu [Remove Documents menu from Start Menu]
ValueType: REG_DWORD
Value:0x00000001
KeyName:
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ValueName:NoControlPanel [Disable Control Panel] ValueType: REG_DWORD Value:0x00000001
Ниже показаны назначенные пользователю сценарии. Обратите внимание на то, что если сценарий располагается в папке, определенной по умолчанию CAGUIDuAtHnoAumuKu\VjSER\Scupts^ то отображается только имя сценария. Если же сценарий хранится в общей папке, то вы можете указать UNC-имя сценария {\\сервер\общийРесурс\имяСценария).
The user received "Scripts" settings from these GPOs:
W2k-Site's GPO Revision Number: 14 Unique Name:(2EE56B2E-0CDD-4527-AD6C-57C4B4855691)
Domain Name:w2k.dom
Linked to:Site (CN=W2K-site,CN=Sites,
•5> CN=Configuration, DC=w2k, DC=dom)
Logon scripts specified in: W2k-Site's GPO
Logon.vbs
Сведения об учетной записи компьютера представлены в том же порядке, что и для пользовательской учетной записи: общие сведения — время применения политик — установки. Обратите внимание на то, что пользовательская учетная запись располагается в одном домене (W2KDOM), а учетная запись компьютера принадлежит другому домену (SUBDOM). Следовательно, пользователь и компьютер получают установки групповых политик с различных контроллеров домена. Однако, поскольку оба домена находятся
в одном и том же сайте (W2K-Site), и пользователь, и компьютер получают установки от объекта GPO, привязанного к этому сайту. (Наличие этого механизма — единственная возможность сделать так, чтобы групповые политики распространялись на несколько доменов одновременно.) Объекты Local Group Policy и Default Domain Policy обеспечивают заданные по умолчанию установки групповых политик для контроллеров домена.
Computer Group Policy results for:
CN=W2KDC2,OU=Domain Controllers,DC=subdom,DC=w2k,DC=dom
Domain Name:SUBDOM
Domain Type:Windows 2000
Site Name:W2K-site
The computer is a member of the following security groups:
BUILTIN\Administrators
\Everyone
BUILTIN\Pre-Windows 2000 Compatible Access
BUILTIN\Users
SUBDOM\W2KDC2$
SUBDOM\Domain Controllers
NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS
NT AUTHORITY\NETWORK
NT AUTHORITY\Authenticated Users
###############################################################
Last time Group Policy was applied: Tuesday, December 12, 2000 at 10:30:54 PM
Group Policy was applied from: w2kdc2.subdom.w2k.dom
The computer received "Registry" settings from these GPOs:
Local Group Policy
Revision Number:
2
Unique Name:
Local Group Policy
Domain Name:
Linked to:
Local computer
W2k-Site's GPO
Revision Number:
14
Unique Name:
{2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
Domain Name:
w2k.dom
Linked to:
Site (CN=W2K-site,CN=Sites,
*t> CN=Configuration, DC=w2k, DC=dom)
Default Domain Policy
Revision Number: 7
Unique Name:{31B2F340-016D-11D2-945F-00O04FB984F9}
Domain Name:subdom.w2k.dom
Linked to:Domain (DC=subdom,DC=w2k,DC=dom)
The following settings were applied from: Local Group Policy
KeyName: Software\Policies\Microsoft\SystemCertificates\EFS ValueName: EFSBlob
ValueType: REG_BINARY
Value:Binary data. Use the /S switch to display.
[Двоичные данные. Для отображения используйте параметр /S.]
KeyName:
Software\Policies\Microsoft\SystemCertificates\EFS\Certificates\ 56F9BB1F2DBE48432512773AC638193BD9786DA4
ValueName: Blob
ValueType: REG_BINARY
Value:Binary data. Use the /S switch to display.
KeyName:
Software\Policies\Microsoft\SystemCertificates\EFS\CRLs
ValueName:
ValueType:REG_NONE
Value:This key contains no values
The following settings were applied from: W2k-Site's GPO
KeyName:
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
ValueName:NoWelcomeScreen
ValueType: REG_DWORD
Value:0x00000001
The following settings were applied from: Default Domain Policy
KeyName: Software\Policies\Microsoft\SystemCertificates\EFS ValueName: EFSBlob
ValueType: REG_BINARY
Value:Binary data. Use the /S switch to display.
KeyName:
Software\Policies\Microsoft\SystemCertificates\EFS\Certificates\ 92D8718A86AFB763DD2823BB1182D4DD8EA6O8E0
ValueName: Blob
ValueType: REG_BINARY
Value:Binary data. Use the /S switch to display.
KeyName:
Software\Policies\Microsoft\SystemCertificates\EFS\CRLs
ValueName:
ValueType:REG_NONE
Value:This key contains no values
KeyName:
Software\Policies\Microsoft\SystemCertificates\EFS\CTLs
ValueName:
ValueType: REG_NONE
Value:This key contains no values
The computer received "Scripts" settings from these GPOs:
W2k-Site's GPO
Revision Number:
16
Unique Name:
(2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
Domain Name:
w2k.dom
Linked to:
Site (CN=W2K-site,CN=Sites,
9> CN=Configuration,DC=w2k,DC=dom)
Startup scripts specified in: W2k-Site's GPO Up.vbs
The computer received "Security" settings from these GPOs:
W2k-Site's GPO
Revision Number:
14
Unique Name:
{2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
Domain Name:
W2K.DOM
Linked to:
Site (CN=W2K-site,CN=Sites,
9> CN=Configuration, DC=w2k, DC=dom)
Default Domain Policy
Revision Number:
7
Unique Name:
{31B2F340-016D-11D2-945F-00C04FB984F9}
Domain Name:
SUBDOM.W2K.DOM
Linked to:
Domain (DC=subdom,DC=w2k,DC=dom)
Default Domain Controllers Policy
Revision Number:
6
Unique Name:
{6AC1786C-016F-llD2-945F-00C04fB984F9}
Domain Name:
SUBDOM.W2K.DOM
Linked to:
Organizational Unit
*^> (OU=Domain Controllers, DC=subdom, DC=w2k, DC=dom)
Run the Security Configuration Editor for more information.
[Для получения дополнительной информации запустите оснастку Security Configuration and Analysis (Анализ и настройка безопасности).]
The computer received "EFS recovery" settings from these GPOs:
Local Group Policy Revision Number: 2 Unique Name:Local Group Policy
Domain Name: Linked to:Local computer
Default Domain Policy
Revision Number: 7
Unique Name:{31B2F340-016D-11D2-945F-00C04FB984F9}
Domain Name:subdom.w2k.dom
Linked to:Domain (DC=subdom,DC=w2k,DC=dom)
Additional information is not available for this type of policy setting.
[Для этого типа политики дополнительная информация отсутствует.]
Дополнительную информацию об утилите GPResult можно найти в справочном HTML-файле или в документации, входящей в состав пакета Windows 2000 Resource Kit.
Group Policy Verification Tool
(GPOTool.exe) (RK)
Инструмент Group Policy Verification Tool позволяет выполнять следующие операции:
Проверять внутреннюю целостность указанного объекта GPO или всех объектов GPO; при этом объект (объекты) может проверяться или на заданном контроллере домена, или на всех контроллерах. Контроллеры домена могут относиться либо к текущему, либо к указанному домену. Утилита проверяет оба компонента объектов GPO: AD-компонент и SYSVOL-компонент.
Проверять репликацию объектов GPO путем сравнения реплик (экземпляров) каждого объекта GPO, хранящихся на разных контроллерах домена.
Утилиту GPOTool можно запускать на любом доменном компьютере, используя при этом любую пользовательскую учетную запись.
( Примечания j
В этом разделе термины "политика" и "объект групповой политики" (GPO) используются как синонимы. Напомню, что каждый объект GPO состоит из AD-компонента (directory service part, DS-part), который хранится в Active Directory, и SYSVOL-компонента, хранящегося на диске в системном томе.
Параметры /new и /del, описанные в Windows 2000 Resource Kit, не реализованы в текущей версии утилиты.
Копию утилиты GPOToole.exe можно свободно загрузить с веб-узла Microsoft.
Общие тесты
По умолчанию тестируются все политики на всех контроллерах того домена, в котором зарегистрирован пользователь. Если некоторые контроллеры домена в этот момент недоступны, то их имена не отображаются в разделе "Available DCs" (Имеющиеся контроллеры домена). Эти контроллеры показываются только в режиме подробного протоколирования (verbose mode) и отмечены как "down" (отключен). Ниже приведен пример выполнения тестов:
С: \>gpotool
Validating DCs... [Проверка контроллеров домена]
Available DCs:
w2kdc4.w2k.dom
w2kdc3.w2k.dom
Searching for policies... [Поиск политик...]
Found 7 policies
Policy {1D6C9700-CBC3-4BC3-A3BE-6A3E3D3D3772}
Policy OK
Policy {2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
Policy OK
Policies OK
Если обнаруживается поврежденная политика, информация о ней отображается в verbose-режиме (см. ниже) и генерируемый отчет заканчивается сообщением "Errors found" (Обнаружены ошибки).
( Примечание )
В отчете, генерируемом утилитой GPOTool, для каждой политики (и ее расширения, extension) отображается ее уникальное имя. Это имя — содержимое атрибута сп, а не GUID-идентификатор объекта Active Directory, в котором хранится DS-компонент этой политики. (Фигурные скобки также являются частью
имени политики.) Помните о том, что привязаться (bind) к некоторому объекту каталога можно только с помощью его GUID или отличительного имени, а не таких атрибутов-имен, как on, displayName и т. п.
Используя параметр /domain, можно тестировать любой другой домен, отличный от того домена, в котором зарегистрирован пользователь. Также с помощью параметра /de можно указать один или несколько контроллеров домена, для которых будет выполняться проверка. Чтобы тестировать только одну политику или несколько политик, используйте параметр /дро вместе с уникальным именем политики (си) или ее понятным именем (см. ниже). Обратите внимание на то, что между именами не должно быть пробелов.
Подробные сведения о политиках
Для получения подробной информации о политиках утилиту GPOTool нужно запускать с параметром /verbose. Поскольку генерируемый отчет получится слишком длинным, переназначьте его в файл для последующего анализа. Пример отчета, полученного в режиме подробного протоколирования, показан ниже. (В квадратных скобках даны комментарии).
C:\>gpotool /verbose
Domain: w2 k.dom
Validating DCs. . .
w2kdc4.w2k.dom: OK
w2kdc3.w2k.dom: down[один контроллер домена отключен]
Available DCs: w2kdc4.w2k.dom Searching for policies... Found 7 policies
Policy {1D6C9700-CBC3-4BC3-A3BE-6A3E3D3D3772}
Policy OK
Details:
DC: w2kdc4.w2k.dom[сведения о политике отображаются
для каждого контроллера домена, на котором эта политика хранится] Friendly name: MARKETING'S GPO [это значение атрибута displayName объекта политики в Active Directory) Created: 12/17/2000 5:17:39 PM Changed: 12/17/2000 5:36:32 PM DS version:3(user) 0(machine)
Sysvcl version: 3(user) 0(machine) [SYSVOL-версия политики должна совпадать с DS-версией] Flags: 0[см. ниже Примечания!
User extensions: [{25537BA6-77A8-11D2-9B6C-0000F8080861}
{88E729D6-BDC1-11D1-BD2A-00C04FB9603F}][{35378EAC-683F-11D2-A89А- 00C04FBBCFA2}{0F6B957E-509E-11D1-A7CC-0000F87571E3)] [Имя расширения заключается в квадратные скобки. Здесь указаны имена двух расширений] Machine extensions: not found
Functionality version: 2[допускается значение не меньше 2]
Policy (2EE56B2E-0CDD-4527-AD6C-57C4B4855691}
Policy OK
Details:
DC: w2kdc4.w2k.dom
Friendly name: W2k~Site's GPO
Created: 10/29/2000 4:08:54 PM
Changed: 12/17/2000 6:12:48 PM
DS version:12(user) 14(machine) [см. ниже Примечания!
Sysvol version: 12(user) 14(machine)
Flags: 0
User extensions:
Machine extensions: [{35378EAC-683F-11D2-A89A-00C04FBBCFA2}
{0F6B957D-509E-11D1-A7CC-0000F87571E3} И (827D319E-6EAC-11D2-A4EA-
0OC04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]
Functionality version: 2
Policies OK
( Примечания )
В окне свойств (Properties) объекта GPO вы можете запретить неиспользуемые часта этого объекта — Computer Configuration или User Configuration. Значение Flags: 1 соответствует отключенной конфигурации пользователя (User Configuration), а значение Flags: 2 — отключенной конфигурации компьютера (Computer Configuration).
Номера версий 0:0 указывают на новый, еще не сконфигурированный объект GPO, который может быть даже привязан к некоторому контейнеру.
GUID-идентификаторы для клиентских расширений (client-side extensions) перечислены в статье Q216357 в Microsoft Knowledge Base. Например, QUID 827D319E-6EAC-11D2-A4EA-00C04F79F83A принадлежит компоненту Security, a QUID 25537BA6-77A8-11D2-9B6C-0000F8080861 назначен компоненту Folder Redirection. Эти и другие GUID-идентификаторы неизменны в каждой установленной системе Windows 2000.
Обратите внимание на то, что в представленном выше отчете отсутствует какая-либо информация об опциях политик (запрещена политика или не
запрещена) и о параметрах наследования, таких как блокирование (blocking) и переопределение (overriding). К тому же, по отчету нельзя определить, привязана ли политика к какому-нибудь контейнеру или нет.
Для получения информации об одной политике или нескольких политиках используйте параметр /дро. Если указывать имя политики, команда может выглядеть следующим образом:
gpotool /дро:{C3A33B77-388B-4C89-AF3B-CA18B8AEBE4F}
Если вам известно понятное имя политики — используйте его. Например, команду
gpotool /дро:COMPs OU's GPO
можно использовать для политики, имя которой в отчете было указано как
Friendly name: COMPs OU's GPO
Если указываются имена нескольких политик, то они разделяются запятыми; пробелы между именами недопустимы.
Поврежденные политики
Утилита GPOTool достаточно хорошо диагностирует поврежденные политики, и вы можете точно локализовать проблему и найти отсутствующие элементы поврежденной политики. Рассмотрим несколько примеров сообщений об ошибках.
Приведенное ниже сообщение указывает на то, что имеется проблема с репликацией и две реплики некоторого объекта GPO, хранящиеся на разных контроллерах домена, не соответствуют друг другу:
Error: w2kdc4.w2k.dom — w2kdc3,w2k.dom sysvol mismatch
Следующее сообщение свидетельствует о том, что SYSVOL-компонент объекта GPO является неполным (отсутствует файл gpt.ini):
Error: Cannot access \\w2kdc4\sysvol\w2k.dom\policies\ {C3A33B77-388B-4C89-AF3B-CA18B8AEBE4F}\gpt.ini, error 2
Ниже приведен пример неисправности, когда некорректна информация, хранящаяся в Active Directory (обратите внимание на выделенные строки):
Error: Property versionNuinber not found on w2kdc4
[Атрибут versionNuinber не найден на контроллере ...]
Error: Version mismatch on w2kdc4, DS=not found, sysvol=65536 Details:
DC: w2kdc4
Friendly name: SALES' GPO
Created: 12/17/2000 5:18:08 РМ
Changed: 12/18/2000 11:27:20 АМ
DS version: not found
Sysvol version: 1(user) 0(machine)
Flags: 0
User extensions: [{35378EAC-683F-11D2-A89A-00C04FBBCFA2}I 0F6B957E-509E- 11D1-A7CC-0000F87571E3}]
Machine extensions: not found
Functionality version: 2
Errors found
Вы можете вручную исправить эту ошибку, запустив оснастку ADSI Edit и задав указанному атрибуту ^versionNumber^ нужное значение (65536).
Часть IVЧасть IV
Часть IV
Часть IV
Программный доступ к Active Directory
Глава 13. Active Directory Service Interfaces (ADSI)
Глава 14. Использование ADSI для администрирования
ГЛАВА 1 3
Active Directory Service Interfaces (ADSI)
Последние две главы книги адресованы тем администраторам, которые желают познакомиться с использованием сценариев для управления различными сетевыми каталогами, и в первую очередь — доменами Windows NT 4.0 и Windows 2000. Два продукта, выпускаемых компанией Microsoft, а именно Active Directory Service Interfaces (ADSI) и Windows Script Host (WSH — сервер сценариев Windows), позволяют реализовать единый подход к управлению различными платформами и программными продуктами. В книге рассматривается лишь небольшая часть этой обширной и сложной проблемной области, и мне бы хотелось рассказать о том, как использовать интерфейсы ADSI для управления каталогами, реализованными на базе Windows NT 4.0 и Windows 2000 (т. е. для управления службами NTDS и Active Directory). В предлагаемых примерах используются языки Visual Basic и VBScript, поскольку Basic — популярный, простой и компактный язык, с помощью которого легко иллюстрировать принципы программирования с использованием ADSL Мне бы не хотелось цитировать документацию или перегружать книгу справочной информацией. (Вы сами можете быстро найти и распечатать нужные справочные файлы.) Вместо этого я хочу обратить внимание читателя на некоторые базовые принципы ADSI-программирования, а также на те сложности, с которыми легко может столкнуться новичок, и проиллюстрировать эта базовые принципы простыми, но полезными сценариями и программами. (В большинстве этих сценариев и программ одновременно используются несколько программистских приемов.) Я настоятельно рекомендую загрузить с веб-узла Microsoft пакет Active Directory SDK (также иногда называемый ADSI SDK} или же пользоваться online-библиотекой MSDN (см. ссылки в приложении 7), поскольку вам понадобится множество справочных таблиц, содержащих описания интерфейсов и их методов и свойств, констант, кодов ошибок и т. п.
/зг-. Внимание!
Интерфейсы ADSI являются стандартным компонентом систем Windows 2000 и могут также устанавливаться на системах Windows 9х/МЕ и Windows NT 4.0 (см. ссылки в приложении 1).
Интерфейсы ADSI
как инструмент администрирования
Для администраторов интерфейсы ADSI являются весьма ценным инструментальным средством, поскольку они достаточно просты в изучении и использовании, и могут значительно упростить выполнение объемных или типовых (часто повторяемых) операций. Например, с помощью ADSI вы можете создать программу экспорта/импорта, максимально соответствующую требованиям вашей доменной конфигурации, или специализированную утилиту миграции данных между различными каталогами.
С точки зрения администратора, интерфейсы ADSI имеют два важных достоинства:
ADSI взаимодействуют со множеством платформ и продуктов, включая следующие;
LDAP-совместимые серверы, такие как Windows 2000 Active Directory и Exchange 5.x
Основные и вспомогательные контроллеры доменов Windows NT 4.0 (PDC и BDC).
Службы Интернета (Internet Information Services, IIS).
Серверы Novell Directory Services (NDS) (версий 4.x и выше).
Серверы Novell NetWare (версий 3.x).
□ ADSI позволяют использовать многие языки, поддерживающие автоматизацию (automation), такие как Visual Basic, VBScript, JScript и Perl; также можно применять такие "полноценные" языки, как C/C++, используя при этом ту же самую объектную модель компонентов (СОМ). Языки сценариев не требуют много времени на изучение; вы можете объединять и/или модифицировать существующие сценарии и быстро создавать работоспособные инструменты для выполнения конкретных задач.
При работе с ADSI очень полезно (даже необходимо) иметь под рукой некоторые административные утилиты, такие как Ldp.exe и AdsVw.exe, а также оснастки ADSI Edit и Active Directory Schema. Эти инструменты позволят вам проверять результаты выполнения создаваемых сценариев или приложений, следить за состоянием Active Directory и значениями атрибутов объ-
ектов каталога, а также выполнять еще множество операций, нужных для эффективного программирования.
Remote Administration Scripts
Пакет Windows 2000 Server Resource Kit содержит коллекцию сценариев, называемую Remote Administration Scripts. Вы можете использовать эти сценарии не только по их прямому назначению, но и в качестве примеров, полезных для изучения основ ADSI и написания собственных сценариев. Все сценарии находятся в файле Ras.cab на дистрибутивном компакт-диске пакета Windows 2000 Resource Kit и устанавливаются в ту же папку, где располагаются все утилиты этого пакета.
Сервер сценариев Windows (WSH)
Сервер сценариев Windows (Windows Script Host) представляет собой платформу для выполнения сценариев, написанных на языках VBScript или JScript. WSH-сервер является стандартным компонентом систем Windows 2000 и Windows 98/МЕ и может также устанавливаться на платформах Windows 95 и Windows NT. Таким образом, администраторы получают возможность выполнять одни и те же сценарии на всех перечисленных платформах. Последнюю версию WSH-сервера (5.5) можно свободно загрузить с веб-узла Microsoft. (См. ссылки в приложении 1.)
Не забывайте о том, что WSH-сервер можно использовать для управления самыми разными компонентами системы, а не только службой Active Directory (эти вопросы, разумеется, выходят за рамки данной книги).
Неформальный взгляд на архитектуру ADSI
Пожалуй, главной сложностью при изучении ADSI является наличие большого количества описанных интерфейсов (свыше 50), у которых, в свою очередь, имеется множество методов и свойств. Однако если разобраться с основными понятиями ADS1 и некоторыми ограничениями (требованиями), то достаточно легко начать работу с ADSI, постепенно осваивая новые интерфейсы и более сложные области (приемы) программирования.
Атрибуты и свойства
В общих чертах задача программирования выглядит следующим образом: вам нужно лишь выбрать некоторый объект каталога — пользователя, группу, компьютер или иной объект — и выполнить для него определенное действие. Как же реализуется эта задача?
При дальнейшем изложении термины "атрибут" (attribute) и "свойство" (property) могут использоваться как синонимы; однако нужно понимать различие между ними. Атрибут — это элемент объекта, хранящегося в Active Directory, а понятие "свойство" относится к программному представлению объекта ADSL В документации по Active Directory SDK можно найти таблицы соответствия между свойствами ADSI и атрибутами объектов Active Directory.
Системные провайдеры ADSI
Любой объект каталога существует в некотором пространстве имен (namespace), относящемся к определенному типу каталога. (Очевидно, что иерархическая структура объектов Active Directory отличается от "одномерного" пространства объектов доменов Windows NT. Кроме того, атрибуты пользовательского объекта в домене Windows NT 4.0 отличаются от атрибутов пользователя в Active Directory). Поэтому в архитектуре ADSI для каждого поддерживаемого типа каталога имеется свой системный провайдер (system provider) (или, просто, провайдер). В таблице перечислены четыре основных типа провайдеров ADSL
Имя провайдера
Тип каталога
Имя (имена) DLL-файла
WinNT:
Домены Windows NT 4.0
adsnt.dll
LDAP:
LDAP-серверы (Exchange 5.x и Active Directory)
adsldp.dll, adsldpc.dll, and adsmsext.dll
NDS:
Novell Directory Services (NDS)
adsnds.dll
NWCOMPAT:
Novell NetWare bindary (3.x)
adsnw.dll
(В именах учитывается регистр символов!)
Список провайдеров, установленных в системе, можно получить с помощью следующего сценария:
'Dim objRoot, objChild 'As IADs Set objRoot = GetObject("ADs:") For Each objChild In objRoot
WScript.Echo objChild.Name
Next
Выбирая системный провайдер, вы определяете для объекта правила именования, а также его программное представление в ADSL
Интерфейсы и методы
Программист может обращаться к объектам ADSI, представляющим объекты каталога, через интерфейсы СОМ, точнее — используя методы (methods) и свойства этих интерфейсов. Следовательно, выбранный интерфейс определяет, какие операции можно выполнять с объектом, или какую информацию об объекте можно получить/модифицировать. (Сравните, к примеру, список методов и свойств для интерфейсов IADs и lADsUser.) Некоторые интерфейсы поддерживаются всеми провайдерами, а некоторые — только одним. Для примера в табл. 13.1 перечислены некоторые основные объекты ADSI и интерфейсы ADSI, поддерживаемые провайдером LDAP. (Аналогичную таблицу можно найти и для провайдера WinNT.)
Таблица 13.1. Основные объекты ADSI и соответствующие интерфейсы, поддерживаемые провайдером LDAP
Объект ADSI
Поддерживаемые интерфейсы
Стандартный объект (пользователь, компьютер, группа и т. д.)
IADs lADsContainer IDirectoryObject IDirectorySearch lADsPropertyList lADsObjectOptions lADsDeleteOps
Учетная запись группы
lADsGroup lADsExtension
Подразделение (организационная единица)
IADsOU lADsExtension
Очередь принтера
lADsPrintQueue lADsPrintQueueOperations lADsExtension
Учетная запись пользователя
lADsUser lADsExtension
Из табл. 13.1 видно, что каждый объект ADSI реализует несколько интерфейсов (два и более). Это означает, что вы можете вызывать любой метод любого реализованного интерфейса, и выбранный объект имеет все свойства, определенные для этих интерфейсов. Данная таблица может служить для выбора интерфейсов при обращении к объекту и помогает понять, какие методы и свойства имеются в ADSI для данного объекта. Не нужно пытаться (по
крайней мере, поначалу) разобраться со всеми интерфейсами. Подавляющее большинство задач можно решить с помощью всего лишь нескольких интерфейсов, называемых базовыми (core). (См. таблицу в приложении 2. В ней базовые интерфейсы выделены полужирным.) Интерфейсы IADs и lADsContainer позволяют получить доступ практически к любому объекту каталога и выполнять самые разные операции с объектами: т. е. создавать, удалять, переименовывать, перечислять объекты и т. д. Используя интерфейс lADsOpenDSObject, можно при привязке к объекту каталога указывать альтернативные учетные данные, отличные от текущих. (См. листинг 14.6 и листинг 14.7 в главе 14 "Использование ADSI для администрирования"?)
Как вы можете заметить в таблице интерфейсов из приложения 2, провайдер WinNT не поддерживает, например, объекты типа "подразделение", а провайдер LDAP — общие папки или службы. Поэтому не следует думать, что один из провайдеров — LDAP или WinNT — однозначно предпочтительнее другого. Конечно, только с помощью провайдера LDAP обеспечивается доступ ко всем объектам Active Directory. Тем не менее существуют операции, которые можно выполнять только посредством провайдера WinNT, и в некоторых случаях этот провайдер позволяет решить задачу, используя меньшее число операторов.
Следовательно, выбор провайдера и интерфейса при обращении к объекту каталога является для программиста ответственным шагом, от которого зависит то, какие методы и свойства можно будет использовать при работе с объектом. Файл справки по ADSI SDK содержит списки интерфейсов и свойств, поддерживаемых каждым провайдером, и вы можете распечатать нужную вам информацию. Если вы с самого начала будете учитывать все приведенные выше соображения, то у вас не будет сложностей с объявлением переменных или выбором методов доступа к объекту.
Интерфейс ADsSystemlnfo
Имеется очень полезный интерфейс, доступный только для систем Windows 2000 и не упомянутый в документации по ADS1 (см. обновленную документацию в Platform SDK). Этот интерфейс позволяет получить сведения о текущей доменной конфигурации. Взгляните на следующий фрагмент кода:
Dim objSysInfo As ADSystemlnfo
Set objSysInfo =■ CreateObject("ADSystemlnfo")
Debug.Print objSys Info.ComputerName
Debug.Print objSyslnfo.DomainDNSName
Debug.Print objSyslnfo.ForestDNSName
Debug.Print objSys Infо.IsNativeMode
Debug.Print objSysInfo.SiteName
Debug.Print objSysInfo.UserName
Последний оператор отображает имя текущего пользователя, зарегистрированного в домене.
Основные принципы программирования с использованием ADSI
Любой сценарий или приложение содержит одинаковые по сути операции: выбор некоторого объекта каталога и выполнение над ним определенных действий. Для их реализации в ADSI имеются элементарные операции следующих типов:
Привязка к объекту (binding и аутентификация в authenticating Active Directory. До того, как выполнять любую операцию, программист выбирает объект, или привязывается к нему, пользуясь текущей учетной записью (рекомендуется) или указывая альтернативные учетные данные.
Доступ к атрибутам объекта. В зависимости от того, как объявлен объект ADSI и, следовательно, какие методы он реализует, можно читать и изменять различные атрибуты объекта.
Перечисление (enumerating) объектов. Существует несколько программистских приемов, позволяющих получить набор однотипных объектов (пользователей, компьютеров, групп и т. д.) — или перечислить объекты — с учетом установленного критерия. При этом количество объектов заранее неизвестно. Примеры перечисления объектов имеются в следующей главе. Можно перечислять следующие объекты:
дочерние объекты контейнера (см. листинг 14.7).
членов группы (см. раздел "Управление членством в группах" главы 14).
однотипные объекты в контейнере (это называется фильтрацией) (см. листинг 14.6).
Манипулирование объектами. Объекты можно создавать, перемещать в другой контейнер или домен и удалять.
Опрос (querying) каталога (поиск в каталоге). Интерфейсы ADSI обеспечивают поиск объектов с помощью ActiveX Data Objects (ADO). При этом возможен доступ только для чтения.
Управление дескрипторами безопасности. С помощью ADSI можно изменять разрешения на доступ к различным объектам, включая объекты Active Directory, файловой системы и т. д.
Управление схемой. Схему можно модифицировать или расширять. Под расширением схемы подразумевается создание новых атрибутов и классов.
В этой и следующей главах имеются примеры, иллюстрирующие все перечисленные операции.
Чтение свойств объектов
Существует три типа свойств объектов Active Directory, которые различаются по способам хранения и доступа. Новички иногда забывают об этом факте, в результате чего очень часто возникают ошибки.
Реплицируемые свойства, хранящиеся в Active Directory
Большая часть свойств (например, cn, description, objectGUlD и т. д.) хранится в Active Directory и реплицируется между всеми контроллерами внутри домена. Некоторые из этих свойств являются индексируемыми, и некоторые из них реплицируются также в Глобальный каталог. (Для ускорения выполнения запросов к каталогу рекомендуется включать в запрос индексируемое свойство.)
Для чтения этих свойств используется метод obj.Ce/ или методы IADs Property*; для обновления применяется метод obj.Put.
Нереплицируемые свойства, хранящиеся локально на контроллере домена
Некоторые свойства (last Logon, lastLogoff, badPwdCount и т. д.) не реплицируются между контроллерами домена. Например, чтобы определить время последней регистрации пользователя в сети, нужно прочитать свойство lastLogon пользовательского объекта на всех контроллерах в домене и сравнить значения. К этим свойствам можно обращаться обычными способами.
Вычисляемые (функциональные) свойства
Есть несколько свойств (например, primaryGroupToken, ADsPath, distinguishedName, canonicalName и др.), которые служба Active Directory использует в качестве служебных. Эти свойства не хранятся в каталоге, а "вычисляются" контроллером домена. (Обратите, кстати, внимание на то, что свойства ADsPath и distinguishedName не определены в схеме.) Для чтения значений этих свойств может понадобиться вызов метода obj.GetlnfoEx (для обновления значений используйте метод obj.PutlnfoEx), например:
obj.GetlnfoEx Array("canonicalName"), О
WScript.Echo obj.Get("canonicalName")
Поиск в Active Directory
Операции поиска в ADSI осуществляются посредством объектов ADO (ActiveX Data Objects). В операторе запроса можно использовать один из двух синтаксисов:
LDAP-диалект содержит отличительное имя базы поиска, фильтр поиска (в соответствии с RFC 1960), список возвращаемых атрибутов и область поиска.
SQL-диалект аналогичен оператору SELECT стандартного языка SQL.
Внимание!
К интерфейсам OLE DB доступ через ADSI обеспечивается только на чтение. Если вам нужно изменить найденный объект, привяжитесь непосредственно к этому объекту и тогда модифицируйте его атрибуты.
Представленная ниже программа может применяться для поиска всех групп в домене и отображения их свойства ADsPath. В программе используются оба диалекта: LDAP и SQL. Также программа демонстрирует методику работы с полученным набором записей (record set).
Листинг 13.1. ADOQuery.bas — поиск групп во всем домене (w2k.dom)
Option Explicit
Dim objConnection As Connection
Dim objCommand As Command
Dim objRSet As Recordset
Dim i As Integer
' Открыть соединение:
Set objConnection = CreateObject("ADODB.Connection") objConnection.Provider = "ADsDSOObject"
' Подготовить команду:
Set objCommand = CreateObject("ADODB.Command") objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection
' Чтобы искать все группы в лесе доменов, в любом из диалектов нужно ' вместо пространства имен "LDAP:" использовать "GC:".
' LDAP-диалект:
objCommand.CommandText = _
"<LDAP://DC=w2k,DC=dom>;(objectCategory=group);ADsPath"
' Область поиска можно указать непосредственно в строке команды: ' objCommand.CommandText = _
' "<LDAP://DC=w2k,DC=dom>;(objectCategory=group);ADsPath;subtree"
' SQL-диалект позволяет сортировать (обратите внимание на оператор
' ORDER BY) набор записей по некоторому атрибуту: ' objCommand.CommandText = "SELECT ALL ADsPath FROM
' Q> 'LDAP://DC=w2k,DC=dom' WHERE objectCategory='group'
' Q> ORDER BY name"
' Здесь можно определить область поиска (если она не указана
' непосредственно в строке, присвоенной свойству CommandText (см. выше): objCommand.Properties("SearchScope") = ADS_SCOPE_SUBTREE ' =2
' Эта константа определена в перечислении ADS SCOPEENUM
objCommand.Properties("Page Size") = 1000' См. ниже примечание
' Здесь можно определить другие свойства команды. Подробную информацию
' можно получить, выполнить поиск строки "Searching Properties" в файле
' справки по Active Directory SDK:
’ секунд’ секунд' objCommand.Properties("Timeout") = 30
’ секунд
’ секунд
' Выполнение подготовленного запроса: Set objRSet = objCommand.Execute
Debug.Print "Ready... (Total) " + CStr(objRSet.RecordCount)
If objRSet.RecordCount = 0 Then
Debug.Print "No records found!" Exit Sub
End If
' Отображение набора-записей: objRSet.MoveFirst
While Not objRSet.EOF
' Для работы с многозначными (multi-valued) свойствами этот код нужно ' доработать !
For i = 0 То objRSet.Fields.Count — 1
Debug.Print objRSet.Fields(i).Name +"="+_
objRSet.Fields(i).Value
Next
objRSet.MoveNext
Wend
Set objConnection = Nothing
Set objCommand = Nothing Set objRSet = Nothing Debug.Print "End."
k д Внимание!
Количество строк, возвращаемых обычной (нестраничной) операцией поиска, ограничено параметром MaxPageSize (по умолчанию— 1000) объекта Default Query Policy (см. Предметный указатель'). (Это ограничение распространяется и на другие средства поиска, например, на утилиту Ldp.exe или сценарий Search.vbs.) Если вы явно определяете в сценарии или программе параметр "Page Size", то выполняется страничный поиск, и в этом случае вы можете выбрать любое количество строк.
Схема Active Directory
Даже если вы — администратор, а не профессиональный программист, то вам все равно необходимо познакомиться с основными концепциями и понятиями схемы Active Directory. Например, при использовании различных
административных инструментов (таких как Ldp.exe или ADSI Edit) для устранения неполадок или настройки Active Directory может потребоваться знание синтаксиса атрибутов, диапазона допустимых значений и т. п. Кроме того, схема представляет собой источник различной ценной информации, например, является ли атрибут индексируемым или реплицируемым в Глобальный каталог. Ну а если вы хотите модифицировать или расширять схему (т. е. создавать новые атрибуты и классы), то некоторые теоретические знания просто необходимы. На самом деле, расширение схемы — не слишком сложная операция, и даже непрограммист может ее выполнить. Необходимо (и достаточно) лишь знать и выполнять некоторые общие правила и требования.
( Примечание )
Много информации о схеме, включая описания всех атрибутов и классов, хранится на веб-странице http://msdn.microsoft.com/certification/schema/.
Абстрактная схема
Все определения классов и атрибутов (т. е. объекты типа classSchema и attributeSchema'), существующих в конкретном лесе доменов, располагаются в разделе Schema. В этом разделе также имеется объект класса subSchema. Данный объект с именем Aggregate называется абстрактной схемой (abstract schema).
Абстрактная схема содержит выборочную информацию о классах и атрибутах. Она позволяет быстро находить часто используемые сведения о классах и атрибутах, например, перечень обязательных и необязательных атрибутов или диапазон допустимых значений для некоторого цифрового атрибута.
Листинг 14.1 в следующей главе представляет программу, которая выбирает данные из абстрактной схемы. Также в листинге представлены примеры этих данных.
Расширение схемы
При расширении схемы каждому новому атрибуту или классу присваивается уникальный идентификатор — Object Identifier (OID). Базовый OID для вашей организации можно запросить у служб Name Registration Authority, подчиняющихся International Standards Organization (ISO), или получить при помощи утилиты командной строки OID Generator (OidGen.exe), входящей в состав пакета Windows 2000 Server Resource Kit. В любом случае вы получите два базовых OID: один для атрибутов, другой — для классов. Утилиту нужно запускать только один раз. (Не используйте разные корневые OID в одной и той же инсталляции Active Directory.) Новые идентификаторы для создаваемых атрибутов и классов генерируются путем добавления "суффик-
сов" (т. е. уникальных в вашей организации чисел, отделяемых точкой от базовой части) к соответствующему базовому OID. Значения этих суффиксов целиком зависят от вас.
Примеры создания нового атрибута и класса рассматриваются в следующей главе (см. листинги 14.21 и 14.22).
Внимание!
Атрибут или класс невозможно удалить, их можно только отключить (deactivate) с помощью оснастки Active Directory Schema.
( Примечание )
Вас могут заинтересовать вопросы: как создать пользовательский интерфейс для работы с собственными классами и атрибутами, или как к существующим оснасткам добавить вкладки для редактирования новых атрибутов? Это — довольно сложная тема, требующая, к тому же, использования таких языков программирования, как C/C++. См. раздел "Extending the User Interface for Directory Objects" в файле справки no Active Directory SDK или выполните поиск строки "display specifier" на веб-узле Microsoft. Там же можно найти ознакомительную статью ("Step-by-Step"), посвященную этой теме.
Создание нового атрибута
При создании нового атрибута вы должны определить значения следующих свойств нового объекта класса attributeSchema'.
attributelD (OID).
"Именующие" свойства — cn, iDAPDisplayName.
Синтаксис: attributeSyntax, oMSyntax (см. ниже табл. 13.2).
isSingleValued.
Если свойства schemalDGUID и admin Display Name не определяются, то их значение генерирует система (последнему свойству присваивается значение свойства сп). Если не указаны свойства searchFlags и isMemberOfPartialAttributeSet, то новый атрибут не индексируется и не реплицируется в Глобальный каталог.
Необязательные свойства — rangeLower, rangeUpper, linkID, adminDescription. (Рекомендую всегда определять последнее свойство, т. к. это упрощает просмотр схемы в административных утилитах.)
Создание нового класса
При создании класса нужно определить значения следующих свойств нового объекта класса classSchema\
governsID (OID).
Классы, от которых порождается новый класс — subClassOf.
objectClassCategory (структурный, вспомогательный или абстрактный) (Напоминаю, что в каталоге могут создаваться объекты только структурных классов).
"Именующие" свойства — сп, IDAPDisplayName.
Обязательные и/или необязательные атрибуты нового класса — mustContain, systemMustContain, mayContain, systemMayContain.
Возможные "старшие" объекты (если, к примеру, вы укажете "organiza- tionalUnit", то экземпляры нового класса можно будет создавать только в подразделениях, OU) — possSuperiors, systemPossSuperiors.
Если свойства schemalDGUID и adminDisplayName не определяются, то их значение генерирует система (последнему свойству присваивается значение свойства сп). По умолчанию для нового класса задается спецификатор имени cn. С помощью свойства rDnAttld можно установить другой спецификатор (хотя это не рекомендуется делать).
Необязательные свойства — auxiliary Class, systemAuxiliaryClass, defaultSecurityDescriptor, admin Description. (Рекомендую всегда определять значение последнего свойства.) Свойство defaultHidingValue определяет "видимость" экземпляров нового класса в окне оснастки Active Directory Users and Computers и при просмотре доменной структуры. По умолчанию оно имеет значение TRUE. Это означает, что значение атрибута showlnAdvancedViewOnly экземпляров нового класса будет устанавливаться равным TRUE, т. е. они будут скрытыми от просмотра.
Именование атрибутов и классов
При именовании новых атрибутов и классов Active Directory компания Microsoft рекомендует следовать некоторым соглашениям. Кроме того, всегда нужно явно определять значение атрибута IDAPDisplayName для всех пользовательских атрибутов и классов. Выполнение этих соглашений гарантирует неконфликтность имен, используемых различными производителями программного обеспечения, удобство просмотра схемы и возможность использования программ документирования схемы (см. ниже).
В соответствии с этими соглашениями, общее имя (Common Name) должно иметь следующие элементы:
DNS-имя домена, зарегистрированного на компанию пользователя (производителя).
Год регистрации DNS-имени в виде четырех цифр.
Уникальное внутри компании название программного продукта.
Описание атрибута или класса.
Каждый элемент в имени начинается с заглавной буквы и отделяется от других дефисом ("-").
Чтобы из общего имя получить внешнее имя LDAP (LDAP Display Name), используйте следующие правила:
Замените самый первый символ на строчный.
Оставьте без изменения все остальные заглавные буквы.
Удалите все дефисы, за исключением тех, которые непосредственно следуют за именами компании и программного продукта.
Вот несколько примеров имен:
Common Name (cn)
LDAP Display Name (IDAPDisplayName)
Microsoft-Com-1999-DS-Consistency-GUID
microsoftCom1999-DS-ConsistencyGUID
Microsoft-Com-1999-RRAS-Attribute
microsoftCom1999-RRAS-Attribute
MyCorp-Com-2000-TEST-User-ID
myCorpCom2000-TEST-UserlD
В процессе разработки и тестирования продукта или конфигурации можно также к значениям атрибутов сп и IDAPDisptayName добавлять цифровой суффикс, отображающий версию продукта.
Синтаксис атрибутов Active Directory
В табл. 13.2 перечислены синтаксисы некоторых часто используемых атрибутов. Столбец "Название" содержит два имени синтаксиса: первое имя используется в оснастке ADSI Edit, а второе (в скобках) — в оснастке Active Directory Schema. В столбце "Описание" также приведены примеры атрибутов Active Directory, имеющих данный синтаксис.
Таблица 13.2. Некоторые основные синтаксисы атрибутов Active Directory
Название
oMSyntax
attributeSyntax
Описание
Boolean (Boolean)
1
2.5.5.8
Логически (isDeleted, IsMemberOfPartialAttributeSet)
Integer (Integer)
2
2.5.5.Э
32-битное число (.flags, groupType, primaryGroupID, rangeLower, rangeUpper, userAccountControf)
INTEGERS
(Large Integer)
65
2.5.5.16
64-битное число (accountExpires, lastLogon, maxPwdAge, uSNCreated, uSNChanged)
Таблица 13.2 (продолжение)
Название
oMSyntax attributesyntax Описание
Octetstring (Octet String)
42.5.5.10Массив байтов (objectGuid).
Используйте этот синтаксис для хранения бинарных значений
ObjectSecurityDescriptor (NT Security Descriptor)
662.5.5.15Строка байтов, содержа
щая дескриптор безопасности (nTSecurityDescriptor)
DN
(Distinguished Name)
1272.5.5.1Строка, содержащая отли
чительное имя (DN) (member, memberOf, objectcategory).
Active Directory автоматически обновляет отличительные имена, хранящиеся в строках данного синтаксиса, т. е. если, к примеру, переименовывается или перемещается объект, на который указывает отличительное имя, то Active Directory отслеживает все изменения. Возьмите, например, отношения между группой и ее членами. Если пользователь переименовывается, то он не теряет членство в группе
Directorystring (Unicode String)
642.5.5.12Строка Unicode, регистр
символов не учитывается (description, displayName, name, sn, location)
GeneralizedTime (Generalized Time)
242.5.5.11Формат представления
времени в виде строки (whenCreated, whenChanged). Например: 12/11/2000 10:34:28 АМ
OID
(Object Identifier)
62.5.5.2Строки, хранящие иденти
фикаторы OID (objectClass). OID — это строка, состоящая из цифр (0-9) и десятичной точки (.)
Таблица 13.2 (окончание)
Название
оМ Syntax
attributesyntax
Описание
Sid (SID)
4
2.5.5.17
Байтовая строка, содержащая идентификатор безопасности(SID) (objectsid, sIDHistory). Этот синтаксис следует использовать только для хранения значений SID
Полезные средства для работы со схемой
Сценарий SchemaDiff.vbs
В пакете Windows 2000 Server Resource Kit (в коллекции Remote Administration Scripts) имеется сценарий SchemaDiff.vbs, с помощью которого администратор может сравнить схемы двух различных лесов. Этот сценарий проверяет номер версии схемы, количество классов, обязательные и необязательные атрибуты каждого класса, синтаксис и диапазон допустимых значений для каждого атрибута. При написании собственных сценариев или изучении основ ADSI-программирования вы можете также использовать этот сценарий как пример манипулирования объектами схемы.
Программа SchemaDoc
Программа Schema Documentation Program, SchemaDoc.exe, используется для документирования расширений схемы, выполненных в конкретной инсталляции Active Directory. Программа копирует сведения о классах и атрибутах в XML-файл. Чтобы применять SchemaDoc, нужно следовать рекомендациям Microsoft относительно именования атрибутов и классов, в частности, использовать один и тот же префикс для всех созданных имен. Этот префикс нужен программе SchemaDoc для поиска в Active Directory.
Программу и документацию (всего 140 Кбайт) можно свободно загрузить по адресу:
http://www.microsoft.com/TechNet/win2000/schema.asp.
СОМ-объект lADsTools
Пакет Windows 2000 Support Tools (см. главу б "Основные характеристики и назначение системных утилит”) содержит СОМ-объект lADsTools, активно используемый, в частности, программой Active Directory Replication Monitor (ReplMon.exe). Функции этого объекта можно вызывать из пользовательского сценария или приложения. lADsTools следует рассматривать как вы-
сокоуровневое обрамление основных интерфейсов ADSL Описание всех вызываемых функций содержится в прилагающемся к объекту файле iadstools.doc. В приложении 3 имеется полный список этих функций. Несколько примеров использования lADsTools приводится в следующей главе.
DLL-библиотека lADsTools устанавливается в составе пакета Support Tools, но может распространяться и отдельно. Скопируйте файл iadstools.dll из папки \Program Files\Support Tools в папку %SystemRoot% (или любую другую папку) на целевом компьютере и зарегистрируйте DLL-файл, введя на этом компьютере в командной строке regsvr32 iadstools.dll.
По умолчанию все ошибки библиотеки lADsTools регистрируются в журнале приложений (Application Log) (Источник: lADsTools; Категория: None; Event ID: 1).
Использование языков
Visual Basic и VBScript
Visual Basic — это мощная интерактивная среда, которую можно использовать для разработки приложений, а также сценариев. Можно сначала разработать и отладить приложение на Visual Basic, а затем быстро преобразовать его в сценарий на VBScript. Эти языки имеют некоторые отличия, однако эти "разногласия" легко устранить.
Ссылки на соответствующие библиотеки Active Directory нужно добавить в проекты на Visual Basic. Выполните команду References (Ссылки) в меню Project (Проект) и установите флажок Active DS Type Library в списке Available References (Имеющиеся ссылки). Если вы используете ADSI Resource Kit, необходимо также добавить в ссылки проекта соответствующие DLL-библиотеки (например, ADsSecurity.dll или ADsError.dll). (Не забудьте зарегистрировать эти DLL: введите в командной строке regsvr32 <имя- DLL>.dli.) Чтобы использовать в ADSI поиск посредством ADO-объектов, добавьте также в ссылки проекта Microsoft ActiveX Data Objects 2.5 Library.
Стандартное средство среды Visual Basic — мастер завершения кода (Code completion assistant) — помогает новичкам быстрее осваивать ADSI- программирование. Вам не нужно помнить все методы и свойства выбранного интерфейса ADSI, т. к. мастер отображает их для любой объявленной переменной (рис. 13.1).
Здесь, однако, имеется одна ловушка. Вспомните: объекты ADSI могут одновременно реализовывать несколько интерфейсов, поэтому вы можете вызывать методы всех этих интерфейсов и получать доступ ко всем их свойствам. Однако мастер завершения кода отображает информацию только о том интерфейсе, который был использован при объявлении переменной. Поэтому все другие интерфейсы будут доступны, но "невидимы".
Diin objChild is(Тар?)
ADsPath = "LDAP://РС = и2к, DC = dom" Set objContainer = GetObject(ADsPath)
For Each objChild In objContainer Debug.Print objChild.|
Next^iADsPath
Й? Class
End SubQej
Рис. 13.1. Мастер завершения кода помогает правильно выбрать метод в соответствии с объявлением объектаРис. 13.1. Мастер завершения кода помогает правильно выбрать метод в соответствии с объявлением объектаnA GetEx — «А Getlnfo sA GetlnfoEx S QUID jJ
Рис. 13.1. Мастер завершения кода помогает правильно выбрать метод в соответствии с объявлением объекта
Рис. 13.1. Мастер завершения кода помогает правильно выбрать метод в соответствии с объявлением объекта
В среде Visual Basic вы должны внимательно выбирать объявления переменных. Рассмотрим, к примеру, следующую программу, которая перечисляет все дочерние объекты некоторого подразделения:
Dim ADsPath As String
Dim objContainer As TADsContainer
Dim objChild As IADs
ADsPath = "LDAP://OU=Staff,DC=w2k,DC=dom"
Set objContainer = GetObject(ADsPath)
For Each objChild In objContainer
Debug.Print objChild.Name + " > " + objChild.Class
Next
Предположим, что вы хотели увидеть всех пользователей этого подразделения и вместо
Dim objChild As IADs
использовали следующее объявление:
Dim objChild As lADsUser
Программа будет работать замечательно, если подразделение содержит только пользователей. Однако, если в этом подразделении встретятся объекты других типов, вы получите ошибку "Type mismatch" (Несоответствие типа). Поэтому в данном случае следует использовать более "универсальный" интерфейс — IADs. В сценарии на VBScript такая проблема не может появиться, т. к. все переменные в сценариях имеют один базовый тип данных — Variant.
Преобразование программы на Visual Basic в сценарий
Как правило, для преобразования простой по структуре программы на Visual Basic в сценарий на VBScript достаточно выполнить следующие преобразования в тексте:
Удалить операторы Sub И End Sub.
В объявлениях переменных (операторах Dim) удалить все строки, начинающиеся с ключевого слова "As" (и включающие его).
Заменить операторы Debug.Print (или аналогичные) на wscript.Echo.
Можно, конечно, выполнить и обратное преобразование.
Отладка сценариев
Простейшим средством отладки сценариев, написанных на VBScript или JScript, является Microsoft Script Debugger. Его можно установить, запустив на Панели управления утилиту Add/Remove Programs (Установка/Удаление программ) и вызвав мастер Windows Component Wizard (Мастер компонентов Windows). Установленный инструмент появляется в группе Accessories (Стандартные).
Чтобы начать сеанс отладки, выполните команду, аналогичную следующей (имя сценария должно включать расширение):
cscript Enumerating.vbs //X
Отладчик запускается, и код сценария отображается в окне отладчика, в котором вы можете выполнять такие операции:
Запустить сценарий, нажав клавишу <F5>.
Указать на строку кода, установить точку прерывания (нажав клавишу <F9>) и прогонять код между установленными точками.
Просматривать и модифицировать значения переменных. Для этого выполните команду Command Window (Окно команд) в меню View (см. ниже).
Остановить отладку. Сеанс отладки при этом завершается, и вы можете либо сохранить измененный текст сценария, либо выйти из отладчика.
( Примечание )
Фактически вы не можете изменять текст сценария в окне отладчика. Все изменения кода требуют перезапуска сеанса отладки.
Пример сеанса отладки показан на рис. 13.2. Показанный код используется для перечисления объектов в указанном контейнере, т. е. в коде имеется цикл. Рассмотрим некоторые нюансы при работе в окне команд.
File |=l [S V ' Ed,t
I,,-Igl xl!
у, Д j Debug fl .4 |?5 ^ C3 4-3 ’ ■й te I @1 ^i IP
ADsPath = "LDAP://OU=Statt,DC-M2k,DC=dom Set objContainer = GetObject(ADsPath)
ф
For Each objChild In objContainer
«script.echo objChild.Name + " > " + objChild.Class
Next
Command Window
В
'Ready
? objContainer [error]
? objChild.Schema\1
LDAP://schema/volume / ar
? objChild.Schema LDAP://schema/user
) Шаг N
? objChild.userAccountControl/ 544/
Рис. 13.2. Просмотр текущих значений переменных в сеансе отладки сценария
В нашем примере первый запрос значения объекта (objContainer) оказался неудачным, поскольку отладчик не может отобразить весь объект. Шаг 1 показывает, что мы можем просматривать текущие значения любого свойства, имеющегося указанного объекта. При последующих проходах цикла мы можем отслеживать то же значение или выбирать другие (Шаг N). Обратите внимание на то, что не имеет значения, в каком регистре вводятся имена объектов и свойств. В любой момент допускается просмотр и изменение любых уже созданных объектов. Например, при отладке нашего примера мы можем ввести команду ? objContainer. Parent И ПОЛуЧИТЬ ИМЯ рОДИТеЛЬСКОГО объекта для указанного контейнера.
Чтобы изменить некоторое значение, введите в окне команд оператор присваивания. В нашем примере мы могли бы после выполнения первой строки кода ввести следующую строку:
ADsPath = "LDAP://DC=w2k,DC=dom"
После такого изменения мы получили бы список дочерних объектов для домена, а не для подразделения Staff, как было задано первоначально.
Конечно, такая среда, как Visual Basic, предоставляет значительно больше возможностей для отладки, чем Script Debugger.
Коды ошибок ADSI
Для интерпретации ошибок, возникающих в ADSI-сценариях или приложениях, можно использовать две возможности:
Найти таблицу "Win32 Error Codes for ADSI 2.5" в Active Directoiy SDK или MSDN (см. ссылки в приложении I).
Использовать команду repadmin /showmsg <кодошибки> (см. описание команды в главе 8 "Сетевые и распределенные службы").
ГЛАВА 1 4
Использование ADSI для администрирования
Эта глава содержит множество примеров, иллюстрирующих основные принципы программирования с использованием ADSI и, в то же время, представляющих практический интерес для администратора, т. к. любой сценарий можно быстро адаптировать к конкретным условиям. Познакомьтесь со всеми примерами, поскольку многие сценарии иллюстрируют универсальные программистские приемы, которые можно использовать в различных ситуациях (см. предисловие к листингу 14.1). Объединяя элементы демонстрационных сценариев, можно быстро научиться создавать собственные сценарии или приложения, даже не имея глубокого представления обо всех интерфейсах ADSI и принципах их использования.
Все предлагаемые вашему вниманию примеры написаны на VBScript или Visual Basic. Эти примеры можно достаточно быстро перевести на другой язык, например на JavaScript или Perl. В предыдущей главе были изложены правила преобразования сценариев VBScript в приложения на Visual Basic и наоборот.
В данной главе рассматривается использование только ADSL Однако не забывайте о том, что сценарии (в том числе те, которые работают через интерфейс Windows Management Instrumentation, WMI) можно также применять для управления многими другими компонентами систем Windows (включая Windows NT и Windows 9х/МЕ), и что провайдер WinNT можно использовать для управления доменами Windows NT и Windows 2000.
Имена объектов, - используемые в этой главе
Все сценарии и программы, описанные в настоящей главе, отлаживались в некоторой тестовой сети. Если вы будете использовать предложенные примеры, замените определенные строки в листингах на те значения, которые
имеют смысл в вашем сетевом окружении. Ниже перечислены некоторые "настраиваемые" параметры:.
oc=w2k, oc=dom — отличительное имя корневого домена леса w2k.dom (у которого имеется дочерний домен subdom.w2k.dom).
W2KD0M — NetBIOS- (пред-Windows 2000) имя домена.
w2K-site — имя сайта, в котором располагается домен w2k.dom.
W2KDC4 — NetBIOS- (пред-Windows 2000) имя контроллера домена w2kdc4.w2k.dom.
staff — демонстрационное подразделение (OU).
administrator — имя учетной записи SAM, имеющей административные права в домене.
psw — пароль для этой учетной записи.
( Примечание )
Если строки в листингах сценариев или программ, представленных ниже, разбиты символом ^ (поскольку эти строки не помещаются на странице), они должны рассматриваться как единая строка (оператор).
Чтение информации из Active Directory
Получение информации из Active Directory — возможно, одна из наиболее главных операций. Операции записи данных в Active Directory или изменение атрибутов объектов Active Directory не вызовут у вас затруднений, если вам известен тип данных (т. е. синтаксис атрибутов) и вы знакомы с методами доступа к данным этого типа. Конечно, для доступа к информации можно пользоваться любыми стандартными утилитами или административными оснастками, описанными в предыдущих главах книги; однако пользовательские сценарии позволяют вам сэкономить массу времени при выполнении типовых операций или представить информацию в наиболее удобном для вас виде. Помимо всего прочего, описываемые далее сценарии должны дать вам ответы на следующие вопросы:
Какая информация имеет ценность для администраторов?
Где эта информация располагается в каталоге?
□ Как прочитать данные часто используемых типов?
Сохранение результатов в файле.
Чтение абстрактной схемы
Перед тем как обсуждать различные ADSI-сценарии, я бы хотел показать, как можно сохранять сообщения, отображаемые сценарием, для последующего анализа. В качестве примера я взял сценарий, который выводит на эк-
ран около двух тысяч строк информации. Представленный ниже сценарий считывает всю представленную в схеме Active Directory информацию об атрибутах и классах (для текущей конфигурации Active Directory; не забывайте о том, что схему можно расширять) и отображает ее на экране, одновременно записывая результаты в файл. Обратите внимание на операторы, выделенные в листинге полужирным (их всего четыре!): вы можете вставить аналогичные операторы в любой сценарий и сохранять полученные результаты, если это необходимо.
Все использованные атрибуты абстрактной схемы — attributeTypes, extendedAttributelnfo, objectClasses и extendedClassInfo — могут иметь множество значений; это так называемые многозначные атрибуты (multi-valued attributes). Таким образом, данный сценарий также является примером чтения свойств, которые могут иметь несколько значений.
Листинг 14.1. AbstrSchema.bas — запись в файл описаний атрибутов и классов Active Directory
Option Explicit
Dim objSchema As TADsContainer
Dim attr, x As Variant
Dim i As Integer
Dim myFile As Variant
Dim objFSO As Variant
Set objSchema = _
GetObject("LDAP://CN=Aggregate,CN=Schema,CN=Configuration,DC=w2k, 4> DC=dom")
objSchema.Getlnfо
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Укажите свое имя файла. Существующий файл будет перезаписан!
Set myFile = objFSO.CreateTextFile("C:\Abstract Schema.txt", True)
i = 1
' Чтение атрибутов, представленных в схеме.
' Пример выводимой строки (круглые скобки учитываются!):
'( 2.5.4.3 NAME 'cn' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
%> SINGLE-VALUE)
' Все идентификаторы (ID) атрибутов, определенных компанией Microsoft ' начинаются с префикса "1.2.840.113556.1".
attr = objSchema.attributeTypes
For Each x In attr
' Debug.Print CStr(i) + ". " + x
myFile. WriteLine CStr(i) + ". " + x
i = i + 1
Next
Debug.Print " Атрибуты (ВСЕГО) " + CStr(i — 1)
i = 1 ' Чтение дополнительных сведений об атрибутах. ' Пример выводимой строки: '( 2.5.4.3 NAME 'cn' RANGE-LOWER '1' RANGE-UPPER '64'
^ PROPERTY-GUID '3F7996BFE60DD011A28500AA003049E2' Ч> PROPERTY-SET-GUID '54018DE4F8BCD111870200C04FB96050' INDEXED)
attr = objSchema.extendedAttributelnfо For Each x In attr
' Debug.Print CStr(i) + ". " + x myFile.WriteLine CStr(i) + ". " + x i = i + 1
Next
i = 1 ' Чтение классов, представленных в схеме. ' Выводимые строки выглядят следующим образом: ’( 2.5.20.1 NAME 'subSchema' SUP top STRUCTURAL MAY
^ (extendedClassInfo ^ $ extendedAttributelnfo $ dITContentRules $ attributeTypes ^ $ objectclasses $ modifyTimeStamp))
' Помните о том, что каждый класс также наследует список атрибутов ' своих родительских классов! attr = objSchema.objectClasses For Each x In attr
' Debug.Print CStr(i) + ". " + x myFile.WriteLine CStr(i) + ". " + x i = i + 1
Next
Debug.Print " Классы (ВСЕГО) " + CStr(i - 1) i = 1 ' Чтение дополнительной информации о классах, например: '( 2.5.20.1 NAME 'subSchema'
^ CLASS-GUID '61328B5A8DC3D111BBC90080C76670C0') attr = objSchema.extendedClassInfo For Each x In attr ' Debug.Print CStr(i) + ". " + x myFile.WriteLine CStr(i) + ". " + x i = i + 1
Next
myFile.Close
Set objSchema = Nothing
Set attr = Nothing
Set x = Nothing
Set objFSO = Nothing
Set myFile = Nothing
Получение информации от объекта RootDSE
На примере следующего листинга вы научитесь обращаться за информацией к объекту RootDSE, а также познакомитесь с двумя часто используемыми интерфейсами: lADsPropertyList и lADsPropertyEntry. Объект RootDSE — главный источник информации об именах разделов Active Directory и агентов DSA. (Объект RootDSE был подробно описан в главе 1 "Концепции Active Directory и терминология"?)
Этот сценарий также является примером того, как следует обрабатывать ошибки ADSL
Листинг 14.2. getRootDSE.vbs — чтение атрибутов объекта RootDSE
Dim objRootDSE 'As lADsPropertyList
Dim objProperty 'As lADsPropertyEntry
Dim i 'As Integer
Dim intCount 'As Integer
On Error Resume Next
' Предпочтительнее использовать операцию привязки без указания ' имени сервера (serverless binding).
Set objRootDSE = GetObject("LDAP://RootDSE")
' В некоторых случаях вам может понадобиться привязка к определенному ' контроллеру домена:
'Set objobjRootDSE = GetObject("LDAP://w2kdc2.subdom.w2k.dom/objRootDSE") ' Обработка возможных ошибок:
If Hex(Err.Number) = "8007203A" Then
WScript.Echo "ERROR_DS_SERVER_DOWN (" & Hex(Err.Number) & ")" WScript.Quit
Elself Hex(Err.Number) <> 0 Then WScript.Echo "Ошибка", Hex(Err.Number) WScript.Quit
End If
objRootDSE.Getlnfo
WScript.Echo "*** Объект RootDSE на " + objRootDSE.Get("dnsHostName") _ + " ***" + vbCrLf
intCount = objRootDSE.Propertycount For i = 0 To intCount — 1
Set objProperty = objRootDSE.Item(i)
WScript.Echo CStr(i + 1) + ") " + objProperty.Name Next
WScript.Echo ""
WScript.Echo " Имя DSA: " + objRootDSE.dsServiceName
' Имена разделов Active Directory следует получать только посредством
' обращения к объекту RootDSE:
WScript.Echo " Раздел доменных имен:" + _
objRootDSE.Get("defaultNamingContext")
WScript.Echo " Раздел схемы:" + _
objRootDSE.Get("schemaNamingContext")
WScript.Echo " Раздел конфигурации: " + _
objRootDSE.Get("configurationNamingContext")
WScript.Echo " Наибольший USN: " + objRootDSE.Get("highestCommittedUSN") WScript.Echo " Синхронизирован? " + _
objRootDSE.Get("isSynchronized")
WScript.Echo " Сервер глобального каталога? " + _ objRootDSE.Get("isGlobalCatalogReady")
Set objRootDSE = Nothing
Set objProperty = Nothing
Наибольший USN-номер, зафиксированный на сервере, является одним из основных параметров, используемым при устранении проблем с репликацией Active Directory. Кроме того, если вы сохраните USN-номер, существовавший в определенный момент времени, то сможете определить, какие объекты изменялись с того времени; для этого, например, можно использовать простую команду, подобную следующей:
search "LDAP://DC=w2k,DC=dom" /С:"uSNChanged>=123456" /S:subtree
Атрибут isSynchronized позволяет определить, были ли синхронизированы все разделы каталога после того, как сервер стал контроллером домена. Не путайте эту начальную репликацию разделов с обычной репликацией, выполняющейся по расписанию.
Напомню, что атрибут isGlobalCatalogReady имеет значение TRUE только тогда, когда контроллер домена окончательно получил функции сервера глобального каталога. Не ждите, что этот атрибут будет установлен сразу же после того, как вы назначите (вручную или программно) контроллер домена сервером GC.
Получение списка
имеющихся атрибутов объекта
Вот еще один пример использования интерфейсов lADsPropertyList и lADsPropertyEntry с различными провайдерами и с Глобальным каталогом. Используя эту программу, можно сравнить списки атрибутов некоторого объекта каталога, полученные с помощью разных провайдеров, а также увидеть, какие атрибуты этого объекта реплицируются в Глобальный каталог.
Отображаются только определенные атрибуты (т. е. те, которые в настоящий момент имеют значения). Также можно увидеть тип каждого атрибута, который определен в перечислении (enumeration) ADSTYPE.
Листинг 14.3. Prop-of-User.bas— получение списка атрибутов для объекта каталога
Option Explicit
Dim objAD As lADsPropertyList
Dim objProp As lADsPropertyEntry
Dim iCount As Integer
Dim i As Integer
' Выберите нужную строку привязки:
Set objAD = GetObject("LDAP://CN=John Smith,OU=Staff,DC=w2k,DC=dom")
****** Привязка к Глобальному каталогу:
'Set objAD = GetObject("GC://CN=John Smith,OU=Staff,DC=w2k, DC=dom")
****** Привязка к объекту пользователя или группы с использованием
' провайдера WinNT:
'Set objAD = GetObject("WinNT://W2KDOM/jsmith,user")
'Set objAD = GetObject("WinNT://W2KD0M,domain")
'Set objAD = GetObject("WinNT://W2KD0M/Domain Users,group")
objAD.Getlnfo
Debug.Print "Атрибуты объекта", objAD.ADsPath
iCount = objAD.PropertyCount
Debug.Print " Общее количество " + CStr(iCount) For i = 0 To iCount — 1
Set objProp = objAD.Item(i)
Debug.Print CStr(i + 1) + ") " + objProp.Name + _ " (тип " + CStr(objProp.ADsType) + ")" Next
Set objAD = Nothing
Set objProp = Nothing
Получение характеристик объектного класса из схемы
Вам может понадобиться полная информация о некотором объекте каталога, т. е. об объектном классе. Эти сведения хранятся в разделе Schema, и имеется специальный интерфейс — lADsClass, позволяющий обращаться к ним. В следующей программе показано использование нескольких методов этого интерфейса.
Листинг 14.4. attrsOfClass.bas — получение общих сведений и списка допустимых атрибутов для некоторого объектного класса Active Directory
Option Explicit
Dim strPath As String "
Dim objADs As IADs
Dim objClass As lADsClass
Dim varAttr As Variant
Dim arr As Variant
Dim n As Integer
' Здесь указана пользовательская учетная запись;
' вы можете выбрать любой объект каталога:
strPath = "LDAP://CN=John Smith,OU=Staff,DC=w2k, DC=dom"
' Подключение к объекту каталога, указанного в строке пути: Set objADs = GetObject(strPath)
Debug.Print "Путь в схеме: '" + objADs.Schema + _ "' для объекта " + strPath
Debug.Print "Объектный класс: '" + objADs.Class + "'" + vbCrLf Debug.Print "== Свойства класса ==="
' Получение сведений о классе — привязка к схеме.
' Вы могли бы опустить предыдущие операторы и непосредственно указать
' имя интересующего вас объектного класса, например "LDAP://schema/user" Set objClass = GetObject(objADs.Schema)
Debug.Print "Абстрактный класс? " + CStr(objClass.Abstract)
Debug.Print "ADsPath: " + objClass.ADsPath
Debug.Print "Контейнер? " + CStr(objClass.Container)
If objClass.Container Then
Debug.Print " Может содержать:"
' Список объектных классов, которые может содержать выбранный класс arr = objClass.Containment On Error Resume Next If Len(arr) = 0 Then
For Each varAttr In arr
Debug.Print "— " + varAttr
Next
Else
Debug.Print "— " + objClass.Containment
End If End If
Debug.Print "Порожден от: " + objClass.DerivedFrom
Debug.Print "Спецификатор имени: " + objClass.NamingProperties
Debug.Print "OID: " + objClass.OID
Debug.Print "Возможные старшие:" arr = objClass.Possiblesuperiors On Error Resume Next If Len(arr) = 0 Then For Each varAttr In arr
Debug.Print " — " + varAttr
Next
Else
Debug.Print " — " + objClass.Possiblesuperiors End If
Debug.Print vbCrLf + "=== Атрибуты ==="
Debug.Print "ДОЛЖЕН иметь:" ' Список обязательных атрибутов п = О
For Each varAttr In objClass.Mandatoryproperties Debug.Print " :: " + varAttr n = n + 1
Next
Debug.Print "(ВСЕГО): " + CStr(n)
Debug.Print
Debug.Print "МОЖЕТ иметь:" ' Список необязательных атрибутов п = О
For Each varAttr In objClass.OptionalProperties Debug.Print " :: " + varAttr n = n + 1
Next
Debug.Print "(ВСЕГО): " + CStr(n)
Set objADs = Nothing
Set objClass = Nothing
Чтение свойств, имеющих различные типы
При чтении и выводе на экран значений некоторых свойств могут возникнуть определенные проблемы. Чаще всего это вызвано использованием неправильного формата представления этих значений. Приведенная ниже программа отображает значения некоторых типов свойств. Для определенных типов, таких как Large Integer, NT Security Descriptor или Octet String (такой тип, к примеру, имеет свойство objectSid), необходимы специальные процедуры преобразования формата. Обратите внимание на метод Goy Quid, унаследованный от интерфейса IADs. Он позволяет получить строку, которую впоследствии можно использовать в программах для привязки к объекту (в формате "ldap://guid=xxxx>"); однако эта строка не годится для работы с Search.vbs или Guid2obj.exe.
Типы данных описаны в перечислении ADSTYPE.
Листинг 14.5. getProps.vbs — чтение свойств объекта типа "пользователь"
Dim objPropList As lADsPropertyList
Dim objPropEntry As lADsPropertyEntry
Dim objVar As Variant
Dim i As Integer
Dim iCount As Integer
' Можно указать любой объект каталога; например, учетную запись
' пользователя:
Set objPropList = _
GetObject("LDAP://CN=John Smith,OU=Staff,DC=w2k,DC=dom")
objPropList.Getlnfо
iCount = objPropList.Propertycount
Debug.Print "***** Всего " + CStr(iCount) + _
" атрибутов определено для объекта " + _
objPropList.ADsPath + " *****"
Debug.Print "GUID: " + objPropList.Guid
For i = 0 To iCount — 1
Set objPropEntry = objPropList.Item(i) ' или = objPropList.Next
Debug.Print objPropEntry.Name + " (" + _
CStr(objPropEntry.ADsType) + ")"
Select Case objPropEntry.ADsType
Case 1'ADSTYPE_DN_STRING
For Each objVar In objPropEntry.Values
Debug.Print " Значение: " + objVar.DNString Next
Case 3'ADSTYPE_CASE_IGNORE_STRING
For Each objVar In objPropEntry.Values
Debug.Print " Значение: " + objVar.CaselgnoreString Next
Case 7'ADSTYPE_INTEGER
For Each objVar In objPropEntry.Values Debug.Print " Значение: " + CStr(objVar.Integer)
Next
Case 8'ADSTYPE_OCTET_STRING
Debug.Print " =Байтовая строка (Octet String)="
Case 9'ADSTYPE_UTC_TIME
For Each objVar In objPropEntry.Values
Debug.Print " Значение: " + CStr(objVar.UTCTime) Next
Case 10 'ADSTYPE_LARGE_INTEGER
Debug.Print " =Large Integer=" ' Объект не поддерживает это ' свойство или метод (Object doesn't support this property or ' method
Case 25'ADSTYPE_NT_SECURITY_DESCRIPTOR
Debug.Print " =Дескриптор безопасности=" ' Объект не ' поддерживает это свойство или метод
Case Else
Debug.Print " Значение не преобразовано."
End Select
Next
Set objPropList = Nothing
Set objPropEntry = Nothing
Set objVar = Nothing
Поиск объектов в Active Directory
Представленные ниже две небольшие программы демонстрируют разные способы работы с объектами каталога, имеющими одинаковый тип. Подобные процедуры, представляющие собой поиск объектов одного типа в указанном контейнере, называются перечислением объектов (enumerating objects). В общем случае, предпочтительнее использовать следующий подход: обращаться к Active Directory посредством ActiveX Data Objects (ADO — ActiveX-объекты данных), находить необходимые объекты, привязываться к ним и выполнять нужные изменения. (Помните о том, что доступ с использованием ADO-объектов разрешает только чтение'.') Тем не менее для поиска дочерних объектов в контейнере можно также пользоваться методами фильтрования или перечисления объектов. Рассмотрим некоторые соображения, которые нужно при этом учитывать.
Применение плоского пространства имен провайдера WinNT может оказаться предпочтительным, если вам нужно найти объекты одного типа во всем домене. Однако при этом вы не сможете сразу определить местоположение найденных объектов в структуре подразделений (OU).
В обеих программах также иллюстрируется использование интерфейса lADsOpenDSObject, с помощью которого при выполнении операции привязки к объекту можно указывать любые учетные данные, отличные от текущих.
Листинг 14.6. FilterlnNT.bas — использование фильтра с провайдером WinNT
Option Explicit
Dim objDSO As lADsOpenDSObject
Dim objAD As lADsContainer
Dim obj As IADs
' Привязка с использованием альтернативных учетных данных:
Set objDSO = GetObject("WinNT:")
Set objAD = objDSO.OpenDSObject("WinNT://w2kdom,domain", _ "administrator", "psw", 0)
' Привязка с использованием полномочий текущего пользователя:
' Set objAD = GetObject("WinNT://W2KDOM,domain")
' Можно также привязываться к объекту типа "компьютер":
1 Set objAD = GetObject("WinNT://w2kdc4,computer")
' Использование провайдера LDAP неэффективно, т. к. в этом случае вы ' не сможете фильтровать объекты во вложенных контейнерах. Пространство ’ имен WinNT — плоское, и все объекты "видны" на одном уровне.
' Set objAD = GetObject("LDAP://DC=w2k,DC=dom") — такая операция привязки ' позволит находить группы только "на уровне" доменного объекта.
objAD.Filter = Array("group")
For Each obj In objAD
Debug.Print obj.name + " " + obj.ADsPath
Next
Set objAD = Nothing
Set obj = Nothing
( Примечание )
В фильтрах можно указывать любой объектный класс (user, organizationalUnit, volume и т. д.).
Следующая программа перечисляет все дочерние объекты как для доменного объекта, так и для вложенных контейнеров. Таким образом, можно найти все объекты заданного типа, при этом путь (ADsPath) к каждому объекту отражает местоположение объекта в пространстве имен всего леса доменов. Однако эта программа работает медленнее, чем предыдущая.
Листинг 14.7. FilterlnLDAP.bas — использование рекурсии и провайдера LDAP
Option Explicit
Dim objDSO As lADsOpenDSObject
Dim objAD As lADsContainer
Dim obj As IADs
Привязка с использованием альтернативных учетных данных:
Set objDSO = GetObject("LDAP:")
Set objAD = objDSO.OpenDSObject("LDAP://DC=w2k,DC=dom", "CN=administrator,OU=ADMINs,DC=w2k,DC=dom", "psw", 0)
' Привязка с использованием полномочий текущего пользователя:
' Set objAD = GetObject("LDAP://DC=w2k,DC=dom")
Call getGroups(objAD)
End Sub
Sub getGroups(objRoot)
Dim obj As IADs
For Each obj In objRoot
If obj.Class = "group" Then
Debug.Print obj.name + " " + obj.ADsPath
End I f
If obj.Class = "organizationalUnit" Or obj.Class = "container" Then Call getGroups(obj) End If
Next
End Sub
Манипулирование объектами типа "пользователь"
В этом разделе рассматриваются некоторые типовые операции с наиболее часто используемыми объектами каталога — учетными записями пользователей. Я рекомендую вам распечатать и держать под рукой всю документацию, относящуюся к объекту типа "пользователь" (методы и свойства, поддерживаемые различными системными провайдерами, используемые для этого объекта перечисления и т. п.).
Создание пользовательской учетной записи
По сути, создание учетной записи пользователя — несложная операция. Необходимо лишь учитывать некоторые детали, определяемые используемым при этом системным провайдером. В общих чертах процедуры для провайдера WinNT и для провайдера LDAP ничем не отличаются: надо привязаться к выбранному контейнерному объекту и с помощью метода lADsContainer. Create создать новый объект указанного типа. Однако при
использовании провайдера WinNT нужно привязываться к домену, и новая учетная запись появится в определяемом по умолчанию контейнере — Users. Используя провайдер LDAP, можно привязаться к любому контейнеру или подразделению и в нем создать учетную запись. Взгляните на два следующих фрагмента кода:
WinNT provider:
Set objDomain = GetObject("WinNT://W2KD0M")
Set objUser = objDomain.Create("user", "JSmith") objUser.Setinfo
LDAP provider:
Set objOU = GetObject("LDAP://OU=Staff,DC=w2k,DC=dom")
Set objUser = objOU.Create("user", "cn=John Smith") objUser.Put "samAccountName", "JSmith"
' Далее можно установить значения дополнительных (non-default) свойств,
' например:
' objAD.FirstName = "John"
' objAD.LastName = "Smith"
' objAD.UserPrincipalName = "JSmith@w2k.dom"
' Пароль можно установить только после того, как учетная запись будет ' создана!
objUser.Setinfo
В обоих случаях создается пользовательская учетная запись с минимальным набором определенных атрибутов. (См. также ниже раздел "Создание множества объектов"?) В табл. 14.1 перечислены различия между этими двумя случаями.
Таблица 14.1. Значения по умолчанию для объекта типа "пользователь"
Свойство
Значение по умолчанию
Провайдер LDAP
Провайдер WinNT
Отключить учетную запись
Да
Нет
Срок действия пароля не ограничен
Да
Да
CN (common name)
Задается в явном виде
Имя учетной записи SAM
Имя (givenName)
Пусто
Пусто
Полное имя
Пусто
Имя учетной записи SAM
Таблица 14.1 (окончание)
Свойство
Значение по умолчанию
Провайдер LDAP
Провайдер WinNT
Группа
Domain User
Domain User
Фамилия (sn)
Пусто
Пусто
Пароль
Пусто
Пусто
Срок действия пароля не ограничен
Нет
Нет
Профиль
Пусто
Пусто
Имя входа t.samAccountName')
Задается в явном виде
Задается в явном виде
Запретить смену пароля пользователем
Нет
Нет
Потребовать смену пароля при следующем входе в систему
Да
Да
Основное имя пользователя (UPN)
Пусто
Пусто
Переустановка пароля
Для установки или изменения пароля пользовательской учетной записи нужно использовать два специальных метода — SetPassword и Change Password — интерфейса lADsUser. Следующий сценарий устанавливает новый пароль для пользователя и заставляет его изменить пароль при первой регистрации в системе.
Листинг 14.8. setPassword.vbs — переустановка пароля пользователя
Dim strPath 'As String Dim objUser 'As lADsUser
'strPath = "WinNT://w2kdc4/JSmith"
strPath = "LDAP://CN=John Smith,OU=Staff,DC=w2k, DC=dom"
' Подключиться к указанному объекту каталога: Set objUser = GetObject(strPath)
objUser.SetPassword "newPsw" ' Новый пароль ' Пользователь должен сменить пароль:
objUser.Put "pwdLastSet", О
Следующие операторы могут использоваться с провайдером WinNT:
' objUser.SetPassword "newPsw"
Пользователь должен сменить пароль:
' objUser.Put "PasswordExpired", CLng(l)
On Error Resume Next
objUser.Setinfo
WScript.Echo "Error: " + Hex (Err.Number)
Set objUser = Nothing
Отключение учетных записей
Чтобы отключить или разрешить учетную запись пользователя или компьютера, привяжитесь к объекту, используя интерфейс lADsUser, и вызовите метод XADsUser.AccountDisnbied. Взгляните на следующий сценарий:
Листинг 14.9. disableAccount.vbs—отключение учетной записи
Dim objAccount 'As lADsUser
' Set objAccount = GetObject("WinNT://W2KDOM/JSmith") — только
' для пользовательских записей
' Используя провайдер LDAP, можно отключать учетные записи как
' для пользователей, так и для компьютеров:
' Set objAccount = _
'GetObject("LDAP://CN=John Smith,OU=Staff,DC=w2k,DC=dom")
Set objAccount = GetObject("LDAP://CN=W2KPRO1,OU=Staff,DC=w2k,DC=dom")
objAccount.AccountDisabled = True
objAccount.Setlnfо
Set objAccount = Nothing
Управление членством в группах
У интерфейсов lADsUser и lADsGroup имеются специальные методы, удобные для перечисления групп и пользователей. Конечно, можно непосредственно обращаться к соответствующим свойствам — свойству memberOf для пользовательских объектов и свойству member для объектов типа "группа", — отвечающим за членство в группах. Однако специальные методы доступа использовать проще, особенно при изменениях членства.
К каким группам принадлежит указанный пользователь?
С помощью метода Groups интерфейса lADsUser можно перечислить все группы, к которым относится некоторый пользователь. Показанный ниже фрагмент кода позволяет вывести имена групп.
Dim objUser as lADsUser
Dim x As Variant
Set objUser = GetObject("LDAP://CN=John Smith,OU=Staff,DC=w2k, DC=dom")
For Each x In objUser.Groups
Debug.Print x.ADsPath, x.Name, x.distinguishedName 'Сведения о группе Next
(Свойство ADsPath можно впоследствии использовать для непосредственной привязки к группе.)
Альтернативный подход — вы можете напрямую читать значение свойства memberOf и вместо трех последних операторов в листинге, показанном выше, использовать следующие операторы:
'Dim arrGroups As Variant
arrGroups = objUser.Get("memberOf")
For Each x In arrGroups
Debug. Print x
Next'
''р—т Внимание!
Используя метод Groups или читая значения атрибута memberOf, вы не можете увидеть основную группу (primary group) пользователя, т. е. группу Domain Users (задается по умолчанию). (Для учетных записей компьютеров основной группой по умолчанию является группа Domain Computers, а для контроллеров домена — группа Domain Controllers.) Чтобы увидеть основную группу некоторой учетной записи, привяжитесь к этой записи и используйте метод Get: object.Get("primaryGroupID").
Кто является членами указанной группы?
С помощью метода Members интерфейса lADsGroup можно перечислить всех членов — пользователей или другие группы — заданной группы. Вот соответствующий фрагмент кода:
Dim objGroup As lADsGroup
Dim x As Variant
Set objGroup = GetObject("LDAP://CN=LocalGrp,OU=Staff,DC=w2k,DC=dom")
For Each x In objGroup.Members
Debug.Print x.Class, x.Name, x.ADsPath, x.distinguishedName
Next
Как добавить члена к группе?
Чтобы добавить к существующей группе учетную запись (пользователя, компьютера или другой группы), достаточно одного лишь оператора (он выделен полужирным в следующем листинге).
Взгляните на фрагмент кода:
Dim objGroup As lADsGroup ' Привязываемся к группе:
Set objGroup = GetObject("LDAP://CN=LocalGrp, OU=Staff, DC=w2k,DC=dom") ' Добавляем пользователя:
objGroup.Md ("LDAP://CN=John Smith,OU=Staff,DC=w2k,DC=dom") objGroup.Setlnfо
Создание множества объектов
Для экспериментов или для оценки работы серверов каталога в пиковых режимах может потребоваться множество однотипных объектов каталога (обычно это учетные записи пользователей, компьютеров или групп). Показанный ниже сценарий позволяет быстро справиться с задачей создания таких объектов. Этот сценарий легко адаптировать к конкретной доменной конфигурации, а также изменить тип и количество создаваемых объектов.
Листинг 14.10. newlOOO.vbs — создание в Active Directory множества однотипных объектов
Option Explicit
Dim strPath As String
Dim objAD As IADs
Dim objContainer As lADsContainer
Dim n As Integer
Dim nMax As Integer
Dim StrName As String
nMax = 1000' Количество новых объектов
strPath = "LDAP://OU=Staff,DC=w2k,DC=dom" ’ любой подходящий контейнер
' ***** для провайдера WinNT:
strPath = "WinNT://W2KDOM,domain"
' Учетные записи будут создаваться в контейнере Users
Debug.Print "Подключение к " + strPath
Set objContainer = GetObject(strPath)
For n = 1 To nMax
strName = "user" + String(3 — Len(CStr(n)), "0") + CStr(n)
' ***** Для провайдера LDAP:
Set objAD = objContainer.Create("user", CStr("CN=" & strName))
' или Set objAD = objContainer.Create("group", CStr("CN=" & strName)) objAD.Put CStr("sAMAccountName"), CStr(strName)
' Здесь можно поместить операторы, определяющие значения ' других свойств.
Следующие четыре оператора нужны, если вы хотите сразу же
' разрешить новые учетные записи:
' objAD.Setinfo
' strPath = objAD.ADsPath ' привязка к пользовательскому объекту
' Set objAD = GetObject(strPath)
' objAD.AccountDisabled = False
Теперь можно также установить пароль:
objAD.SetPassword "psw"
***** для провайдера WinNT:
* Set objAD = objContainer.Create("user", strName)
Учетная запись разрешена, и вы можете сразу же установить пароль:
' objAD.SetPassword "psw"
' При использовании провайдера WinNT доступен только очень ограниченный 1 набор свойств пользователя, включающий PasswordAge, PasswordExpired,
' UserFlags и еще несколько свойств.
objAD.Setinfo
Debug.Print "Пользователь " + strName
Next
Debug.Print CStr(nMax) + " объектов создано."
Set objAD = Nothing
Set objContainer = Nothing
Реконфигурация дерева объектов
С помощью ADSI вы можете программно изменять доменную структуру, перемещая, удаляя и переименовывая объекты каталога. Только не забывайте о том, что эта возможность не распространяется на встроенные (built-in) и системные объекты.
Перемещение и переименование объектов
В сущности, перемещение объекта и его переименование выполняются при помощи одной и той же операции. Для операции перемещения вы лишь указываете разные исходные и целевые контейнеры, а для операции переименования — один и mom же контейнер. Перемещаемый объект может остаться со старым именем, а можно его и переименовать. Показанный ниже сценарий перемещает пользователя из одного подразделения в другое. Для этого в сценарии используется метод lADsContainer. MoveHere.
L Внимание!
Исходный и целевой контейнеры могут относиться к различным доменам одного леса. Таким образом, можно выполнять перемещения объектов между доменами. Нужно только учитывать возможные сложности с одновременной аутентификацией в обоих доменах.
Листинг 14.11. moveObject.vbs — перемещение или переименование объекта каталога
Dim strOldContainerPath, StrNewContainerPath, StrOldObjName, _ StrNewObjName 'As String
Dim objCont 'As TADsContainer
Dim objObject 'As IADs
' Если значения strNewContainerPath и strOldContainerPath совпадают, ' выполняется операция переименования; в противном случае выполняется ' операция перемещения.
strOldContainerPath = "OU=Inside,OU=Personal,DC=w2k,DC=dom"
StrNewContainerPath = "OU=Staff,DC=w2k,DC=dom"
' Если значения StrNewObjName и StrOldObjName совпадают, объект ' перемещается в новый контейнер, сохраняя свое имя StrOldObjName = "CN=John Smith" strNewObjName = "CN=John Smith New"
Set objCont = GetObject("LDAP://" + StrNewContainerPath)
Set objObject = objCont.MoveHere("LDAP://" + _ StrOldObjName + "," + strOldContainerPath, StrNewObjName)
Set objCont = Nothing
Set objObject = Nothing
Удаление объектов
Существует два способа удаления объектов каталога: с помощью метода Delete интерфейса TADsContainer и посредством специального интерфейса — lADsDeleteOps.
В первом случае, чтобы удалить объект, нужно привязаться к родительскому контейнеру выбранного для удаления объекта и вызвать метод Delete. Этот метод можно использовать только для оконечных (leaf) объектов (т. е. объектов, у которых отсутствуют дочерние объекты, или листьев дерева). В противном случае при попытке удаления объекта генерируется ошибка 2147016683 (0x80072015), означающая "The directory service can perform the requested operation only on a leaf object" (Служба каталога может выполнить требуемую операцию только на оконечном объекте).
С помощью интерфейса lADsDeleteOps можно удалить весь контейнер целиком, вместе с дочерними объектами. (Это ответственная операция, будьте внимательны! Перед ее выполнением, возможно, нелишне сначала проверить наличие у объекта дочерних объектов.) Взгляните на два следующих сценария.
Листинг 14.12. deleteObject.vbs— удаление пользователя (leaf-объекта)
Dim objCont 'As lADsContainer
Set objCont = GetObject("LDAP://OU=Staff,DC=w2k, DC=dom") Call objCont.Delete("user", "CN=Manager")
Set objCont = Nothing
Листинг 14.13. deleteContainer.vbs — удаление целого контейнера
Dim objCont 'As lADsDeleteOps
Set objCont = GetObject("LDAP://OU=Staff,DC=w2k,DC=dom")
Call objCont.DeleteObject (0)
Set objCont = Nothing
Назначение роли сервера глобального каталога
Приведенный ниже сценарий позволяет проверить, является ли указанный контроллер домена сервером глобального каталога, и при необходимости изменить текущий статус контроллера.
Листинг 14.14. SetGC.vbs — назначение контроллера домена сервером глобального каталога
Dim strDSSettings, strServerDN 'As String
Dim objRootDSE 'As IADs
Dim objDsService 'As IADs
Dim objComp 'As IADs
Dim iFlag 'As Integer
' Привязка к объекту RootDSE на указанном контроллере домена Set objRootDSE = GetObject("LDAP://w2kdc4.w2k.dom/RootDSE")
' Определение параметров службы каталога strDSSettings = objRootDSE.Get("dsServiceName") WScript.Echo "Параметры NTDS:", strDSSettings Set objDsService = GetObject("LDAP://" & strDSSettings)
' Определение отличительного имени контроллера домена strServerDN = objRootDSE.Get("serverName") WScript.Echo "Имя сервера:", strServerDN
Set objComp = GetObject("LDAP://" & strServerDN)
On Error Resume Next
iFlag = objDsService.Get("options") If Hex(Err.Number) = "8000500D" Then
WScript.Echo "PROPERTY_NOT_FOUND"
WScript.Echo objComp.Get("name"), "не является сервером GC" WScript.Quit End If
WScript.Echo "Текущее значение флага", iFlag
' Чтобы изменять статус контроллера домена, удалите символ комментария ' для соответствующих операторов If (iFlag And 1) Then
' Отзыв роли сервера GO
' objDsService.Put "options", iFlag Xor 11 очистка флага
' objDsService.Setinfo
' WScript.Echo objComp.Get("name") + " больше не является сервером GC" Else
' Назначение роли сервера GC
' WScript.Echo objComp.Get("name") + " будет объявлен *l> как сервер GC"
' objDsService.Put "options", iFlag Xor 1' установка флага
' objDsService.Setinfo End If
Set objRdotDSE = Nothing
Set objDsService = Nothing
Set objComp = Nothing
Как найти владельца некоторой FSMO-роли?
Имеется пять ролей FSMO и пять объектов Active Directory, которые "знают" имена владельцев ролей. Эти имена легко можно найти с помощью утилиты Ldp.exe. Выполните с ее помощью синхронный поиск со следующими параметрами:
Base DN — отличительное имя корневого домена леса
Filter — fSMORoleOwner=*
Scope — Subtree
Attributes — objectclass
Chase referrals
Полученные результаты — отличительные имена объектов и их тип — должны быть похожими на те, которые представлены в таблице 14.2.
(" Примечание }
Для поиска можно использовать и другие инструменты, а также получать эту информацию программным способом, например, выполнив поиск с помощью ADO-запросов. (Для поиска владельца конкретной роли в фильтре поиска укажите один из объектных классов, показанных в табл. 14.2.) Полученную информацию можно просто выводить на экран или же использовать в собственных сценариях или приложениях.
Таблица 14.2. Объекты Active Directory, хранящие сведения о владельцах FSMO-ролей
Отличительное имя объекта
objectclass
Роль PDC Emulator
DC=w2k,DC=dom
domainDNS
Роль RID Master
CN=RID Managers,CN=System,DC=w2k,DC=dom
rIDManager
Роль Infrastructure Master
CN=lnfrastructure,DC=w2k,DC=dom
inltastructurellpdate
Роль Domain Naming Master
CN=Partitions,CN=Configuration,DC=w2k,DC=dom
crossRefContainer
Роль Schema Master
CN=Schema,CN=Configuration,DC=w2k,DC=dom
dMD
Атрибут fSMORoleOwner (имеющий синтаксис DN) каждого найденного объекта хранит отличительное имя того агента DSA (объекта класса nTDSDSA), который владеет соответствующей FSMO-ролью. Ниже приведен пример такого имени (полужирным выделены элементы, которые в вашей инсталляции Active Directory будут отличаться):
CN=NTDS Settings,CN=W2KDC4,CN=Servers,CN=W2K-site,CN=Sites,
*t> CN=Configuration,DC=w2k,DC=dom
Вы можете привязаться к некоторому агенту DSA и запросить имя его родительского объекта (с помощью метода Parent) — это и будет имя контроллера домена, владеющего соответствующей FSMO-ролью.
Использование библиотеки lADsTools
DLL-библиотека lADsTools содержит свыше 180 функций (см. полный список в приложении 3), которые администраторы могут использовать в сценариях, выполняющих самые разные задачи — от получения сведений о конфигурации сети до запуска репликации определенного раздела каталога. Эта библиотека официально не поддерживается, поэтому если у вас возникают проблемы с использованием какой-либо функции, то, возможно, стоит даже отказаться от ее применения.
В данной главе рассматривается лишь несколько примеров использования библиотеки lADsTools при написании сценариев для выполнения административных задач. Вы легко сможете распространить основные принципы работы с библиотекой на другие функции.
Запуск репликации
Если вам нужно, чтобы репликация выполнялась в определенной вами последовательности, вы можете создать командный файл, использующий утилиту RepAdmin. Библиотека lADsTools позволяет написать сценарий, который будет точнее следовать вашим требованиям и, может быть, одновременно выполнять и другие задачи. Предлагаемый сценарий демонстрирует, как инициализировать репликацию некоторого раздела каталога (его имя в листинге выделено полужирным) между двумя контроллерами домена.
Листинг 14.15. initReplication.vbs— репликация раздела Configuration от одного контроллера домена к другому
Dim objDLL 'As Object
Dim intResult 'As Long
Dim strDestDC, strSrcDC 'As String
strDestDC = "w2kdc4.w2k.dom"
strSrcDC = "w2kdc3.w2k.dom"
Set objDLL = CreateObject("lADsTools.DCFunctions")
' Инициализация внутридоменной репликации раздела конфигурации intResult = objDLL.ReplicaSync(CStr(strDestDC) , _
CStr("CN=Configuration,DC=w2k,DC=dom") , CStr(strSrcDC))
If intResult = 0 Then
MsgBox "Репликация" + vbCrLf + " ОТ " + strSrcDC + vbCrLf + _
" К " + strDestDC + vbCrLf + _ "выполнена УСПЕШНО."
Else
MsgBox "ОШИБКА репликации!"
End If
Нужно заметить, что этот сценарий ждет окончания процесса репликации и только тогда выдает результирующее окно.
Запуск службы
Knowledge Consistency Checker (КСС)
Чтобы вручную запустить процедуру генерирования топологии репликации на некотором контроллере домена, запустите оснастку Active Directory Sites and Services, выберите объект NTDS Settings, принадлежащий данному контроллеру, и в его контекстном меню выполните команду All Tasks | Check Replication Topology (Все задачи | Проверить топологию репликации). Эту же задачу можно выполнить с помощью следующего сценария:
Листинг 14.16. triggerKCC.vbs — принудительный запуск службы Knowledge Consistency Checker (КСС)
Set comDLL=CreateObject("lADsTools.DCFunctions")
intResult=comDLL.TriggerKCC("W2KDC4")
If intResult=O then MsgBox "Служба КСС запущена успешно." _ else MsgBox "Ошибка!"
Просмотр статуса (флагов) контроллера домена
Библиотека lADsTools имеет множество функций, с помощью которых администратор может собирать информацию о конфигурации Active Directory. Ниже, к примеру, показан сценарий, отображающий флаги — т. е. функциональные роли — указанного контроллера домена. Эту же информацию МОЖНО ПОЛУЧИТЬ, ВВеДЯ В командной строке nltest /аз6е10С:<имяДомена>. (Дополнительная информация об утилите NLtest имеется в главе 8 "Сетевые и распределенные службы ").
Листинг 14.17. getDcInfo.vbs — определение состояния флагов контроллера домена
Dim strDomainName 'As String
Dim strDCName 'As String
Dim objDLL 'As Object
Dim intReturn 'As Long
Dim strFlags 'As String
' Пример получения информации от пользователя:
StrDomainName = InputBox("Домен:", "Введите имя домена", _ "w2k.dom")
strDCName = InputBox("Контроллер домена:", _ "Введите имя контроллера домена", "w2kdc4.w2k.dom")
Set objDLL = CreateObject("lADsTools.DCFunctions") On Error Resume Next intReturn = objDLL.DsGetDcName(CStr(strDomainName) , CStr(strDCName)) If intReturn <> 0 Then
WScript.Echo "Ошибка # " + Hex(Err.Number)
Else
strFlags = Replace(objDLL.ReturnedFlags, vbCr, vbCrLf + vbTab)
WScript.Echo "Флаги для сервера " + objDLL.DCName + ":" WScript.Echo vbTab + strFlags End If
Ниже представлен пример результатов, получаемых с помощью этого сценария:
Flags for server w2kdc4.w2k.dom:
DS_PDC_FLAG
DS_GC_FLAG
DS_DS_FLAG
DS_KDC_FLAG
DS_TIMESERV_FLAG
DS_CLOSEST_FLAG
DS_WRITABLE_FLAG
DS_PING_FLAGS
DS_DNS_CONTROLLER_FLAG
DS_DNS_DOMAIN_FLAG
DS_DNS_FORE ST_FLAG
Поиск владельцев FSMO-ролей
В библиотеке lADsTools имеется несколько методов, с помощью которых можно определить имена владельцев FSMO-ролей. Для нахождения одного владельца роли требуется выполнить один оператор (вызвать один метод). В следующем сценарии имена домена и контроллера определены в теле сценария, однако их можно запрашивать у пользователя (как в предыдущем примере).
Листинг 14.18. getFSMOs.vbs — получение от контроллера домена сведений об известных ему владельцах FSMO-ролей
Dim strDomainName 'As String
Dim strDcName 'As String
Dim objDLL 'As Object
strDcName = "w2kdc2.subdom.w2k.dom" ' имя любого контроллера домена
strDomainName = "w2k.dom"' корневой домен леса
Set objDLL = CreateObject("lADsTools.DCFunctions")
WScript.Echo "Schema Master:", _
objDLL.GetSchemaFSMO(CStr(strDcName))
WScript.Echo "Domain naming Master: ", _
objDLL.GetDomainNamingFSMO(CStr(strDcName))
WScript.Echo "PDC Master:", _
objDLL.GetPdcFSMO(CStr(strDcName), CStr(strDomainName))
WScript.Echo "Infrastructure Master:", _
objDLL.GetlnfrastructureFSMO(CStr(strDcName), CStr(strDomainName))
WScript.Echo "RID Master:", _
objDLL.GetRidPoolFSMO(CStr(strDcName), CStr(strDomainName))
Вот пример результатов выполнения этого сценария (имена отображаются в формате "Сайт\Сервер"):
Schema Master:W2K-site\W2KDC4
Domain naming Master: W2K-site\W2KDC4
PDC Master:Remote-Site\W2KDC2
Infrastructure Master: Remote-Site\W2KDC2
RID Master:Remote-Site\W2KDC2
Из полученного листинга видно, что сервер W2KDC2 (сайт W2K-site) владеет тремя FSMO-ролями в своем домене, а сервер W2KDC4 (сайт Remote- Site) — двумя FSMO-ролями, определяемыми в масштабах предприятия.
Различные операции
Следующая программа содержит еще несколько примеров использования самых разных по назначению функций библиотеки lADsTools. Ниже приведены примеры результатов, отображаемых на экране.
Листинг 14.19. lADsTools.bas — различные примеры использования ActiveX-объекта (библиотеки) lADsTools
Option Explicit
Dim comDLL As Object
Dim i, intResult As Integer
Set comDLL = CreateObject("lADsTools.DCFunctions")
' ***** Отображения некоторых метаданных для некоторого объекта каталога, 'хранящегося на указанном контроллере домена:
intResult = comDLL.GetMetaData("w2kdc4.w2k.dom", _
"CN=Sites,CN=Configuration,DC=w2k,DC=dom") Debug.Print "Атрибут * Локальный USN * Версия" For i = 1 To intResult
Debug.Print comDLL.MetaDataName(i) + ": " + _
CStr(comDLL.MetaDataLocalUSN(i)) + " " + _ CStr(comDLL.MetaDataVersionNumber(i) )
Next
' ***** Передача сообщения сетевому компьютеру (w2kprol.w2k.dom): intResult = comDLL.NetSendMessage("w2kprol,w2k.dom", _
"Domain Administrator", "W2KDC4 будет перезагружен через 30 секунд!")
' ***** Перечисление всех серверов глобального каталога, которые 'объявлены в лесе доменов:
intResult = comDLL.GetGCList("w2kdc4,w2k.dom") Debug.Print "Серверы GC (всего): " + CStr(intResult) For i = 1 To intResult
Debug.Print comDLL.GCName(i) Next
Ниже приведен пример метаданных для некоторого объекта каталога:
Атрибут * Локальный USN * Версия objectclass: 1165 1 сп: 150104 2 instanceType: 150105 100001 whenCreated: 150105 100001 isDeleted: 150105 100000 showInAdvancedViewOnly: 150105 100001 nTSecurityDescriptor: 150105 100001 name: 150104 100001 systemFlags: 150105 100001 objectcategory: 150105 100001
Эту же информацию можно получить с помощью утилиты Ldp.exe и команды repadmin / showmeta. Сравните результаты!
С помощью методов библиотеки lADsTools очень легко найти все серверы глобального каталога, имеющиеся на предприятии. Демонстрационный сценарий выдает результат в следующем виде:
GC servers (total): 2 W2KDC2 W2KDC4
Работа с дескрипторами безопасности
Работа с дескрипторами безопасности объектов Active Directory является продвинутой темой, требующей хорошего понимания модели управления доступом к объектам каталога. Однако некоторые операции могут без затруднений использоваться администраторами, например, операции чтения и/или модификации разрешений на доступ к объектам Active Directory. Для выполнения этих операций в ADSI 2.5 имеются три интерфейса:
Интерфейс JADsSecurityDescriptor обеспечивает доступ к общим параметрам дескриптора безопасности объекта каталога, таким как имя владельца объекта, назначение дескриптора и т. д.
Интерфейс lADsAccessControlList предназначен для управления дискреционным списком управления доступа (Discretionary Access Control List, DACL), содержащим элементы управления доступом (Access Control Entry, АСЕ). Интерфейс также позволяет работать с системным ACL- списком (System ACL, SACL), управляющим параметрами аудита.
□ Интерфейс lADsAccessControlEntry обеспечивает доступ к отдельным АСЕ-элементам.
При программном доступе к разрешениям следует пользоваться перечислениями, показанными ниже в таблице. (Распечатайте их!) Эти перечисления содержат все необходимые константы, которые нужны для создания нового АСЕ-элемента.
Свойство
Перечисление
AccessMask
ADS_RIGHTS_ENUM
AceFlags
ADS_ACEFLAG_ENUM
АсеТуре
ADS_ACETYPE_ENUM
Показанная ниже программа добавляет к дескриптору новый АСЕ-элемент, позволяющий пользователю W2KDOM\Jessica читать свойства подразделения Staff (это право содержит разрешения List Contents, Read All Properties и Read Permissions). Кроме того, программа отображает все разрешения, установленные для объекта каталога, представляющего это подразделение.
Если вы установите DLL-библиотеку ADsSecurity, входящую с состав Active Directory SDK Resource Kit, то, внеся минимальные изменения в листинг (обратите внимание на комментарии, начинающиеся с символа $), сможете использовать эту программу с объектами файловой системы NTFS, реестром, каталогами Exchange Directory и Active Directory. (Познакомьтесь также с примером из Active Directory SDK, находящимся в папке \ResourceKit \ADsSecurity\File.)
Листинг 14.20. addSecDescr.bas — просмотр и модификация дескриптора безопасности некоторого объект каталога
Option Explicit
Dim objObject As IADs'$ New ADsSecurity
Dim objSD As TADsSecurityDescriptor
Dim objPropEntry As lADsAccessControlEntry
Dim objDACL As TADsAccessControlList 'Dim objSACL As TADsAccessControlList 'System ACL Dim i As Integer
' Привязка к объекту Active Directory:
Set objObject = GetObject("LDAP://OU=Staff,DC=w2k,DC=dom") objObject.GetInfo
'$ Если используется ADsSecurity, удалите два предыдущих оператора.
'$ Для сценариев VBScript нужно также добавить следующий оператор:
'$ objPropList = CreateObject("ADsSecurity")
'$ Непосредственное чтение дескриптора безопасности объекта:
'$ (для объекта Active Directory) '$ Set objSD = _
'$ objPropList.GetSecurityDescriptor("LDAP://OU=Staff,DC=w2k,DC=dom") '$ (для файла)
'$ Set objSD = _ '$objPropList.GetSecurityDescriptor("FILE://С:\text.txt")
' Чтение дескриптора безопасности и некоторых его свойств:
Set objSD = objObject.Get("ntSecurityDescriptor") '$ Удалите этот '$ оператор, если используется if ADsSecurity
Debug. Print " ===—™==—■======================——===—-==" Debug.Print "Управляющие флаги", objSD.Control, _
Hex(objSD.Control) + "(Hex)"
Debug.Print "Группа", objSD.Group Debug.Print "Владелец", objSD.Owner Set objDACL = objSD.DiscretionaryAcl ' Set objSACL = objSD.SystemAcl
' ***** Создание нового ACE-элемента
Set objPropEntry = CreateObject("AccessControlEntry")
'***** Установка значений свойств ACE-элемента ' Разрешения предоставлены пользователю: objPropEntry.Trustee = "W2KD0M\Jessica"
' Какие разрешения предоставлены (OxFOlFF = полный доступ): objPropEntry.AccessMask = ADS_RIGHT_GENERIC_READ 'ADS_RIGHTS_ENUM
' Определение объектов, на которые распространяются разрешения:
' ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = This object only (только для 'этого объекта) — по умолчанию
' ADS_ACEFLAG_INHERIT_ACE = This object and all child objects (Этот
объект и все дочерние объекты)
ObjPropEntry.AceFlags = ADS_ACEFLAG_INHERIT_ACE ’ADS_ACEFLAG_ENUM
' Разрешение или запрет (ADS_ACETYPE_ACCESS_DENIED) доступа: ObjPropEntry.АсеТуре = ADS_ACETYPE_ACCESS_ALLOWED 'ADS_ACETYPE_ENUM
। ***** Изменение ACL-списка и его назначение дескриптору безопасности ObjDACL.AddAce objPropEntry
objSD.DiscretionaryAcl = objDACL
On Error Resume Next
objObject.Put "ntSecurityDescriptor", Array(objSD) '$ если используется
’$ ADsSecurity, замените этот оператор на следующий:
'$ objObject.SetSecurityDescriptor objSD
objObject.Setinfo '$ если используется ADsSecurity, удалите этот 'оператор
If Err.Number = 0 Then
MsgBox "АСЕ успешно добавлен!",, "Изменение разрешений"
Else
MsgBox "Ошибка (Hex): " + Hex(Err.Number),, "Изменение разрешений" Exit Sub
End If
' ***** Чтение текущего ACL-списка objObject.GetInfo
Debug.Print objDACL.AceCount ' Общее количество ACE-элементов
i = 1
For Each objPropEntry In objDACL Вывод некоторых свойств ACE-элемента Debug.Print CStr(i) + ") "; objPropEntry.Trustee
Debug.Print " Маска (Hex) " + Hex(objPropEntry.AccessMask)
Debug.Print " Флаги (Hex) " + Hex(objPropEntry.AceFlags)
Debug.Print " Тип", objPropEntry.АсеТуре i = i + 1
Next
Set objObject = Nothing
Set objPropEntry = Nothing
Set objSD = Nothing
Set objDACL = Nothing
Приведенная выше программа отображает разрешения на доступ к объекту каталога в следующем виде:
W2KD0M\Domain Admins Mask (Hex) F01FF Flags (Hex) 0
Type 0
W2KDOM\jsmith Mask (Hex) 20014 Flags (Hex) 0
Type 0
W2KDOM\Jessica Mask (Hex) 80000000 Flags (Hex) 2
Type0
■г-*; Внимание! > J
L*^^—-****—-—-****^
Если вы используете ADsSecurity.dll из приложения на Visual Basic, не забудьте зарегистрировать эту DLL-библиотеку и добавить в проект ссылку (reference) на библиотеку ADsSecurity 2.5 Type Library.
_ Внимание!
Используя ADsSecurity.dll, вы можете манипулировать разрешениями на доступ к объектам файловой системы, а также к другим объектам. Однако в ADSI 2.5 не реализовано управление доступом к общим ресурсам (папкам или принтерам).
Расширение схемы
Перед тем как приступать к модифицированию схемы, запустите оснастку Active Directory Schema, выберите корень дерева в окне структуры и выполните команду Operations Master (Хозяин операций) в контекстном меню. Убедитесь в том, что флажок The Schema may be modified on this Domain Controller (Схема может быть изменена на этом контроллере домена) установлен. Если этот флажок сброшен, то при выполнении операций изменения схемы вы будете получать ошибку LDAPUNWILLINGTOPERFORM. Правильность созданных атрибутов и классов можно проверять с помощью оснастки Active Directory Schema или ADSI Edit. Если эти оснастки были запущены до того, как выполнялись изменения схемы, не забудьте перезагружать или обновлять схему в окнах этих оснасток, иначе обновления не будут отражаться на экране.
( Примечание )
Напомню, что после запуска оснастка Active Directory Schema всегда подключается к тому контроллеру домена, который является владельцем роли Schema Master.
Чтобы лучше понять механизм расширения схемы, его требования и ограничения, рекомендуется для начала создать демонстрационный атрибут или класс в диалоговом режиме при помощи оснастки Active Directory Schema (см. главу 4 "Средства управления долинами”). Можно также воспользоваться оснасткой ADSI Edit, однако этот инструмент менее дружественен, чем оснастка Active Directory Schema.
Создание нового атрибута
Следующий сценарий создает новый атрибут для хранения символьных строк. Все определяемые в сценарии свойства за исключением adminDescription являются обязательными.
Листинг 14.21. newAttribute.vbs — создание в схеме нового строкового атрибута
Dim objSchema 'As ZADsContainer Dim root, objNewAttr 'As IADs Dim strl 'As String
Set root = GetObject("LDAP://RootDSE") root.Getlnfo strl = root.Get("schemaNamingContext") ' Привязка к схеме на контроллере, являющемся мастером схемы: Set objSchema = GetObject("LDAP://" + strl) objSchema.Getlnfo
' Создание объекта, представляющего новый атрибут:
Set objNewAttr = objSchema.Create("attributeschema", _
"cn=MyCorp-TEST-StringAttribute") objNewAttr.Put "cn", "MyCorp-TEST-StringAttribute" objNewAttr.Put "IDAPDisplayName", "myCorp-TEST-StringAttribute" objNewAttr.Put "attributelD", "1.2.840.113556.1.4.70001"
objNewAttr.Put "attributesyntax", "2.5.5.12" objNewAttr.Put "oMSyntax", 64 objNewAttr.Put "isSingleValued", True objNewAttr.Put "adminDescription", "My-Test-Attribute"
On Error Resume Next
' Фактическое выполнение изменений: objNewAttr.Setinfo If Hex(Err.Number) = 0 Then
WScript.Echo "Атрибут успешно создан!" Elself Hex(Err.Number) = "80072035" Then
WScript.Echo "Ошибка (LDAP_UNWILLING_TO_PERFORM)"
Elself Hex(Err.Number) = "80071392" Then
WScript.Echo "Ошибка (LDAP_ALREADY_EXIST)" Else
WScript.Echo "Ошибка:" + Hex(Err.Number) End If
Set objSchema = Nothing
Set TADsContainer = Nothing
Set objNewAttr = Nothing
Использование созданного атрибута
Как использовать вновь созданный атрибут? Для этого нужно выполнить еще одну модификацию схемы: добавить новый атрибут в существующий класс. (Это может быть стандартный или вновь созданный класс.) Проще всего это сделать с помощью оснастки Active Directory Schema.
В окне оснастки откройте папку Class и найдите класс, который будет расширен. Предположим, вы выбрали класс user.
Откройте окно Properties и перейдите на вкладку Attributes (рис. 14.1).
Нажмите кнопку Add и выберите новый атрибут в окне Select Schema Object (Выбор объекта схемы). (Несколько объектов одновременно выбрать нельзя.) Нажмите кнопку ОК.
user Properties
General ] Relationship Attributes | Security ]
H°user
Mandatory:
Optional;Optional;accountExpires aCSPolicyName adminCount badPasswordTime badPwdCount codePage controAccessRights dBCSPwd defaultClassStoreaccountExpires aCSPolicyName adminCount badPasswordTime badPwdCount codePage controAccessRights dBCSPwd defaultClassStoreРис. 14.1. В этом окне вы можете видеть обязательные атрибуты класса и просматривать/до- бавлять необязательные атрибутыРис. 14.1. В этом окне вы можете видеть обязательные атрибуты класса и просматривать/до- бавлять необязательные атрибуты
Optional;
Optional;
accountExpires aCSPolicyName adminCount badPasswordTime badPwdCount codePage controAccessRights dBCSPwd defaultClassStore
accountExpires aCSPolicyName adminCount badPasswordTime badPwdCount codePage controAccessRights dBCSPwd defaultClassStore
Рис. 14.1. В этом окне вы можете видеть обязательные атрибуты класса и просматривать/до- бавлять необязательные атрибуты
Рис. 14.1. В этом окне вы можете видеть обязательные атрибуты класса и просматривать/до- бавлять необязательные атрибуты
Пока вы не нажали кнопку Apply (Применить), вы можете удалять атрибуты, добавленные по ошибке. Когда сделан окончательный выбор, нажмите кнопку Apply и закройте окно.
Выберите корень дерева в окне структуры и, выполнив команду Reload the Schema (Перезагрузить схему), запишите все изменения из кэша на диск.
Теперь в окне оснастки ADSI Edit можно открыть окно Properties для некоторого пользователя и проверить, появился ли новый атрибут (или несколько атрибутов) в списке необязательных свойств. Для присваивания значений этому атрибуту можно использовать либо эту оснастку, либо пользовательский сценарий (или программу).
Создание нового класса
Представленный ниже сценарий создает структурный класс, являющийся потомком — подклассом (subclass of) — абстрактного класса Person. Объекты (экземпляры) нового класса могут создаваться в подразделениях (это возможные старшие, possible superiors, нового объекта). В данном сценарии свойства mustContain, defaultSecurityDescriptor и adminDescription определять не обязательно. (Помните о том, что объект нового класса всегда наследует все атрибуты как его собственного класса, так и всех родительских классов.)
Листинг 14.22. newClass.vbs — создание нового структурного класса
Dim objSchema 'As TADsContainer
Dim objRootDSE, objNewClass 'As IADs
Dim strSchemaContext 'As String
Set objRootDSE = GetObject("LDAP://RootDSE")
objRootDSE.Getlnfо
strSchemaContext = objRootDSE.Get("schemaNamingContext")
' Привязка к схеме на контроллере, являющемся мастером схемы:
Set objSchema = GetObject("LDAP://" + strSchemaContext) objSchema.Get Info
' Создание объекта, представляющего новый класс
Set objNewClass = objSchema.Create("classSchema", _
"CN=MyCorp-TEST-MyClass")
objNewClass.Put "cn", "MyCorp-TEST-MyClass"
objNewClass.Put "IDAPDisplayName", "myCorp-TEST-MyClass"
objNewClass.Put "governsID", "1.2.840.113556.1.5.70001"
objNewClass.Put "objectClassCategory", 1 'ADS_CLASS_CATEGORY_STRUCTURAL ' ADS_PROPERTY_APPEND = 3
objNewClass.PutEx 3, "possSuperiors", Array("organizationalUnit")
objNewClass.Put "subClassOf", "2.5.6.6"' == Person
objNewClass.PutEx 3, "mustContain", Array("name", "description") objNewClass.Put "defaultSecurityDescriptor", _
"D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)" + _
"(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)" objNewClass.Put "adminDescription", "My-Test-Class"
' Выполнение всех изменений:
On Error Resume Next
objNewClass.Setinfo
If Hex(Err.Number) = 0 Then
WScript.Echo "Класс успешно создан!"
Elself Hex(Err.Number) = "80072035" Then
WScript.Echo "Ошибка (LDAP_UNWILLING_TO_PERFORM)"
Elself Hex(Err.Number) = "80071392" Then
WScript.Echo "Ошибка (LDAP_ALREADY_EXIST)"
Else
WScript.Echo "Ошибка:" + Hex(Err.Number)
End If
Set objSchema = Nothing
Set objRootDSE = Nothing
Set objNewClass = Nothing
Чтобы определить значение свойства defaultSecurityDescriptor, используйте Security Descriptor Definition Language (SDDL — язык описания дескрипторов безопасности) (см. пакет разработчика Platform SDK) или оставьте значения по умолчанию, показанные в листинге. С помощью указанного дескриптора устанавливаются следующие стандартные (т. е. определенные непосредственно, без наследования) разрешения на объекты нового класса:
Authenticated Users (Прошедшие проверку) — Read
Domain Admins (Администраторы домена) — Full Control
System (Система) — Full Control
Использование созданного класса
Обычно объекты некоторого определенного пользователем класса создаются только с помощью оснастки ADSI Edit или сценария (программы). Для нашего демонстрационного класса можно использовать следующую процедуру:
Запустите оснастку ADSI Edit и выберите какое-нибудь подразделение (поскольку единственным superior-объектом для нашего класса является класс organizationalUnit), в котором будет создан новый объект.
Выполните команду New | Object в контекстном меню или в меню Action (Действие). Выберите класс из списка.
Введите имя нового объекта и значения всех обязательных атрибутов (определенных непосредственно или унаследованных). Можно также нажать кнопку More Attributes (Дополнительные атрибуты) и определить значения нужных необязательных атрибутов.
Нажмите кнопку Finish (Готово). Все, новый объект создан.
Можно также разрешить создание объектов пользовательского класса средствами GUI-интерфейса оснастки Active Directory Users and Computers. См. подробности в разделе "Оснастка ADS1 Edit" (Пример 2) главы 4 "Средства управления доменами". (Если в схеме выполнялись какие-либо изменения, касающиеся отображения объектов в пользовательском интерфейсе, не забудьте перезапустить административные оснастки.)
Ссылки на ресурсы Интернета
Общие вопросы
Домашняя страница систем Windows 2000:
http://www.microsoft.com/windows2000/default.asp
Библиотека технических статей по Windows 2000:
http://www.microsoft.com/windows2000/Iibrary/default.asp
Загружаемые файлы для Windows 2000 — Пакеты обновлений (Service Packs); Обновления (Updates); DS-клиенты (клиентские расширения Active Directory для Windows 95, Windows 98 и Windows NT Workstation 4.0); утилита Windows 2000 Active Directory Migration Tool и т. д.:
http://www.microsoft.com/windows2000/downloads/default.asp
Свободно загружаемые инструменты:
http://www.microsoft.com/windows2000/libraiy/resources/reskit/tools/default.asp
Windows 2000 Support Tools: Обновление утилиты DCdiag.exe:
http://www.microsoft.com/downloads/release.asp? ReleaseID=22939
Windows 2000 Support Tools: Обновление утилиты NetDiag.exe:
http://www.microsoft.com/downIoads/release.asp?ReleaseID=22938
Главы из пакета Windows 2000 Resource Kit:
http://www.microsoft.com/windows2000/library/resources/reskit
S> /samplechapters/default.asp
Active Directory Service Interfaces (ADSI)
Обзор ADSI (ссылки на ресурсы и загружаемые файлы):
http://www.microsoft.com/adsi
Рекомендуется загрузить обновленную версию ADSI со страницы Microsoft Platform SDK. Вы можете выбрать и загрузить только нужные вам файлы:
http://www.microsoft.com/msdownload/platformsdk/setuplauncher.asp
MSDN Online Windows Development Center:
http://msdn.microsoft.com/windows2000/
Online-документация — щелкните ссылки Platform SDK Documentation /Networking and Directory Services/Directory Services/Active Directory Service Interfaces.
Открытые телеконференции:
microsoft.public.active.directory.interfaces
microsoft.public.platformsdk.active.directory
microsoft.public.platformsdk.adsi
VBScript
Технологии Microsoft Scripting (JScript, VBScript, WSH и т. д.):
http://msdn.microsoft.com/scripting/
Script Debugger 1.0:
http://msdn.microsoft.com/scripting/debugger/
Сервер сценариев Windows (WSH)
WSH 5.5 для Windows 9x, Windows NT и Windows 2000:
http://msdn.microsoft.com/scripting/windowshost/
Интерфейсы ADSI, поддерживаемые провайдерами LDAP и WinNT
В таблице перечислены все интерфейсы ADSI (всего 42), которые поддерживает или один из провайдеров — LDAP или WinNT, или поддерживают оба провайдера. В последнем столбце указана одна из 10 категорий, к которой относится конкретный интерфейс. Прежде всего, познакомьтесь с базовыми интерфейсами.
Имя интерфейса
LDAP
WinNT
Категория
IADs
Да
Да
Core (Базовый)
lADsAccessControlEntry
Да
—
Security (Безопасность)
lADsAccessControlList
Да
—
Security
lADsClass
Да
Да
Schema (Схема)
lADsCollection
—
Да
Persistent object (Постоянный объект)
lADsComputer
—
Да
Persistent object
lADsComputerOperations
—
Да
Dynamic object (Динамический объект)
lADsContainer
Да
Да
Core
lADsDeleteOps
Да
—
Utility (Служебный)
lADsDomain
—
Да
Persistent object
lADsExtension
Да
Да
Extension (Расширение)
lADsFileService
—
Да
Persistent object
lADsFileServiceOperations
—
Да
Dynamic object
(окончание)
Имя интерфейса
LDAP WinNT Категория
lADsFileShare
—ДаPersistent object
lADsGroup lADsLargelnteger lADsLocality lADsMembers
ДаДаPersistent object
Да—Data Type (Тип данных)
Да—Persistent object
ДаДаPersistent object
lADsNamespaces
IADsO
ДаДаCore
Да—Persistent object
lADsObjectOptions
Да—Utility
lADsOpenDSObject
IADsOU
ДаДаCore
Да—Persistent object
lADsPathname
ДаДаUtility
lADsPrintJob
—ДаPersistent object
lADsPrintJobOperations iADsPrintQueue
—ДаDynamic object
ДаДаPersistent object
lADsPrintQueueOperations lADsProperty lADsPropertyEntry lADsPropertyList lADsPropertyValue IADsPropertyValue2 lADsResource
ДаДаDynamicobject
ДаДаSchema
ДаДаProperty Cache (Кэшсвойств)
ДаДаPropertyCache
ДаДаPropertyCache
ДаДаPropertyCache
—ДаDynamicobject
lADsSecurityDescriptor lADsService
Да—Security
—ДаPersistent object
lADsServiceOperations lADsSession
—ДаDynamic object
—ДаDynamic object
lADsSyntax lADsUser
ДаДаSchema
ДаДаPersistent object
IDirectoryObject*
Да—Core/Non automation
(Базовый/Без автоматизации)
IDirectorySearch*
Да—Core/Non automation
— только для клиентов, не поддерживающих автоматизацию!
Функции библиотеки lADsTools
Ниже приведен полный список функций (всего 183), реализованных в библиотеке lADsTools. Для поиска описания некоторой функции в файле iadstools.doc используйте контекстный поиск по ее имени.
AddPerformanceCounter()
ADSPNMappings()
ADStayOfExecutionO
BridgeHeadName()
CheckDN ForSpecialChars() Clear PerformanceCounters() ClearUserCredentials()
ClientSiteNameO
Close PerformanceData() ConvertDNSToLDAP() ConvertErrorMsgO
ConvertLDAPToDNS()
DCAddress() DCAddressType() DCListEntryComputerObject() DCListEntryDnsHostNameQ
DCListEntryHasDSO DCListEntryIsPDC()
DCListEntryNetBiosName() DCListEntryServerObject() DCListEntrySiteName() DCName()
DCSiteNameQ
DirectPartnerFailReason()
Direct PartnerFailReasonText() DirectPartnerGuid()
D i rectPa rtne rH ighOU () DirectPartnerHighPU() DirectPartnerInConflict() Di rect PartnerLastAtte mptTi me() DirectPartnerLastSuccessTime() Direct PartnerNameO
DirectPartnerNumberFailures()c Direct PartnerObjectGuid() DirectPartnerSyncFlagsO DirectPartnerTransportDNO DirectPartnerTransportGuidO DSABridgeHeadTransportQ DSABridgeHeadTransportCountO DSAComputerPath ()
DSAConnectionAdminGenerated() DSAConnectionEnabled()
DSAConnectionName() DSAConnectionNotifyO DSAConnectionNotifyOverride() DSAConnectionReasonCode()
DSAConnectionReasonCount()
GetNamingContexts()
DSAConnectionReasonPartition()
GetObjectFromGuidO
DSAConnectionServerName()
GetObjectGuidForServerO
DSAConnectionTwoWayO
GetPartialNamingContexts()
DSADNSHostName()
GetPDCFSMOO
DSAInvocationlDQ
GetPerformanceDataO
DSAMailAddress()
GetRDNForObject()
DSAObjectGUlDO
GetRegistryDataQ
DSAOptionsQ
GetReplicationUSNStateQ
DSASchemaLocation()
GetReplicationUSN State Ex()
DsGetDcList()
GetRidPoolFSMOQ
DsGetDcName()
GetSchemaFSMO()
DsGetSiteNameQ
GetServerFromGuidO
Enable DebugLoggingO
GetServersInSite()
GCNameO
G etS erversl nS iteWithWritableNC ()
GetActiveDirectoryProperties()
GetSite ForServer()
GetBridgeHeadslnSite()
GetSiteLinkBridgePropertiesQ
GetChangeNotifications()
GetSiteLinkBridges()
GetConfigurationNamingContext()
GetSiteLinkPropertiesO
GetDefaultNamingContext()
GetSiteLinks()
GetDirectPartners()
GetSiteList()
GetDirectPartnersEx()
GetSiteProperties()
GetDomainNamingFSMOO
GetSubnets()
GetDSAConnections()
GetT rustRelationships()
GetDSAProperties()
GetWritableNCsForServer()
GetGCList()
GPOGuidO
GetGPOsQ
GPOName()
GetGPOSysVolVersionQ
GPOSysVolVersion()
GetGPOVersion()
GPOVersion()
GetGuidForServer()
InitPerformanceDataO
GetHighestCommittedUSN()
LastCallResult()
GetInfrastructureFSMO()
LastErrorText()
GetInterSiteTopologyGenerator()
M eta Data D iffe rencesAttribute ()
GetlnterSiteTransportsO
MetaDataDifferencesCount()
GetIPConfigurationO
MetaDataDifFerencesLastWriteTime()
GetMetaDataQ
MetaDataDifFerencesObjectDN()
GetMetaDataDifferences()
MetaDataDifferencesOrigServer()
SiteLinkBridgeSiteCount() SiteLinkBridgeSiteList() SiteLinkBridgeTransportO SiteLinkCost()S iteLinkEntryDN () SiteLinkEntryNameO SiteLinkEntryType() SiteLinkName() SiteLinkOptions() SiteLinkReplInterval() SiteLinkSiteCount() SiteLinkSiteList() SiteOptionsQ SiteTopologyFailover() SiteTopologyGenerator() SiteTopologyRenew() SubnetName() SubnetSiteObject() TestBindQ TranslateDNToNT4()TranslateNT4ToDN()TransportAddress() TransportAddress() TransportDLLName() TransportName() TreeName() TriggerKCCO TrustDirection() TrustDomainName () TrastNetBIOSNameO TmstType()SiteLinkBridgeSiteCount() SiteLinkBridgeSiteList() SiteLinkBridgeTransportO SiteLinkCost()S iteLinkEntryDN () SiteLinkEntryNameO SiteLinkEntryType() SiteLinkName() SiteLinkOptions() SiteLinkReplInterval() SiteLinkSiteCount() SiteLinkSiteList() SiteOptionsQ SiteTopologyFailover() SiteTopologyGenerator() SiteTopologyRenew() SubnetName() SubnetSiteObject() TestBindQ TranslateDNToNT4()TranslateNT4ToDN()TransportAddress() TransportAddress() TransportDLLName() TransportName() TreeName() TriggerKCCO TrustDirection() TrustDomainName () TrastNetBIOSNameO TmstType()
SiteLinkBridgeSiteCount() SiteLinkBridgeSiteList() SiteLinkBridgeTransportO SiteLinkCost()
S iteLinkEntryDN () SiteLinkEntryNameO SiteLinkEntryType() SiteLinkName() SiteLinkOptions() SiteLinkReplInterval() SiteLinkSiteCount() SiteLinkSiteList() SiteOptionsQ SiteTopologyFailover() SiteTopologyGenerator() SiteTopologyRenew() SubnetName() SubnetSiteObject() TestBindQ TranslateDNToNT4()
TranslateNT4ToDN()
TransportAddress() TransportAddress() TransportDLLName() TransportName() TreeName() TriggerKCCO TrustDirection() TrustDomainName () TrastNetBIOSNameO TmstType()
SiteLinkBridgeSiteCount() SiteLinkBridgeSiteList() SiteLinkBridgeTransportO SiteLinkCost()
S iteLinkEntryDN () SiteLinkEntryNameO SiteLinkEntryType() SiteLinkName() SiteLinkOptions() SiteLinkReplInterval() SiteLinkSiteCount() SiteLinkSiteList() SiteOptionsQ SiteTopologyFailover() SiteTopologyGenerator() SiteTopologyRenew() SubnetName() SubnetSiteObject() TestBindQ TranslateDNToNT4()
TranslateNT4ToDN()
TransportAddress() TransportAddress() TransportDLLName() TransportName() TreeName() TriggerKCCO TrustDirection() TrustDomainName () TrastNetBIOSNameO TmstType()
MetaDataDifferencesOrigUSN() MetaDataLastWriteTime() MetaDataLocalUSNQ MetaDataNameQ MetaDataServerNameQ MetaDataSourceUSN() MetaDataVersionNumber() NamingContextN ame() NetSendMessage()
NotificationPartnerAddedTimeO Notification PartnerName() NotificationPartnerObjectGuid() NotificationPartnerSyncFlags() NotificationPartnerTransport() PerfCounterName () PerfCounterValue() ReplicaSync() ReplicaSyncAll() ReplPartnerGuid() Repl PartnerlnConflictO ReplPartnerName() Repl PartnerU SN () Returned FlagsQ ServerlnSite EntryName() ServerInSiteEntryUUID() SetDsGetDcNameFlags() SetReplicaSyncAllFlags() SetReplicaSyncFlags() SetUserCredentials() SiteEntryNameO SiteLinkBridgeEntryDN() SiteLinkBridgeEntryName()
Глоссарий
AXFR — тип репликации базы данных DNS, при которой весь файл зоны передастся между серверами имен. Это единственный возможный тип передачи зон в Windows NT 4.0 DNS. См. также IXFR.
Directory System Agent (DSA) — базовая служба Active Directory, управляющая информацией каталога, хранящейся на жестком диске.
DN — см. Отличительное имя.
DNS — см. Domain Name System.
Domain Name System (DNS) — служба доменных имен; стандарт Интернета, используемый для регистрации понятного имени компьютера и его IP- адреса (адресов). DNS имеет иерархическую структуру имен, образующих единое пространство имен, называемое доменным деревом. По своей сути DNS — статическая служба, однако, в последних ее реализациях (RFC 2136) описываются методы динамического обновления базы данных DNS (ресурсных записей). Для доменов Windows 2000 служба DNS является обязательной и, будучи неправильно сконфигурированной, может быть причиной множества проблем, проявляющихся при аутентификации, администрировании и т. д.
DSA — см. Directory System Agent.
File Replication Service (FRS) — служба репликации файлов; стандартная служба системы Windows 2000 Server, используемая для репликации групповых политик и сценариев входа, хранящихся на системном томе SYSVOL. Также FRS реплицирует наборы данных, определяемых распределенной файловой системой (Distributed File System, DFS).
FQDN — см. Fully Qualified Domain Name.
FRS — cm. File Replication Service.
Fully Qualified Domain Name (FQDN) — полное доменное имя; DNS-имя, однозначно определяющее компьютер в сети и образующееся из имени компьютера (хоста), к которому добавляются все имена, входящие в доменное дерево, заканчивающиеся корневым доменом. В FQDN-имени отражается иерархия всех родительских доменов хоста. Например, FQDN-имя компьютера hosti, входящего в домен department, относящийся к лесу company. com будет таким: hosti. department. company. com.
Globally Unique Identifier (GUID) — автоматически генерируемое 128-битное (8-байтовое) число, использующееся для адресации объектов в Active Directory. Пример GUID-идентификатора: 7050f604-9fi5-4536-a592- 76d5af2e3487 (32 шестнадцатеричных цифр).
GUID — см. Globally Unique Identifier.
Incremental zone transfer (IXFR) — тип репликации базы данных DNS, когда между серверами имен передаются только измененные ресурсные записи, хранящиеся в файле зоны. Этот тип зонных передач поддерживается в Windows 2000 DNS (в дополнение к AXFR). См. также AXFR.
IXFR — см. Incremental уже transfer.
RDN — см. Относительное отличительное имя.
SOA — см. Start of Authority.
SRV-запись — тип ресурсных записей, используемых для регистрации и поиска хорошо известных служб TCP/IP. Очень важный тип для доменов Windows 2000, поскольку записи этого типа используются для обнаружения контроллеров домена, сайтов, серверов глобального каталога и других ресурсов.
Start of Authority (SOA) — ресурсная запись DNS, содержащая авторитетный сервер имен. Первая и обязательная запись во всех файлах зон прямого и обратного просмотра.
Time-To-Live (TTL) — время, в течение которого учетная запись кэшируется на стороне клиента (в распознавателе) или на сервере имен.
TTL — см. Time-To-Live.
Update Sequence Number (USN) — последовательный номер обновления; 64-битный счетчик, используемый в процессе репликации для отслеживания изменений объектов, выполненных на различных контроллерах домена. В начале транзакции изменения любого объекта каталога контроллер домена увеличивает свой текущий (наибольший записанный, highest committed) USN-номер.
UPN — см. Основное имя пользователя.
USN — см. Update Sequence Number.
Windows Name System (WINS) — служба разрешения имен, позволяющая клиентам получать IP-адреса, соответствующие запрашиваемым NetBIOS- именам. Поскольку компьютеры могут регистрировать и удалять свои имена, WINS является динамической службой в отличие от стандартной службы DNS.
WINS — см. Windows Name System.
Авторитетная зона < Authoritative zone — зона DNS, содержащая ресурсные записи, относящиеся к некоторому имени домена. Этой зоне делегируется право разрешения имен, относящихся к данному домену.
Авторитетное (принудительное) восстановление < Authoritative restore — тип операции восстановления доменов Windows 2000, при котором объекты восстанавливаемого поддерева каталога рассматриваются как авторитетные и заменяют все копии этих объектов, имеющиеся в домене или лесе. Чтобы обычное восстановление сделать авторитетным, используется утилита NTDSutil. См. также Неавторитетное восстановление.
Авторитетный сервер < Authoritative server — сервер DNS, регистрирующий ресурсные записи для домена. Данному серверу разрешено отвечать на запросы имен, хранящихся в соответствующей зоне. Для этой зоны авторитетный сервер указывается в записях SOA NS.
Главный сервер < Master server — то же самое, что и авторитетный сервер. Главные серверы могут быть основными (primary) или дополнительными (secondary); это определяется способом получения информации, содержащейся в зоне.
Делегирование < Delegation — способ распределения рабочей нагрузки в DNS между несколькими серверами имен, работающих в Интернете или домене. Сервер имен может иметь право самостоятельно разрешать запросы доменных имен или же может делегировать некоторые полномочия другим серверам. Это право закрепляется в соответствующих авторитетных зонах (в записях SOA и NS).
Домен < Domain — 1. Домен DNS — любое дерево или поддерево, входящее в пространство имен DNS. Имена DNS начинаются с корневого домена, представленного символом "." (точка). 2. Домен Windows 2000 — группа компьютеров и других сетевых ресурсов, которые можно администрировать как единое целое. Параметры безопасности (политики) домена действуют только в пределах этого домена и не влияют на другие домены.
Дополнительная зона < Secondary zone — доступная только для чтения копия основной (primary) зоны, которая обновляется посредством зонных пе-
редач. Такая зона позволяет распределить нагрузку на серверы DNS, а также обеспечить отказоустойчивость. В качестве аналога можно привести базу данных резервного контроллера домена (Windows NT В DC), содержащую информацию, реплицируемую с основного контроллера домена (PDC).
Дополнительный главный сервер < Secondary master server — основной сервер, на котором зону нельзя обновлять непосредственно, т. е. все изменения информации, относящейся к зоне, возможны только посредством репликации зоны с основного главного сервера.
"Захороненный" объект < Tombstone — "скрытый" объект Active Directory, который был удален из каталога, но еще не окончательно уничтожен.
Зона < Zone — часть базы данных DNS, хранящаяся на некотором сервере имен. Зона является элементом пространства имен доменов DNS.
Итеративный запрос < Iterative query — один из двух методов, используемых серверами DNS при разрешении запросов (см. также Recursive query). Если в итеративном режиме сервер DNS не может самостоятельно ответить на запрос клиента, он возвращает клиенту ссылку на другой сервер DNS, который может разрешить этот запрос. При таком подходе уменьшается нагрузка на сервер DNS, поскольку часть работы по разрешению имен перекладывается на самого клиента.
Корневая зона < Root zone — зона, представляющая корневой домен DNS.
Кэширующий сервер имен < Caching name server — не содержит никаких файлов зон и используется только для повышения производительности DNS в локальных сетях. Кэширующий сервер может хранить разрешенный запрос и быстро отвечать на последующие запросы клиентов, используя кэшированную информацию и не обращаясь к удаленным авторитетным серверам.
Неавторитетное восстановление Non-authoritative restore — обычный тип операций восстановления в доменах Windows 2000. При этом объекты, восстановленные с архивного носителя, могут быть заменены новыми копиями объектов, хранящимися на других контроллерах домена. См. также Авторитетное восстановление.
Основная зона < Primary zone — непосредственно обновляемое хранилище ресурсных записей DNS, относящихся к данной зоне. В качестве аналога можно привести базу данных основного контроллера домена (Windows NT PDC), которая реплицируется на все другие, резервные контроллеры домена (BDC).
Основное имя пользователя 4- User Principal Name (UPN) — стандартное представление имени при входе в домены Windows 2000: user@domain.com. Образуется из имени входа пользователя и суффикса UPN, в качестве кото-
рого по умолчанию используется DNS-имя домена, в котором располагается учетная запись этого пользователя. Для упрощения входа в сеть всем пользователям в лесе можно назначить дополнительные суффиксы UPN. Необязательно, чтобы это были действующие DNS-имена доменов, например, можно использовать такие UPN-имена: user@corpName или user0iocai.
Основной главный сервер < Primary master server — главный сервер, на котором можно непосредственно обновлять информацию, содержащуюся в зоне. Основной главный сервер является источником для репликации файла зоны на другие (дополнительные, secondary) серверы DNS.
Отличительное имя < Distinguished Name (DN) — имя, которое однозначно идентифицирует объект в Active Directory. DN-имя состоит из относительного отличительного имена (RDN) объекта и цепочки RDN-имен родительских объектов, например, CN=dcl,OU=Domain Controllers,DC=domain,DC=com.
Относительное отличительное имя < Relative Distinguished Name (RDN) — имя, однозначно определяющее объект в некотором контейнере каталога. В некотором смысле имена учетных записей SAM можно рассматривать как RDN-имена в доменном контейнере. RDN-имя может повторяться в дереве имен (в домене или лесе), однако оно должно быть уникальным в сочетании с определенной цепочкой родительских RDN-имен, т. е. отличительное имя не может дублироваться.
Передача зоны < Zone transfer — процесс копирования файла зоны DNS с основного главного сервера на дополнительный сервер (серверы).
Пересылка запроса < Forwarder — механизм "подмены" сервера DNS, при помощи которого продолжается обслуживание клиентского запроса, если предпочитаемый клиентом сервер не может разрешить этот запрос. Типичный пример пересылки: конфигурирование DNS-сервера (серверов) интернет-провайдера в качестве forwarder та локальном сервере DNS.
Пространство имен < Namespace — список имеющихся именованных объектов. Примером пространства имен служит структура папок на жестком диске. Если говорить о службах имен, то пространство имен DNS образует иерархическое дерево, а пространство имен WINS является одномерным, "плоским".
Раздел каталога < Directory partition — единица репликации в Active Directory, часть пространства имен каталога. Существует как минимум три раздела каталога: схема (Schema), конфигурация (Configuration) и раздел доменных имен (domain). Каждый контроллер домена хранит два первых раздела и раздел имен собственного домена. Таким образом, в лесе из 5 доменов имеется 7 разделов каталога: одна схема, одна конфигурация и 5 доменов. Раздел доменных имен реплицируется только в конкретном домене. Схема и конфигурация реплицируются в пределах всего леса. Особый раздел — Гло-
бальный каталог — содержит подмножество атрибутов всех объектов леса доменов.
Разрешение имен < Resolving — в службах DNS или WINS так называется процесс (и механизм) поиска IP-адреса некоторого хоста по его имени или, наоборот, имени хоста по его IP-адресу. В процессе участвуют две стороны: клиент, который генерирует запрос серверу имен, и сервер, который возвращает клиенту соответствующую информацию.
Распознаватель < Resolver — клиент DNS, посылающий запросы серверам имен и получающий IP-адреса, соответствующие искомым именам. Распознаватель Windows 2000 может кэшировать ответы сервера, а также выполнять и некоторые другие "интеллектуальные" функции.
Рекурсивный запрос < Recursive query —■ один из двух методов, используемых серверами DNS при разрешении запросов (см. также Итеративный запросу Если в рекурсивном режиме сервер DNS не может самостоятельно ответить на запрос клиента, он становится распознавателем (resolver) для другого сервера DNS, получает от него разрешенное имя и передает ожидающему клиенту. В этом режиме сервер DNS целиком выполняет всю работу по поиску окончательного ответа на запрос клиента.
Ресурсная запись < Resource record (RR) — элемент базы данных DNS. Группа ресурсных записей образует зону DNS. В зависимости от назначения, записи различаются по типу: чаще всего используются записи типа А, PTR, CNAME, SRV и MX.
Сервер или служба имен < Name server (NS) или service — служба, преобразующая понятные имена компьютеров (DNS или NetBIOS) в IP-адреса. (Возможно и обратное преобразование, когда по IP-адресу определяется имя хоста.) Этот процесс называется разрешением имен. Серверы имен хранят все информацию о пространстве имен. В среде Windows 2000 службы имен (в первую очередь — DNS) широко используются для нахождения сайтов, контроллеров домена, серверов глобального каталога и многих других сетевых ресурсов.
Состояние системы < System state — понятие, использующееся при архивации и восстановлении различной системной информации, включая Active Directory. На контроллере домена состояние системы включает в себя такие компоненты: реестр, регистрационная база классов, загрузочные системные файлы, файлы базы данных Active Directory и том SYSVOL.
Ссылочный объект < Cross-reference object — объект Active Directory, хранящий информацию о "внешних" объектах и службах каталога, например, об объектах, принадлежащих к другому домену (и, следовательно, хранящихся в другом разделе каталога).
Субъект безопасности < Security principal — учетная запись пользователя, группы безопасности или компьютера.
Узел, хост < Host — компьютер или другой ресурс сети TCP/IP, имеющий уникальное имя и IP-адрес. Для взаимодействия хостов в сети могут использоваться их IP-адреса или имена и некоторая служба разрешения имен (DNS или WINS).
Циклическое обслуживание <- Round robin — метод распределения нагрузки между серверами или службами. Его суть в следующем: можно зарегистрировать в DNS несколько IP-адресов, и при каждом последующем обращении к серверу имен клиент будет получать другой адрес.
"Как сделать...?"
Данный указатель, разделенный на темы, поможет вам быстро найти ответы на некоторые практические вопросы, часто возникающие у администраторов. Возможно, вам даже будет проще ориентироваться в книге по этому указателю, чем по содержанию.
Общие вопросы
Как найти объект Active Directory по его GUID 234
О преобразовать значения времени, хранящиеся как Large Integer, в понятный формат 202, 229
0 преобразовать код ошибки в текстовое описание 230
Установка и конфигурирование Active Directory
Как проверить конфигурацию DNS 54, 63
О сконфигурировать Active Directory для работы с сервером DNS, работающим не под Windows 2000 56
О создать контроллер домена 60
0 удалить Active Directory (контроллер домена) 71
0 удалить потерянные домены или контроллеры домена 188, 272
0 установить Active Directory 60
0 установить Windows 2000 DNS Server 52
0 установить административную оснастку на клиентском компьютере 134
0 установить на компьютере суффикс DNS 74
Администрирование доменов
Windows 2000 и Active Directory
Как администрировать другой домен 130
О делегировать некоторые административные права пользователю или группе 153
О добавить компьютер в домен Windows 2000 75
0 зарегистрироваться на контроллере домена в интерактивном режиме (локально) 70
0 найти в домене все группы определенного типа 288
0 найти владельца операции или передать (захватить) роль FSMO 144, 191
0 найти все серверы глобального каталога в лесе доменов 367
0 найти опубликованный ресурс 143
0 опрашивать Active Directory с клиентских компьютеров 136
0 опубликовать общую папку или принтер в Active Directory 142
0 проверить, является ли контроллер домена сервером глобального каталога 49
О проверить, является ли сервер Windows 2000 контроллером домена 48
0 разрешить аудит объектов Active Directory 155
0 "спрятать от просмотра" объекты Active Directory 94
0 увидеть все изменения, сделанные в каталоге (на контроллере домена), начиная с определенного момента времени 225, 345
0 увидеть удаленные объекты Active Directory (tombstones) 247
Обслуживание Active Directory
Как архивировать Active Directory 159
0 восстановить Active Directory 160
0 выключить удаленный компьютер 201
0 переместить в другое место базу данных и/или файлы журналов Active Directory 182
0 проверить контроллер домена 175
0 проверить целостность базы данных Active Directory 185
0 сжать файл базы данных Active Directory 183
Репликация Active Directory
Как запретить репликацию для некоторого контроллера домена 228
0 инициировать репликацию между контроллерами домена 150, 220
0 определить трафик, возникающий при репликации 45
О определить, какая информация еще не реплицирована с одного контроллера домена на другой контроллер 213, 223
О определить, когда закончилась репликация 42
О перечислить контроллеры домена, являющиеся партнерами по репликации для указанного контроллера 217
О проверить репликацию 178
0 проверить, реплицируются ли между контроллерами домена ACL-списки определенного объекта каталога 297
О сравнить реплики каталога на различных контроллерах домена 210
0 увидеть для некоторого контроллера все соединения, образующие топологию репликации 219
0 узнать, какие атрибуты реплицируются в Глобальный каталог 31
Безопасность Active Directory и групповые политики
Как найти все политики (объекты GPO) в домене 235
0 найти поврежденные объекты GPO 315
0 обновить групповые политики компьютера или пользователя 149
0 определить, кто имеет права на доступ к определенному объекту Active Directory 289, 294
0 проверить безопасный канал 196, 271
0 проверить наследование ACL-списков 297
0 увидеть имена всех объектов GPO, существующих в домене 312
0 установить разрешение на доступ к объекту каталога из командной строки (в пакетном режиме) 296
Программный доступ к Active Directory
Как выполнить страничный поиск из ADSI-сценария 328
0 из командной строки назначить контроллер домена сервером глобального каталога 228
0 изменить атрибут объекта Active Directory 236, 264, 348
0 изменить членство в группе 265, 356
0 импортировать, экспортировать и модифицировать объекты Active Directory в пакетном режиме 254
0 модифицировать (расширить) схему Active Directory 114, 263, 329, 371
0 модифицировать атрибуты множества объектов каталога 264, 350
0 создать множество однотипных объектов Active Directory 357
DHCP 51
Directory Services Restore Mode 158, 180, 183
Directory System Agent (DSA) 28, 228
Discretionary Access Control List (DACL) 368
distinguished name 26
Distributed File System (DFS) 209
DN. Cm. distinguished name
DNS 33, 51, 54, 63, 68
DNScmd.exe 54
Domain Naming Master 39
dommon.exe 169
DRA Pending Synchronizations 46
DRA Sync Request Made 46
DRA Sync Requests Successful 46
DSA 344. Cm. Directory System Agent
DsACLs.exe 294
DsaStat.exe 210
DumpFSMOs.cmd 145
E
enumerating objects 350
F
File Replication Service (FRS) 42, 47, 152, 209
Flexible Single Master Operation (FSMO)
38, 144, 191, 269, 361, 365
forest root 35
FQDN Cm. Fully Qualified Domain Name
FRS. Cm. File Replication Service
FSMO. Cm. Flexible Single-Master Operation
Fully Qualified Domain Name 27
G
garbage collection 247
GC Cm. Global Catalog
Get, метод 326
GetlnfoEx, метод 326
Global Catalog 39, 47
Global Catalog Promotion Complete, параметр реестра 49
Globally Unique Identifier (GUID) 27
governsID 330
GPO. Cm. Group Policy Object
GPOTool.exe 42, 311
GPResult.exe 303
Group Policy Object 119, 120, 235, 303
Groups, метод 355
GSSAPI 33
GSS-SPNEGO 33
GUID Cm. Globally Unique Identifier
guid2obj.exe 235
H
highestCommittedUSN 25
I
IADs 324
lADsAccessControlEntry 368
lADsAccessControlList 368
lADsContainer 324, 352, 358, 359
lADsDeleteOps 359
lADsGroup 356
lADsOpenDSObject 324, 350
lADsProperty 326
lADsPropertyEntry 344
lADsPropertyList 344
lADsSecurityDescriptor 368
lADsTools 334, 363, 381
lADsUser 354, 355
Infrastructure Master 39, 278
isGlobalCatalogReady 25, 49, 345
isMemberOfPartialAttributeSet 330
isSingleValued 330
isSynchronized 25, 48, 345
К
KCC. Cm. Knowledge Consistency Checker
Kerberos 33, 272
0 билеты 299
Kerberos Distribution Center (KDC) 300
KerbTray.exe 299
KList.exe 302
Knowledge Consistency Checker 217, 364
L
LBridge.cmd 152
LDAP Cm. Lightweight Directory Access Protocol
LDAP URL 27
IDAPDisplayName 330, 331
LDIFDE.exe 254, 260
Ldp.exe 48, 49, 135, 240, 288, 361
Lightweight Directoiy Access Protocol 21
О запросы 99
О политики 186
0 порты 33
О ссылка (referral) 27, 28, 244
° обработка (chasing) 244
0 элементы управления 30
° Return Extended Distinguished Names 249
° Show Deleted Object 247
° Tree Delete 251
M
MaxPageSize 244, 245, 328
mayContain 331
mcmberOf, атрибут 356
Members, метод 356
Microsoft Script Debugger 337
mixed mode 39, 77
Modify LDAP, vbs 32, 188
MovcHerc 358
movetree.chk 276, 278
MoveTree.exe 275
movetree.log 277
mustContain 331
N
NetDiag.exe 202
NetDom.exe 77, 107, 145, 268
NETLOGON 48
nctlogon.dns 33
NLtest.exe 48, 49, 195
NTDSutil.exe 32, 39, 48, 145, 149, 161, 180
0 Authoritative Restore 181
0 Domain Management 181
0 Files 182
0 IP Deny List 186
0 LDAP policies 186
0 Metadata Cleanup 188
0 Roles 191
0 Security Account Management 193
0 Semantic Database Analysis 194
NTFRSutl.exe 209
О
Object Identifier (OID) 23, 329
objectSid 274
OID 23. Cm. Object Identifier
OID Generator 329
OidGen.exe 329
OLE DB 327
oMSyntax 330
originating DSA 224
P
Parent, метод 363
PDC 38
PDC Emulator 39, 42
Performance colintci's 45
poledit.exe 169
possSuperiors 331
promotion 60
Provider:
0 LDAP 379
0 WinNT 379
provider (ADSI) 322
Put, метод 326
PutlnfoEx 326
Q
Query Policy 31
R
RDN Cm. relative distinguished name
Referral 27
relative distinguished name 26
Relative Identifier (RID) 279
Remote Administration Scripts 168, 321
RepAdmin.exe 151, 191, 216
ReplMon.exe 42, 146, 152, 162, 230, 334 replPropcrtyMetaData 252
RID Cm. Relative Identifier
RootDSE 23, 33, 48, 49, 241, 344
RPC 206
RPC ping 206
RPingc.exe 207
RPings.exe 207
Run as different user, флажок 128
RunAs 127, 129
s
SACL Cm. System ACL
SAM:
0 имена 105
SAM account name 27
SASL См. Simple Authentication
and Security Layer scheduled replication 41 schema Cm. Active Directory schema Schema Master 39 SchemaDiff.vbs 334 ScliemaDoc.exe 334 schcmaNamingContcxt 25
SDDL Cm. Security Descriptor Definition
Language
search (LDAP) 29
search base 29
search scope 29
Scarch.vbs 233, 288, 345
search Flags 330
Security Descriptor Definition Language (SDDL) 375
Security Identifier (SID) 273, 279
seizing of role 145
SetPassword 354
ShowAccs.exe 174 showInAdvancedViewOnly 331 shutdown 201
Shutdown.exe 201
SID. Cm. Security Identifier SIDHist.vbs 280, 285 sIDHistory, атрибут 273, 286 SIDWalk.exe 174
SIDWalk.msc 174
Simple Authentication and Security Layer 33 SRV records 33 srvmgr.exe 169 subClassOf 330 subSchema, класс 329
System ACL 368
System Monitor Control 46
system provider (ADSI) 322
System State 158
SYSVOL 48, 152, 162
T
taskpads 90
TGT Cm. ticket-granting-ticket
The local policy of this system does not permit you to logon interactively 70
tickct-granting-ticket (TGT) 300
tombstone 159, 247
tombstoneLifetime 159
tree root 35
trusts 199
u
unattend.doc 73
UPN. Cm. User Principal Name
User Principal Name (UPN) 27, 103
userAccountControl 77
Users, Groups, and Computers as containers 96
USN 345
usrmgr.exe 169
V
verinc, параметр 163
w
well-known RID 279
well-known SID 279
Windows 2000 Administration Tools 113, 133
Windows 2000 DNS Server 51
Windows 2000 Resource Kit 168
Windows 2000 Support Tools 168
Windows Script Host 319, 321, 378
WSH. Cm. Windows Script Host
А
Атрибут многозначный (multi-valued)
342, 347, 349
Атрибуты 23
Аудит 155, 281
Аутентификация 325
Аутентификация (LDAP) 28
Б
База поиска 29
Безопасный канал 271
В
Восстановление:
О авторитетное 160, 161
0 неавторитетное 160, 161
0 основное 160
Г
Гибкие операции с одним владельцем 38
Глобальный каталог 360, 367
Групповые политики 303
д
Делегирование управления 292
Дерево доменов: 0 создание 67 Дескриптор безопасности 252, 294
Дефрагментация Active Directory 183
Доверительные отношения:
0 проверка 80
0 создание 78, 80, 81
0 управление 272
Домен:
0 дочерний, создание 66
0 члены 74
Дополнительные функции, режим 93
Ж
Журнал событий:
0 Directory Service 42, 47
0 уровни диагностики 46
3
Запрос:
0 в оснастке 110
0 в утилите AdsVw.exe 239
Захват роли FSMO 145
Зона интегрированная 52
И
Идентификатор безопасности (S1D) 279
Идентификатор объекта (GUID) 23
Импорт информации в /Active Directory 254
Интерфейсы:
0 ADS1 323
6 базовые (core) 324, 379
К
Каноническое имя 27
Класс:
0 абстрактный 22
0 вспомогательный 23
0 структурный 23
Контроллер домена 47
0 добавочный 66
0 создание 60
0 тестирование 175
м
Мастер делегирования управления 153
Мастер инфраструктуры 278
Мастер создания вида панели задач 90
Мастер установки Active Directory 66, 72
Метаданные репликации 224, 252
Методы (ADSI) 323
Миграция между лесами 278
н
Номер версии атрибута 162
О
Область поиска 29
Объект (Active Directory) 26
Операционные ограничения 31
Оснастка:
О Active Directory Domains and Trusts 103, 148, 198
0 Active Directory Schema 113, 148
0 Active Directory Sites and Services 40, 101, 150, 188, 228
0 Active Directory User's and Computers 92, 138, 147, 198
0 ADS1 Edit 32, 107
0 Group Policy 119
Основное имя пользователя (UPN) 27, 103
Основной режим домена 39, 77, 273, 275
Отличительное имя (DN) 26
Относительное отличительное имя (RDN)
26
п
Панель задач (в оснастках) 90
Перечисление объектов 325, 350
Подключение (connection, LDAP) 28
Поиск:
0 в Active Directory 135, 326
0 в каталоге 29, 247
0 опция оснастки 99
0 страничный 245
Политика запросов 31, 244
Полное доменное имя 27
Полное имя 106
Привязка к объекту 325
Провайдер 322
Пространство имен 322
Публикация принтера 68
Р
Разделы каталога:
0 конфигурация 245
0 схема 329
Разрешения:
О на доступ к объекту каталога 290, 294
0 предоставление и удаление 296
О умолчания схемы 293, 296
Режим восстановления каталога 158
Репликация 40, 178, 363
О GPO42
О внутренние ошибки 47
0 мониторинг 42
0 нормальная 41
О по расписанию 41
0 регистрация событий 232
0 с несколькими хозяевами 38
0 срочная 41
0 транспорты 40
0 уведомления об изменениях 41
0 управление 232
С
Свойство (ADS1):
О вычисляемое (функциональное) 326
Сервер сценариев Windows (WSH) 321
Сжатие базы данных Active Directory 183
Синтаксис атрибута 26
Системный провайдер 322
Смешанный режим 39, 70, 77, 275
Состояние системы 158
Суффикс UPN 104
Схема 22
0 Active Directory 159, 260, 328
О абстрактная 259, 329, 342
0 каталога 296
0 модификация 114
О расширение 263, 371
Счетчики производительности 45
У
Удаленное администрирование 133
Установка:
0 автоматическая 72
О файл ответов 72
Учетная запись компьютера
0 управление 270
Ф
Фильтр поиска 30
Фильтрация (ADSI) 325
Фильтры в оснастке 97
ц
Центр распространения ключей Kerberos 300
э
Экспорт информации из Active Directory 254
Элемент каталога 26
SOH
www.softline.ru
117036 г. Москва, ул. Шверника, д. 4 тел.: (095) 232-0023 e-mail: info@softline.ru
^ Все для разработки ПО
Почему опытные разработчики приобретают нужные для их работы программы в компании SoftLine?
Их привлекают низкие цены, т.к компания работает напрямую с вендорами.
Их привлекает имеющаяся возможность получения демо-версий и обновлений.
В выборе программ им помогают каталог Softline-direct и сайт www.softline.ru.
Большая часть ассортимента Softline для разработчиков недоступна в других компаниях.
Какие этапы разработки охватывает программное обеспечение, поставляемое SoftLine?
Проектирование программ (Microsoft, CA/Platinum, Rational, SiiverRun, Quest).
Совместная работа (Centura, Merant, Microsoft).
Управление проектами (PlanisWare, PlanView, Microsoft).
Написание кода (среды разработки Allaire, Borland, IBM, Microsoft, компоненты Allround Automation, ComponentOne, Crystal Decisions, Janus, Silraka, Stingray).
Оптимизация кода (Compaq, Fuji, Intel, MainSoft, Sun, Sybase, Tenberry). Отладка и тестирование (NuMega, Intuitive Systems, Segue).
Упаковка приложений (InstallShield, Wise Solutions).
Развертывание и поддержка (Remedy, RoyalBlue, CA, Network Associates).
Обучение пользователей (Adobe, Allen Communications, click2learn.com, eHelp, Macromedia, Quest, Ulead).
SoftLine ~ это свобода выбора
Обратившись в Softline, вы в кратчайшие сроки решите проблемы с программным обеспечением. Получив консультацию менеджеров, часть из которых знакома с работой разработчиков не понаслышке (на собственном опыте), вы подберете все необходимое для работы в вашей области - от интегрированной среды RAD до готовых компонент. При этом мы оставим выбор идеологии разработки за вами - например, для регулярного получения информации о продуктах и технологиях вы сможете подписаться на Microsoft Developer Network, Sun Developer Essentials или на нашу собственную рассылку компакт-дисков - Softline Support Subscription, предоставляющую обновления и демо-версии всех ведущих производителей. Компания Softline также поможет вам в выборе обучающих курсов.
Microsoft
Borland
COMPAQ.
macromedia'
Software installations iii.ule^
sitraka
<a 11aire >
№:a
InstallShield
SOFTWARE CORPORATION
Component^
SSYBASE
iNVoRMAriON AVI WHHHk.
РУКОВОДСТВО ДЛЯ ПРОФЕССИОНАЛОВ
Книги серии "мастер" написаны экспертами в области разработки и эксплуатации программных и аппаратных комплексов. Только в книгах этой серии Вы найдете систематическое и полное изложение специальных аслектоа современных компьютерных техног югий и сможете выбрать оптимальные и эффективные решения проблем прикладного программирования Серия “мастер” предлагает незаменимый инструмент в работе дает уникальный шанс расширить границы Ваших профессиональных возможностей, передает Вам опыт и знания специалистов высшей квалификации.
Алексей Чекмарев
Windows 2000
Active
Directory
Руководство по использованию службы каталогов Active Directory™, являющейся основой для построения доменов Windows 2000 и доменов следующей версии системы Windows.NET Server (Whistler).
Рассматриваются вопросы эксплуатации AD, а также ADSI-сценарии, существенно расширяющие возможности администраторов.
Базовые концепции и установка
Типовые задачи администрирования и устранение неисправностей
Системные утилиты (в том числе из пакета Windows 2000 Resource Kit)
Сценарии и npoi раммный доступ к каталогам
Книга-почтой BHV
Адрес: 199397, Cam 11етероург, а/я 194
Тел. (812) 541-8551, Факс (812) 541-8461
E-mail: trade@bhv.spb.su, Internet: wwv bhv.ru