Product SiteDocumentation Site

Альт Домен 11.1

Руководство администратора

Редакция январь, 2026

Аннотация

«Альт Домен» — служба каталогов (доменная служба), позволяющая централизованно управлять компьютерами и пользователями в корпоративной сети с операционными системами (ОС) на ядре Linux и Windows по единым правилам из единого центра. В системе реализовано хранение данных о пользователях, компьютерах (рабочих станциях) и других объектах корпоративной сети, а также управление профилями пользователей и компьютеров с помощью групповых политик в доменах MS Active Directory / Samba DC.
Данное руководство соответствует текущему состоянию сведений, но какие-либо окончательные правки могли не попасть в него. В случае обнаружения ошибок и неточностей в руководство вносятся изменения.
I. Введение
1. Основные сведения о логической модели Альт Домен
2. Схема стенда
3. Максимальные ограничения и параметры масштабирования
3.1. Общее ограничение по количеству объектов
3.2. Расчёт объема базы данных
3.3. Требования к дисковому хранилищу
3.4. Расчёт нагрузки на CPU (по сайтам)
II. Установка ОС Альт Сервер
4. Запись установочного образа на USB Flash
4.1. В операционной системе Windows
4.2. В операционной системе Linux
4.3. В операционной системе OS X
4.4. Проверка целостности записанного образа
5. Установка дистрибутива
5.1. Начало установки: загрузка системы
5.2. Последовательность установки
5.3. Язык
5.4. Выбор редакции
5.5. Лицензионное соглашение
5.6. Дата и время
5.7. Подготовка диска
5.8. Установка системы
5.9. Сохранение настроек
5.10. Установка загрузчика
5.11. Настройка сети
5.12. Администратор системы
5.13. Системный пользователь
5.14. Установка пароля на шифрованные разделы
5.15. Завершение установки
6. Обновление системы до актуального состояния
7. Смена редакции после установки
III. Разворачивание домена
8. Системные требования к серверу (контроллеру домена)
8.1. Оперативная память (RAM)
8.2. Размеры хранилища
8.3. Центральный процессор (СPU)
8.4. DNS
8.5. Синхронизация времени
8.6. Требования к портам
9. Выбор DNS-бэкенда
10. Создание первого контроллера домена
10.1. Настройка NTP-сервера
10.2. Установка имени контроллера домена
10.3. Сетевые настройки
10.4. Настройка resolvconf
10.5. Использование модуля управления сервисами
10.5.1. Установка пакетов
10.5.2. Параметры команды разворачивания домена
10.5.3. Создание нового домена
10.6. С помощью samba-tool
10.6.1. Установка пакетов
10.6.2. Остановка конфликтующих служб
10.6.3. Параметры команды разворачивания домена
10.6.4. Внутренний DNS-сервер Samba (SAMBA_INTERNAL)
10.6.5. Домен с BIND9_DLZ
10.6.6. Настройка Kerberos
10.6.7. Проверка работоспособности домена
11. Присоединение к домену в роли контроллера домена
11.1. Присоединение к домену с помощью модуля управления сервисами
11.1.1. В командной строке (alteratorctl)
11.1.2. В Альт сервисы
11.2. Присоединение к домену с помощью samba-tool domain join
11.2.1. Добавление DC с бэкендом SAMBA_INTERNAL
11.2.2. Добавление DC c бэкендом BIND9_DLZ
11.3. Проверка результатов присоединения
12. Контроллер домена, доступный только для чтения (RODC)
12.1. Установка и настройка RODC
12.1.1. Присоединение сервера к домену в роли RODC с помощью модуля управления сервисами
12.1.2. Присоединение сервера к домену в роли RODC с помощью samba-tool domain join
12.2. Политики репликации и кеширования паролей на RODC
12.3. Проверка репликации паролей на сервере RODC
13. Редактирование существующего домена
13.1. Повышение уровня схемы и функционального уровня домена
13.2. Включение RFC2307 после разворачивания домена
13.3. Изменение DNS-бэкенда контроллера домена
13.3.1. Миграция с SAMBA_INTERNAL на BIND9_DLZ
13.3.2. Миграция с BIND9_DLZ на SAMBA_INTERNAL
14. Отладочная информация
14.1. Настройка уровня журналирования Samba
14.2. Управление процессами Samba
14.3. Диагностика DNS
14.3.1. Устранение неполадок, связанных с серверной частью DNS
15. Удаление контроллера домена
15.1. Понижение роли онлайн-контроллера домена
15.2. Понижение автономного (недоступного) контроллера домена
15.3. Проверка после понижения
IV. Репликация
16. Настройка репликации
17. Проверка статуса репликации
17.1. Отображение статуса репликации на контроллере домена Samba
17.2. Отображение статусов репликации на контроллере домена Windows
18. Двунаправленная репликация SysVol
18.1. Настройка двунаправленной репликации SysVol на базе Rsync/Unison
18.2. Настройка двунаправленной репликации SysVol на базе Rsync/osync
18.3. Синхронизация idmap.ldb
V. Клиенты Альт Домен
19. SSSD и Winbind
19.1. Аутентификация (PAM)
19.1.1. SSSD
19.1.2. Winbind
19.2. Авторизация (NSS)
19.2.1. SSSD
19.2.2. Winbind
19.3. Кеширование и управление сессией
19.3.1. SSSD
19.3.2. Winbind
19.4. Групповые политики
19.4.1. Поддержка групповых политик ALT Linux
19.4.2. Интеграция с GPO-Based Access Control для входа в систему
19.5. Обновление DNS
19.5.1. SSSD
19.5.2. Winbind
19.6. Поддержка работы с несколькими доменами и доверительные отношения
19.6.1. SSSD
19.6.2. Winbind
20. Подготовка системы к вводу в домен
20.1. Синхронизация времени
20.2. Настройка DNS
20.2.1. Настройка клиентов для использования DNS-серверов вручную
20.2.2. Проверка разрешения DNS
21. Присоединение к домену в роли участника
21.1. Команда system-auth
21.2. Подключение к домену с использованием SSSD
21.2.1. Установка пакетов
21.2.2. Ввод в домен в командной строке
21.2.3. Ввод в домен в Центре управления системой
21.2.4. Проверка результатов присоединения
21.3. Подключение к домену с использованием Winbind
21.3.1. Установка пакетов
21.3.2. Ввод в домен в командной строке
21.3.3. Ввод в домен в Центре управления системой
21.3.4. Проверка результатов присоединения
22. Вход пользователя в систему
23. Отображение глобальных групп на локальные
24. Отладочная информация
24.1. Настройка уровня журналирования Samba
24.2. Ошибка при подключении к IP-адресу 127.0.0.1
24.3. Команда getent не показывает доменных пользователей и группы
25. Удаление клиента из домена
26. Повторная регистрация клиента в домене
27. Настройка аутентификации доменных пользователей на контроллере домена
27.1. Установка пакетов
27.2. Настройка конфигурационных файлов
27.2.1. Настройка Kerberos (krb5.conf)
27.2.2. Настройка Samba (smb.conf)
27.2.3. Настройка NSS (nsswitch.conf)
27.2.4. Настройка аутентификации
27.3. Генерация keytab-файла
27.4. Управление службами
27.5. Настройка ролей
27.6. Групповые политики
27.7. Настройка SSH
27.8. Проверка настройки
28. Настройка обновления паролей аккаунтов машин
28.1. Локальная политика смены пароля
28.2. Включение обновления пароля
28.2.1. ОС Windows
28.2.2. ОС «Альт»
28.3. Отключение обновления пароля
28.3.1. ОС Windows
28.3.2. ОС «Альт»
28.4. Диагностика
28.4.1. Дата последней смены пароля
28.4.2. Проверка доверия между машиной и доменом
28.5. Восстановление работоспособности
VI. Инструменты управления объектами домена и групповыми политиками
29. Групповые политики в Альт Домен
30. Установка административных шаблонов и административных инструментов
30.1. Установка административных шаблонов
30.2. Установка административных инструментов
30.2.1. ADMC
30.2.2. GPUI
30.3. Установка административных инструментов (машина Windows)
30.3.1. Windows Server
30.3.2. Windows 10 (1809 и более поздних версиях)
30.3.3. Windows Vista и 7
31. Включение механизма применения конфигурации на клиентских машинах
32. Модуль клиентской машины для применения конфигурации
32.1. Утилиты модуля gpupdate
32.2. Локальная политика
32.3. Ключи реестра
32.4. Модули клиентской стороны (Applier)
32.5. Периодичность запуска групповых политик
32.6. Утилита gpresult
33. Модуль удаленного управления базой данных конфигурации (ADMC)
33.1. Запуск ADMC
33.2. Смена пользователя
33.3. Интерфейс ADMC
33.4. Свойства объектов
33.5. Выбор контейнера
33.6. Управление пользователями
33.6.1. Создание учётной записи пользователя
33.6.2. Изменение учётной записи пользователя
33.7. Управление контактами
33.7.1. Создание контакта
33.7.2. Изменение свойств контакта
33.8. Управление группами
33.8.1. Создание группы
33.8.2. Изменение группы
33.9. Управление компьютерами
33.9.1. Создание учётной записи компьютера
33.9.2. Изменение учётной записи компьютера
33.9.3. Использование LAPS для просмотра пароля администратора
33.10. Управление подразделениями
33.10.1. Создание подразделения
33.10.2. Изменение подразделения
33.11. Делегирование административных полномочий
33.11.1. Управление разрешениями
33.11.2. Просмотр дескриптора безопасности в формате SDDL
33.11.3. Настройка разрешений для перемещения объектов между OU
33.11.4. Делегирование полномочий на управление учётными записями пользователей
33.11.5. Делегирование полномочий на присоединение компьютеров к домену
33.12. Управление объектами парольных настроек
33.12.1. Создание объекта парольных настроек
33.12.2. Просмотр и изменение объекта парольных настроек
33.12.3. Удаление объекта парольных настроек
33.13. Управление общими папками
33.14. Управление объектами групповых политик
33.14.1. Создание объекта групповой политики
33.14.2. Изменение объекта групповой политики
33.14.3. Блокирование наследования
33.14.4. Фильтрация безопасности групповых политик
33.15. Добавление/Удаление UPN суффиксов
33.16. Просмотр и передача ролей FSMO
33.17. Выбор объектов
33.18. Поиск объектов
33.18.1. Простой поиск
33.18.2. Обычный поиск
33.18.3. Продвинутый поиск
33.19. Использование сохранённых результатов поиска
34. Модуль редактирования настроек клиентской конфигурации (GPUI)
34.1. Команда gpui-main
34.2. Запуск GPUI для редактирования доменных политик
34.3. Выбор набора шаблонов групповых политик
34.4. Интерфейс
34.4.1. Редактирование параметров в разделе Административные шаблоны
34.4.2. Фильтрация административных шаблонов
34.4.3. Работа с предпочтениями групповых политик
34.4.4. Работа со скриптами
34.4.5. Смена языка
34.5. Редактирование групповых политик
34.5.1. Включение или выключение различных служб (сервисов systemd)
34.5.2. Управление control framework
34.5.3. Управление настройками службы Polkit
34.5.4. Политика доступа к съемным носителям
34.5.5. Управление gsettings
34.5.6. Управление настройками среды рабочего стола KDE
34.5.7. Управление пакетами
34.5.8. Экспериментальные групповые политики
34.5.9. Механизмы GPUpdate
34.5.10. Установка пароля для локального пользователя root (LAPS)
34.5.11. Управление политиками браузера Chromium
34.5.12. Управление политиками браузера Firefox
34.5.13. Управление политиками «Яндекс.Браузера»
34.5.14. Управление политиками почтового клиента Thunderbird
34.5.15. Политика замыкания
34.6. Редактирование предпочтений
34.6.1. Управление ярлыками
34.6.2. Управление каталогами
34.6.3. Управление INI-файлами
34.6.4. Управление переменными среды
34.6.5. Управление файлами
34.6.6. Управление общими каталогами
34.6.7. Подключение сетевых дисков
34.6.8. Настройка реестра
34.6.9. Указание прокси-сервера
34.6.10. Настройка периодичности запроса конфигураций
34.7. Управление logon-скриптами
34.7.1. Сценарии для входа/выхода пользователя
34.7.2. Сценарии для автозагрузки или завершения работы компьютера
34.7.3. Включение экспериментальных групповых политик
34.7.4. Файлы настроек политики
34.7.5. Диагностика проблем
35. Расширение возможностей ГП
35.1. Схема административных шаблонов (ADMX)
35.1.1. Структура ADMX-файла
35.1.2. Структура ADML-файла
35.1.3. Связывание информации из ADMX и ADML-файлов
35.1.4. Рекомендации для создания ADMX-файлов
35.2. Разработка новой политики
35.2.1. Пример для механизма Systemd
35.2.2. Пример для механизма Control
35.2.3. Пример для механизма Gsetting
35.2.4. Пример для механизма Polkit
36. Решение проблем
36.1. Область действия и статус групповой политики
36.2. Наследование групповых политик
36.3. Порядок применения групповых политик
36.4. Замыкание групповой политики
36.5. Диагностика применения GPO на стороне клиента
36.5.1. Коды ошибок
36.6. Диагностика проблем при работе с политикой скриптов
36.7. Диагностика проблем при подключении сетевых ресурсов
VII. Доверительные отношения (Трасты)
37. Настройка доверия
37.1. Общие сведения
37.2. Особенности доверительных отношений в Samba
38. Настройка DNS
38.1. Два домена Samba
38.1.1. Настройка переадресации DNS на DC с BIND9_DLZ
38.1.2. Настройка переадресации DNS на DC с SAMBA_INTERNAL
38.1.3. Проверка конфигурации DNS
38.2. Samba DC и Windows Server с AD
38.2.1. Windows Server с AD
38.2.2. Samba DC с BIND9_DLZ
38.2.3. Samba DC с SAMBA_INTERNAL
38.2.4. Проверка конфигурации DNS
39. Создание доверительного отношения
39.1. Два домена Samba
39.2. Samba AD и Windows Server с AD
39.2.1. Настройка на стороне Windows
39.2.2. Настройка на стороне Samba AD
39.2.3. Проверка доверия
40. Управление пользователями и группами
40.1. Список пользователей и групп
40.2. Тестирование аутентификации
40.3. Просмотр доверия в Windows
41. Использование доверительных отношений на LINUX-клиентах
41.1. Настройка Winbind
41.2. Настройка SSSD
41.2.1. Особенности одностороннего доверия
41.2.2. Очистка кеша SSSD при возникновении проблем
41.3. Назначение ролей для пользователей трастового домена
42. Удаление доверия
42.1. На стороне Samba
42.2. На стороне Windows Server с AD
VIII. Администрирование домена
43. Управление пользователями и группами
43.1. В ADMC
43.2. С помощью утилиты samba-tool
44. Администрирование DNS
44.1. DNS-записи при вводе машины в домен
44.2. Утилита samba-tool
44.2.1. Работа с DNS-записями
44.2.2. Работа с DNS-зонами
44.2.3. Получение информации о DNS-серверах
44.3. Утилита nsupdate
44.4. Oснастка DNS в RSAT
44.4.1. Работа с DNS-записями
44.4.2. Работа с DNS-зонами
44.5. Динамическое обновление DNS-записей
44.5.1. На стороне клиента
44.6. Обновление IP-адресов вручную
44.7. Известные проблемы
44.7.1. Неверные права DNS-записей машины в домене
45. Администрирование сайтов и подсетей
45.1. Утилита samba-tool
46. Групповые управляемые учётные записи служб (gMSA)
46.1. Команды для работы с корневыми ключами gMSA (KDS)
46.2. Операции с учетными записями gMSA
46.3. Пример настройки
47. Управление парольными политиками
47.1. Глобальные парольные политики
47.2. Объекты настроек паролей (PSO)
47.2.1. В ADMC
47.2.2. С помощью samba-tool
48. Резервное копирование и восстановление домена
48.1. Резервное копирование и восстановление из резервной копии
48.1.1. Создание резервной копии в онлайн и офлайн режимах
48.1.2. Переименованная резервная копия
48.1.3. Рекомендуемая стратегия восстановления домена
48.1.4. Отладочная информация
48.2. Восстановление произвольного контроллера домена после фатального сбоя
49. Роли FSMO
49.1. Семь ролей FSMO
49.1.1. Эмулятор PDC
49.1.2. Хозяин RID
49.1.3. Хозяин схемы
49.1.4. Хозяин именования доменов
49.1.5. Хозяин инфраструктуры
49.1.6. Хозяин зоны DNS домена
49.1.7. Хозяин зоны DNS леса
49.2. Просмотр и передача ролей FSMO
49.2.1. ADMC
49.2.2. Инструмент samba-tool
50. Функциональные уровни и схема каталога
51. Настройка Samba для привязки к определённым интерфейсам
52. Создание keytab-файла
52.1. Назначение и формат SPN
52.2. Создание SPN и генерация keytab с помощью samba-tool
53. Настройка DHCP-сервера для обновления DNS-записей
53.1. Настройка DHCP-сервера
53.2. Настройка переключения DHCP
54. Настройка LDAP через SSL (LDAPS)
54.1. Параметры smb.conf для LDAPS
54.2. Ограничение шифров TLS
54.3. Использование автоматически сгенерированного самоподписанного сертификата Samba
54.4. Использование пользовательского самоподписанного сертификата
54.5. Использование доверенного сертификата
54.6. Проверка сертификата
55. Управление паролями локальных администраторов в инфраструктуре службы каталогов
55.1. Настройка
55.1.1. LAPS в домене на контроллерах ALT (Samba AD)
55.1.2. Настройка Windows LAPS
55.1.3. Настройка клиентских машин c ОС «Альт»
55.2. Проверка применения групповых политик
56. Аутентификация других сервисов в домене
56.1. Настройка аутентификации Kerberos для веб-сервера Apache
56.1.1. Создание keytab-файла
56.1.2. Настройка Apache2
56.1.3. Проверка аутентификации
56.2. Настройка аутентификации Kerberos для веб-сервера Nginx
56.2.1. Создание keytab-файла
56.2.2. Настройка Nginx
56.2.3. Проверка аутентификации
56.3. Настройка браузеров для SSO
56.3.1. Настройка Mozilla Firefox
56.3.2. Настройка Chromium
56.3.3. Настройка «Яндекс.Браузера»
57. FAST в Kerberos
57.1. Что такое FAST
57.2. Принцип работы FAST
57.3. Armoring (бронирование)
57.3.1. Источники брони (armor)
57.3.2. Источники TGT для брони
57.3.3. FAST Request
57.3.4. FAST Response
57.4. Конфигурация клиентских машин
57.4.1. Winbind
57.4.2. SSSD
57.4.3. Windows
58. Централизованная настройка политик Kerberos
59. Распределенная файловая система (DFS)
59.1. Пространство DFS-имен
59.2. Настройка DFS на сервере Samba
60. Настройка SSSD
60.1. Журналирование SSSD
60.1.1. Файлы журналов SSSD
60.1.2. Уровни журналирования SSSD
60.1.3. Настройка уровня журналирования для SSSD в файле sssd.conf
60.1.4. Настройка уровня журналирования для SSSD с помощью команды sssctl
60.2. Настройки SSSD в ЦУС
60.3. Включение автономной аутентификации
61. Samba в режиме файлового сервера
62. Пользовательские общие ресурсы в Samba (Usershares)
62.1. Управление настройками через control
62.2. Настройка общего доступа
62.2.1. В файловом менеджере
62.2.2. В консоли
62.3. Просмотр публичных ресурсов
62.3.1. В файловом менеджере
62.3.2. В консоли
63. Монтирование общих ресурсов samba
63.1. Подключение с использованием gio
63.2. Подключение с использованием pam_mount
63.3. Подключение с использованием Autofs
64. Журналирование в Samba
64.1. Настройка бэкендов
64.2. Настройка файлов журнала
64.3. Уровни журналирования
64.3.1. Установка уровня журналирования в файле smb.conf
64.3.2. Установка уровня журналирования при выполнении команд
64.4. Настройка ведения журнала аудита
64.4.1. Регистрация событий аутентификации и авторизации
64.4.2. Регистрация изменений в базе данных
64.5. Интерпретация журналов аудита JSON
64.5.1. Общие атрибуты
64.5.2. Атрибуты событий аутентификации (Authentication)
64.5.3. Атрибуты событий авторизации (Authorization)
64.5.4. Атрибуты событий, связанных с изменениями в базе данных (dsdbChange)
64.5.5. Атрибуты событий, связанных с транзакциями (dsdbTransaction)
64.5.6. Атрибуты событий, связанных с изменением пароля (passwordChange)
64.5.7. Атрибуты событий, связанных с изменением группы (groupChange)
65. Усиление безопасности DC
65.1. Возможность анонимного получения списка пользователей, групп
65.2. Отключение Netbios
65.3. Отключение роли сервера печати
65.4. Отключение NTLMv1
65.5. Генерация дополнительных хешей паролей
65.6. Защита DNS-записей wpad и isatap
65.7. Ограничение диапазона динамических портов
65.8. Аудит запросов к каталогам SYSVOL и NetLogon
65.9. Отправка логов аудита в rsyslog
65.9.1. Настройка rsyslog
65.9.2. rsyslog на том же узле
65.9.3. rsyslog на вышестоящем узле
66. Планирование и настройка диапазонов идентификаторов UID и GID (Winbind/IDMapping)
66.1. Планирование диапазонов идентификаторов
66.2. Домен * по умолчанию
66.3. Использование tdb
66.4. Использование ad
66.5. Использование rid
66.6. Использование autorid
67. Инструменты командной строки
67.1. samba-tool
67.2. wbinfo
67.3. net
67.4. adcli
67.5. ldapsearch
67.5.1. Фильтр
67.5.2. Формат вывода
67.5.3. Примеры
67.6. sssctl
67.7. testparm
68. Конфигурационные файлы
68.1. smb.conf
68.2. krb5.conf
68.3. sssd.conf
68.4. resolv.conf
68.5. Bind
IX. Решение проблем
69. Отладочная информация
69.1. Проблемы службы samba.service
69.1.1. Проблемы с запуском службы samba.service
69.1.2. Настройка уровня журналирования Samba
69.1.3. Управление процессами Samba
69.2. Диагностика DNS
69.2.1. Устранение неполадок, связанных с серверной частью DNS
69.2.2. Проверка корректности DNS-записей
69.3. Ошибки аутентификации
69.4. Проблемы на стороне клиента
69.4.1. Ошибка при вводе в домен
69.4.2. Ошибка при подключении к IP-адресу 127.0.0.1
69.4.3. Команда getent не показывает доменных пользователей и группы
69.5. Проблемы с присоединением к домену в роли контроллера домена
69.5.1. Рост базы данных при первичной репликации сложной инфраструктуры
69.6. Проблемы с репликацией
69.7. Сетевые проблемы
69.8. Работа доверительных отношений
69.9. Групповые политики
70. Инструменты диагностики
70.1. Инструмент диагностики состояния контроллера домена
70.2. Инструмент диагностики клиента домена
70.3. ALT Diagnostic Tool
70.3.1. Установка
70.3.2. Работа с ADT
70.3.3. Руководство администратора
70.3.4. Ошибки и нестандартные случаи
X. Примечания
71. Настройка беспарольного доступа по SSH
72. Центр управления системой

Часть I. Введение

Глава 1. Основные сведения о логической модели Альт Домен

Домен
Группа компьютеров, пользователей, принтеров и других объектов, совместно использующих общую базу данных каталога.
Дерево доменов
Иерархическая система доменов, имеющая единый корень (корневой домен).
Лес доменов
Множество деревьев доменов, находящихся в различных формах доверительных отношений.
Сервер
Компьютер, выполняющий определённые роли в домене.
Контроллер домена
Сервер, хранящий каталог и обслуживающий запросы пользователей к нему. Помимо хранения данных, контроллер домена может выполнять одну из FSMO-ролей.
Организационное подразделение (OU)
Субконтейнер в домене, который может содержать различные объекты AD: другие контейнеры, группы, аккаунты пользователей и компьютеров. OU представляет собой единицу административного управления внутри домена, к которой администратор может применять групповые политики и назначать разрешения другим пользователям.
Группа
Объект, являющийся участником системы безопасности (security principals) и предназначенный для управления доступом к ресурсам. Каждой группе присваивается уникальный идентификатор безопасности (Security Identifier, SID), который сохраняется в течение всего срока её существования.
Состав программного комплекса Альт Домен:
  • контроллер(ы) домена (DC) на базе дистрибутива ОС «Альт Сервер»;
  • модуль для ввода компьютера в домен;
  • модуль удаленного управления базой данных конфигурации (ADMC) — графический инструмент для управления объектами домена и групповыми политиками;
  • модуль редактирования настроек клиентской конфигурации (GPUI) — предназначен для изменения параметров групповых политик;
  • шаблоны групповых политик;
  • модуль применения конфигурации на целевой ОС Linux (gpupdate);
  • аналитический инструмент, формирующий отчёты о применении групповых политик (GPResult);
  • инструмент диагностики (ADT).
Развёртывание домена осуществляется в следующем порядке:
  1. Создание первого контроллера домена.
  2. Присоединение сервера в роли контроллера домена к существующему домену.
  3. Присоединение сервера или рабочей станции в роли рядового участника к существующему домену.

Глава 2. Схема стенда

Схема стенда

Таблица 2.1. Состав технических и программных средств стенда

№ ПЭВМ
Программная среда
Описание
1
ОС «Альт Сервер»
Контроллер домена test.alt
2
ОС «Альт Сервер»
Дополнительный контроллер домена test.alt
3
ОС Альт («Альт Рабочая станция», «Альт Рабочая станция K», «Альт Образование»)
Рабочая станция
4
ОС Альт («Альт Рабочая станция», «Альт Рабочая станция K», «Альт Образование»)
Рабочая станция
5
ОС Microsoft Windows Server 2012
Контроллер домена win.alt
6
ОС «Альт Сервер»
Контроллер домена example.alt
7
ОС «Альт Сервер»
Веб-сервер, прокси-сервер
8
ОС «Альт Сервер»
Контроллер домена test.alt только для чтения (RODC)
9
ОС Альт («Альт Рабочая станция», «Альт Рабочая станция K», «Альт Образование»)
Рабочая станция
Параметры домена:
  • имя домена — test.alt;
  • сервер (ОС ALT) — dc1.test.alt (192.168.0.132);
  • дополнительный сервер (ОС ALT) — dc2.test.alt (192.168.0.133);
  • RODC (ОС ALT) — rodc.test.alt (192.168.0.134);
  • веб-сервер, прокси-сервер (ОС ALT) — web.test.alt (192.168.0.150);
  • рабочая станция 1 (ОС ALT) — host-01.test.alt (192.168.0.135);
  • рабочая станция 2 (ОС ALT) — host-02.test.alt (192.168.0.136);
  • рабочая станция 3 (ОС ALT) — host-03.test.alt (192.168.0.137);
  • имя пользователя-администратора — Administrator;
  • пароль администратора — Pa$$word.
Дополнительные домены:
  • win.alt: сервер AD (ОС Windows) — dc1.win.alt (192.168.0.190);
  • example.alt: сервер (ОС ALT) — s1.example.alt (192.168.0.172).

Глава 3. Максимальные ограничения и параметры масштабирования

3.1. Общее ограничение по количеству объектов

Доменная инфраструктура поддерживает хранение и обработку до 1 500 000 объектов в базе каталога. В рамках этого предела возможна работа с объектами следующих типов:
  • до 700 000 пользователей;
  • до 700 000 компьютеров;
  • до 100 000 групп.

Важно

Один контроллер домена рекомендуется использовать для обслуживания не более 2–5 тысяч пользователей.

3.2. Расчёт объема базы данных

Оценочный размер базы данных домена можно вычислить по следующей формуле:
Объем (в KB) = Uc × 50KB + Cc × 10KB + Mc × 1KB
где:
  • Uc — количество пользователей;
  • Cc — количество компьютеров;
  • Mc — общее количество членств пользователей в группах.
Требования к оперативной памяти масштабируются линейно в зависимости от объёма базы, начиная от 2 ГБ и заканчивая 128 ГБ (см. табл. Рекомендации по объёму оперативной памяти).

Таблица 3.1. Рекомендации по объёму оперативной памяти

Количество пользователей
Минимальный объём ОЗУ
Рекомендуемый объём ОЗУ
до 10 000
2 ГБ
8 ГБ
до 20 000
4 ГБ
16 ГБ
до 50 000
8 ГБ
16 ГБ
до 100 000
16 ГБ
32 ГБ
до 200 000
32 ГБ
32 ГБ
до 500 000
64 ГБ
64 ГБ
до 1 000 000
128 ГБ
128 ГБ

3.3. Требования к дисковому хранилищу

Расчёт требований к дисковому хранилищу аналогичен расчёту требований к оперативной памяти, но с учётом накопления логов.

Важно

Категорически не рекомендуется использовать шпиндельные HDD.

3.4. Расчёт нагрузки на CPU (по сайтам)

Примечание

Ниже приведён расчёт минимально необходимого оборудования, в реальности нужен некоторый запас.
Расчёт требований к CPU производится на основе предполагаемой пиковой нагрузки — момента, когда большинство пользователей проходит аутентификацию за короткий период времени (например, в начале рабочего дня).
Важно определить временной интервал (t), за который все пользователи проходят аутентификацию (в секундах). Для примера расчета возьмем 5 минут (300 секунд).
Следующим параметром является количество аутентификаций, обрабатываемых одним ядром CPU (r) в секунду. На основе результатов нагрузочного тестирования установлено, что при наихудшем варианте одно ядро CPU способно обрабатывать две аутентификации в секунду (принимаем r = 2).
Далее расчет распределения ядер по серверам производится из следующего правила: не менее двух серверов в сайте и не более восьми ядер в сервере. Дополнительно рекомендуется резервирование по крайней мере одного сервера на площадку — для обеспечения отказоустойчивости и возможности обслуживания без снижения доступности.
Таким образом, если, например, сайт состоит из 22 000 пользователей:
22000 / 300 = 74 аутентификации в секунду
74/2 = 37 ядер
или:
22000 / (2*300) = 37
Итоговая формула:
CPU_cores = Uc / (r × t)

Часть II. Установка ОС Альт Сервер

Глава 4. Запись установочного образа на USB Flash

Для создания загрузочного flash-диска понадобится файл ISO-образа установочного диска с дистрибутивом. ISO-образы установочных дисков являются гибридными (Hybrid ISO/IMG), что позволяет записать их на flash-накопитель.

4.1. В операционной системе Windows

Для создания загрузочного flash-диска под операционной системой MS Windows используйте специальные программы: ALT Media Writer, Win32 Disk Imager, HDD Raw Copy Tool и другие.
ALT Media Writer — это инструмент, который помогает записывать образы ALT на портативные накопители, такие как flash-диски. Он может автоматически загружать образы из интернета и записывать их. Для записи образа на flash-диск необходимо:
  1. Скачать и установить ALT Media Writer.
  2. Вставить flash-диск в USB-разъем.
  3. Запустить ALT Media Writer.
  4. Выбрать дистрибутив и нажать кнопку Создать Live USB…:
    ALT Media Writer (altmediawriter)
    Начнётся загрузка образа из интернета.
  5. Выбрать устройство (flash-диск).
  6. После окончания загрузки нажать кнопку Записать на диск (если был отмечен пункт Записать образ после загрузки, запись образа начнётся автоматически).

Предупреждение

Будьте внимательны при указании имени USB-устройства — запись образа по ошибке на свой жёсткий диск приведёт к почти гарантированной потере данных на нём!

4.2. В операционной системе Linux

Для записи образа на flash-диск можно воспользоваться одной из программ с графическим интерфейсом:
  • ALT Media Writer (altmediawriter):
    ALT Media Writer (altmediawriter)
    ALT Media Writer может автоматически загружать образы из интернета и записывать их, при необходимости извлекая сжатые образы (img.xz).
  • Impression (impression);
  • SUSE Studio Imagewriter (imagewriter).

Предупреждение

Будьте внимательны при указании имени USB-устройства — запись образа по ошибке на свой жёсткий диск приведёт к почти гарантированной потере данных на нём!

Предупреждение

Не добавляйте номер раздела, образ пишется на flash-диск с самого начала!
Для записи установочного образа можно воспользоваться утилитой командной строки dd:
# dd oflag=direct if=<файл-образа.iso> of=/dev/sdX bs=1M status=progress;sync
где <файл-образа.iso> — образ диска ISO, а /dev/sdX — устройство, соответствующее flash-диску.
Для удобства показа прогресса записи можно установить пакет pv и использовать команду:
# pv <файл-образа.iso> | dd oflag=direct of=/dev/sdX bs=1M;sync
где <файл-образа.iso> — образ диска ISO, а /dev/sdX — устройство, соответствующее flash-диску.
Просмотреть список доступных устройств можно командой lsblk или (если такой команды нет) blkid.
Например, так можно определить имя flash-диска:
$ lsblk | grep disk
sda      8:0    0 931,5G  0 disk
sdb      8:16   0 931,5G  0 disk
sdc      8:32   1   7,4G  0 disk
flash-диск имеет имя устройства sdc.
Затем записать:
# dd oflag=direct if=/home/iso/alt-server-11.1-x86_64.iso of=/dev/sdc bs=1M status=progress; sync
или, например, так:
# pv /home/iso/alt-server-11.1-x86_64.iso | dd oflag=direct of=/dev/sdc bs=1M;sync
dd: warning: partial read (524288 bytes); suggest iflag=fullblock
3GiB 0:10:28 [4,61MiB/s] [===================================>  ] 72% ETA 0:04:07

Предупреждение

Не извлекайте flash-диск, пока образ не запишется до конца! Определить финал процесса можно по прекращению моргания индикатора flash-диска либо посредством виджета Безопасное извлечение съемных устройств.

4.3. В операционной системе OS X

В операционной системе OS X для создания загрузочного flash-диска можно использовать команду:
sudo dd if=alt-server-11.1-x86_64.iso of=/dev/rdiskX bs=10M
sync
где alt-server-11.1-x86_64.iso — образ диска ISO, а /dev/rdiskX — flash-диск.
Просмотреть список доступных устройств можно командой:
diskutil list

Предупреждение

Будьте внимательны при указании имени usb-устройства — запись образа по ошибке на свой жёсткий диск приведёт к почти гарантированной потере данных на нём!

4.4. Проверка целостности записанного образа

Для проверки целостности записанного образа необходимо выполнить следующие шаги:
  • определить длину образа в байтах:
    $ du -b alt-server-11.1-x86_64.iso | cut -f1 
    4996036608
    
  • посчитать контрольную сумму образа (или просмотреть контрольную сумму образа из файла MD5SUM на сервере FTP):
    $ md5sum alt-server-11.1-x86_64.iso
    0a83ba8334ce61bca8fc2399e04ffa6d  alt-server-11.1-x86_64.iso
    
  • подсчитать контрольную сумму записанного образа на DVD или USB Flash (выполняется под правами пользователя root):
    # head -c 4996036608 /dev/sdd | md5sum
    0a83ba8334ce61bca8fc2399e04ffa6d
    
    где размер после -c — вывод в п.1, а /dev/sdd — устройство DVD или USB Flash, на которое производилась запись.

Глава 5. Установка дистрибутива

5.1. Начало установки: загрузка системы

Примечание

В данной инструкции рассмотрена установка системы в режиме UEFI. Особенности установки в режиме legacy отображены в примечаниях.
Для того чтобы начать установку ОС Альт Домен, достаточно загрузиться с носителя, на котором записан дистрибутив.

Примечание

Предварительно следует включить в BIOS опцию загрузки с оптического привода или с USB-устройства.
В большинстве случаев указание способа входа в BIOS отображается на вашем мониторе непосредственно после включения компьютера. Способ входа в меню BIOS и информация о расположении настроек определяется производителем используемого оборудования. За информацией можно обратиться к документации на ваше оборудование.
Загрузка с установочного диска или специально подготовленного USB-flash-накопителя начинается с меню:
Начальный загрузчик EFI
Чтобы начать процесс установки, нужно клавишами перемещения курсора вверх и вниз выбрать пункт меню Install ALT Server 11.1 и нажать Enter.

Примечание

Начальный загрузчик в режиме Legacy:
Начальный загрузчик в режиме Legacy

5.2. Последовательность установки

Каждый шаг сопровождается краткой справкой, которую можно вызвать, щёлкнув кнопку Справка или нажав клавишу F1.

5.3. Язык

Установка начинается с выбора основного языка — языка интерфейса программы установки и устанавливаемой системы.
Выбор основного языка

5.4. Выбор редакции

После окна выбора языковых параметров установщик Альт Сервер переходит к этапу Выбор редакции.
Выбор редакции
Редакция — это набор компонентов, входящих в состав дистрибутива. Каждая редакция включает уникальный набор предустановленных и доступных для установки компонентов.
Для работы с ПК Альт Домен выберите редакцию Альт Домен. Подтвердите выбор, установив отметку в пункте Да, я согласен с выбранной редакцией и нажмите Далее.

Примечание

Редакцию можно изменить и после установки системы (см. Смена редакции после установки).

5.5. Лицензионное соглашение

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

5.6. Дата и время

На данном этапе выполняется выбор региона и города, по которым будет определен часовой пояс и установлены системные часы.
Дата и время (выбор часового пояса)
Для корректной установки даты и времени достаточно правильно указать часовой пояс и выставить желаемые значения для даты и времени.
Для ручной установки текущих даты и времени нужно нажать кнопку Изменить…. Откроется окно ручной настройки системных параметров даты и времени.

5.7. Подготовка диска

На этом этапе подготавливается площадка для установки Альт Сервер, в первую очередь — выделяется свободное место на диске.
В списке разделов перечислены уже существующие на жёстких дисках разделы (в том числе здесь могут оказаться съёмные flash-диски, подключённые к компьютеру в момент установки).
Подготовка диска
В списке Выберите профиль перечислены доступные профили разбиения диска. Профиль — это шаблон распределения места на диске для установки ОС. Можно выбрать один из профилей:
  • Установка сервера;
  • Вручную.
Профиль Установка сервера предполагает автоматическое разбиение диска. При выборе этого профиля будет создан раздел под корень (swap и раздел под efi автоматически). Если размер диска больше 130 ГБ, будет также создан раздел /var.

Примечание

При установке системы в режиме UEFI рекомендуется выбрать автоматическое разбиение диска для создания необходимых разделов для загрузки с EFI.

Предупреждение

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

5.8. Установка системы

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

Примечание

При установке системы без графической оболочки доступно управление настройками сервера через веб-интерфейс ЦУС.
Выбрав необходимые дополнительные пакеты, следует нажать кнопку Далее, после чего начнётся установка пакетов.
Установка системы
Установка происходит автоматически в два этапа:
  • получение пакетов;
  • установка пакетов.

5.9. Сохранение настроек

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

5.10. Установка загрузчика

Программа установки автоматически определяет, в каком разделе жёсткого диска следует располагать загрузчик для возможности корректного запуска ОС Альт Домен.
При установке в UEFI-режиме модуль установки загрузчика предложит вариант установить загрузчик в специальный раздел EFI (рекомендуется выбрать автоматическое разбиение на этапе разметки диска для создания необходимых разделов для загрузки с EFI):
Установка загрузчика при установке в режиме UEFI

Примечание

Установка загрузчика при установке в режиме Legacy:
Установка загрузчика
Для подтверждения выбора и продолжения работы программы установки необходимо нажать кнопку Далее.

5.11. Настройка сети

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

Примечание

Имя домена для разворачиваемого контроллера домена должно состоять минимум из двух компонентов, разделённых точкой.
На вторичном сервере обязательно нужно указать первичный сервер в поле DNS-серверы:
Настройка сети на вторичном сервере
Для сохранения настроек сети и продолжения работы программы установки необходимо нажать кнопку Далее.

5.12. Администратор системы

На данном этапе загрузчик создает учетную запись администратора. В открывшемся окне необходимо ввести пароль учетной записи администратора (root). Чтобы исключить опечатки при вводе пароля, пароль учетной записи вводится дважды.
Администратор системы
Подтверждение введенного (или сгенерированного) пароля учетной записи администратора (root) и продолжение работы программы установки выполняется нажатием кнопки Далее.

5.13. Системный пользователь

На данном этапе программа установки создает учетную запись системного пользователя (пользователя) Альт Сервер.
Системный пользователь
В процессе установки предлагается создать только одну учётную запись системного пользователя — от его имени можно выполнять задачи, не требующие привилегий суперпользователя. Учётные записи для всех прочих пользователей системы можно будет создать в любой момент после установки операционной системы.
Подтверждение введенного (или сгенерированного) пароля учетной записи системного пользователя и продолжение работы программы установки выполняется нажатием кнопки Далее.

5.14. Установка пароля на шифрованные разделы

Примечание

Если вы не создавали шифруемые разделы, то этот шаг пропускается автоматически. В этом случае сразу переходите к главе Завершение установки.
На этом этапе требуется ввести пароль для шифруемых разделов. Этот пароль потребуется вводить для того, чтобы получать доступ к информации на данных разделах.
Установка пароля на LUKS-разделы

5.15. Завершение установки

На экране последнего шага установки отображается информация о завершении установки:
Завершение установки
После нажатия кнопки Завершить автоматически начнется перезагрузка системы.

Глава 6. Обновление системы до актуального состояния

После установки системы её лучше сразу обновить до актуального состояния. Можно не обновлять систему и сразу приступать к работе только в том случае, если вы не планируете подключаться к сети или Интернету и не собираетесь устанавливать дополнительных программ.
Для обновления системы необходимо выполнить команды (с правами администратора):
# apt-get update
# apt-get dist-upgrade
# update-kernel
# apt-get clean
# reboot

Примечание

Получить права администратора можно, выполнив в терминале команду:
$ su -
или зарегистрировавшись в системе (например, на второй консоли Ctrl+Alt+F2) под именем root.

Глава 7. Смена редакции после установки

Если при установке системы была выбрана редакция Альт Сервер, но планируется работа с ПК Альт Домен, необходимо переключиться на соответствующую редакцию.

Примечание

Смена редакции — безопасная операция, при которой установка или удаление компонентов не выполняется. После смены редакции вы сможете выбрать и установить нужные компоненты с помощью:
  • графического инструмента alt-components;
  • консольной утилиты alteratorctl components.
Переключение редакции возможно как в графическом режиме, так и в консоли.
Смена редакции в консоли:
  1. Просмотр списка доступных редакций:
    $ alteratorctl editions
    Альт Домен (edition_domain)
    * Альт Сервер (edition_server)
    
    Звёздочкой (*) отмечена текущая редакция.
  2. Просмотр лицензии редакции Альт Домен:
    $ alteratorctl editions license edition_domain
    
  3. Установка редакции Альт Домен:
    $ alteratorctl editions set edition_domain
    

    Примечание

    Для смены редакции потребуется ввести пароль администратора.
  4. Проверка текущей редакции:
    $ alteratorctl editions
    * Альт Домен (edition_domain)
    Альт Сервер (edition_server)
    
Смена редакции в ЦУС:
  1. Откройте модуль Системная информация, выбрав СистемаО системе.
  2. В окне модуля на вкладке О системе отображается основная информация о дистрибутиве, включая текущую редакцию. Нажмите кнопку Изменить:
    Системная информация
  3. В отрывшемся окне выберите редакцию Альт Домен и нажмите Далее:
    Системная информация. Выбор редакции
  4. Внимательно прочитайте лицензионное соглашение. Если вы согласны с условиями, установите отметку в пункте Да, я согласен с условиями и нажмите Завершить:
    Системная информация. Лицензионное соглашение
  5. Ввести пароль администратора (root) и нажмите Подтвердить.

Часть III. Разворачивание домена

Поддерживаются следующие базовые возможности Active Directory:
  • аутентификация рабочих станций Windows и Linux и служб;
  • авторизация и предоставление ресурсов;
  • групповые политики (GPO);
  • перемещаемые профили (Roaming Profiles);
  • поддержка инструментов Microsoft для управления серверами (Remote Server Administration Tools) с компьютеров под управлением Windows;
  • поддержка протоколов SMB2 и SMB3 (в том числе с поддержкой шифрования).

Предупреждение

В связи с выпуском обновлений безопасности для Windows Server, в которых устранены уязвимости в реализации контроллера домена Active Directory, могут возникнуть проблемы совместимости с версиями Samba ниже 4.21.7.
В рамках обновлений, выпущенных 8 июля 2025 года, во всех поддерживаемых версиях Windows Server (включая Windows Server 2008) были внесены изменения в протокол Microsoft RPC Netlogon. Они связаны с введением дополнительных проверок доступа к определённым RPC-вызовам.
Ранее такие расширенные проверки применялись только в Windows Server 2025, но с указанной даты они активированы и в более ранних версиях.
Данные изменения нарушают совместимость с Samba и приводят к сбоям при выполнении запросов обнаружения контроллера домена (Netlogon DC Discovery) через сервис winbind.
В результате:
  • пользователи домена не смогут аутентифицироваться;
  • доступ к SMB-ресурсам, работающим на базе Samba с бэкендом idmap_ad (или winbind с ad), будет недоступен.
Проблема затрагивает Samba-серверы, настроенные как члены домена Windows Active Directory с использованием idmap backend = ad.
Предполагается, что данные обновления могут повлиять на работоспособность доверительных отношений между MS AD и Samba AD. Это может привести к нарушению междоменной аутентификации и доступа к ресурсам.
Для устранения проблемы выпущены обновлённые версии Samba:
  • Samba 4.22.3
  • Samba 4.21.7
Эти версии содержат исправления, обеспечивающие совместимость с обновлённым протоколом Netlogon.
Без установки этих обновлений Samba-серверы не смогут функционировать в доменах Windows Active Directory, если используется бэкенд ad для маппинга идентификаторов пользователей (idmap_ad).
Рекомендуется отложить установку обновлений Windows Server до тех пор, пока:
  • не будет выполнен переход на Альт Домен 11;
  • не будут установлены обновлённые версии Samba (4.21.7 или новее).
Это позволит избежать потери доступа к доменным ресурсам и сбоев аутентификации.

Содержание

8. Системные требования к серверу (контроллеру домена)
8.1. Оперативная память (RAM)
8.2. Размеры хранилища
8.3. Центральный процессор (СPU)
8.4. DNS
8.5. Синхронизация времени
8.6. Требования к портам
9. Выбор DNS-бэкенда
10. Создание первого контроллера домена
10.1. Настройка NTP-сервера
10.2. Установка имени контроллера домена
10.3. Сетевые настройки
10.4. Настройка resolvconf
10.5. Использование модуля управления сервисами
10.5.1. Установка пакетов
10.5.2. Параметры команды разворачивания домена
10.5.3. Создание нового домена
10.6. С помощью samba-tool
10.6.1. Установка пакетов
10.6.2. Остановка конфликтующих служб
10.6.3. Параметры команды разворачивания домена
10.6.4. Внутренний DNS-сервер Samba (SAMBA_INTERNAL)
10.6.5. Домен с BIND9_DLZ
10.6.6. Настройка Kerberos
10.6.7. Проверка работоспособности домена
11. Присоединение к домену в роли контроллера домена
11.1. Присоединение к домену с помощью модуля управления сервисами
11.1.1. В командной строке (alteratorctl)
11.1.2. В Альт сервисы
11.2. Присоединение к домену с помощью samba-tool domain join
11.2.1. Добавление DC с бэкендом SAMBA_INTERNAL
11.2.2. Добавление DC c бэкендом BIND9_DLZ
11.3. Проверка результатов присоединения
12. Контроллер домена, доступный только для чтения (RODC)
12.1. Установка и настройка RODC
12.1.1. Присоединение сервера к домену в роли RODC с помощью модуля управления сервисами
12.1.2. Присоединение сервера к домену в роли RODC с помощью samba-tool domain join
12.2. Политики репликации и кеширования паролей на RODC
12.3. Проверка репликации паролей на сервере RODC
13. Редактирование существующего домена
13.1. Повышение уровня схемы и функционального уровня домена
13.2. Включение RFC2307 после разворачивания домена
13.3. Изменение DNS-бэкенда контроллера домена
13.3.1. Миграция с SAMBA_INTERNAL на BIND9_DLZ
13.3.2. Миграция с BIND9_DLZ на SAMBA_INTERNAL
14. Отладочная информация
14.1. Настройка уровня журналирования Samba
14.2. Управление процессами Samba
14.3. Диагностика DNS
14.3.1. Устранение неполадок, связанных с серверной частью DNS
15. Удаление контроллера домена
15.1. Понижение роли онлайн-контроллера домена
15.2. Понижение автономного (недоступного) контроллера домена
15.3. Проверка после понижения

Глава 8. Системные требования к серверу (контроллеру домена)

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

Примечание

В условиях реальной эксплуатации рекомендуется использовать два или более контроллера домена для обеспечения отказоустойчивости.

8.1. Оперативная память (RAM)

Для демонстрационной/тестовой системы рекомендуется 2 ГБ.
Для производственной установки — не менее 4 ГБ ОЗУ, далее в зависимости от размера базы (см. табл. Рекомендации по объёму оперативной памяти).

Примечание

Параметр, который оказывает наибольшее влияние на требования к памяти, — это количество одновременных открытий сеансов.

8.2. Размеры хранилища

10 ГБ достаточно для доменов с несколькими сотнями пользователей.
При планировании размера хранилища также необходимо учесть:
  • уровни журналов и политику хранения журналов;
  • использование изображений/аватаров для идентификации пользователей;
  • количество пользователей, машин и групп;
  • объём, необходимый для резервного копирования.

Примечание

Указанный объём не учитывает дисковое пространство, необходимое для установки самого сервера.

8.3. Центральный процессор (СPU)

Для нескольких сотен пользователей достаточно 4 vCPUs.
Некоторые процессы Samba не являются многопоточными, поэтому увеличение числа процессоров не всегда увеличивает производительность.
Чтобы сбалансировать нагрузку, рекомендуется создать второй контроллер домена в репликации с первым и применить политику балансировки нагрузки на уровне клиента.
Необходимое количество контроллеров домена зависит от нескольких параметров:
  • количества сторонних LDAP-приложений, подключенных к домену;
  • качества кода этих приложений;
  • количества запросов к файловым серверам.

8.4. DNS

Не следует использовать существующий домен, если вы не являетесь владельцем домена. Для частных/тестовых установок рекомендуется использовать зарезервированные домены верхнего уровня из RFC2606 (https://tools.ietf.org/html/rfc2606), например, domain.example.
Имя домена для разворачиваемого контроллера домена должно состоять минимум из двух компонентов, разделённых точкой.

Важно

Следует избегать использования суффикса .local. Если домен использует этот суффикс, на сервере и подключаемых компьютерах под управлением Linux, необходимо отключить службу avahi-daemon.

Примечание

Имя контроллера домена и всех ПК, членов домена, не должно превышать 15 символов (ограничение связано с параметром sAMAccountName в Active Directory).

8.5. Синхронизация времени

Для аутентификации Kerberos требуется точная синхронизация времени между контроллером домена и рабочими станциями. Максимально допустимое отклонение времени по умолчанию составляет 5 минут. При превышении этого значения доступ будет запрещён: пользователь не сможет получить доступ к общим ресурсам или выполнить запрос к каталогу.
На всех контроллерах домена должен быть настроен NTP-сервер.
Samba поддерживает как ntpd, так и chrony в качестве сервера NTP. Демон синхронизирует время с внешними источниками и предоставляет клиентам доступ к актуальному времени.
Схема синхронизации времени
Из схемы синхронизации времени видно, что только DC с ролью Эмулятор PDC получает свое время от внешних NTP-серверов, остальные контроллеры получают время от эмулятора PDC. Рабочие станции получают время от любого доступного DC. Если DC с ролью эмулятора PDC отключён, другие DC продолжают искать его, что может привести к смещению времени. В качестве обходного пути следует установить одинаковые NTP-серверы на всех DC. В этом случае, если эмулятор PDC отключится и его невозможно будет быстро восстановить, необходимо передать его роль другому DC вручную.

8.6. Требования к портам

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

Таблица 8.1. Порты, используемые контроллером домена

Служба
Порт
Протокол
Примечание
DNS
53
TCP и UDP
Используется для разрешения имён между DC и клиентами. Может быть реализован внутренним DNS Samba или через Bind9
Kerberos
88
TCP и UDP
Для аутентификации Kerberos
NTP
123
UDP (Опционально)
Если на DC настроен и работает NTP
End Point Mapper (DCE/RPC Locator Service)
135
TCP
Для клиентских операций с DC
NetBIOS Name Service
137
UDP
NetBIOS Datagram
138
UDP
Для репликации файлов между DC
NetBIOS Session
139
TCP
Для репликации файлов между DC
LDAP
389
TCP и UDP
Для клиентских запросов к контроллерам
SMB over TCP
445
TCP
Для репликации файлов
Kerberos
464
TCP и UDP
Используется kadmin для установки и смены пароля Kerberos
LDAPS
636
TCP
Если в smb.conf установлен параметр tls enabled = yes (по умолчанию)
Global Catalog
3268
TCP
Для клиентского доступа к глобальному каталогу
Global Catalog SSL
3269
TCP
Если в smb.conf установлен параметр tls enabled = yes (по умолчанию)
Dynamic RPC Ports
49152-65535
TCP
Диапазон, используемый Windows Server 2008+. Задаётся параметром rpc server port в smb.conf. Подробнее см. в описании данного параметра на справочной странице man smb.conf.

Примечание

В зависимости от состава используемых служб для работы Samba могут потребоваться и другие порты.

Глава 9. Выбор DNS-бэкенда

Служба DNS в Альт Домен необходима для следующих функций:
  • разрешение имён;
  • обнаружение служб;
  • обнаружение контроллеров домена.
Для управления DNS-службой Samba поддерживает два режима (бэкенда):
  • SAMBA_INTERNAL — встроенный DNS-сервер:
    • поддерживает базовую функциональность, необходимую для работы домена;
    • используется по умолчанию при создании нового домена или присоединении к существующему;
    • прост в настройке, не требует установки дополнительного ПО или глубоких знаний о DNS;
    • рекомендуется для простых сценариев конфигурации DNS;
    SAMBA_INTERNAL не поддерживает следующий функционал:
    • роль кеширующего DNS-сервера (caching resolver);
    • обработку рекурсивных запросов (может только пересылать их другому рекурсивному DNS-серверу);
    • аутентификацию DNS-транзакций с использованием общих ключей (TSIG);
    • работу с зонами-заглушками (stub zones);
    • передачу зон DNS (zone transfers);
    • балансировку нагрузки методом циклического перебора между контроллерами домена (Round Robin load balancing among DC's);
    • условную пересылку DNS-запросов (conditional DNS forwarding).
  • BIND9_DLZ — DNS-сервер на основе BIND с хранением зон в Samba AD:
    • зоны хранятся в AD Samba (через модуль DLZ — Dynamic Linked Zones);
    • требует установки и настройки локального экземпляра BIND версии 9.8 или выше;
    • требует знания принципов работы DNS-сервера BIND и навыков его настройки;
    • рекомендуется для сложных сценариев, невозможных во встроенном сервере имён Samba.

Примечание

Внутренний DNS-сервер Samba не использует кеш: каждый запрос, не относящийся к его домену, будет отправляться на указанный сервер пересылки. Бэкенд BIND9_DLZ использует кеш BIND для рекурсивных запросов. Запросы к собственному домену каждый раз передаются через модуль DLZ, на этом уровне кеширование отсутствует.
При выборе варианта развертывания DNS-сервера необходимо учитывать:
  • необходимость условной пересылки DNS-запросов. Если не требуется, можно использовать встроенный сервер имен (SAMBA_INTERNAL). Если требуется, но при этом нежелательно использовать выделенный DNS-сервер — стоит использовать DNS-сервер на основе BIND 9;
  • существующую инфраструктуру. Если в инфраструктуре уже присутствуют настроенные DNS-серверы, которые могут выполнять функцию пересылки, имеет смысл использовать отдельный DNS-сервер на базе BIND 9.

Важно

Бэкенд DNS BIND9_FLATFILE не поддерживается.

Глава 10. Создание первого контроллера домена

Примечание

Для установки контроллера домена требуются привилегии суперпользователя.
Развёртывание домена (контроллера домена) возможно двумя способами. Первый способ предполагает использование утилиты командной строки samba-tool domain provision, при котором администратор вручную выполняет все этапы создания домена и последующей настройки сервисов. Второй способ — использование модуля управления сервисами, который автоматически выполняет полный цикл развёртывания: создание домена, а также настройку необходимых конфигурационных файлов, включая smb.conf и krb5.conf.

10.1. Настройка NTP-сервера

Настройка сервера времени chrony в качестве NTP-сервера:
  1. Установить пакет chrony:
    # apt-get install chrony
    
  2. Включить доступ к серверу chrony:
    # control chrony server
    

    Примечание

    По умолчанию chrony работает в режиме клиента.
  3. Установить синхронизацию с российским пулом NTP:
    # sed -i -r 's/^(pool.*)/#\1\npool ru.pool.ntp.org iburst/' /etc/chrony.conf
    
    или указать серверы NTP в директиве server или pool в файле конфигурации NTP /etc/chrony.conf:
    pool ru.pool.ntp.org iburst

    Примечание

    Параметр iburst ускоряет начальную синхронизацию, отправляя несколько запросов подряд при старте.
  4. Включить и запустить службу chronyd:
    # systemctl enable --now chronyd
    
  5. Проверка работы службы:
    # systemctl status chronyd.service
    

Примечание

При установленном графическом интерфейсе настройки NTP-сервера можно произвести в ЦУС (СистемаДата и время):
Графический интерфейс настроек NTP-Сервера
Эти настройки доступны также в веб-интерфейсе ЦУС.

10.2. Установка имени контроллера домена

Для сервера, на котором будет разворачиваться контроллер домена, должно быть установлено правильное имя узла и домена.
Для установки имени узла и домена следует выполнить команду:
# hostnamectl set-hostname <имя узла>
Например:
# hostnamectl set-hostname dc1.test.alt

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.

10.3. Сетевые настройки

Для корректной работы контроллера домена должны соблюдаться следующие условия:
  • для сервера должно быть задано полное доменное имя (FQDN);
  • IP-адрес сервера не должен изменяться;
  • в настройках сетевого интерфейса должен быть указан IP-адрес 127.0.0.1 в качестве первичного DNS.
Настройку сети можно выполнить как в графическом интерфейсе, так и в консоли:
  • В Центре управления системой в модуле Ethernet-интерфейсы указать имя компьютера и DNS 127.0.0.1:
    Ethernet-интерфейсы
  • В консоли:
    • задать имя компьютера:
      # hostnamectl set-hostname dc1.test.alt
      
    • указать собственный IP-адрес в качестве первичного DNS. Для этого создать файл /etc/net/ifaces/enp0s3/resolv.conf со следующим содержимым:
      nameserver 127.0.0.1
      nameserver 8.8.8.8
      search test.alt
      
      где enp0s3 — имя интерфейса;
    • обновить DNS:
      # resolvconf -u
    • убедиться в наличии следующих строк в файле /etc/resolv.conf:
      nameserver 127.0.0.1
      search test.alt
      

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.

10.4. Настройка resolvconf

Чтобы все локальные DNS-запросы обрабатывались через Samba, в файле /etc/resolvconf.conf должна присутствовать строка:
name_servers=127.0.0.1
Если этой нет — добавьте её в конец файла и обновите конфигурацию:
# resolvconf -u
Если на сервере используется systemd-networkd, чтобы избежать конфликтов systemd-resolved с Samba DNS, следует отключить DNSStubListener:
  • в файле конфигурации systemd-resolved (/etc/systemd/resolved.conf) установите значение:
    DNSStubListener=no
  • перезапустите службу systemd-resolved:
    # systemctl restart systemd-resolved
    

10.5. Использование модуля управления сервисами

Сервис Samba Active Directory предназначен для управления Samba AD и позволяет:
  • разворачивать контроллеры домена Samba AD (создавать новый домен или присоединяться к существующему);
  • удалять контроллеры домена Samba AD;
  • просматривать информацию о параметрах, с которыми был развёрнут контроллер домена
Управление сервисами доступно из консоли с помощью alteratorctl, а также из графического интерфейса с помощью приложения alt-services.

10.5.1. Установка пакетов

Для установки сервиса Samba Active Directory необходимо установить пакет alterator-service-samba-ad:
# apt-get install alterator-service-samba-ad
Для работы в графическом интерфейсе требуется установить приложение alt-services:
# apt-get install alt-services

10.5.2. Параметры команды разворачивания домена

Команда alteratorctl services deploy service_samba_ad позволяет развернуть новый домен или присоединить дополнительный DC к существующему домену.
Синтаксис:
$ alteratorctl services deploy service_samba_ad [ОПЦИИ] [ПАРАМЕТРЫ]
Возможные опции:
  • -f, --force-deploy — принудительное развёртывание сервиса;
  • -y, --yes — автоматически отвечать ДА на все вопросы;
  • --no-default — не использовать значения по умолчанию, если параметр не установлен.
Команда alteratorctl services deploy service_samba_ad поддерживает множество параметров (см. табл. Параметры команды deploy service_samba_ad), позволяющих гибко настроить контроллер домена. Эти параметры удобно использовать как при ручной настройке, так и в автоматизированных скриптах.
Подробную информацию можно найти на справочной странице:
$ alteratorctl services deploy service_samba_ad --help

Таблица 10.1. Параметры команды deploy service_samba_ad

Параметр
Описание
--adminPassword=PASSWORD
Задаёт пароль администратора домена (если не указан, пароль запрашивается в интерактивном режиме)
--backendStore=<tdb|mdb>
Тип базы — формат внутреннего хранилища каталога Samba:
  • tdb — формат по умолчанию (ограничение размера — до 4 ГБ);
  • mdb — формат на базе LMDB
--backendStore.mdb.backendStoreSize=<1-...>
Размер базы mdb для Samba AD в гигабайтах (по умолчанию — 4)
--dnsSettings.dnsBackend=<SAMBA_INTERNAL|BIND9_DLZ>
Бэкенд DNS — DNS-сервер для обслуживания доменной зоны:
  • SAMBA_INTERNAL — встроенный DNS-сервер Samba (по умолчанию);
  • BIND9_DLZ — BIND9 с динамической загрузкой зон из AD
--dnsSettings.dnsBackend.BIND9_DLZ.bindSettings.allowQuery.<0-…>=<IP>
Список разрешённых подсетей для DNS-запросов. Минимальное допустимое количество подсетей: 1
--dnsSettings.dnsBackend.BIND9_DLZ.bindSettings.allowRecursion.<0-…>=<IP>
Список разрешённых подсетей для рекурсивных DNS-запросов. Минимальное допустимое количество подсетей: 1
--dnsSettings.dnsBackend.BIND9_DLZ.bindSettings.dnssecValidation=<true|false>
Включить проверку DNSSEC (по умолчанию — false)
--dnsSettings.dnsBackend.BIND9_DLZ.bindSettings.listenOn.<0-…>=<IP>
Список IPv4-адресов для прослушивания (по умолчанию — any). Минимальное допустимое количество адресов: 1
--dnsSettings.dnsBackend.BIND9_DLZ.bindSettings.listenOnV6.<0-…>=<IP>
Список IPv6-адресов для прослушивания (по умолчанию — none). Минимальное допустимое количество адресов: 1
--dnsSettings.forwarders.<0-…>=<IP>
Список DNS-серверов для пересылки запросов. Минимальное допустимое количество адресов: 1
--functionalLevel=<2008_R2|2016>
Функциональный уровень — определяет функциональность домена (DFL) и леса (FFL) и влияет на совместимость с версиями Windows Server (по умолчанию — 2008)
--hostNetBiosName=HOSTNAME
Имя контроллера домена (по умолчанию — имя хоста)
--mode=<join|create>
Присоединиться к существующему домену (по умолчанию) или создать новый домен
--mode.join.adminLogin=ADMINLOGIN
Логин администратора домена, необходимый для присоединения контроллера домена и его понижения
--mode.join.ipAddressDc=IPADDRESS
IPv4-адрес контроллера домена в существующем домене
--mode.join.serverRole=<dc|rodc>
Роль сервера Samba AD (по умолчанию — dc)
--netBiosName=DOMAIN
Имя домена NetBIOS (по умолчанию — если для хоста задано полное доменное имя, используется доменная часть FQDN, приведённая к формату NetBIOS)
--realm=REALM
Kerberos-область и DNS-имя домена (по умолчанию — если для хоста задано полное доменное имя, используется доменная часть FQDN)
--siteName=SITENAME
Имя сайта Samba AD (по умолчанию — Default-First-Site-Name)
--use-rfc2307=<true|false>
Поддержка расширенных атрибутов UID и GID в схеме LDAP и ACL на файловой системе Linux
Команда alteratorctl services undeploy service_samba_ad останавливает работу сервиса, освобождает ресурсы и возвращает к оригинальным (исходным) настройкам.
Синтаксис:
# alteratorctl services undeploy service_samba_ad [ОПЦИИ] [ПАРАМЕТРЫ]
Возможные опции:
  • -y, --yes — автоматически отвечать ДА на все вопросы;
  • --no-default — не использовать значения по умолчанию, если параметр не установлен.
Параметры команды приведены в табл. Параметры команды undeploy service_samba_ad.
Подробную информацию можно получить на справочной странице:
$ alteratorctl services deploy service_samba_ad --help

Таблица 10.2. Параметры команды undeploy service_samba_ad

Параметр
Описание
--adminLogin=ADMINLOGIN
Логин администратора домена, необходимый для понижения контроллера домена
--adminPassword=PASSWORD
Пароль администратора домена
--forceUndeploy=<true|false>
Принудительно удалить домен, даже если при понижении контроллера домена возникнут ошибки (по умолчанию — false)
--resetToDefaults=<true|false>
Вернуть все конфигурационные файлы к значениям по умолчанию (по умолчанию — false). Вся информация о домене будет удалена с данного сервера!
--saveCurrentConfig=<true|false>
Сохранить конфигурационные файлы перед удалением домена (по умолчанию — false)

10.5.3. Создание нового домена

10.5.3.1. В командной строке (alteratorctl)

Создание контроллера домена test.alt с паролем администратора Pa$$word:
# alteratorctl services deploy service_samba_ad \
 --mode=create \
 --realm=test.alt \
 --netBiosName=test \
 --adminpass='Pa$$word' \
 --dnsSettings.dnsBackend=SAMBA_INTERNAL \
 --dnsSettings.forwarders.0=8.8.8.8"
где
  • --mode=crete — создать новый домен;
  • --realm — область Kerberos (LDAP), и DNS имя домена;
  • --netBiosName — имя домена (имя рабочей группы);
  • --adminPassword — пароль основного администратора домена (если параметр не указан, пароль запрашивается в интерактивном режиме);
  • --dnsSettings.forwarders.0 — внешний DNS-сервер (при необходимости можно добавить несколько, указав --dnsSettings.forwarders.1 и т. д.).

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
  • заглавные буквы (A–Z);
  • строчные буквы (a–z);
  • цифры (0–9);
  • специальные символы (например, !@#$%^&*).
Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.

Примечание

Параметр --use-rfc2307=true позволяет поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.
Пример вывода:
Проверка конфликтов ресурсов...
Продолжить выполнение "deploy service_samba_ad --mode=create …" со следующими параметрами?

╔═══════════════════════════╤══════════════════╗
║adminPassword              │*******           ║
╟───────────────────────────┴──────────────────╢
║Пароль администратора.                        ║
╠═══════════════════════════╤══════════════════╣
║backendStore               │"tdb"             ║
╟───────────────────────────┴──────────────────╢
║Тип базы.                                     ║
║tdb подходит для небольших доменов, mdb для   ║
║крупных доменов.                              ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.dnsBackend     │"SAMBA_INTERNAL"  ║
╟───────────────────────────┴──────────────────╢
║Бэкенд DNS.                                   ║
║Бэкенд DNS для Samba AD.                      ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.forwarders.0   │"8.8.8.8"         ║
╟───────────────────────────┴──────────────────╢
║Настройки DNS.                                ║
║Настройки DNS для Samba AD.                   ║
╠═══════════════════════════╤══════════════════╣
║functionalLevel            │"2008_R2"         ║
╟───────────────────────────┴──────────────────╢
║Функциональный уровень.                       ║
║Функциональный уровень домена.                ║
╠═══════════════════════════╤══════════════════╣
║hostNetBiosName            │"dc1"             ║
╟───────────────────────────┴──────────────────╢
║Имя контроллера домена.                       ║
╠═══════════════════════════╤══════════════════╣
║mode                       │"create"          ║
╟───────────────────────────┴──────────────────╢
║Режим.                                        ║
║Присоединиться к существующему домену или     ║
║создать новый домен.                          ║
╠═══════════════════════════╤══════════════════╣
║netBiosName                │"test"            ║
╟───────────────────────────┴──────────────────╢
║NetBios имя.                                  ║
║NetBios имя домена, например example.         ║
╠═══════════════════════════╤══════════════════╣
║realm                      │"test.alt"        ║
╟───────────────────────────┴──────────────────╢
║Realm.                                        ║
║DNS имя домена, например example.com.         ║
╠═══════════════════════════╤══════════════════╣
║useRfc2307                 │false             ║
╟───────────────────────────┴──────────────────╢
║Использовать RFC 2307.                        ║
║RFC 2307 атрибуты позволяют хранить информацию║
║о пользователях и группах Unix в каталоге     ║
║LDAP.                                         ║
╚══════════════════════════════════════════════╝
Продолжить? [y/N] y

...
Samba AD successfully provisioned and system has been configured.
После успешного развёртывания запустите домен:
# alteratorctl services start service_samba_ad
Если уровень домена не указан, то домен разворачивается на уровне 2008_R2. Для разворачивания домена на другом уровне, уровень необходимо явно указать, например:
# alteratorctl services deploy service_samba_ad \
 --mode=create \
 --realm=test.alt \
 --netBiosName=test \
 --adminpass='Pa$$word' \
 --dnsSettings.dnsBackend=SAMBA_INTERNAL \
 --dnsSettings.forwarders.0=8.8.8.8" \
 --functionalLevel=2016

Примечание

Если необходим уровень 2012_R2, следует сначала развернуть домен на уровне 2008_R2, а затем повысить его до 2012_R2 (см. Повышение уровня схемы и функционального уровня домена).

10.5.3.2. В Альт сервисы

Для разворачивания домена можно воспользоваться графическим приложением Альт сервисы.

Примечание

Альт сервисы можно запустить следующими способами:
  • из ЦУС, выбрав необходимый сервис в разделе Серверы;
  • из командной строки, выполнив команду:
    $ alt-services
10.5.3.2.1. Создание домена с бэкендом SAMBA_INTERNAL
Для создания домена с бэкендом SAMBA_INTERNAL:
  1. В приложении Альт сервисы выберите сервис Samba AD и нажмите кнопку Развернуть:
    Сервис Samba AD состояние
  2. На первом шаге мастера отображаются ресурсы, которые будут заняты сервисом. Убедитесь, что все необходимые ресурсы свободны, и нажмите кнопку Далее:
    Развертывание домена проверка ресурсов

    Примечание

    В разделе Дополнительные опции при необходимости можно выбрать:
    • Принудительное развертывание (пропуск предварительных проверок) — пропуск предварительных проверок (сервис будет развернут независимо от текущего состояния);
    • Запустить сразу же после развертывания — автоматический запуск сервиса после успешного развёртывания.
  3. Выберите режим Создать новый домен и укажите параметры:
    • Пароль администратора — надёжный пароль для учётной записи Administrator;

      Примечание

      Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
      • заглавные буквы (A–Z);
      • строчные буквы (a–z);
      • цифры (0–9);
      • специальные символы (например, !@#$%^&*).
      Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
    • Имя контроллера домена — имя DC (например, dc1);
    • NetBIOS имя — короткое имя домена (обычно совпадает с первой частью Realm, например, test);
    • Realm — полное DNS-имя домена (например, test.alt);
    • Тип базы — формат внутреннего хранилища каталога Samba:
      • tdb — формат по умолчанию (ограничение размера — до 4 ГБ);
      • mdb — формат на базе LMDB;
    • Использовать RFC 2307 — cинхронизация UNIX UID/GID между узлами;
    • Функциональный уровень — определяет функциональность домена (DFL) и леса (FFL) и влияет на совместимость с версиями Windows Server (2008 — по умолчанию, или 2016);
    • Имя сайта — логическое расположение контроллера в AD;
    • Настройки DNS:
      • Серверы пересылки — внешние DNS-серверы, на которые будут пересылаться запросы к внешним доменам;
      • Бэкенд DNS — DNS-сервер для обслуживания доменной зоны: SAMBA_INTERNAL (встроенный DNS-сервер Samba) или BIND9 с динамической загрузкой зон из AD.
    Настройка параметров развёртывания домена
    Нажмите кнопку Далее.
  4. Проверьте выбранные параметры и нажмите кнопку Подтвердить:
    Параметры развёртывания домена
  5. Введите пароль администратора системы (root) для подтверждения:
    Подтверждение подлинности
  6. После успешного развёртывания нажмите кнопку Завершить:
    Результат выполнения развертывания сервиса
    В окне Управление сервисами откроется вкладка Состояние с параметрами развёрнутого домена:
    Развёрнутый домен
  7. Запустите домен, нажав кнопку Запустить:
    Запуск домена
Далее можно проверить работоспособность домена (см. Проверка работоспособности домена).
10.5.3.2.2. Создание домена с бэкендом BIND9
Для создания домена с бэкендом BIND9:
  1. В приложении Альт сервисы выберите сервис Samba AD и нажмите кнопку Развернуть:
    Сервис Samba AD состояние
  2. На первом шаге мастера отображаются ресурсы, которые будут заняты сервисом. Убедитесь, что все необходимые ресурсы свободны, и нажмите кнопку Далее:
    Развертывание домена проверка ресурсов

    Примечание

    В разделе Дополнительные опции при необходимости можно выбрать:
    • Принудительное развертывание (пропуск предварительных проверок) — пропуск предварительных проверок (сервис будет развернут независимо от текущего состояния);
    • Запустить сразу же после развертывания — автоматический запуск сервиса после успешного развёртывания.
  3. Выберите режим Создать новый домен и укажите параметры:
    • Пароль администратора — надёжный пароль для учётной записи Administrator;

      Примечание

      Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
      • заглавные буквы (A–Z);
      • строчные буквы (a–z);
      • цифры (0–9);
      • специальные символы (например, !@#$%^&*).
      Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
    • Имя контроллера домена — имя DC (например, dc1);
    • NetBIOS имя — короткое имя домена (обычно совпадает с первой частью Realm, например, test);
    • Realm — полное DNS-имя домена (например, test.alt);
    • Тип базы — формат внутреннего хранилища каталога Samba:
      • tdb — формат по умолчанию (ограничение размера — до 4 ГБ);
      • mdb — формат на базе LMDB;
    • Использовать RFC 2307 — cинхронизация UNIX UID/GID между узлами;
    • Функциональный уровень — определяет функциональность домена (DFL) и леса (FFL) и влияет на совместимость с версиями Windows Server (2008 — по умолчанию, или 2016);
    • Имя сайта — логическое расположение контроллера в AD;
    • В разделе Настройки DNS для Бэкенд DNS выберите BIND9:
      Выбор бэкенда BIND9
    • В разделе Настройки BIND9 укажите параметры:
      • Разрешенные подсети — список разрешенных подсетей для DNS-запросов;
      • Разрешенные подсети для рекурсивных запросов —  список разрешенных подсетей для рекурсивных DNS-запросов;
      • Интерфейсы для прослушивания IPv4 —  список IPv4-адресов для прослушивания (например, any);
      • Интерфейсы для прослушивания IPv6 —  список IPv6-адресов для прослушивания (например, none);
      • DNSSEC — включить проверку DNSSEC;
      Настройки бэкенда BIND9
    • Серверы пересылки — внешние DNS-серверы, на которые будут пересылаться запросы к внешним доменам;
    Нажмите кнопку Далее.
  4. Проверьте выбранные параметры и нажмите кнопку Подтвердить:
    Параметры развёртывания домена
  5. Введите пароль администратора системы (root) для подтверждения:
    Подтверждение подлинности
  6. После успешного развёртывания нажмите кнопку Завершить:
    Результат выполнения развертывания сервиса
    В окне Управление сервисами откроется вкладка Состояние с параметрами развёрнутого домена:
    Развёрнутый домен
  7. Запустите домен, нажав кнопку Запустить:
    Запуск домена
Далее можно проверить работоспособность домена (см. Проверка работоспособности домена).

10.6. С помощью samba-tool

10.6.1. Установка пакетов

Samba поддерживает две реализации Kerberos — Heimdal и MIT.
Для Samba DC на базе Heimdal Kerberos необходимо установить компонент samba-dc:
# alteratorctl components install samba-dc
или пакет task-samba-dc:
# apt-get install task-samba-dc
Если будет использоваться Samba DC на базе MIT Kerberos, следует установить пакет task-samba-dc-mitkrb5:
# apt-get install task-samba-dc-mitkrb5

Примечание

Реализации Kerberos несовместимы между собой.
Samba на базе Heimdal Kerberos использует KDC, несовместимый с MIT Kerberos, поэтому на контроллере домена на базе Heimdal Kerberos из пакета samba-dc, для совместимости с клиентской библиотекой libkrb5 в krb5.conf (в секции — libdefaults) необходимо отключить использование ядерного кеша ключей — KEYRING:persistent:%{uid}:
# control krb5-conf-ccache default

10.6.2. Остановка конфликтующих служб

Samba в режиме контроллера домена (DC) включает встроенные службы:
  • LDAP-сервер;
  • центр распределения ключей Kerberos (KDC);
  • DNS-сервер (если используется SAMBA_INTERNAL).
Перед установкой необходимо остановить и отключить конфликтующие службы krb5kdc и slapd, а также bind:
# for service in smb nmb krb5kdc slapd bind; do \
systemctl disable $service; \
systemctl stop $service; \
done

Примечание

Отключить службы можно и через ЦУС (СистемаСистемные службы).

10.6.3. Параметры команды разворачивания домена

Команда samba-tool domain provision поддерживает множество опций, позволяющих гибко настроить контроллер домена. Эти параметры удобно использовать как вручную, так и в автоматизированных скриптах.
В табл. Основные опции для samba-tool domain provision описаны основные опции. Более подробную информацию можно найти на справочной странице samba-tool(8) (man samba-tool).

Таблица 10.3. Основные опции для samba-tool domain provision

Опция
Описание
--interactive
Запускает интерактивный режим: запрос параметров у пользователя
--domain=DOMAIN
Устанавливает имя домена NetBIOS (рабочей группы)
--domain-guid=GUID
Устанавливает GUID домена (иначе используется случайное значение)
--domain-sid=SID
Устанавливает SID домена (иначе используется случайное значение)
--ntds-guid=GUID
Устанавливает GUID объекта NTDS (иначе используется случайное значение)
--host-name=HOSTNAME
Устанавливает имя хоста контроллера домена
--host-ip=IPADDRESS
Устанавливает IPv4-адрес хоста
--host-ip6=IP6ADDRESS
Устанавливает IPv6-адрес хоста
--adminpass=PASSWORD
Задает пароль администратора домена (иначе используется случайное значение)
--krbtgtpass=PASSWORD
Задает пароль учетной записи krbtgt (иначе используется случайное значение)
--dns-backend=NAMESERVER-BACKEND
Устанавливает тип DNS-сервера, который будет использоваться контроллером домена:
  • SAMBA_INTERNAL — встроенный сервер имен Samba (по умолчанию)
  • BIND9_FLATFILE — внешний BIND 9 c текстовыми зонами (не поддерживается в Альт Домен)
  • BIND9_DLZ — внешний BIND 9 c модулем DLZ (зоны хранятся в Samba AD и обрабатываются BIND)
  • NONE — без DNS (не рекомендуется)
--dnspass=PASSWORD
Задает пароль учетной записи DNS (иначе используется случайное значение)
--server-role=ROLE
Роль сервера:
  • domain controller или dc — контроллер домена (по умолчанию)
  • member server или member — член домена
  • standalone — автономный сервер
--function-level=FOR-FUN-LEVEL
Уровень функциональности домена и леса: 2000, 2003, 2008, 2008_R2 (по умолчанию) или 2016
--base-schema=BASE-SCHEMA
Версия базовой схемы домена (по умолчанию — 2019)
--use-rfc2307
Поддержка расширенных атрибутов UID и GID в схеме LDAP и ACL на файловой системе Linux (по умолчанию — no)
--machinepass=PASSWORD
Пароль компьютера (иначе используется случайное значение)
--plaintext-secrets
Сохраняет конфиденциальные данные в открытом виде (не рекомендуется, по умолчанию конфиденциальные данные шифруются)
--realm=REALM
Указывает Kerberos-область и DNS-имя домена
--option=OPTION
Устанавливает параметры в smb.conf (например, --option="dns forwarder=8.8.8.8")
-s FILE, --configfile=FILE
Указывает путь к файлу конфигурации
-d DEBUGLEVEL, --debuglevel=DEBUGLEVEL
Включает режим отладки (уровень 1–10)

10.6.4. Внутренний DNS-сервер Samba (SAMBA_INTERNAL)

Samba предоставляет встроенный DNS-сервер, который поддерживает основные функции, необходимые для Альт Домен. Он прост в настройке и подходит для базовых сценариев.
Встроенный DNS-сервер имеет следующие ограничения:
  • нельзя использовать как кеширующий резолвер (caching resolver);
  • не поддерживает рекурсивные запросы;
  • не поддерживает подпись транзакции с общим ключом (TSIG) (shared-key transaction signature);
  • не поддерживает работу с зонами-заглушками (stub zones);
  • не поддерживает передачу зон (zone transfers);
  • не поддерживает балансировку нагрузки методом циклического перебора между контроллерами домена (Round Robin load balancing among DCs);
  • не поддерживает условную пересылку DNS-запросов (conditional forwarding).
Внутренний DNS-сервер может разрешать только DNS-зоны домена. Чтобы включить рекурсивные запросы других зон, следует в параметре dns forwarder (файл smb.conf) указать один или несколько IP-адресов DNS-серверов, поддерживающих рекурсивное разрешение. Например:
dns forwarder = 192.168.0.190 8.8.8.8

Примечание

Samba 4.5 и более поздние версии в параметре dns forwarder поддерживают несколько IP-адресов, разделенных пробелами. Старые версии поддерживают один IP-адрес.
Обращение ко второму и последующим DNS-серверам произойдёт только в том случае, если первый не вернул никакого ответа.

Примечание

Внешний DNS-сервер можно указать при создании домена — как в интерактивном режиме, так и через параметры.
При создании домена с внутренним DNS-сервером нужно использовать параметр --dns-backend=SAMBA_INTERNAL или не указывать этот параметр вообще.

10.6.4.1. Восстановление к начальному состоянию Samba

Перед созданием домена удалите старые конфигурации и базы данных (домен, если он создавался до этого, будет удалён):
# rm -f /etc/samba/smb.conf
# rm -rf /var/lib/samba
# rm -rf /var/cache/samba
# mkdir -p /var/lib/samba/sysvol

Предупреждение

Необходимо обязательно удалять /etc/samba/smb.conf. Samba создаст его автоматически при создании домена.

10.6.4.2. Создание домена

10.6.4.2.1. Интерактивное создание домена
Запуск интерактивной установки:
# samba-tool domain provision
В ответе на первые два вопроса нужно указать Realm (домен Kerberos и DNS) и имя домена (рабочей группы):
Realm [TEST.ALT]:
Domain [TEST]:

Примечание

Чтобы принять значение по умолчанию, необходимо нажать клавишу Enter.
Далее нужно указать роль сервера и бэкенд DNS:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
При запросе DNS forwarder IP address можно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:  8.8.8.8
Задать пароль для администратора:
Administrator password:
Retype password:

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
  • заглавные буквы (A–Z);
  • строчные буквы (a–z);
  • цифры (0–9);
  • специальные символы (например, !@#$%^&*).
Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
После ввода данных начнётся процесс настройки контроллера домена:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers and extended rights
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
Once the above files are installed, your Samba AD server will be ready to use
Server Role:           active directory domain controller
Hostname:              dc1
NetBIOS Domain:        TEST
DNS Domain:            test.alt
DOMAIN SID:            S-1-5-21-3202529454-2619939870-177941183
10.6.4.2.2. В пакетном режиме
Для пакетной установки необходимо как минимум указать следующие параметры:
  • --realm REALM_NAME — имя Kerberos-области (LDAP) и DNS-имя домена;
  • --domain=DOMAIN — имя NetBIOS (рабочей группы);
  • --adminpass=PASSWORD — пароль основного администратора домена;
  • dns forwarder=forwarder_ip_address — внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена;
  • --server-role=ROLE — тип серверной роли;
  • --dns-backend=NAMESERVER-BACKEND — бэкенд DNS-сервера;
  • --use-rfc2307 — позволяет поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
  • заглавные буквы (A–Z);
  • строчные буквы (a–z);
  • цифры (0–9);
  • специальные символы (например, !@#$%^&*).
Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
Пример команды для создания домена test.alt в пакетном режиме:
# samba-tool domain provision \
 --realm=test.alt \
 --domain=test \
 --adminpass='Pa$$word' \
 --dns-backend=SAMBA_INTERNAL \
 --option="dns forwarder=8.8.8.8" \
 --server-role=dc --use-rfc2307
Если уровень не указан, домен разворачивается на уровне 2008_R2. Для разворачивания домена на другом уровне, уровень необходимо явно указать, например:
# samba-tool domain provision \
 --realm=test.alt \
 --domain=test \
 --adminpass='Pa$$word'\
 --dns-backend=SAMBA_INTERNAL \
 --option="dns forwarder=8.8.8.8" \
 --option="ad dc functional level = 2016" \
 --server-role=dc \
 --function-level=2016

Примечание

Если необходим уровень 2012_R2, следует сначала развернуть домен на уровне 2008_R2, а затем повысить его до 2012_R2 (см. Повышение уровня схемы и функционального уровня домена).

Примечание

Некоторые параметры команды samba-tool domain provision приведены в в табл. Основные опции для samba-tool domain provision. Полный список параметров можно увидеть, запустив команду:
# samba-tool domain provision --help
10.6.4.2.3. Создание домена в ЦУС
Инициализации домена в веб-интерфейсе Центра управления системой:
  1. Откройте модуль Домен, выбрав СистемаДомен.
  2. В поле Имя домена укажите имя домена.
  3. Отметьте пункт Active Directory.
  4. Указажите IP-адреса внешних DNS-серверов в поле DNS-серверы.
  5. Задайте пароль администратора домена.

    Примечание

    Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
    • заглавные буквы (A–Z);
    • строчные буквы (a–z);
    • цифры (0–9);
    • специальные символы (например, !@#$%^&*).
    Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
  6. Нажмите кнопку Применить:
    Создание домена в ЦУС
После успешного создания домена, будет выведена информация о домене:
Информация о домене
Перегрузите сервер для применения всех изменений.

10.6.4.3. Запуск службы каталогов

Включите и запустите службу samba:
# systemctl enable --now samba

Важно

Если используется Samba на базе MIT Kerberos, перед запуском службы samba необходимо предварительно настроить Kerberos (см. раздел Настройка Kerberos).
При сборке Samba с Heimdal:
  • Samba включает встроенный KDC (Kerberos Key Distribution Center);
  • Samba сама управляет своим KDC и не зависит от системного файла /etc/krb5.conf.
При сборке с MIT Kerberos:
  • Samba не содержит встроенного KDC и использует системную библиотеку MIT Kerberos;
  • MIT Kerberos требует корректной настройки системного файла конфигурации /etc/krb5.conf, чтобы знать:
    • какие реалмы (REALM) существуют;
    • где находятся KDC для каждого реалма;
    • как взаимодействовать с ними (протоколы, шифрование и т.д.).

Примечание

Если служба samba после установки никаким способом не запускается, попробуйте перезагрузить сервер. Это может быть связано с незавершённой инициализацией или блокировкой ресурсов.
Пример файла /etc/samba/smb.conf после создания домена с SAMBA_INTERNAL:
Global parameters
[global]
    dns forwarder = 8.8.8.8
    netbios name = DC1
    realm = TEST.ALT
    server role = active directory domain controller
    workgroup = TEST
    idmap_ldb:use rfc2307 = yes

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

[netlogon]
    path = /var/lib/samba/sysvol/test.alt/scripts
    read only = No

10.6.5. Домен с BIND9_DLZ

В состав Samba входит модуль BIND9_DLZ, позволяющий использовать BIND 9 в качестве DNS-сервера для домена. Это даёт гибкость и расширенные возможности по сравнению с встроенным DNS (SAMBA_INTERNAL).
Возможности BIND 9:
  • поддержка DNSSEC;
  • работа через DNS over HTTPS (DoH) и DNS over TLS (DoT);
  • гибкая настройка зон, включая динамическое обновление;
  • поддержка рекурсивных и кеширующих запросов.
Служба DNS может разворачиваться как на отдельном сервере, так и на контроллере домена совместно с Samba.
Сценарии использования:
  • cложная DNS-инфраструктура с множеством зон;
  • необходимость использовать несколько DNS-форвардеров;
  • интеграция с внешними DNS-серверами;
  • высокие требования к отказоустойчивости и кешированию.
Перед настройкой контроллера домена с BIND9_DLZ необходимо установить и настроить BIND 9.

10.6.5.1. Настройка DNS-сервера BIND

На сервере должны быть установлены пакеты bind и bind-utils:
# apt-get install bind bind-utils

Примечание

Пакет bind содержит различные утилиты, связанные с DNS, например:
  • named-checkconf — проверка синтаксиса файлов конфигурации;
  • named-checkzone — проверка файлов зон DNS;
  • rndc — инструмент управления службой DNS.
Пакет bind-utils содержит вспомогательные утилиты:
  • dig — многофункциональный инструмент запросов к DNS;
  • host — получение информации о доменных именах;
  • nslookup — позволяет получить информацию DNS об удаленном сервере;
  • nsupdate — инструмент для динамического обновления записей DNS.

Примечание

Основные файлы конфигурации и параметры bind описаны в разделе Bind. Для получения более подробной информации следует обратиться к man странице named.conf(5).

Примечание

Если при установке системы в настройках сети было указано полное имя домена (например, dc1.test.alt), система может автоматически создать зону test.alt, что приведёт к конфликту с Samba при запуске bind:
мая 03 14:25:13 dc1 named[3825]: samba_dlz: Failed to configure zone 'test.alt'
мая 03 14:25:13 dc1 named[3825]: loading configuration: already exists
мая 03 14:25:13 dc1 named[3825]: exiting (due to fatal error)
мая 03 14:39:44 dc1 named[4309]: Loading 'AD DNS Zone' using driver dlopen
Для решения проблемы необходимо закомментировать все строки в файле /etc/bind/local.conf. Это предотвратит автозагрузку конфликтующих зон.
Настройка BIND9 для работы с Альт Домен:
  1. Отключите chroot:
    # control bind-chroot disabled
    
  2. Отключите KRB5RCACHETYPE:
    # grep -q KRB5RCACHETYPE /etc/sysconfig/bind || \
     echo 'KRB5RCACHETYPE="none"' >> /etc/sysconfig/bind
    
  3. Подключите плагин BIND_DLZ:
    # grep -q 'bind-dns' /etc/bind/named.conf || \
     echo 'include "/var/lib/samba/bind-dns/named.conf";' >> /etc/bind/named.conf
    
  4. Отредактируйте файл /etc/bind/options.conf:
    • в раздел options добавьте строки:
      tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
      minimal-responses yes;
      
    • в параметре forwarders укажите сервера, куда будут перенаправляться запросы, на которые нет информации в локальной зоне (если этой информации нет в файле /etc/bind/resolvconf-options.conf):
      forward first;
      forwarders { 8.8.8.8; }; # или другие DNS-серверы
      
    • в параметр listen-on добавьте IP-адрес DNS-сервера, на котором он будет принимать запросы;
    • раскомментируйте параметр allow-query и укажите в нём подсети, из которых разрешено подавать запросы;
    • раскомментируйте параметр allow-recursion и укажите в нём подсети, которым разрешены рекурсивные запросы;
    • в раздел logging добавьте строку:
      category lame-servers {null;};
      
    Пример файла /etc/bind/options.conf:
    options {
            version "unknown";
            directory "/etc/bind/zone";
            dump-file "/var/run/named/named_dump.db";
            statistics-file "/var/run/named/named.stats";
            recursing-file "/var/run/named/recursing";
            secroots-file "/var/run/named/named.secroots";
    
    
            // disables the use of a PID file
            pid-file none;
            tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
            minimal-responses yes;
    
            listen-on { 127.0.0.1; 192.168.0.132; };
            listen-on-v6 { ::1; };
    
            allow-query { localnets; 192.168.0.0/24; };
            allow-recursion { localnets; 192.168.0.0/24; };
    
            forward first;
            forwarders { 8.8.8.8; };
    
            //max-cache-ttl 86400;
    
    };
    
    logging {
            category lame-servers {null;};
    };
    
    Пояснения параметров:
    • tkey-gssapi-keytab — путь к ключевой таблице для GSS-API (интеграция с Kerberos);
    • minimal-responses — уменьшает объём ответов;
    • listen-on — IP-адреса, на которых принимаются запросы;
    • allow-query — разрешённые подсети для DNS-запросов;
    • allow-recursion — подсети, которым разрешены рекурсивные запросы;
    • forwarders — внешние DNS-серверы для пересылки;;
    • forward first — сначала пересылать, затем кешировать;
    • logging —  подавление предупреждений о «lame servers».
  5. Остановите службу bind:
    # systemctl stop bind
    

    Примечание

    Служба bind будет перезапущена после создания домена Samba, так как Samba управляет bind через BIND9_DLZ.

10.6.5.2. Восстановление к начальному состоянию Samba

Перед созданием домена удалите старые конфигурации и базы данных (домен, если он создавался до этого, будет удалён):
# rm -f /etc/samba/smb.conf
# rm -rf /var/lib/samba
# rm -rf /var/cache/samba
# mkdir -p /var/lib/samba/sysvol

Предупреждение

Необходимо обязательно удалять /etc/samba/smb.conf. Samba создаст его автоматически при создании домена.

10.6.5.3. Создание домена

10.6.5.3.1. Интерактивное создание домена
Запуск интерактивной установки:
# samba-tool domain provision
В ответе на первые два вопроса нужно указать доменное имя и имя рабочей группы:
Realm [TEST.ALT]:
Domain [TEST]:

Примечание

Чтобы принять значение по умолчанию, необходимо нажать Enter.
Далее нужно указать тип серверной роли и бэкенд DNS-сервера:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Задать пароль для администратора:
Administrator password:
Retype password:

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
  • заглавные буквы (A–Z);
  • строчные буквы (a–z);
  • цифры (0–9);
  • специальные символы (например, !@#$%^&*).
Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
Начнётся процесс конфигурации:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers and extended rights
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /var/lib/samba/bind-dns/named.conf for an example configuration include file for BIND
and /var/lib/samba/bind-dns/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
Once the above files are installed, your Samba AD server will be ready to use
Server Role:           active directory domain controller
Hostname:              dc1
NetBIOS Domain:        TEST
DNS Domain:            test.alt
DOMAIN SID:            S-1-5-21-3027347264-3817126084-1256859094
10.6.5.3.2. В пакетном режиме
Для пакетной установки необходимо указать следующие параметры:
  • --realm REALM_NAME — имя Kerberos-области (LDAP) и DNS-имя домена;
  • --domain=DOMAIN — имя NetBIOS (рабочей группы);
  • --adminpass=PASSWORD — пароль основного администратора домена;
  • --server-role=ROLE — тип серверной роли;
  • --dns-backend=NAMESERVER-BACKEND — бэкенд DNS-сервера;
  • --use-rfc2307 — позволяет поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы минимум из трёх групп:
  • заглавные буквы (A–Z);
  • строчные буквы (a–z);
  • цифры (0–9);
  • специальные символы (например, !@#$%^&*).
Пароль, не соответствующий требованиям, — это одна из причин завершения развертывания домена ошибкой.
Так как в роли DNS-сервера Samba используется Bind, то при создании домена нужно использовать параметр --dns-backend=BIND9_DLZ.
Пример команды для создания домена test.alt в пакетном режиме:
# samba-tool domain provision \
 --realm=test.alt \
 --domain=test \
 --adminpass='Pa$$word' \
 --dns-backend=BIND9_DLZ \
 --server-role=dc --use-rfc2307
Если уровень не указан, домен разворачивается на уровне 2008_R2. Для разворачивания домена на другом уровне, уровень необходимо явно указать, например:
# samba-tool domain provision \
 --realm=test.alt \
 --domain=test \
 --adminpass='Pa$$word'\
 --dns-backend=BIND9_DLZ \
 --option="ad dc functional level = 2016" \
 --server-role=dc \
 --function-level=2016

Примечание

Если необходим уровень 2012_R2, следует сначала развернуть домен на уровне 2008_R2, а затем повысить его до 2012_R2 (см. Повышение уровня схемы и функционального уровня домена).

Примечание

Некоторые параметры команды samba-tool domain provision приведены в в табл. Основные опции для samba-tool domain provision. Полный список параметров можно увидеть, запустив команду:
# samba-tool domain provision --help

10.6.5.4. Запуск служб samba и bind

Включить службы samba и bind и запустить их:
# systemctl enable --now samba
# systemctl enable --now bind

Важно

Если используется Samba на базе MIT Kerberos, перед запуском службы samba необходимо предварительно настроить Kerberos (см. раздел Настройка Kerberos).
При сборке Samba с Heimdal:
  • Samba включает встроенный KDC (Kerberos Key Distribution Center);
  • Samba сама управляет своим KDC и не зависит от системного файла /etc/krb5.conf.
При сборке с MIT Kerberos:
  • Samba не содержит встроенного KDC и использует системную библиотеку MIT Kerberos;
  • MIT Kerberos требует корректной настройки системного файла конфигурации /etc/krb5.conf, чтобы знать:
    • какие реалмы (REALM) существуют;
    • где находятся KDC для каждого реалма;
    • как взаимодействовать с ними (протоколы, шифрование и т.д.).

Примечание

Если служба samba после установки никаким способом не запускается, попробуйте перезагрузить сервер. Это может быть связано с незавершённой инициализацией или блокировкой ресурсов.

Примечание

Если при установке системы в настройках сети было указано полное доменное имя (например, dc1.test.alt), система может автоматически создать зону test.alt, что приведет к конфликту с Samba при запуске bind:
мая 03 14:25:13 dc1 named[3825]: samba_dlz: Failed to configure zone 'test.alt'
мая 03 14:25:13 dc1 named[3825]: loading configuration: already exists
мая 03 14:25:13 dc1 named[3825]: exiting (due to fatal error)
мая 03 14:39:44 dc1 named[4309]: Loading 'AD DNS Zone' using driver dlopen
Для решения проблемы необходимо закомментировать все строки в файле /etc/bind/local.conf или удалить его.

Примечание

При запуске службы bind может возникнуть ошибка:
июн 25 09:57:03 dc1 systemd[1]: bind.service: Control process exited, code=exited, status=1/FAILURE
июн 25 09:57:03 dc1 systemd[1]: bind.service: Failed with result 'exit-code'.
июн 25 09:57:03 dc1 systemd[1]: Failed to start bind.service - Berkeley Internet Name Domain (DNS).
Для решения проблемы необходимо создать файл /etc/systemd/system/bind.service.d/override.conf со следующим содержимым:
[Service]
Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
Например:
# mkdir -p /etc/systemd/system/bind.service.d
# cat << EOF > /etc/systemd/system/bind.service.d/override.conf
[Service]
Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
EOF
# systemctl daemon-reload
# systemctl enable --now bind
Пример файла /etc/samba/smb.conf после создания домена с BIND9_DLZ:
# Global parameters
[global]
    netbios name = DC1
    realm = TEST.ALT
    server role = active directory domain controller
    server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
    workgroup = TEST

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

[netlogon]
    path = /var/lib/samba/sysvol/test.alt/scripts
    read only = No

10.6.5.5. Проверка зон

Следующие примеры запрашивают службу DNS о локальном хосте (127.0.0.1).
Проверка зоны перенаправления localhost:
# host -t A localhost 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
localhost has address 127.0.0.1
Проверка реверсивной зоны 0.0.127.in-addr.arpa.:
# host -t PTR 127.0.0.1 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
1.0.0.127.in-addr.arpa domain name pointer localhost.

10.6.6. Настройка Kerberos

После создания домена необходимо настроить файл /etc/krb5.conf. Он используется для аутентификации Kerberos в домене.
Рекомендуемое содержимое /etc/krb5.conf:
includedir /etc/krb5.conf.d/

[logging]
# default = FILE:/var/log/krb5libs.log
# kdc = FILE:/var/log/krb5kdc.log
# admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = TEST.ALT
# default_ccache_name = KEYRING:persistent:%{uid}

[realms]
TEST.ALT = {
default_domain = test.alt
}

[domain_realm]
dc = TEST.ALT
В файле должны быть раскомментированы строка default_realm и содержимое разделов realms и domain_realm, в них должно быть указано название домена (следует обратить внимание на регистр символов). В строке dns_lookup_realm должно быть установлено значение false (отключает автоматическое определение домена по DNS).

Примечание

При создании домена Samba автоматически генерирует корректный файл krb5.conf для домена в каталоге /var/lib/samba/private/. Можно просто заменить этим файлом файл, находящийся в каталоге /etc/:
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

10.6.7. Проверка работоспособности домена

Просмотр общей информации о домене:
# samba-tool domain info 127.0.0.1
Forest           : test.alt
Domain           : test.alt
Netbios domain   : TEST
DC name          : dc1.test.alt
DC netbios name  : DC1
Server site      : Default-First-Site-Name
Client site      : Default-First-Site-Name
Просмотр предоставляемых служб:
# smbclient -L localhost -Uadministrator
Password for [TEST\administrator]:

Sharename       Type      Comment
---------       ----      -------
sysvol          Disk
netlogon        Disk
IPC$            IPC       IPC Service (Samba 4.21.7-alt4)
SMB1 disabled -- no workgroup available
Общие ресурсы netlogon и sysvol создаются автоматически и необходимы для работы контроллера домена.
Проверка конфигурации DNS:
  • проверка наличия nameserver 127.0.0.1 в /etc/resolv.conf:
    # cat /etc/resolv.conf
    # Generated by resolvconf
    # Do not edit manually, use
    # /etc/net/ifaces/<interface>/resolv.conf instead.
    search test.alt
    nameserver 127.0.0.1
    
    # host test.alt
    test.alt has address 192.168.0.132
    
  • проверка имён хостов:
    • адрес _kerberos._udp.*адрес домена с точкой:
      # host -t SRV _kerberos._udp.test.alt.
      _kerberos._udp.test.alt has SRV record 0 100 88 dc1.test.alt.
      
    • адрес _ldap._tcp.*адрес домена с точкой:
      # host -t SRV _ldap._tcp.test.alt.
      _ldap._tcp.test.alt has SRV record 0 100 389 dc1.test.alt.
      
    • адрес адрес хоста.*адрес домена с точкой:
      # host -t A dc1.test.alt.
      dc1.test.alt has address 192.168.0.132
      
    Если имена не разрешаются:
    • убедитесь, что служба samba запущена;
    • если используется SAMBA_INTERNAL, служба bind должна быть остановлена (конфликтует с портом 53);
    • проверьте, что /etc/resolv.conf указывает на 127.0.0.1.
Проверка Kerberos-аутентификации (имя домена должно быть в верхнем регистре):
# kinit administrator@TEST.ALT
Password for administrator@TEST.ALT:
Warning: Your password will expire in 41 days on Вт 30 сен 2025 16:51:49
Просмотр полученного билета:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.ALT

Valid starting       Expires              Service principal
19.08.2025 17:13:17  20.08.2025 03:13:17  krbtgt/TEST.ALT@TEST.ALT
	renew until 20.08.2025 17:13:14

Глава 11. Присоединение к домену в роли контроллера домена

Для обеспечения отказоустойчивости и балансировки нагрузки в домен можно добавить дополнительные контроллеры домена.
Системные требования к дополнительному DC аналогичны требованиям к первому контроллеру домена (см. Системные требования к серверу (контроллеру домена)).

Примечание

В терминологии контроллеров домена нет понятия PDC (Primary Domain Controller) или BDC (Backup Domain Controller). Все контроллеры домена равноправны. Однако роли FSMO (Flexible Single Master Operations) выполняет только один из DC (см. Просмотр и передача ролей FSMO).

Примечание

Функциональные уровни леса и домена на существующем DC и дополнительном DC должны совпадать.
На дополнительном домене необходимо настроить NTP для работы в режиме сервер (см. Настройка NTP-сервера).
Заведение дополнительного контроллера домена выполняется путём присоединения дополнительного DC к существующему домену.
Для сервера, на котором будет разворачиваться контроллер домена, должен быть назначен IP-адрес, который не должен изменяться, и установлено правильное имя узла.
Установить имя узла можно, выполнив команду:
# hostnamectl set-hostname dc2.test.alt

Примечание

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

Таблица 11.1. Параметры контроллеров домена

IP-адрес
Полное доменное имя (FQDN)
Существующий DC
192.168.0.132
dc1.test.alt
Добавляемый DC
192.168.0.133
dc2.test.alt

11.1. Присоединение к домену с помощью модуля управления сервисами

11.1.1. В командной строке (alteratorctl)

Добавление контроллера домена к существующему домену:
# alteratorctl services deploy service_samba_ad \
--mode=join \
--mode.join.adminLogin=Administrator \
--mode.join.serverRole=dc \
--mode.join.ipAddressDc=192.168.0.132 \
--realm=test.alt \
--netBiosName=test \
--adminpass='Pa$$word' \
--dnsSettings.forwarders.0=8.8.8.8"
где:
  • --mode=join — присоединение к домену;
  • --mode.join.adminLogin — логин администратора домена;
  • --mode.join.serverRole — роль сервера Samba AD;
  • --mode.join.ipAddressDc — IPv4-адрес контроллера домена в существующем домене;
  • --adminPassword — пароль основного администратора домена (если параметр не указан, пароль запрашивается в интерактивном режиме);
  • --dnsSettings.forwarders.0 — внешний DNS-сервер (при необходимости можно добавить несколько, указав --dnsSettings.forwarders.1 и т. д.).
Пример вывода:
Проверка конфликтов ресурсов...
Продолжить выполнение "deploy service_samba_ad --mode=join ..." со следующими параметрами?

╔═══════════════════════════╤══════════════════╗
║adminPassword              │*******           ║
╟───────────────────────────┴──────────────────╢
║Пароль администратора.                        ║
╠═══════════════════════════╤══════════════════╣
║backendStore               │"tdb"             ║
╟───────────────────────────┴──────────────────╢
║Тип базы.                                     ║
║tdb подходит для небольших доменов, mdb для   ║
║крупных доменов.                              ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.dnsBackend     │"SAMBA_INTERNAL"  ║
╟───────────────────────────┴──────────────────╢
║Бэкенд DNS.                                   ║
║Бэкенд DNS для Samba AD.                      ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.forwarders.0   │"8.8.8.8"         ║
╟───────────────────────────┴──────────────────╢
║Настройки DNS.                                ║
║Настройки DNS для Samba AD.                   ║
╠═══════════════════════════╤══════════════════╣
║functionalLevel            │"2008_R2"         ║
╟───────────────────────────┴──────────────────╢
║Функциональный уровень.                       ║
║Функциональный уровень домена.                ║
╠═══════════════════════════╤══════════════════╣
║hostNetBiosName            │"dc2"             ║
╟───────────────────────────┴──────────────────╢
║Имя контроллера домена.                       ║
╠═══════════════════════════╤══════════════════╣
║mode                       │"join"            ║
╟───────────────────────────┴──────────────────╢
║Режим.                                        ║
║Присоединиться к существующему домену или     ║
║создать новый домен.                          ║
╠═══════════════════════════╤══════════════════╣
║mode.join.adminLogin       │"Administrator"   ║
╟───────────────────────────┴──────────────────╢
║Логин администратора.                         ║
║Логин администратора домена. Необходим для    ║
║присоединения DC к существующему домену и     ║
║понижению контроллера домена.                 ║
╠═══════════════════════════╤══════════════════╣
║mode.join.ipAddressDc      │"192.168.0.132"   ║
╟───────────────────────────┴──────────────────╢
║IPv4 адрес контроллера домена.                ║
║IPv4 адрес контроллера домена в существующем  ║
║домене.                                       ║
╠═══════════════════════════╤══════════════════╣
║mode.join.serverRole       │"dc"              ║
╟───────────────────────────┴──────────────────╢
║Роль сервера.                                 ║
║Роль сервера Samba AD.                        ║
╠═══════════════════════════╤══════════════════╣
║netBiosName                │"test"            ║
╟───────────────────────────┴──────────────────╢
║NetBios имя.                                  ║
║NetBios имя домена, например example.         ║
╠═══════════════════════════╤══════════════════╣
║realm                      │"test.alt"        ║
╟───────────────────────────┴──────────────────╢
║Realm.                                        ║
║DNS имя домена, например example.com.         ║
╠═══════════════════════════╤══════════════════╣
║useRfc2307                 │false             ║
╟───────────────────────────┴──────────────────╢
║Использовать RFC 2307.                        ║
║RFC 2307 атрибуты позволяют хранить информацию║
║о пользователях и группах Unix в каталоге     ║
║LDAP.                                         ║
╚══════════════════════════════════════════════╝
Продолжить? [y/N] y
…
active
inactive
Samba AD successfully joined domain 'test.alt' and system has been configured.
Saving deployment configuration to /var/lib/alterator/service/samba-ad/status.json
После успешного присоединения запустите службу:
# alteratorctl services start service_samba_ad
Далее можно проверить результаты присоединения (см. Проверка результатов присоединения).

11.1.2. В Альт сервисы

Добавление контроллера домена к существующему домену с бэкендом SAMBA_INTERNAL:
  1. В приложении Альт сервисы выберите сервис Samba AD и нажмите кнопку Развернуть:
    Сервис Samba AD состояние
  2. Убедитесь, что все необходимые ресурсы свободны, и нажмите кнопку Далее:
    Развертывание домена проверка ресурсов
  3. Выберите режим Присоединиться к существующему домену и укажите параметры:
    • Логин администратора — учётная запись с правами администратора домена;
    • IPv4 адрес контроллера домена — IP-адрес основного DC;
    • Роль сервера — контроллер домена;
    • Имя контроллера домена — уникальное имя нового DC (например, dc2).
    Остальные параметры (NetBIOS, Realm, DNS) должны совпадать с настройками основного контроллера.
    Параметры для присоединения к существующему домену
    Нажмите кнопку Далее.
  4. Проверьте параметры и нажмите кнопку Подтвердить:
    Параметры развёртывания домена
  5. Введите пароль администратора системы (root) для подтверждения:
    Подтверждение подлинности
  6. После успешного развёртывания нажмите кнопку Завершить.
  7. Запустите службу, нажав кнопку Запустить:
    Запуск службы
Далее можно проверить результаты присоединения (см. Проверка результатов присоединения).

11.2. Присоединение к домену с помощью samba-tool domain join

Команда присоединения к домену в роли контроллера домена:
# samba-tool domain join <dnsdomain> [DC|RODC|MEMBER] [options]
Ключевые параметры команды samba-tool domain join:
  • --realm REALM_NAME — имя Kerberos-области (LDAP) и DNS-имя домена;
  • --dns-backend=NAMESERVER-BACKEND — бэкенд DNS-сервера:
    • SAMBA_INTERNAL — встроенный сервер имен (по умолчанию);
    • BIND9_DLZ — BIND с интеграцией в AD;
    • NONE — без DNS (этот DC не будет DNS-сервером);

    Примечание

    На втором DC необходимо иметь DNS-бэкенд аналогичный первому DC.
  • --option="dns forwarder=IP" — указывает внешний DNS-сервер для пересылки (обязателен приSAMBA_INTERNAL). Форвардером может быть как вышестоящий DNS-сервер организации, так и публичные от Google или Yandex, например:
    --option="dns forwarder=8.8.8.8"
  • --option='idmap_ldb:use rfc2307 = yes' — если первый DC создан с ключом --rfc2307, этот параметр обязателен для согласованности UID/GID;
  • --site=SITE — привязка контроллера домена к определенному сайту AD;
  • --option="interfaces= lo eth0" --option="bind interfaces only=yes" — привязка Samba к указанным сетевым интерфейсам (если их несколько). Указание данной опции позволяет samba-tool зарегистрировать корректный IP-адрес при присоединении;
  • --option="ad dc functional level = LEVEL" — функциональный уровень AD. Возможные значения: 2008_R2 (по умолчанию), 2012, 2012_R2.

    Примечание

    При присоединении к существующему домену рекомендуется указывать функциональный уровень не выше текущего уровня домена.

Примечание

Для получения дополнительной информации о параметрах команды samba-tool domain join можно воспользоваться командой:
# samba-tool domain join --help

11.2.1. Добавление DC с бэкендом SAMBA_INTERNAL

Все действия выполняются на узле dc2.test.alt (192.168.0.133), если не указано иное.

Примечание

Для выполнения операции присоединения к домену требуется пароль администратора домена.
Предварительная настройка сервера:
  1. Установить пакет task-samba-dc, который установит все необходимое:
    # apt-get install task-samba-dc
    
    или компонент samba-dc
    # alteratorctl components install samba-dc
    
  2. В /etc/resolv.conf должен быть добавлен первый DC как nameserver (enp0s3 — имя интерфейса):
    # echo "nameserver 192.168.0.132" >> /etc/net/ifaces/enp0s3/resolv.conf
    # echo "search test.alt" >> /etc/net/ifaces/enp0s3/resolv.conf
    # resolvconf -u
    # cat /etc/resolv.conf
    search test.alt
    nameserver 192.168.0.132
    nameserver 8.8.8.8
    
  3. Остановить конфликтующие службы krb5kdc и slapd, а также bind:
    # for service in smb nmb krb5kdc slapd bind; do \
    systemctl disable $service; \
    systemctl stop $service; \
    done
    
  4. Очистить базы и конфигурацию Samba (домен, если он создавался до этого, будет удалён):
    # rm -f /etc/samba/smb.conf
    # rm -rf /var/lib/samba
    # rm -rf /var/cache/samba
    # mkdir -p /var/lib/samba/sysvol
    
Присоединение к домену в роли контроллера домена с бэкендом SAMBA_INTERNAL:
  1. На существующем контроллере домена завести IP-адрес для нового DC (команда выполняется на узле dc1.test.alt):
    # samba-tool dns add 192.168.0.132 test.alt DC2 A 192.168.0.133 -Uadministrator
    Password for [TEST\administrator]:
    Record added successfully
    

    Предупреждение

    Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!

    Примечание

    Синтаксис команды samba-tool dns add см. в разделе Администрирование DNS
  2. На новом контроллере домена установить следующие параметры в файле конфигурации клиента Kerberos (/etc/krb5.conf):
    [libdefaults]
    default_realm = TEST.ALT
    dns_lookup_realm = false
    dns_lookup_kdc = true
    
  3. Получить билет Kerberos администратора домена:
    # kinit administrator@TEST.ALT
    Password for administrator@TEST.ALT:
    

    Предупреждение

    Имя домена должно быть указано в верхнем регистре.
    Убедиться, что билет получен:
    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.ALT
    
    Valid starting       Expires              Service principal
    19.08.2025 17:55:32  20.08.2025 03:55:32  krbtgt/TEST.ALT@TEST.ALT
    	renew until 26.08.2025 17:55:29
    
  4. Ввести дополнительный DC в домен test.alt в качестве контроллера домена:
    # samba-tool domain join test.alt DC -Uadministrator \
    --realm=test.alt --option="dns forwarder=8.8.8.8"
    
    Если всё нормально, в конце будет выведена информация о присоединении к домену:
    Joined domain TEST (SID S-1-5-21-3202529454-2619939870-177941183) as a DC
    
  5. После успешного ввода в домен в resolvconf необходимо сменить адрес первого DC на собственный адрес (в примере 192.168.0.133). Для этого следует внести изменения в файл /etc/net/ifaces/enp0s3/resolv.conf и выполнить:
    # resolvconf -u
  6. Установить службу samba запускаемой по умолчанию и запустить её:
    # systemctl enable --now samba

11.2.2. Добавление DC c бэкендом BIND9_DLZ

Все действия, указанные ниже, выполняются на узле dc2.test.alt (192.168.0.133), если не указано иное.

Примечание

Для выполнения операции присоединения к домену требуется пароль администратора домена.
Предварительная настройка сервера:
  1. Установить пакет task-samba-dc, который установит все необходимое:
    # apt-get install task-samba-dc
    
    или компонент samba-dc
    # alteratorctl components install samba-dc
    
  2. В /etc/resolv.conf должен быть добавлен первый DC как nameserver (enp0s3 — имя интерфейса):
    # echo "nameserver 192.168.0.132" >> /etc/net/ifaces/enp0s3/resolv.conf
    # echo "search test.alt" >> /etc/net/ifaces/enp0s3/resolv.conf
    # resolvconf -u
    # cat /etc/resolv.conf
    search test.alt
    nameserver 192.168.0.132
    nameserver 8.8.8.8
    
  3. Остановить конфликтующие службы krb5kdc и slapd, а также bind:
    # for service in smb nmb krb5kdc slapd bind; do \
    systemctl disable $service; \
    systemctl stop $service; \
    done
    
  4. Очистить базы и конфигурацию Samba (домен, если он создавался до этого, будет удалён):
    # rm -f /etc/samba/smb.conf
    # rm -rf /var/lib/samba
    # rm -rf /var/cache/samba
    # mkdir -p /var/lib/samba/sysvol
    
Присоединение к домену в роли контроллера домена с бэкендом BIND9_DLZ:
  1. Установить и настроить DNS-сервер BIND (см. Настройка DNS-сервера BIND);
  2. На существующем контроллере домена завести IP-адрес для нового DC (команда выполняется на узле dc1.test.alt):
    # samba-tool dns add 192.168.0.132 test.alt DC2 A 192.168.0.133 -Uadministrator
    Password for [TEST\administrator]:
    Record added successfully
    

    Предупреждение

    Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!

    Примечание

    Синтаксис команды samba-tool dns add см. в разделе Администрирование DNS
  3. На новом контроллере домена установить следующие параметры в файле конфигурации клиента Kerberos (/etc/krb5.conf):
    [libdefaults]
    default_realm = TEST.ALT
    dns_lookup_realm = false
    dns_lookup_kdc = true
    
  4. Запросить билет Kerberos администратора домена:
    # kinit administrator@TEST.ALT
    Password for administrator@TEST.ALT:
    

    Предупреждение

    Имя домена должно быть указано в верхнем регистре.
    Убедиться, что билет получен:
    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.ALT
    
    Valid starting       Expires              Service principal
    19.08.2025 17:55:32  20.08.2025 03:55:32  krbtgt/TEST.ALT@TEST.ALT
        renew until 26.08.2025 17:55:29
    
  5. Ввести дополнительный DC в домен test.alt в качестве контроллера домена:
    # samba-tool domain join test.alt DC -Uadministrator \
    --realm=test.alt \
    --dns-backend=BIND9_DLZ
    
    Если всё нормально, в конце будет выведена информация о присоединении к домену:
    Joined domain TEST (SID S-1-5-21-3023984122-667793423-660878337) as a DC
    
  6. После успешного ввода в домен в resolvconf необходимо сменить адрес первого DC на собственный адрес (в примере 192.168.0.133). Для этого следует внести изменения в файл /etc/net/ifaces/enp0s3/resolv.conf и выполнить:
    # resolvconf -u
  7. Установить службы samba и bind запускаемыми по умолчанию и запустить их:
    # systemctl enable --now samba
    # systemctl enable --now bind
    

Примечание

Если служба samba после установки никаким способом не запускается, попробуйте перезагрузить сервер. Это может быть связано с незавершённой инициализацией или блокировкой ресурсов.

Примечание

Если при установке системы в настройках сети было указано полное доменное имя (например, dc1.test.alt), система может автоматически создать зону test.alt, что приведет к конфликту с Samba при запуске bind:
мая 03 14:25:13 dc1 named[3825]: samba_dlz: Failed to configure zone 'test.alt'
мая 03 14:25:13 dc1 named[3825]: loading configuration: already exists
мая 03 14:25:13 dc1 named[3825]: exiting (due to fatal error)
мая 03 14:39:44 dc1 named[4309]: Loading 'AD DNS Zone' using driver dlopen
Для решения проблемы необходимо закомментировать все строки в файле /etc/bind/local.conf или удалить его.

Примечание

При запуске службы bind может возникнуть ошибка:
июн 25 09:57:03 dc1 systemd[1]: bind.service: Control process exited, code=exited, status=1/FAILURE
июн 25 09:57:03 dc1 systemd[1]: bind.service: Failed with result 'exit-code'.
июн 25 09:57:03 dc1 systemd[1]: Failed to start bind.service - Berkeley Internet Name Domain (DNS).
Для решения проблемы необходимо создать файл /etc/systemd/system/bind.service.d/override.conf со следующим содержимым:
[Service]
Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
Например:
# mkdir -p /etc/systemd/system/bind.service.d
# cat << EOF > /etc/systemd/system/bind.service.d/override.conf
[Service]
Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
EOF
# systemctl daemon-reload
# systemctl enable --now bind

11.3. Проверка результатов присоединения

Примечание

После присоединения к домену службе синхронизации данных может понадобиться до 15 минут для автоматического формирования подключений для репликации.
Проверка корректности присоединения:
  1. Проверить работу DNS:
    # host -t A test.alt
    test.alt has address 192.168.0.132
    test.alt has address 192.168.0.133
    
    В списке адресов должен отображаться IP-адрес добавленного контроллера домена.
  2. Проверить статус репликации между контроллерами домена. Для этого на добавленном DC выполнить команду:
    # samba-tool drs showrepl -Uadministrator
    
    В случае успешного выполнения репликации в каждом из блоков в разделах «INBOUND NEIGHBORS» и «OUTBOUND NEIGHBORS» отображаются сообщения вида:
    Default-First-Site-Name\DC1 via RPC
        DSA object GUID: a553c798-af04-4bbf-9c51-e109a877ed8d
        Last attempt @ Mon Jun 23 15:09:22 2025 MSK was successful
        0 consecutive failure(s).
        Last success @ Mon Jun 23 15:09:22 2025 MSK
    
    В пункте Last attempt должны стоять актуальные дата и время, идентичные указанным в строке Last success (отображает время последней репликации). Также должно быть «0 consecutive failure(s)».
    Подробнее о настройке репликации см. в разделе Репликация.
  3. На добавленном DC создать нового пользователя домена:
    # samba-tool user add kim --given-name='Виталий' --surname='Ким' --mail-address='kim@test.alt'
    
    New Password:
    Retype Password:
    User 'kim' added successfully
    
  4. Убедиться, что учетная запись созданного пользователя доступна на первом контроллере домена:
    # samba-tool user list | grep kim
    kim
    

Примечание

Для проверки статуса репликации можно использовать краткий вывод:
# samba-tool drs showrepl --summary -Uadministrator
Password for [TEST\administrator]:

[ALL GOOD]

Глава 12. Контроллер домена, доступный только для чтения (RODC)

RODC (Read-Only Domain Controller) — это контроллер домена с ограниченными правами записи, предназначенный для развертывания в удалённых филиалах, где сложно обеспечить физическую безопасность сервера.
Основные преимущества RODC:
  • содержит копию базы домена, доступную только для чтения;
  • не может быть использован для изменения данных домена (включая сброс пароля администратора);
  • повышает безопасность в ненадёжных сетевых средах.
Основные отличия RODC от обычных контроллеров домена, доступных для записи (RWDC):
  • RODC хранит копию базы домена, доступную только для чтения. Клиенты не могут вносить изменения в базу такого контроллера домена;
  • RODC не реплицирует данные домена на другие контроллеры домена (RWDC) (используется односторонняя репликация);
  • RODC хранит полную копию базы домена, за исключением хешей паролей объектов Альт Домен и других атрибутов, содержащих чувствительную информацию;
  • при получении RODC запроса на аутентификацию от пользователя он перенаправляет этот запрос на ближайший RWDC;
  • RODC может кешировать учетные данные некоторых пользователей (это ускоряет аутентификацию и позволяет пользователям авторизоваться на контроллере домена, даже при отсутствии связи с RWDC);
  • DNS-служба на RODС работает только на чтение.
Требования, которые должны быть выполнены для разворачивания RODС:
  • IP-адрес сервера не должен изменяться;
  • уровень функциональности леса и домена должен быть не ниже 2008 R2. Проверить текущие уровни можно, выполнив на контроллере домена команду:
    # samba-tool domain level show
    Domain and forest function level for domain 'DC=test,DC=alt'
    
    Forest function level: (Windows) 2008 R2
    Domain function level: (Windows) 2008 R2
    Lowest function level of a DC: (Windows) 2008 R2
    
  • в качестве DNS-сервера должен быть указан ближайший RWDC.

12.1. Установка и настройка RODC

Таблица 12.1. Параметры контроллеров домена

IP-адрес
Полное доменное имя (FQDN)
Существующий RWDC
192.168.0.132
dc1.test.alt
Добавляемый RODC
192.168.0.134
rodc.test.alt
Для сервера, на котором будет разворачиваться контроллер домена, должен быть назначен IP-адрес, который не должен изменяться, и установлено правильное имя узла.
Установить имя узла можно, выполнив команду:
# hostnamectl set-hostname rodc.test.alt

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.
Все дальнейшие действия выполняются на узле rodc.test.alt (192.168.0.134), если не указано иное.

12.1.1. Присоединение сервера к домену в роли RODC с помощью модуля управления сервисами

12.1.1.1. В командной строке (alteratorctl)

Добавление контроллера домена в роли RODC к существующему домену:
# alteratorctl services deploy service_samba_ad \
--mode=join \
--mode.join.adminLogin=Administrator \
--mode.join.serverRole=rodc \
--mode.join.ipAddressDc=192.168.0.132 \
--realm=test.alt \
--netBiosName=test \
--adminpass='Pa$$word' \
--dnsSettings.forwarders.0=8.8.8.8"
где:
  • --mode=join — присоединение к домену;
  • --mode.join.adminLogin — логин администратора домена;
  • --mode.join.serverRole — роль сервера Samba AD;
  • --mode.join.ipAddressDc — IPv4-адрес контроллера домена в существующем домене;
  • --adminPassword — пароль основного администратора домена (если параметр не указан, пароль запрашивается в интерактивном режиме);
  • --dnsSettings.forwarders.0 — внешний DNS-сервер (при необходимости можно добавить несколько, указав --dnsSettings.forwarders.1 и т. д.).
Пример вывода:
Проверка конфликтов ресурсов...
Продолжить выполнение "deploy service_samba_ad --mode=join ..." со следующими параметрами?

╔═══════════════════════════╤══════════════════╗
║adminPassword              │*******           ║
╟───────────────────────────┴──────────────────╢
║Пароль администратора.                        ║
╠═══════════════════════════╤══════════════════╣
║backendStore               │"tdb"             ║
╟───────────────────────────┴──────────────────╢
║Тип базы.                                     ║
║tdb подходит для небольших доменов, mdb для   ║
║крупных доменов.                              ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.dnsBackend     │"SAMBA_INTERNAL"  ║
╟───────────────────────────┴──────────────────╢
║Бэкенд DNS.                                   ║
║Бэкенд DNS для Samba AD.                      ║
╠═══════════════════════════╤══════════════════╣
║dnsSettings.forwarders.0   │"8.8.8.8"         ║
╟───────────────────────────┴──────────────────╢
║Настройки DNS.                                ║
║Настройки DNS для Samba AD.                   ║
╠═══════════════════════════╤══════════════════╣
║functionalLevel            │"2008_R2"         ║
╟───────────────────────────┴──────────────────╢
║Функциональный уровень.                       ║
║Функциональный уровень домена.                ║
╠═══════════════════════════╤══════════════════╣
║hostNetBiosName            │"rodc"            ║
╟───────────────────────────┴──────────────────╢
║Имя контроллера домена.                       ║
╠═══════════════════════════╤══════════════════╣
║mode                       │"join"            ║
╟───────────────────────────┴──────────────────╢
║Режим.                                        ║
║Присоединиться к существующему домену или     ║
║создать новый домен.                          ║
╠═══════════════════════════╤══════════════════╣
║mode.join.adminLogin       │"Administrator"   ║
╟───────────────────────────┴──────────────────╢
║Логин администратора.                         ║
║Логин администратора домена. Необходим для    ║
║присоединения DC к существующему домену и     ║
║понижению контроллера домена.                 ║
╠═══════════════════════════╤══════════════════╣
║mode.join.ipAddressDc      │"192.168.0.132"   ║
╟───────────────────────────┴──────────────────╢
║IPv4 адрес контроллера домена.                ║
║IPv4 адрес контроллера домена в существующем  ║
║домене.                                       ║
╠═══════════════════════════╤══════════════════╣
║mode.join.serverRole       │"rodc"            ║
╟───────────────────────────┴──────────────────╢
║Роль сервера.                                 ║
║Роль сервера Samba AD.                        ║
╠═══════════════════════════╤══════════════════╣
║netBiosName                │"test"            ║
╟───────────────────────────┴──────────────────╢
║NetBios имя.                                  ║
║NetBios имя домена, например example.         ║
╠═══════════════════════════╤══════════════════╣
║realm                      │"test.alt"        ║
╟───────────────────────────┴──────────────────╢
║Realm.                                        ║
║DNS имя домена, например example.com.         ║
╠═══════════════════════════╤══════════════════╣
║useRfc2307                 │false             ║
╟───────────────────────────┴──────────────────╢
║Использовать RFC 2307.                        ║
║RFC 2307 атрибуты позволяют хранить информацию║
║о пользователях и группах Unix в каталоге     ║
║LDAP.                                         ║
╚══════════════════════════════════════════════╝
Продолжить? [y/N] y
…
active
inactive
Samba AD successfully joined domain 'test.alt' and system has been configured.
Saving deployment configuration to /var/lib/alterator/service/samba-ad/status.json
После успешного присоединения запустите службу:
# alteratorctl services start service_samba_ad

12.1.1.2. В Альт сервисы

Присоединение сервера к домену в роли RODC:
  1. В приложении Альт сервисы выберите сервис Samba AD и нажмите кнопку Развернуть:
    Сервис Samba AD состояние
  2. Убедитесь, что все необходимые ресурсы свободны, и нажмите кнопку Далее:
    Развертывание домена проверка ресурсов
  3. Выберите режим Присоединиться к существующему домену и укажите параметры:
    • Логин администратора — учётная запись с правами администратора домена;
    • IPv4 адрес контроллера домена — IP-адрес основного DC;
    • Роль сервера — контроллер только для чтения (RODC);
    • Имя контроллера домена — уникальное имя нового DC (например, rodc).
    Остальные параметры (NetBIOS, Realm, DNS) должны совпадать с настройками основного контроллера.
    Параметры для присоединения к существующему домену
    Нажмите кнопку Далее.
  4. Проверьте параметры и нажмите кнопку Подтвердить:
    Параметры развёртывания домена
  5. Введите пароль администратора системы (root) для подтверждения:
    Подтверждение подлинности
  6. После успешного развёртывания нажмите кнопку Завершить.
  7. Запустите службу, нажав кнопку Запустить:
    Запуск службы

12.1.2. Присоединение сервера к домену в роли RODC с помощью samba-tool domain join

Предварительная настройка сервера:
  1. Установить пакет task-samba-dc, который установит все необходимое:
    # apt-get install task-samba-dc
    
    или компонент samba-dc
    # alteratorctl components install samba-dc
    
  2. В /etc/resolv.conf должен быть добавлен первый DC как nameserver (enp0s3 — имя интерфейса):
    # echo "nameserver 192.168.0.132" >> /etc/net/ifaces/enp0s3/resolv.conf
    # echo "search test.alt" >> /etc/net/ifaces/enp0s3/resolv.conf
    # resolvconf -u
    # cat /etc/resolv.conf
    search test.alt
    nameserver 192.168.0.132
    nameserver 8.8.8.8
    
  3. Остановить конфликтующие службы krb5kdc и slapd, а также bind:
    # for service in smb nmb krb5kdc slapd bind; do \
    systemctl disable $service; \
    systemctl stop $service; \
    done
    
  4. Очистить базы и конфигурацию Samba (домен, если он создавался до этого, будет удалён):
    # rm -f /etc/samba/smb.conf
    # rm -rf /var/lib/samba
    # rm -rf /var/cache/samba
    # mkdir -p /var/lib/samba/sysvol
    
Присоединение сервера к домену в роли RODC:
  1. На существующем контроллере домена завести IP-адрес для RODC (команда выполняется на узле dc1.test.alt):
    # samba-tool dns add 192.168.0.132 test.alt RODC A 192.168.0.134 -Uadministrator
    Password for [TEST\administrator]:
    Record added successfully
    

    Предупреждение

    Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!

    Примечание

    Синтаксис команды samba-tool dns add см. в разделе Администрирование DNS
  2. На RODC установить следующие параметры в файле конфигурации клиента Kerberos (/etc/krb5.conf):
    [libdefaults]
    default_realm = TEST.ALT
    dns_lookup_realm = false
    dns_lookup_kdc = true
    
    [realms]
    TEST.ALT = {
    kdc = rodc.test.alt
    kdc = dc1.test.alt
    default_domain = TEST.ALT
    }
    
  3. Получить билет Kerberos для администратора домена:
    # kinit administrator@TEST.ALT
    Password for administrator@TEST.ALT:
    

    Предупреждение

    Имя домена должно быть указано в верхнем регистре.
  4. Убедиться, что билет получен:
    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.ALT
    
    Valid starting       Expires              Service principal
    19.08.2025 17:55:32  20.08.2025 03:55:32  krbtgt/TEST.ALT@TEST.ALT
        renew until 26.08.2025 17:55:29
    
  5. Ввести данный DC в домен test.alt в качестве контроллера домена, доступного только для чтения (RODC):
    # samba-tool domain join test.alt RODC -Uadministrator@TEST.ALT \
    --realm=test.alt \
    --option="dns forwarder=8.8.8.8"
    
    Если всё нормально, в конце будет выведена информация о присоединении к домену:
    Joined domain TEST (SID S-1-5-21-3023984122-667793423-660878337) as an RODC
    

    Примечание

    При использовании SAMBA_INTERNAL необходимо указать значение dns forwarder, чтобы на новом сервере была настроена пересылка запросов. Форвардером может быть как вышестоящий DNS-сервер организации, так и публичные от Google или Yandex, например:
    --option="dns forwarder=8.8.8.8"
    Если первый контроллер домена создавался с ключом --rfc2307, то и для текущего необходимо это учесть, указав параметр:
    --option='idmap_ldb:use rfc2307 = yes'
  6. Сделать службу samba запускаемой по умолчанию и запустить её:
    # systemctl enable --now samba
    

Примечание

Для получения дополнительной информации о параметрах команды samba-tool domain join можно воспользоваться командой:
# samba-tool domain join --help

12.2. Политики репликации и кеширования паролей на RODC

На RODC можно задать список пользователей, чьи хеши паролей можно или нельзя реплицировать на данный контроллер домена.

Примечание

Все пользователи в кеше RODC смогут аутентифицироваться на этом контроллере домена, даже если отсутствует связь с RWDC.
По умолчанию в домене создаются две глобальные группы для управления репликацией паролей:
  • Allowed RODC Password Replication Group — пользователи, чьи пароли можно реплицировать на RODC (по умолчанию — пуста);
  • Denied RODC Password Replication Group — пользователи, чьи пароли нельзя реплицировать и кешировать на RODC.
Участники группы Denied RODC Password Replication Group по умолчанию:
  • Cert Publishers;
  • Domain Admins;
  • Domain Controllers;
  • Enterprise Admins;
  • Group Policy Creator Owners;
  • Read-only Domain Controllers;
  • Schema Admins;
  • учётная запись krbtgt.
Участники группы Denied RODC Password Replication Group

Примечание

Список участников групп Denied RODC Password Replication Group и Allowed RODC Password Replication Group:
# samba-tool group listmembers "Denied RODC Password Replication Group"
Read-only Domain Controllers
Domain Admins
Enterprise Admins
Domain Controllers
Schema Admins
krbtgt
Group Policy Creator Owners
Cert Publishers

# samba-tool group listmembers "Allowed RODC Password Replication Group"
В группу Allowed RODC Password Replication Group обычно добавляют локальных пользователей филиала, в котором находится RODC.
Для предварительной загрузки паролей на RODC используется команда:
# samba-tool rodc preload (<SID>|<DN>|<accountname>)+ ... [опции]
Возможные опции:
  • --server — обычный контроллер домена, который будет выступать источником данных при репликации;
  • --file — файл со списком реплицируемых объектов либо «-» для ввода списка через стандартный поток ввода (stdin);
  • --ignore-errors — игнорировать ошибки репликации при загрузке нескольких объектов.
Эта команда запускает процесс репликации данных указанных объектов с переданного в параметре --server контроллера домена. Для идентификации объектов могут использоваться идентификаторы безопасности (SID), DN или имена учетных записей SAM (samAccountName).
Для передачи списка объектов может использоваться:
  • перечисление объектов списком через пробел;
  • файл (одна строка соответствует одному объекту);
  • stdin (одна строка соответствует одному объекту).

Примечание

Для получения дополнительной информации о параметрах команды samba-tool rodc preload можно воспользоваться командой:
# samba-tool rodc preload --help

12.3. Проверка репликации паролей на сервере RODC

Тестирование репликации пароля пользователя на сервере RODC:
  1. На обычном контроллере домена (в примере DC1) создать пользователя и добавить его в группу Allowed RODC Password Replication Group:
    # samba-tool user add ivanov \
     --given-name='Иван' \
     --surname='Иванов' \
     --mail-address='ivanov@test.alt'
    
    New Password:
    Retype Password:
    User 'ivanov' added successfully
    
    # samba-tool group addmembers "Allowed RODC Password Replication Group" ivanov
    
    Added members to group Allowed RODC Password Replication Group
    
  2. Предварительная загрузка пароля на RODC:
    # samba-tool rodc preload ivanov --server=dc1.test.alt
    
    Replicating DN CN=Иван Иванов,CN=Users,DC=test,DC=alt
    Exop on[CN=Иван Иванов,CN=Users,DC=test,DC=alt] objects[1] linked_values[0]
    
Пример получения билета при отсутствии связи с RWDC (пользователь ivanov есть в кеше RODC, а пользователь kim — нет):
$ kinit ivanov
Password for ivanov@TEST.ALT:
Warning: Your password will expire in 26 days on Ср 16 июл 2025 18:05:10

$ kinit kim
kinit: A service is not available that is required to process the request while getting initial credentials

Глава 13. Редактирование существующего домена

13.1. Повышение уровня схемы и функционального уровня домена

Просмотр текущего уровня домена и леса:
# samba-tool domain level show
Domain and forest function level for domain 'DC=test,DC=alt'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
Процедура повышения уровня:
  1. Установить целевой функциональный уровень в параметре ad dc functional level файла /etc/samba/smb.conf. Возможные значения:
    • 2008_R2 — аналог функционального уровня Windows 2008 R2 (по умолчанию);
    • 2012 — аналог функционального уровня Windows 2012;
    • 2012_R2 — аналог функционального уровня Windows 2012 R2;
    • 2016 — аналог функционального уровня Windows 2016.
  2. Обновить схему домена:
    # samba-tool domain schemaupgrade --schema=<SCHEMA>
    
    где SCHEMA — целевой уровень схемы (по умолчанию 2019).
  3. Подготовить домен к новому уровню:
    # samba-tool domain functionalprep --function-level=<FUNCTION_LEVEL>
    
    где FUNCTION_LEVEL — функциональный уровень, к которому нужно подготовиться (по умолчанию 2016).
  4. Повысить уровни домена и леса:
    # samba-tool domain level raise --domain-level=<DOMAIN_LEVEL> --forest-level=<FOREST_LEVEL>
    
    где:
    • FOREST_LEVEL — уровень работы леса. (возможные значения: 2003, 2008, 2008_R2, 2012, 2012_R2, 2016);
    • DOMAIN_LEVEL — уровень работы домена. (возможные значения: 2003, 2008, 2008_R2, 2012, 2012_R2, 2016).

Примечание

Ручное указание ad dc functional level в файле /etc/samba/smb.conf снижает защиту от несовместимости между контроллерами домена. Поэтому на всех контроллерах домена должна использоваться одна версия Samba, чтобы гарантировать, что поведение, наблюдаемое клиентом, будет одинаковым независимо от того, к какому контроллеру домена осуществляется соединение.
Пример повышения уровня домена до 2016:
  1. В раздел [global] файла /etc/samba/smb.conf добавить строку:
    ad dc functional level = 2016
    

    Примечание

    После изменения файла можно убедиться, что параметр ad dc functional level применён:
    # testparm -s --section-name=global --parameter-name="ad dc functional level"
    Load smb config files from /etc/samba/smb.conf
    Loaded services file OK.
    Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
    
    2016
    
    
  2. Перезагрузить службу samba:
    # systemctl restart samba.service
    
  3. Проверить текущее состояние домена:
    # samba-tool domain level show
    Domain and forest function level for domain 'DC=test,DC=alt'
    
    Forest function level: (Windows) 2008 R2
    Domain function level: (Windows) 2008 R2
    Lowest function level of a DC: (Windows) 2016
    
    Контроллер домена готов к повышению уровня, но сам домен пока остаётся на старом уровне.
  4. Обновить схему домена:
    # samba-tool domain schemaupgrade --schema=2019
    
  5. Подготовить домен к новому уровню:
    # samba-tool domain functionalprep --function-level=2016
    
  6. Повысить функциональные уровни домена и леса до 2016:
    # samba-tool domain level raise --domain-level=2016 --forest-level=2016
    Domain function level changed!
    Forest function level changed!
    All changes applied successfully!
    
  7. Убедиться, что уровни обновились:
    # samba-tool domain level show
    Domain and forest function level for domain 'DC=test,DC=alt'
    
    Forest function level: (Windows) 2016
    Domain function level: (Windows) 2016
    Lowest function level of a DC: (Windows) 2016
    

13.2. Включение RFC2307 после разворачивания домена

Примечание

До запуска этой процедуры следует убедиться, что включение RFC2307 действительно необходимо.
Проверка наличия расширений NIS (команду можно выполнить на любом DC):
# ldbsearch -H /var/lib/samba/private/sam.ldb -s base -b CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,DC=test,DC=alt cn

# record 1
dn: CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,DC=test,DC=alt
cn: ypservers

# returned 1 records
# 1 entries
# 0 referrals
Если вывод содержит одну запись (returned 1 records), расширения NIS установлены. Дальнейшие действия не требуются.

Предупреждение

Обновление схемы может повредить домен. Прежде чем обновлять схему, необходимо убедиться в наличии рабочей резервной копии.
Установка расширения NIS:
  1. Найти DC с ролью FSMO хозяина схемы («Schema Master»):
    # samba-tool fsmo show | grep SchemaMasterRole
    SchemaMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    
    В выводе команды показано имя DC, которому принадлежит эта роль. Все дальнейшие дествия выполняются только на этом контроллере.
  2. Остановить службу samba:
    # systemctl stop samba
    
  3. Создать копию файла схемы ypServ30.ldif, например:
    # cp /usr/share/samba/setup/ypServ30.ldif /tmp/
    
  4. Заменить переменные в скопированном файле LDIF именем домена (DN), именем NetBIOS и доменом NIS вашей установки, например:
    # sed -i -e 's/\${DOMAINDN}/DC=test,DC=alt/g' -e 's/\${NETBIOSNAME}/DC/g' -e 's/\${NISDOMAIN}/test/g' /tmp/ypServ30.ldif
    
  5. Импортировать измененный файл LDIF в локальную базу данных Samba /var/lib/samba/private/sam.ldb:
    # ldbmodify -H /var/lib/samba/private/sam.ldb /tmp/ypServ30.ldif --option="dsdb:schema update allowed"=true
    
  6. Включить RFC2307, добавив в секцию [global] файла /etc/samba/smb.conf параметр:
    idmap_ldb:use rfc2307 = yes
    
  7. Запустить службу каталогов:
    # systemctl start samba
    
Схема автоматически реплицируется на все контроллеры домена.

13.3. Изменение DNS-бэкенда контроллера домена

Samba позволяет переключаться между бэкендом SAMBA_INTERNAL и BIND9_DLZ на контроллере домена без потери данных.

13.3.1. Миграция с SAMBA_INTERNAL на BIND9_DLZ

Переключение с SAMBA_INTERNAL на BIND9_DLZ:
  1. Установить и настроить DNS-сервер BIND (см. Настройка DNS-сервера BIND);
  2. Остановить службу samba:
    # systemctl stop samba
    
  3. Выполнить миграцию:
    # samba_upgradedns --dns-backend=BIND9_DLZ
    
  4. Отключить модуль SAMBA_INTERNAL в файле /etc/samba/smb.conf:
    • если в файле нет параметра server services, добавить в секцию global строку:
      server services = -dns
    • если в секции global есть параметр server services, удалить опцию dns, например:
      server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
      
  5. Запустить и включить bind:
    # systemctl enable --now bind
    

    Примечание

    Если при установке системы в настройках сети было указано полное доменное имя (например, dc1.test.alt), система может автоматически создать зону test.alt, что приведет к конфликту с Samba при запуске bind:
    мая 03 14:25:13 dc1 named[3825]: samba_dlz: Failed to configure zone 'test.alt'
    мая 03 14:25:13 dc1 named[3825]: loading configuration: already exists
    мая 03 14:25:13 dc1 named[3825]: exiting (due to fatal error)
    мая 03 14:39:44 dc1 named[4309]: Loading 'AD DNS Zone' using driver dlopen
    
    Для решения проблемы необходимо закомментировать все строки в файле /etc/bind/local.conf или удалить его.

    Примечание

    При запуске службы bind может возникнуть ошибка:
    июн 25 09:57:03 dc1 systemd[1]: bind.service: Control process exited, code=exited, status=1/FAILURE
    июн 25 09:57:03 dc1 systemd[1]: bind.service: Failed with result 'exit-code'.
    июн 25 09:57:03 dc1 systemd[1]: Failed to start bind.service - Berkeley Internet Name Domain (DNS).
    
    Для решения проблемы необходимо создать файл /etc/systemd/system/bind.service.d/override.conf со следующим содержимым:
    [Service]
    Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
    
    Например:
    # mkdir -p /etc/systemd/system/bind.service.d
    # cat << EOF > /etc/systemd/system/bind.service.d/override.conf
    [Service]
    Environment="LDB_MODULES_DISABLE_DEEPBIND=1"
    EOF
    # systemctl daemon-reload
    # systemctl enable --now bind
    
  6. Запустить службу samba:
    # systemctl start samba
    

13.3.2. Миграция с BIND9_DLZ на SAMBA_INTERNAL

Переключение с BIND9_DLZ на SAMBA_INTERNAL:
  1. Остановить службу bind и убрать её из автозагрузки:
    # systemctl disable --now bind
    
  2. Остановить службу samba:
    # systemctl stop samba
    
  3. Выполнить миграцию:
    # samba_upgradedns --dns-backend=SAMBA_INTERNAL
    
  4. Отключить модуль BIND9_DLZ в файле /etc/samba/smb.conf:
    • если в параметре server services есть только опция -dns, удалить этот параметр из файла (удалить всю строку):
      server services = -dns
    • если в секции global есть параметр server services, добавить в него опцию dns, например:
      server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns
      
  5. Запустить службу samba:
    # systemctl start samba
    

Примечание

Так как SAMBA_INTERNAL — это одна из настроек по умолчанию для параметра server services, удаление параметра server services активирует все службы, включая DNS-сервер.

Глава 14. Отладочная информация

14.1. Настройка уровня журналирования Samba

Уровень журналирования Samba определяет детализацию логов.
Для диагностики проблем рекомендуется временно повысить уровень (например, до 3 или 5).
Установить уровень журналирования для Samba можно, используя параметр log level в разделе [global] файла /etc/samba/smb.conf, например:
log level = 3
После настройки следует перезапустить службу samba:
# systemctl restart samba
Дополнительные сведения см. в разделе Уровни журналирования.

14.2. Управление процессами Samba

Для проверки состояния процессов Samba можно использовать утилиту ps:
# ps axf | grep -E "samba|smbd|winbindd"
…
3078 ?        S      0:00 /usr/sbin/samba --no-process-group
   3091 ?        S      0:00  \_ /usr/sbin/samba --no-process-group
   3092 ?        S      0:00  |   \_ /usr/sbin/samba --no-process-group
   3096 ?        S      0:00  |       \_ /usr/sbin/samba --no-process-group
   3101 ?        Ss     0:00  |           \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3138 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3139 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3149 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3150 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
…
   3127 ?        Ss     0:00  |           \_ /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
   3140 ?        S      0:00  |               \_ /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
…
Все процессы samba, smbd и winbindd должны быть дочерними по отношению к основному процессу samba.
Если структура процессов не отображается:
  • следует проверить файлы журнала Samba на наличие ошибок. Для подробного вывода можно увеличить уровень журнала (см. раздел Уровни журналирования);
  • можно запустить Samba в интерактивном режиме:
    # samba -i
    Это поможет увидеть ошибки в реальном времени.

14.3. Диагностика DNS

14.3.1. Устранение неполадок, связанных с серверной частью DNS

14.3.1.1. Внутренний DNS-сервер (SAMBA_INTERNAL)

Если клиенты не могут разрешать имена из зоны AD:
  1. Убедиться, что на клиенте указан IP-адрес DNS-сервера, способного разрешать зону AD DNS.
  2. Проверить, запущен ли DNS-сервер Samba.
Если DNS-сервер Samba не запускается, необходимо убедиться, что ни один другой процесс не использует TCP- и UDP-порт 53:
  • проверить файлы журнала Samba на наличие ошибок, связанных с DNS;
  • убедиться, что другой процесс (например, bind) не занимает порт:
    # ss -tulpn | grep ":53"
    
Если порт 53 занят другим процессом:
  • остановить конфликтующую службу, например:
    # systemctl disable --now bind
  • перезапустить Samba:
    # systemctl restart samba

14.3.1.2. Samba с BIND9_DLZ

Каталог /var/lib/samba/bind-dns создается только в том случае, если произошло одно из следующих событий:
  • при создании контроллера домена использовался параметр --dns-backend=BIND9_DLZ;
  • при подключении к домену использовался параметр --dns-backend=BIND9_DLZ;
  • домен был обновлён до Bind 9 при помощи команды samba_upgradedns с использованием опции --dns-backend=BIND9_DLZ.

Примечание

Если каталог отсутствует — следует проверить, был ли использован один из этих сценариев.

Глава 15. Удаление контроллера домена

В некоторых ситуациях необходимо навсегда удалить контроллер домена из домена. Если для обычного участника домена достаточно просто удалить соответствующую учётную запись, то чтобы удалить контроллер из домена требуется понизить его роль (demoting).
Неправильное понижение может привести к:
  • сбоям репликации;
  • тайм-аутам;
  • проблемам с аутентификацией пользователей.

15.1. Понижение роли онлайн-контроллера домена

Если удаляемый контроллер домена работает корректно, понижение роли выполняется на нём самом.
Пример понижения DC3:
  1. Авторизоваться на контроллере домена под локальным пользователем.
  2. Убедиться, что контроллер не владеет никакими ролями FSMO:
    # samba-tool fsmo show
    SchemaMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    
    Если DC3 владеет одной из ролей — передать их другому DC (см. Просмотр и передача ролей FSMO).
  3. Получить objectGUID контроллера домена:
    # ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationId=*)' --cross-ncs objectguid | grep -A1 DC3
    dn: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    objectGUID: 7b344597-3093-4b85-8987-e52dbe19e31b
    
    Для того чтобы убедиться, что все записи DNS были удалены после понижения роли контроллера домена, необходимо знать имя хоста, IP-адрес и objectGUID контроллера домена.
  4. Выполнить понижение:
    # samba-tool domain demote -Uadministrator
    Using dc1.test.alt as partner server for the demotion
    Password for [TEST\administrator]:
    Deactivating inbound replication
    Asking partner server dc1.test.alt to synchronize from us
    Changing userControl and container
    Removing Sysvol reference: CN=DC3,CN=Enterprise,CN=Microsoft System Volumes,CN=System,CN=Configuration,DC=test,DC=alt
    Removing Sysvol reference: CN=DC3,CN=test.alt,CN=Microsoft System Volumes,CN=System,CN=Configuration,DC=test,DC=alt
    Removing Sysvol reference: CN=DC3,CN=Domain System Volumes (SYSVOL share),CN=File Replication Service,CN=System,DC=test,DC=alt
    Removing Sysvol reference: CN=DC3,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=test,DC=alt
    updating ForestDnsZones.test.alt keeping 2 values, removing 1 values
    updating test.alt keeping 6 values, removing 1 values
    
    …
    Demote successful
    
  5. Остановить службу Samba:
    # systemctl stop samba
  6. Если DC работал как доменный DNS-сервер:
    • остановить службу DNS:
      # systemctl stop bind
    • убедиться, что другие узлы не используют этот хост как DNS-сервер.

15.2. Понижение автономного (недоступного) контроллера домена

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

Важно

Эта процедура должна выполняться только в том случае, если контроллер домена, который нужно понизить, больше не подключен к AD, и его нельзя понизить так, как описано в разделе Понижение роли онлайн-контроллера домена. Это гарантирует, что все изменения (например, изменения паролей) будут реплицированы на другой контроллер домена. В противном случае такие изменения будут потеряны. Список изменений можно получить с помощью Samba-инструмента ldapcmp. При описанной ниже процедуре все изменения (например, изменения паролей) не будут реплицированы на работающий DC.

Важно

Нельзя понизить статус автономного удаленного контроллера домена с контроллера домена, на котором работает Samba 4.4 или более ранней версии.
Пример понижения DC3:
  1. Авторизоваться на работающем контроллере домена.
  2. Убедиться, что понижаемый контроллер не владеет никакими ролями FSMO:
    # samba-tool fsmo show
    SchemaMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    
    Если понижаемый DC владеет одной или несколькими ролями FSMO, захватить их локальным контроллером домена (см. Захват роли FSMO).
  3. Убедиться, что понижаемый контроллер домена отключён.
  4. Получить objectGUID контроллера домена (если возможно):
    # ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationId=*)' --cross-ncs objectguid | grep -A1 DC3
    dn: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    objectGUID: 512f03b4-7042-434d-93c0-61dd6a2ea895
    
    Для того чтобы убедиться, что все записи DNS были удалены после понижения роли контроллера домена, необходимо знать имя хоста, IP-адрес и objectGUID контроллера домена.
  5. Выполнить удаление:
    # samba-tool domain demote --remove-other-dead-server=DC3
    
  6. Если пониженный контроллер работал как доменный DNS-сервер, убедиться, что другие узлы не используют этот хост как DNS-сервер.

Важно

Не следует подключать к сети контроллер, выведенный по данной процедуре. Это нарушит целостность домена.

15.3. Проверка после понижения

Действия, описанные в этом разделе, предназначены только для проверки и ручного удаления оставшихся записей, если процесс понижения контроллера не удался.
На машине, введённой в домен, запустить модуль удалённого управления базой данных конфигурации (ADMC) (подробнее см. Модуль удаленного управления базой данных конфигурации (ADMC)). Выбрать запись Domain Controllers и убедиться, что пониженный контроллер домена был удален:
ADMC. Просмотр списка контроллеров домена
Проверить, что контроллер домена был понижен, можно также в RSAT (см. Установка административных инструментов (машина Windows)). Для этого на машине Windows, введённой в домен:
  1. Открыть приложение Пользователи и компьютеры Active Directory, перейти к записи Контроллеры домена и убедиться, что пониженный контроллер домена был удален:
    RSAT. Просмотр списка контроллеров домена
    Если запись всё ещё присутствует в списке, её можно удалить вручную, выбрав в контекстном меню записи пункт Удалить.
  2. Открыть приложение Сайты и службы Active Directory и убедиться, что контроллер домена с пониженным статусом больше не указан ни в одной записи сайта Active Directory:
    RSAT. Сайты и службы Active Directory
    Если запись всё ещё присутствует в списке, её можно удалить вручную, выбрав в контекстном меню записи пункт Удалить.
  3. Открыть приложение DNS и убедиться, что имя хоста, IP-адрес и objectGUID контроллера домена больше не используются ни в одной записи DNS в любой зоне AD DNS. Например:
    RSAT. Записи DNS
    Если записи всё ещё присутствуют в списке, их можно удалить вручную, выбрав в контекстном меню записи пункт Удалить.

Часть IV. Репликация

Репликация — это процесс синхронизации данных службы каталогов между контроллерами домена. Она обеспечивает согласованность данных: пользователей, групп, политик и DNS-записей.
В Samba все объекты каталога реплицируются между контроллерами домена (пользователи, группы и записи DNS).
В настоящее время Samba не поддерживает протокол репликации распределенной файловой системы (DFS-R), используемый для репликации каталога Sysvol. Методы решения этой проблемы см. в разделе Двунаправленная репликация SysVol.

Глава 16. Настройка репликации

Предупреждение

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

Примечание

При настройке репликации указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
Принудительная репликация выполняется командой:
# samba-tool drs replicate <приемник> <источник> <NC> [опции]
где:
  • <приемник> — DC, на который копируются данные;
  • <источник> — DC, с которого копируются данные;
  • <NC> — именованная контекстная ветка (например, dc=test,dc=alt).
Пример двусторонней репликации между dc1.test.alt и dc2.test.alt:
  1. Репликация с dc1 на dc2:
    # samba-tool drs replicate dc2.test.alt \
    dc1.test.alt dc=test,dc=alt -Uadministrator
    
    Password for [TEST\administrator]:
    Replicate from dc1.test.alt to dc2.test.alt was successful.
    
    Сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP.
  2. Репликация с dc2 на dc1:
    # samba-tool drs replicate dc1.test.alt \
    dc2.test.alt dc=test,dc=alt -Uadministrator
    
    Password for [TEST\administrator]:
    Replicate from dc2.test.alt to dc1.test.alt was successful.
    
    Сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP.

    Примечание

    Имя домена в FQDN можно опустить, если оно одинаково на всех DC.
  3. Для просмотра статуса репликации можно запустить команду на DC (подробнее см. Проверка статуса репликации):
    # samba-tool drs showrepl -Uadministrator
    

Примечание

Если репликация на Windows не работает, следует добавить в Active Directory Sites and Services новое соединение Active Directory, реплицировать на DC, подождать минут 5 и попробовать реплицировать с Samba на Windows.

Глава 17. Проверка статуса репликации

17.1. Отображение статуса репликации на контроллере домена Samba

Команда samba-tool drs showrepl отображает установленные связи с другими контроллерами домена в лесу Альт Домен. Соединения отображаются с точки зрения контроллера домена, на котором запускается команда. Пример:
# samba-tool drs showrepl -Uadministrator
Password for [TEST\administrator]:

Default-First-Site-Name\DC2
DSA Options: 0x00000001
DSA object GUID: 26a8d3d0-66b3-4f6c-8457-0def172d4af3
DSA invocationId: 83fb4bbf-9f63-44d6-acbd-c0db4e9e839a

==== INBOUND NEIGHBORS ====

CN=Schema,CN=Configuration,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ Wed Jul  9 13:20:47 2025 MSK was successful
		0 consecutive failure(s).
		Last success @ Wed Jul  9 13:20:47 2025 MSK

CN=Configuration,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ Wed Jul  9 13:20:47 2025 MSK was successful
		0 consecutive failure(s).
		Last success @ Wed Jul  9 13:20:47 2025 MSK

DC=ForestDnsZones,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ Wed Jul  9 13:20:47 2025 MSK was successful
		0 consecutive failure(s).
		Last success @ Wed Jul  9 13:20:47 2025 MSK

DC=DomainDnsZones,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ Wed Jul  9 13:20:47 2025 MSK was successful
		0 consecutive failure(s).
		Last success @ Wed Jul  9 13:20:47 2025 MSK

DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ Wed Jul  9 13:20:47 2025 MSK was successful
		0 consecutive failure(s).
		Last success @ Wed Jul  9 13:20:47 2025 MSK

==== OUTBOUND NEIGHBORS ====

CN=Schema,CN=Configuration,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ NTTIME(0) was successful
		0 consecutive failure(s).
		Last success @ NTTIME(0)

CN=Configuration,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ NTTIME(0) was successful
		0 consecutive failure(s).
		Last success @ NTTIME(0)

DC=ForestDnsZones,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ NTTIME(0) was successful
		0 consecutive failure(s).
		Last success @ NTTIME(0)

DC=DomainDnsZones,DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ NTTIME(0) was successful
		0 consecutive failure(s).
		Last success @ NTTIME(0)

DC=test,DC=alt
	Default-First-Site-Name\DC1 via RPC
		DSA object GUID: e72594f1-4986-4ac9-8cdd-9481cff5e243
		Last attempt @ NTTIME(0) was successful
		0 consecutive failure(s).
		Last success @ NTTIME(0)

==== KCC CONNECTION OBJECTS ====

Connection --
	Connection name: 56a02972-69f5-42fb-965a-7125f09c96d1
	Enabled        : TRUE
	Server DNS name : dc1.test.alt
	Server DN name  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
		TransportType: RPC
		options: 0x00000001
Warning: No NC replicated for Connection!
Вывод содержит два раздела:
  • INBOUND NEIGHBORS — входящие соединения;
  • OUTBOUND NEIGHBORS — исходящие соединения.
Должны быть синхронизированы следующие контексты:
CN=Schema,CN=Configuration,DC=test,DC=alt
DC=ForestDnsZones,DC=test,DC=alt
DC=test,DC=alt
DC=DomainDnsZones,DC=test,DC=alt
CN=Configuration,DC=test,DC=alt
В разделе INBOUND NEIGHBORS в пункте Last attempt должны стоять актуальные дата и время, идентичные указанным в строке Last success (отображает время последней репликации). Должно быть 0 consecutive failure(s) — нет ошибок.
Если в разделе INBOUND NEIGHBORS есть записи:
Last attempt @ NTTIME(0) was successful
…
Last success @ NTTIME(0)
необходимо подождать: соединение ещё устанавливается.
В разделе KCC CONNECTION OBJECTS должен быть приведён список всех контроллеров домена, чьи KCC установили соглашения о репликации с текущим контроллером домена. В случае, когда контроллер домена был добавлен в домен и запущен, может пройти до 15 минут до того, как соглашения будут установлены.

Примечание

Предупреждение
No NC replicated for Connection!
можно игнорировать. Оно появляется из-за того, что при регистрации нового DC Samba неверно устанавливает некоторые флаги репликации.
Можно также проверить репликацию LDAP:
# samba-tool ldapcmp ldap://dc1.test.alt ldap://dc2.test.alt -Uadministrator
Password for [TEST\administrator]:

* Comparing [DOMAIN] context...

* Objects to be compared: 274

* Result for [DOMAIN]: SUCCESS

* Comparing [CONFIGURATION] context...

* Objects to be compared: 1625

* Result for [CONFIGURATION]: SUCCESS

* Comparing [SCHEMA] context...

* Objects to be compared: 1739

* Result for [SCHEMA]: SUCCESS

* Comparing [DNSDOMAIN] context...

* Objects to be compared: 41

* Result for [DNSDOMAIN]: SUCCESS

* Comparing [DNSFOREST] context...

* Objects to be compared: 18

* Result for [DNSFOREST]: SUCCESS
Данная команда сравнит значения атрибутов объектов всего каталога на DC1 и DC2. В ряде случаев атрибуты объектов на разных контроллерах могут отличаться, и в выводе команды это будет видно. Но не во всех случаях это будет признаком проблемы с репликацией.

17.2. Отображение статусов репликации на контроллере домена Windows

Для отображения статуса входящей репликации на контроллере домена Windows можно использовать утилиту repadmin:
> repadmin /showrepl
Windows не поддерживает отображение статусов исходящих подключений репликации. Чтобы обойти эту проблему, можно отобразить статусы входящих подключений на контроллерах домена Samba, на которые реплицируется контроллер домена Windows:
  1. Найти в Альт Домен всех партнеров репликации Windows DC. Например, чтобы отобразить партнеров по репликации контроллера домена с именем WindowsDC:
    # ldbsearch -H /var/lib/samba/private/sam.ldb '(fromServer=*CN=WindowsDC*)' --cross-ncs dn
    # record 1
    dn: CN=a46c895e-658b-463e-9ab5-a1c237fca4b1,CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
    
    # returned 1 records
    # 1 entries
    # 0 referrals
    
    В этом примере возвращается один партнер по репликации (имя хоста: DC2). Имя хоста партнера по репликации является частью возвращаемого отличительного имени (DN).
  2. На каждом контроллере домена Samba, полученном на предыдущем шаге, выполнить команду samba-tool drs showrepl для отображения статуса репликации каталога.
    Необходимо убедиться, что каждый реплицируемый контейнер каталогов указан для контроллера домена Windows в разделе INBOUND NEIGHBORS на контроллере домена Samba, а статусы успешны.

Глава 18. Двунаправленная репликация SysVol

Каталог Sysvol присутствует на всех контроллерах домена и используется для хранения логон скриптов и объектов групповых политик. Отсутствие репликации этого каталога приведет к неправильной работе групповых политик и сценариев входа.
Samba в своем текущем состоянии не поддерживает репликацию SysVol через DFS-R (репликация распределенной файловой системы) или более старую FRS (служба репликации файлов), используемую в Windows Server 2000/2003 для репликации SysVol. В настоящее время для репликации SysVol можно использовать один из следующих обходных путей:
  • двунаправленная репликация SysVol на основе Rsync/Unison (только Samba DC);
  • двунаправленная репликация SysVol на основе Rsync/osync (только Samba DC).

Важно

Следует синхронизировать idmap.ldb из контроллера домена, имеющего роль FSMO PDC_Emulator, со всеми другими контроллерами домена. Это гарантирует, что все контроллеры домена будут использовать одни и те же идентификаторы. Если файл idmap.ldb не синхронизируется, на каждом контроллере домена будут разные идентификаторы.
Cинхронизировать idmap.ldb (см. раздел Синхронизация idmap.ldb) необходимо при первом присоединении к новому контроллеру домена, а затем периодически (чтобы гарантировать постоянство идентификаторов не нужно синхронизировать idmap.ldb каждый раз при синхронизации SysVol, но это следует делать периодически).

18.1. Настройка двунаправленной репликации SysVol на базе Rsync/Unison

Исходные данные:
  • все команды выполняются от пользователя root;
  • первый контроллер домена — DC1;
  • второй контроллер домена — DC2 (уже присоединён к домену);
  • каталог sysvol расположен в /var/lib/samba/ как на DC1, так и на DC2;
  • rsync расположен в /usr/bin/rsync;
  • unison расположен в /usr/bin/unison;
  • журнал синхронизации SYSVOL записывается в файл /var/log/sysvol-sync.log;
  • идентификаторы встроенных групп (UID/GID) совпадают на всех контроллерах домена;
  • настроено беспарольное взаимодействие по SSH между пользователями root всех контроллеров домена (см. Настройка беспарольного доступа по SSH).
На первом контроллере домена (DC1):
  1. Установить пакеты rsync и unison:
    # apt-get install rsync unison
    
  2. При низких скоростях в сети, unison может некорректно работать. Для того чтобы при повторной работе unison использовал существующее SSH-соединение вместо установки нового, необходимо выполнить следующие команды:
    # mkdir ~/.ssh/ctl
    # cat << EOF > ~/.ssh/config
    Host *
    ControlMaster auto
    ControlPath ~/.ssh/ctl/%h_%p_%r
    ControlPersist 1
    EOF
    
    Эти строки настраивают OpenSSH на использование ControlMaster для всех SSH-соединений и сохранение сокетов управления в каталоге ~/.ssh/ctl.
  3. Создать каталог для конфигурации Unison /root/.unison/:
    # mkdir /root/.unison
    
  4. Для определения политики синхронизации создать файл конфигурации Unison /root/.unison/default.prf со следующим содержимым:
    # Список каталогов, которые будут синхронизированы
    root = /var/lib/samba
    # После имени хоста используются два символа /
    root = ssh://root@DC2.test.alt//var/lib/samba
    # Список подкаталогов, которые нужно синхронизировать
    path = sysvol
    # Список подкаталогов, которые нужно игнорировать
    #ignore = Path
    
    acl=true
    xattrs=true
    auto=true
    batch=true
    perms=0
    rsync=true
    maxthreads=1
    retry=3
    confirmbigdeletes=false
    servercmd=/usr/bin/unison
    copythreshold=0
    copymax = 1
    
    # Сохранять журнал с результатами работы в отдельном файле
    logfile = /var/log/sysvol-sync.log
    

    Примечание

    Содержимое файла /root/.unison/default.prf для Unison до версии 2.53.0:
    # Список каталогов, которые будут синхронизированы
    root = /var/lib/samba
    root = ssh://root@DC2.test.alt//var/lib/samba
    # Список подкаталогов, которые нужно синхронизировать
    path = sysvol
    # Список подкаталогов, которые нужно игнорировать
    #ignore = Path
    auto=true
    batch=true
    perms=0
    rsync=true
    maxthreads=1
    retry=3
    confirmbigdeletes=false
    servercmd=/usr/bin/unison
    copythreshold=0
    copyprog = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --inplace --compress
    copyprogrest = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --partial --inplace --compress
    #copyquoterem = true
    copymax = 1
    
    # Сохранять журнал с результатами работы в отдельном файле
    logfile = /var/log/sysvol-sync.log
    
  5. Создать файл для записи журнала репликации (необходимо настроить ротацию логов для этого файла, так как размер журнала не контролируется):
    # touch /var/log/sysvol-sync.log
    
На втором контроллере домена (DC2) установить пакеты rsync и unison:
# apt-get install rsync unison

Важно

Перед запуском команды синхронизации рекомендуется сделать резервную копию каталога sysvol.
Запустить команду синхронизации (на DC1):
# /usr/bin/rsync -XAavz --log-file /var/log/sysvol-sync.log \
--delete-after -f"+ */" -f"- *" /var/lib/samba/sysvol \
root@dc2.test.alt:/var/lib/samba && /usr/bin/unison
В этой команде утилита rsync создает структуру каталогов и синхронизирует содержимое каталога sysvol с сохранением расширенных атрибутов и ACL. После этого утилита unison выполняет двустороннюю синхронизацию и реплицирует изменения метаданных и файлов в соответствии с заданной конфигурацией.
На DC1 включить синхронизацию по расписанию:
# crontab -e
*/5 * * * * /usr/bin/unison -silent
Если необходимо повторно инициализировать синхронизацию, выполнить следующие действия:
  1. Отключить синхронизацию по расписанию на DC1.
  2. Убедиться, что rsync и unison в данный момент не выполняются (можно проверить командой ps -aux | grep -E 'rsync|unison').
  3. Удалить файлы состояния (хеш-файлы) Unison на DC1 и DC2 из каталога /root/.unison.
  4. Проверить содержимое каталога sysvol и при необходимости привести его в корректное состояние.
  5. Запустить синхронизацию повторно.
  6. Убедиться, что синхронизация выполнена успешно.
  7. Включить синхронизацию по расписанию на DC1.
Если в домене используется более двух контроллеров, для каждого дополнительного контроллера можно создать отдельный профиль Unison и соответствующее задание cron на DC1:
  1. Скопировать файл конфигурации:
    # cp /root/.unison/default.prf /root/.unison/sync_dc2.prf
    
  2. В файле /root/.unison/dc2.prf изменить значение параметра root, указав соответствующий контроллер домена.
  3. Повторить шаги 1 и 2 для всех дополнительных контроллеров домена.
  4. Изменить или дополнить задания синхронизации по расписанию на DC1:
    * * * * * /usr/bin/unison sync_dc2 -silent
    * * * * * /usr/bin/unison sync_dc3 -silent
    …
    

18.2. Настройка двунаправленной репликации SysVol на базе Rsync/osync

Исходные данные:
  • все команды выполняются от пользователя root;
  • первый контроллер домена — DC1;
  • второй контроллер домена — DC2 (уже присоединён к домену);
  • каталог sysvol расположен в /var/lib/samba/ как на DC1, так и на DC2;
  • rsync расположен в /usr/bin/rsync;
  • osync расположен в /usr/bin/osync;
  • журнал синхронизации SYSVOL записывается в файлы /var/log/osync_*.log;
  • настроено беспарольное взаимодействие по SSH между пользователями root всех контроллеров домена (см. Настройка беспарольного доступа по SSH).
На первом контроллере домена (DC1):
  1. Установить пакеты rsync и osync:
    # apt-get install rsync osync
    
  2. Отредактировать файл /etc/osync/sync.conf:
    #!/usr/bin/env bash
    INSTANCE_ID="sync_sysvol"
     # Путь до SysVol на текущем сервере
    INITIATOR_SYNC_DIR="/var/lib/samba/sysvol"
     # Путь до SysVol на удалённом сервере
    TARGET_SYNC_DIR="ssh://root@DC2:22//var/lib/samba/sysvol"
     # SSH-ключ пользователя root
    SSH_RSA_PRIVATE_KEY="/root/.ssh/id_ed25519"
     # Удалённые хосты, которые osync пингует перед запуском
    REMOTE_3RD_PARTY_HOSTS=""
     # Сохранять ACL
    PRESERVE_ACL=yes
     # Сохранять расширенные атрибуты (xattr)
    PRESERVE_XATTR=yes
     # Сохранять резервные копии удалённых файлов
    SOFT_DELETE=yes
    # Адрес для отправки уведомлений
    DESTINATION_MAILS="your@test.alt"
    # Команда, выполняемая после синхронизации на удалённой стороне
    REMOTE_RUN_AFTER_CMD="/usr/bin/samba-tool ntacl sysvolreset"
    
На втором контроллере домена (DC2) установить пакет rsync:
# apt-get install rsync

Важно

Перед запуском команды синхронизации рекомендуется сделать резервную копию каталога sysvol.
Запустить тестовую синхронизацию (на DC1):
# /usr/bin/osync.sh /etc/osync/sync.conf --dry --verbose
Если команда выполнилась без ошибок, удалить параметр --dry и запустить синхронизацию повторно:
# /usr/bin/osync.sh /etc/osync/sync.conf --verbose
В результате каталог sysvol будет синхронизирован между обоими контроллерами домена.

Примечание

Если в конфигурации osync параметры SOFT_DELETE (сохранять резервные копии удалённых файлов) и CONFLICT_BACKUP (сохранять резервные копии файлов при конфликте версий) установлены в значение yes, необходимо вручную создать рабочие каталоги osync на обоих контроллерах домена:
# mkdir /var/lib/samba/sysvol/.osync_workdir/deleted
# mkdir /var/lib/samba/sysvol/.osync_workdir/backup
На DC1 включить синхронизацию по расписанию:
# crontab -e
*/5 * * * *  /usr/bin/osync.sh /etc/osync/sync.conf --silent
Если при синхронизации возникают ошибки, необходимо:
  1. Отключить синхронизацию по расписанию на DC1.
  2. Убедиться, что процессы rsync и osync в данный момент не выполняются (например, командойps -aux| grep sync).
  3. Удалить рабочие каталоги osync на DC1 и DC2:
    # rm -rf /var/lib/samba/sysvol/.osync_workdir
    
  4. Проверить состояние каталога sysvol.
  5. Запустить синхронизацию повторно.
  6. Убедиться, что синхронизация выполнена успешно.
  7. Включить синхронизацию по расписанию на DC1.
Если в домене используется более двух контроллеров, для каждого дополнительного контроллера необходимо создать отдельный файл конфигурации osync и соответствующее задание cron:
  1. Скопировать файл конфигурации:
    # cp /etc/osync/sync.conf /etc/osync/sync_dc3.conf
    
  2. В файле /etc/osync/sync_dc3.conf изменить значение параметра TARGET_SYNC_DIR, указав соответствующий контроллер домена.
  3. Повторить шаги 1 и 2 для всех дополнительных контроллеров домена.
  4. Обновить задания cron на DC1:
    # crontab -e
    */5 * * * *  /usr/bin/osync.sh /etc/osync/sync.conf --silent
    */5 * * * *  /usr/bin/osync.sh /etc/osync/sync_dc3.conf --silent
    …
    

18.3. Синхронизация idmap.ldb

По умолчанию контроллер домена Samba сохраняет идентификаторы пользователей и групп в атрибутах xidNumber в idmap.ldb. Из-за особенностей работы idmap.ldb нельзя гарантировать, что каждый контроллер домена будет использовать один и тот же идентификатор для данного пользователя или группы.
Ниже описана процедура синхронизации idmap.ldb с контроллера домена, на котором установлена роль FSMO Эмулятор PDC (см. Роли FSMO), со всеми остальными контроллерами домена. Для достижения наилучших результатов следует регулярно синхронизировать idmap.ldb.
На контроллере домена, имеющего роль FSMO Эмулятор PDC:
  1. Установить пакет ldb-tools, если он еще не установлен:
    # apt-get install ldb-tools
    
  2. Создать резервную копию файла /var/lib/samba/private/idmap.ldb:
    # rm -f /var/lib/samba/private/idmap.ldb.bak
    # tdbbackup -s .bak /var/lib/samba/private/idmap.ldb
    
  3. Создать ежедневное задание cron:
    #Создание резервной копии idmap.ldb
    0 3 * * * rm -f /var/lib/samba/private/idmap.ldb.bak && tdbbackup -s .bak /var/lib/samba/private/idmap.ldb >/dev/null 2>&1
    
На контроллерах домена, которые не выполняют роль эмулятора PDC:
  1. Скопировать файл резервной копии, созданный на DC с ролью Эмулятор PDC (в примере dc1), в каталог /var/lib/samba/private/ с удалением суффикса .bak (заменить существующий файл):
    # rsync -a dc1:/var/lib/samba/private/idmap.ldb.bak /var/lib/samba/private/idmap.ldb
    
  2. Запустить очистку кеша:
    # net cache flush
    
  3. Проверить разрешения ACL SysVol и при необходимости сбросить их:
    # if ! samba-tool ntacl sysvolcheck; then samba-tool ntacl sysvolreset; fi
    
  4. Если всё прошло успешно, создать ежедневное задание cron:
    #Синхронизация idmap.ldb
    15 4 * * * rsync -a  dc1:/var/lib/samba/private/idmap.ldb.bak  /var/lib/samba/private/idmap.ldb && net cache flush && if ! samba-tool ntacl sysvolcheck; then samba-tool ntacl sysvolreset; fi >/dev/null 2>&1
    

Важно

После синхронизации idmap.ldb необходим перезапуск Samba (systemctl restart samba.service), т.к. этот файл держится открытым процессами Samba.
Синхронизации idmap.ldb можно избежать, если на всех контроллерах добавить следующие параметры в smb.conf в секции [sysvol] (и в [netlogon]) строки:
acl_xattr:ignore system acls = yes
acl_xattr:default acl style = windows
При использовании этих параметров значения расширенных атрибутов файлов (xattr security.NTACL) на всех контроллерах будут одинаковы, независимо от uid/gid. Именно это и является проблемой при использовании rsync, т.к. при синхронизации rsync передаёт имена пользователей/групп и они разыменовываются в uid/gid уже «на месте», а xattr security.NTACL остаётся неизменным и, в конфигурации по умолчанию (без вышеуказанных параметров), зависит от значений uid/gid/facl.

Часть V. Клиенты Альт Домен

Клиентами Альт Домен могут быть серверы и рабочие станции под управлением Windows, Linux («Альт», Astra Linux) и других операционных систем, поддерживающих стандартные протоколы LDAP, Kerberos, DNS и SMB.

Важно

Механизмы применения групповых политик оптимизированы для семейства ОС «Альт». Аутентификация в домене рабочих станций под управлением Astra Linux и других ОС под управлением Linux, возможна, но поддержка механизмов применения групповых политик на таких машинах ограничена и требует соответствующее ПО, не входящее в комплект Альт Домен.

Содержание

19. SSSD и Winbind
19.1. Аутентификация (PAM)
19.1.1. SSSD
19.1.2. Winbind
19.2. Авторизация (NSS)
19.2.1. SSSD
19.2.2. Winbind
19.3. Кеширование и управление сессией
19.3.1. SSSD
19.3.2. Winbind
19.4. Групповые политики
19.4.1. Поддержка групповых политик ALT Linux
19.4.2. Интеграция с GPO-Based Access Control для входа в систему
19.5. Обновление DNS
19.5.1. SSSD
19.5.2. Winbind
19.6. Поддержка работы с несколькими доменами и доверительные отношения
19.6.1. SSSD
19.6.2. Winbind
20. Подготовка системы к вводу в домен
20.1. Синхронизация времени
20.2. Настройка DNS
20.2.1. Настройка клиентов для использования DNS-серверов вручную
20.2.2. Проверка разрешения DNS
21. Присоединение к домену в роли участника
21.1. Команда system-auth
21.2. Подключение к домену с использованием SSSD
21.2.1. Установка пакетов
21.2.2. Ввод в домен в командной строке
21.2.3. Ввод в домен в Центре управления системой
21.2.4. Проверка результатов присоединения
21.3. Подключение к домену с использованием Winbind
21.3.1. Установка пакетов
21.3.2. Ввод в домен в командной строке
21.3.3. Ввод в домен в Центре управления системой
21.3.4. Проверка результатов присоединения
22. Вход пользователя в систему
23. Отображение глобальных групп на локальные
24. Отладочная информация
24.1. Настройка уровня журналирования Samba
24.2. Ошибка при подключении к IP-адресу 127.0.0.1
24.3. Команда getent не показывает доменных пользователей и группы
25. Удаление клиента из домена
26. Повторная регистрация клиента в домене
27. Настройка аутентификации доменных пользователей на контроллере домена
27.1. Установка пакетов
27.2. Настройка конфигурационных файлов
27.2.1. Настройка Kerberos (krb5.conf)
27.2.2. Настройка Samba (smb.conf)
27.2.3. Настройка NSS (nsswitch.conf)
27.2.4. Настройка аутентификации
27.3. Генерация keytab-файла
27.4. Управление службами
27.5. Настройка ролей
27.6. Групповые политики
27.7. Настройка SSH
27.8. Проверка настройки
28. Настройка обновления паролей аккаунтов машин
28.1. Локальная политика смены пароля
28.2. Включение обновления пароля
28.2.1. ОС Windows
28.2.2. ОС «Альт»
28.3. Отключение обновления пароля
28.3.1. ОС Windows
28.3.2. ОС «Альт»
28.4. Диагностика
28.4.1. Дата последней смены пароля
28.4.2. Проверка доверия между машиной и доменом
28.5. Восстановление работоспособности

Глава 19. SSSD и Winbind

В операционных системах на базе Linux два ключевых инструмента обеспечивают взаимодействие с AD — Winbind и SSSD:
  • Winbind (часть пакета Samba) — демон, обеспечивающий взаимодействие с AD и решающий проблему единого входа в систему. Winbind использует вызовы Microsoft RPC. Он поддерживает как Kerberos, так и NTLM, предоставляя системам механизмы аутентификации и авторизации, аналогичные тем, что используются в Windows;
  • SSSD (System Security Services Daemon) — клиентский компонент централизованных служб каталогов (таких как FreeIPA, 389 Directory Server, Microsoft Active Directory, OpenLDAP и других). Он запрашивает и кеширует информацию, а также предоставляет услуги идентификации, аутентификации и авторизации для локальной машины.
В этом разделе описаны функции и возможности двух вариантов интеграции: решение на основе Samba Winbind и решение на базе SSSD.

Таблица 19.1. Сравнение Winbind и SSSD

Категория
Описание
Winbind
SSSD
Аутентификация
Kerberos
Да (начиная с версии 4.19.9-alt4)
Да
NTLM
Да (используется, если Kerberos недоступен или не используется)
Нет
LDAP
Нет
Да (не в AD-домене)
Авторизация
LDAP
Да
Да
Вызовы Microsoft RPC
Да
Нет
Автономный вход в систему
Да
Да
Поддержка доверительных отношений
External Trust
Да
Да
Parent-Child Trust
Да
Да
Forest Trust
Да
Нет
Поддержка групповых политик
Групповые политики Samba
Да (не реализовано в Альт Домен)
Нет
Групповые политики ALT Linux с помощью gpupdate
Да
Да
GPO-Based Access Control (Централизованное управление контролем доступа на основе хоста через GPO)
Нет
Да
Сопоставление идентификаторов
Генерация UID/GID
Да
Да
Сопоставление идентификаторов через атрибуты RFC2307
Да
Да
Обновление DNS
Встроенное
Нет
Да
Сторонние решения
Да
Нет
Автоматическая интеграция с sudo
Нет
Да
Аутентификация с помощью электронных ключей, смарт-карт и сертификатов
Нет
Да
Производительность при обработке большого числа групп и пользователей
Высокая
Низкая

19.1. Аутентификация (PAM)

В Linux аутентификация пользователей управляется системой PAM (Pluggable Authentication Modules), которая позволяет использовать различные модули для проверки учетных данных. Winbind и SSSD реализуют собственные PAM-модули:
  • Winbind: pam_winbind.so
  • SSSD: pam_sss.so
Оба модуля позволяют системе проверять учетные данные пользователя через обращение к контроллеру домена:
  • Winbind использует NTLM или Kerberos;
  • SSSD использует Kerberos.
Конфигурация PAM обычно прописывается в файле /etc/pam.d/system-auth, где подключается преднастроенный стек:
system-auth-winbind-only
или
system-auth-sss-only

19.1.1. SSSD

В SSSD за аутентификацию отвечает параметр auth_provider, который определяет, какой механизм используется для проверки подлинности. Поддерживаются следующие варианты:
  • поставщик данных Kerberos (krb5) — аутентификация через Kerberos. Требует настройки auth_provider = krb5. Для корректной работы его необходимо использовать совместно с поставщиком данных идентификации (например, id_provider = ldap). Некоторые данные, которые требуются внутреннему серверу проверки подлинности Kerberos 5, должны предоставляться поставщиком данных идентификации (например, имя участника Kerberos пользователя (UPN));
  • поставщик данных LDAP (ldap) — аутентификация через LDAP-сервер. SSSD не поддерживает аутентификацию через незащищенный канал требуется TLS/SSL или LDAPS. Даже если сервер LDAP используется только как провайдер идентификации, использование зашифрованного канала настоятельно рекомендуется;
  • поставщик данных Active Directory (ad) — оптимизированная аутентификация для Active Directory (используется Kerberos + LDAP). Обмен данными с внутренним сервером выполняется по каналу с шифрованием GSSAPI. С поставщиком данных AD не следует использовать параметры SSL/TLS, поскольку использование Kerberos будет иметь приоритет над ними. Поставщик данных AD позволяет SSSD использовать поставщик данных идентификации sssd-ldap и поставщик данных проверки подлинности sssd-krb5 с оптимизацией для сред Active Directory. Поставщик данных AD принимает те же параметры, которые используются поставщиками sssd-ldap и sssd-krb5, за некоторыми исключениями;
  • поставщик данных IPA (ipa) — специальный провайдер для интеграции с FreeIPA. Этот поставщик требует, чтобы компьютер был подключен к домену FreeIPA; конфигурация почти полностью определяется автоматически и получается непосредственно с сервера. Поставщик IPA позволяет SSSD использовать поставщик идентификационных данных sssd-ldap и sssd-krb5.
Для настройки аутентификации в SSSD используется файл конфигурации /etc/sssd/sssd.conf. В нём определяются параметры подключения к серверу каталога, а также параметры аутентификации.
Пример настройки аутентификации для AD:
[domain/TEST.ALT]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
debug_level = 0
; cache_credentials = false
ad_gpo_ignore_unreadable = true
ad_gpo_access_control = permissive
ad_update_samba_machine_account_password = true

19.1.2. Winbind

В Winbind за аутентификацию отвечает параметр security, который модель безопасности Samba:
  • ads — настраивает Samba как участника домена в домене AD. Для аутентификации в этом режиме используется Kerberos;
  • domain — Samba выступает как член старого NT-домена (не AD) и передает учетные данные на контроллер домена Windows;
  • server — устаревший вариант, при котором Samba делегирует аутентификацию другому серверу, но если тот откажет, пробует локальную проверку;
  • user — стандартный режим, когда учетные данные проверяются на самом сервере Samba без обращения к домену.
Основными методами аутентификации являются:
  • Kerberos — используется для безопасной аутентификации через Kerberos. Это основной механизм при работе с доменами AD (security = ads). Winbind автоматически получает и управляет Kerberos-билетами для пользователей;
  • NTLM — в случае, если Kerberos недоступен или не используется, Winbind может прибегать к аутентификации через NTLM (NT LAN Manager), который является устаревшим, но все еще поддерживаемым методом аутентификации в Windows-средах.
Для настройки Winbind используется конфигурация в файле /etc/samba/smb.conf.
Пример настройки аутентификации Winbind для AD:
[global]
security = ads
workgroup = TEST
realm = TEST.ALT
idmap config * : backend = tdb
idmap config EXAMPLE : backend = rid
idmap config EXAMPLE : range = 10000-999999
winbind use default domain = yes
winbind offline logon = yes
winbind refresh tickets = yes
winbind enum users = no
winbind enum groups = no
kerberos method = secrets and keytab
log file = /var/log/samba/log.%m
log level = 3

19.2. Авторизация (NSS)

После успешной аутентификации системе необходимо определить, какие пользователи и группы существуют, какие у них UID/GID и какие права им назначены. Для этого используется подсистема NSS (Name Service Switch), которая позволяет системе получать информацию о пользователях и группах из различных источников.
Winbind и SSSD предоставляют свои модули для интеграции с NSS:
  • Winbind: nss_winbind.so
  • SSSD: nss_sss.so
Эти модули настраиваются в файле /etc/nsswitch.conf, например:
passwd: files winbind
shadow: tcb files winbind
group:  files winbind
или:
passwd: files sss
shadow: tcb files sss
group:  files sss
Здесь winbind или sss определяют, что информация о пользователях и группах запрашивается у соответствующей службы:
  • Winbind — запрашивает SID пользователей и групп через RPC и LDAP и маппирует их в локальные UID/GID;
  • SSSD — запрашивает данные пользователей и групп через LDAP.

19.2.1. SSSD

SSSD позволяет управлять авторизацией пользователей и групп, используя разные механизмы, которые определяются параметром access_provider.
Доступные значения access_provider:
  • permit — разрешает доступ всем пользователям (по умолчанию);
  • deny — блокирует доступ всем пользователям;
  • ldap — проверяет доступ через LDAP-фильтр (например, членство в группе);
  • ad — использует Group Policy Objects (GPO) для авторизации (при id_provider = ad);
  • hbac — применяет Host-Based Access Control (HBAC) (только для FreeIPA).

19.2.1.1. Механизм ID Mapping

Информацию о механизме ID Mapping в SSSD см. Настройка SSSD.

19.2.1.2. Управление правами через SUDO

Помимо контроля входа, SSSD может управлять sudo-правилами. Конфигурация sudo традиционно хранится в файле sudoers, который нужно вручную копировать и обновлять на каждой машине в системе (чтобы включить SSSD как источник правил sudo, необходимо добавить sss в запись sudoers в файле nsswitch.conf). Однако в больших инфраструктурах это может быть неудобно и трудоемко, поэтому часто для упрощения управления правами доступа используют LDAP (Lightweight Directory Access Protocol), централизованный каталог для хранения конфигураций. В этом случае локальные системы просто обращаются к центральному серверу LDAP для получения актуальной информации о правилах доступа.
На стороне SSSD достаточно расширить список служб добавлением sudo в раздел [sssd] файла sssd.conf. Чтобы ускорить поиск LDAP, также можно указать базу поиска для правил sudo с помощью параметра ldap_sudo_search_base.
В следующем примере показано, как настроить SSSD на загрузку правил sudo с сервера LDAP:
[sssd]
config_file_version = 2
services = nss, pam, sudo
domains = TEST

[domain/TEST]
id_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://test.alt
ldap_sudo_search_base = ou=sudoers,dc=test,dc=alt
Важно учитывать, что на платформах, где поддерживается systemd, не требуется добавлять поставщика данных sudo в список служб, так как он стал необязательным. Однако вместо этого следует включить sssd-sudo.socket.

19.2.2. Winbind

Winbind работает как клиент AD и получает данные учетных записей пользователей и групп через вызовы Microsoft RPC и LDAP.

19.2.2.1. Механизм ID Mapping

19.3. Кеширование и управление сессией

19.3.1. SSSD

По умолчанию SSSD не кеширует аутентификационные данные пользователей (пароль в виде хеша). При обработке запросов на аутентификацию SSSD всегда обращается к провайдеру идентификации (id_provider). Если провайдер недоступен, аутентификация пользователя завершается с ошибкой.
Чтобы пользователи могли входить в систему, даже если провайдер идентификации недоступен, можно включить кеширование учетных данных, установив параметр cache_credentials = true в файле /etc/sssd/sssd.conf.
Параметр cache_credentials определяет, должны ли учетные данные пользователя также сохраняться в локальном кеше LDB. Кешированные учетные данные относятся к паролям, включая первый (долгосрочный) фактор двухфакторной аутентификации, но не другие механизмы аутентификации (пароли хранятся в виде хеша SHA-512).
В SSSD информация о пользователях и группах кешируется в следующих файлах (в каталоге /var/lib/sss/db/):
  • cache_<домен>.ldb:
    • Тип: Авторизационный кеш;
    • Функция: Основной кеш данных о пользователях и группах.
  • ccache_<домен>:
    • Тип: Авторизационный кеш;
    • Функция: Кеширование учетных данных, если используется аутентификация через Kerberos (содержит кешированные Kerberos-билеты).
  • timestamps_<домен>.ldb:
    • Функция: Управляет сроками действия кешированных данных.

19.3.2. Winbind

Winbind использует TDB (Trivial Database) файлы, которые расположены в /var/lib/samba/:
  • winbindd_cache.tdb:
    • Тип: Авторизационный кеш;
    • Функция: Хранит информацию об идентификации, полученной от домена AD.
  • winbindd_idmap.tdb:
    • Тип: Авторизационный кеш;
    • Функция: Локальная база данных IDMAP используемая winbindd для сопоставления SID и UID/GID при бэкенде tdb.
  • gencache.tdb:
    • Тип: Общий кеш;
    • Функция: Хранит кешированную информацию о недоступных серверах и доверенных доменах.
Параметр, отвечающий за кеширование:
[global]
winbind offline logon = yes
Этот параметр включается в smb.conf, чтобы позволить Winbind использовать кешированные учетные данные для аутентификации, когда сервер AD недоступен.
Также существует winbind cache time, который задаёт количество секунд, в течение которых демон winbindd будет кешировать информацию о пользователях и группах перед повторным запросом к серверу Windows NT. Это не относится к запросам на аутентификацию, которые всегда обрабатываются в реальном времени, если только не включена опция офлайн-аутентификации Winbind.

19.4. Групповые политики

19.4.1. Поддержка групповых политик ALT Linux

В дистрибутивах ALT реализована поддержка групповых политик (Group Policy Objects, GPO), что позволяет централизованно управлять настройками и конфигурациями систем аналогично средам Windows. Для применения групповых политик используется утилита gpupdate, предназначенная для работы на машинах, введённых в домен как с помощью SSSD, так и с помощью Winbind.
При аутентификации пользователя модуль PAM system-policy-gpupdate.so запускает pam_oddjobd_gpupdate.so, который инициирует выполнение системной службы oddjob.service для выполнения привилегированных задач. oddjob.service вызывает утилиту gpoa, которая отвечает за репликацию и применение групповых политик (GPO). В зависимости от переданного параметра утилита gpoa обновляет либо настройки пользователя, если передано его имя, либо настройки всей машины, если параметр отсутствует. Этот процесс гарантирует автоматическое применение актуальных групповых политик при каждом входе пользователя в систему.
Подробнее о групповых политиках см. Групповые политики в Альт Домен.

19.4.2. Интеграция с GPO-Based Access Control для входа в систему

19.4.2.1. SSSD

Один из распространенных сценариев управления доступом к компьютерам в среде AD — использование параметров групповой политики (GPO), связанных с правами входа на машину.

Таблица 19.2. Примеры групповых политик, реализованных в SSSD

Групповая политика
Параметр конфигурации SSSD
Allow log on locally
ad_gpo_map_interactive
Allow log on through Remote Desktop Services
ad_gpo_map_remote_interactive
Log on as a batch job
ad_gpo_map_batch
Log on as a service
ad_gpo_map_service
Настройки политики GPO можно использовать для централизованной настройки нескольких наборов прав входа (Logon Rights) на клиентскую машину, каждый из которых классифицируется по способу входа (interactive, remote interactive) и состоит из белого и чёрного списка пользователей и групп, которым разрешён или запрещён доступ к компьютеру с использованием способа входа. Для этого сопоставляются имена pam-служб с определёнными правами входа. Предоставляются сопоставления по умолчанию для всех часто используемых имён pam-служб, также администратор может добавлять/удалять сопоставления по мере необходимости. Делается это с помощью параметров конфигурации вида gpo_map_<logon_right> (например, gpo_map_interactive, gpo_map_network и т. д.), каждый из которых состоит из списка записей, разделённых запятыми, начинающихся либо с «+» (для добавления в набор по умолчанию), либо с «-» (для удаления из набора по умолчанию). Подробнее см. man sssd-ad.
Значение белого и черного списка:
  • Белый список («allow»). Если этот параметр не задан, любой пользователь может войти в систему. Если он задан, только указанные пользователи и группы получают доступ. Другими словами, при включении этого параметра поведение изменяется с «доступ разрешен всем» на «доступ запрещен всем, кроме перечисленных в белом списке»;
  • Черный список («deny»). Если этот параметр не задан, он не оказывает влияния. Если он определен, указанные пользователи и группы не могут входить в систему. Если пользователь или группа присутствует одновременно в белом и черном списках, приоритет отдается черному списку.
Если пользователь пытается войти в систему, то:
  • определяется, какое право входа (Logon Rights) связано с сервисом PAM;
  • получаются соответствующие политики GPO из файла GptTmpl.inf, который содержит настройки политики из расширения «Security Settings». Например, для права интерактивного входа (Interactive Logon Right) используются параметры SeInteractiveLogonRight (разрешенные пользователи) и SeDenyInteractiveLogonRight (запрещенные пользователи).
Когда клиент пытается получить доступ к серверу, SSSD выполняет несколько шагов для обработки групповых политик:
  • Скачивание файлов политики. Файлы GPT.INI и GptTmpl.inf скачиваются с сервера и сохраняются в кеше GPO на клиентской машине (в каталоге /var/lib/sss/gpo_cache/), чтобы ускорить доступ и избежать повторных запросов к серверу при каждом входе пользователя в систему;
  • Анализ содержимого файлов. После того как файлы были получены и сохранены в кеше, процесс gpo_child начинает их обработку;
  • Применение политики. После того, как политика была загружена и ее содержание проанализировано, механизм принудительного применения GPO обеспечивает контроль доступа, проверяя политику против белого или черного списка, который может содержать разрешения или запреты для определенных групп.
Так как функция контроля доступа на основе GPO используется только провайдером AD, она включена в пакет sssd-ad. Исходные файлы для этой функции включены в libsss_ad.so. Эта функция отключена по умолчанию. Предоставлена конфигурационная опция ad_gpo_access_control, которая может быть установлена в одно из следующих значений:
  • disabled (не осуществляется ни проверка соответствия правилам управления доступом на основе GPO, ни их принудительное применение);
  • enforcing (осуществляется проверка соответствия правилам управления доступом на основе GPO и их принудительное применение);
  • permissive (осуществляется проверка соответствия правилам управления доступом на основе GPO, но не их принудительное применение. Вместо этого создаётся сообщение системного журнала, означающее, что пользователю было бы отказано в доступе, если бы в качестве значения этого параметра был задан принудительный режим).
С остальными конфигурационными параметрами, относящимися к GPO, можно ознакомиться в man sssd-ad.

19.4.2.2. Winbind

В Альт Домен поддержка групповых политик Samba не реализована, но теоретически Winbind их поддерживает.

19.5. Обновление DNS

При вводе машины в домен в DNS-записи на DNS-сервере прописывается текущий IP-адрес машины. В случае изменения IP-адреса для взаимодействия с AD используются службы Winbind и SSSD для обновления DNS-записей.

19.5.1. SSSD

Для включения обновления IP-адресов службой sssd существует несколько способов. Подробнее см. Обновление IP-адресов службой sssd.

19.5.2. Winbind

Samba Winbind не поддерживает возможность динамического обновления DNS-записей. Для обхода этой проблемы была разработана программа, реализующая динамическое обновление адресов на DNS-сервере при использовании winbind в качестве клиента домена — winbind-dnsupdate. Подробнее см. winbind-dnsupdate.

19.6. Поддержка работы с несколькими доменами и доверительные отношения

19.6.1. SSSD

Работа с несколькими доменами
SSSD с поставщиком данных AD (id_provider = ad) может использоваться для получения данных пользователей и проверки подлинности пользователей из доверенных доменов. В настоящее время распознаются только домены, находящиеся в одном и том же лесу (Parent-Child Trust). Кроме того, контроллеры доменов из доверенных доменов всегда обнаруживаются автоматически.
Поддержка кросс-лесных доверий
SSSD не поддерживает доверительные отношения уровня леса (Forest Trusts), что ограничивает его возможности при работе с многоуровневыми лесами доменов.

19.6.2. Winbind

Работа с несколькими доменами
Winbind на клиентских машинах не распознаёт доверенные домены. Чтобы устранить эту проблему, необходимо внести изменения в конфигурационный файл smb.conf на Linux-клиентах, подключенных через Winbind. В секции [global] этого файла следует добавить соответствующую опцию:
winbind scan trusted domains = yes
Поддержка кросс-лесных доверий
Winbind поддерживает доверительные отношения уровня леса (Forest Trusts).

Глава 20. Подготовка системы к вводу в домен

20.1. Синхронизация времени

Синхронизация времени с контроллером домена производится автоматически.

20.2. Настройка DNS

Альт Домен использует DNS для обнаружения других контроллеров домена и служб, таких как Kerberos. Поэтому клиенты и серверы домена должны иметь возможность разрешать зоны DNS.
Для ввода компьютера в домен на нём должен быть доступен сервер DNS, имеющий записи про контроллер домена. Если IP-адрес назначается через DHCP, DNS-сервер должен передаваться от DHCP-сервера. При статической настройке требуется ручная конфигурация.
Ниже приведен пример настройки сетевого интерфейса со статическим IP-адресом.

20.2.1. Настройка клиентов для использования DNS-серверов вручную

Настройку сети можно выполнить как в графическом интерфейсе, так и в консоли.
В консоли:
  1. Задать имя компьютера:
    # hostnamectl set-hostname host-01.test.alt
    
  2. В качестве первичного DNS должен быть указан DNS-сервер домена. Для этого необходимо создать файл /etc/net/ifaces/enp1s0/resolv.conf со следующим содержимым:
    nameserver 192.168.0.132
    
    где 192.168.0.132 — IP-адрес DNS-сервера домена, enp1s0 — интерфейс.
  3. Указать службе resolvconf использовать DNS контроллера домена и домен для поиска. Для этого в файле /etc/resolvconf.conf добавить/отредактировать следующие параметры:
    interface_order='lo lo[0-9]* lo.* enp1s0'
    search_domains=test.alt
    
    где enp1s0 — интерфейс, на котором доступен контроллер домена, test.alt — домен.
  4. Обновить конфигурацию DNS:
    # resolvconf -u
    

Примечание

После изменения имени компьютера могут возникнуть проблемы с запуском приложений. Решение: перезагрузить систему.
В ЦУС СетьEthernet интерфейсы задать имя компьютера, указать в поле DNS-серверы DNS-сервер домена и в поле Домены поиска — домен для поиска:
Настройка сети

Примечание

После изменения имени компьютера могут возникнуть проблемы с запуском приложений. Решение: перезагрузить систему.

Примечание

Настройки сети также доступны в веб-интерфейсе ЦУС.
Настройка сети в веб-интерфейсе
В результате в файле /etc/resolv.conf должны появиться строки:
search test.alt
nameserver 192.168.0.132

20.2.2. Проверка разрешения DNS

Для проверки того, что настройки DNS верны и машины могут разрешать IP-адреса и имена, можно использовать команды nslookup и host.
Прямое разрешение имени:
# nslookup dc1.test.alt
Server:		192.168.0.132
Address:	192.168.0.132#53

Name:	dc1.test.alt
Address: 192.168.0.132

# host dc1.test.alt
dc1.test.alt has address 192.168.0.132
Обратное разрешение (по IP):
# nslookup 192.168.0.132
132.0.168.192.in-addr.arpa	name = dc1.alt.test.

# host 192.168.0.132
132.0.168.192.in-addr.arpa domain name pointer dc1.alt.test.
Следует обратить внимание, что в Samba AD обратная зона не создаётся автоматически. Её необходимо настроить вручную. Подробнее см. Администрирование DNS.
Альт Домен использует SRV-записи для обнаружения служб, таких как Kerberos и LDAP. Проверка разрешения SRV-записей:
$ nslookup
> set type=SRV
> _ldap._tcp.test.alt
Server:		192.168.0.132
Address:	192.168.0.132#53

_ldap._tcp.test.alt	service = 0 100 389 dc2.test.alt.
_ldap._tcp.test.alt	service = 0 100 389 dc1.test.alt.
> exit
или:
$ host -t SRV _ldap._tcp.test.alt
_ldap._tcp.test.alt has SRV record 0 100 389 dc1.test.alt.
_ldap._tcp.test.alt has SRV record 0 100 389 dc2.test.alt.
Успешное разрешение SRV-записей — признак корректной настройки DNS.

Глава 21. Присоединение к домену в роли участника

21.1. Команда system-auth

Для ввода клиентских машин в Альт Домен в дистрибутивах «Альт» используется команда system-auth:
# system-auth <действие> <опции>
В таблице Параметры команды system-auth приведено описание параметров команды system-auth.

Таблица 21.1. Параметры команды system-auth

Параметр
Описание
Действие
status
Показать текущую схему аутентификацию
list
Вывести список доступных схем аутентификации
write
Установить указанную схему аутентификации
Опция
-d
Включить режим отладки
--winbind
Использовать Samba Winbind для подключения системы к домену (по умолчанию — SSSD)
--gpo
Включить групповые политики на машине
--createcomputer=OU/SubOU
Указать субконтейнер в домене (организационная единица/подразделение), в который будет добавлена учётная запись компьютера
--windows2003
Режим совместимости с доменом Windows 2003
--netbiosname=short_hostname
Указать короткое имя NetBIOS (не более 15 символов). Обязательно, если имя узла длиннее 15 символов
--version
Вывести версию программы
Примеры использования команды system-auth:
  • просмотр текущей схемы аутентификации:
    # system-auth status
    ad TEST.ALT HOST-01 TEST
    
  • переключение на локальную аутентификацию:
    # system-auth write local
    
  • присоединение к домену (по умолчанию используется билет Kerberos):
    # system-auth write ad <Домен> <Имя компьютера> <Рабочая группа> <Имя пользователя> [<Пароль>] [--windows2003] [--createcomputer="COMPUTEROU/SubCOMPUTEROU/SubSubCOMPUTEROU"] [--winbind] [--gpo]
    

21.2. Подключение к домену с использованием SSSD

В этом разделе описывается использование демона служб безопасности системы (SSSD) для подключения системы к Альт Домен.
SSSD используется для доступа к пользовательскому каталогу, для аутентификации и авторизации через общую структуру с кешированием пользователей, чтобы разрешить автономный вход в систему. SSSD легко настраивается; он обеспечивает интеграцию подключаемых модулей аутентификации (PAM) и службы переключения имен (NSS), базу данных для хранения локальных пользователей, а также расширенных пользовательских данных, полученных с центрального сервера.
Дополнительные ресурсы:
  • man realm
  • man sssd-ad
  • man sssd

Примечание

О настройке SSSD см. Настройка SSSD и Настройки SSSD в ЦУС.

21.2.1. Установка пакетов

Установить пакет task-auth-ad-sssd:
# apt-get install task-auth-ad-sssd

21.2.2. Ввод в домен в командной строке

Для ввода компьютера в домен необходимо выполнить команду:
# system-auth write ad test.alt host-01 test 'administrator' 'Pa$$word'
Joined 'HOST-01' to dns domain 'test.alt'
где:
  • test.alt — имя домена;
  • host-01 — имя компьютера, вводимого в домен;
  • test — рабочая группа;
  • administrator — имя пользователя, имеющего право вводить машины в домен;
  • Pa$$word — пароль пользователя, имеющего право вводить машины в домен.
Перезагрузить рабочую станцию для применения всех настроек.

21.2.3. Ввод в домен в Центре управления системой

Для ввода компьютера в домен в ЦУС необходимо выбрать пункт ПользователиАутентификация.
В окне модуля Аутентификация следует выбрать пункт Домен Active Directory, заполнить поля (Домен, Рабочая группа, Имя компьютера), выбрать пункт SSSD (в единственном домене) и нажать кнопку Применить:
Ввод в домен в Центре управления системой
В открывшемся окне необходимо ввести имя пользователя, имеющего право вводить машины в домен, и его пароль и нажать кнопку ОК:
Пароль для учётной записи с правами подключения к домену

Примечание

Если на машине установлен пакет alterator-gpupdate, при подключении машины к домену можно включить групповые политики. Для включения групповых политик необходимо в окне ввода логина и пароля пользователя, с правами подключения к домену, отметить пункт Включить групповые политики:
Включение групповых политик при вводе в домен
При успешном подключении к домену отобразится соответствующая информация:
Успешное подключение к домену
Перезагрузить рабочую станцию для применения всех настроек.

21.2.4. Проверка результатов присоединения

Проверка корректности присоединения:
  1. Для проверки возможности поиска доменных пользователей отобразить сведения о пользователе домена (ivanov — пользователь в домене):
    # getent passwd ivanov
    ivanov:*:1187401105:1187400513:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash
    
  2. Проверить возможность получения информации о домене:
    # net ads info
    LDAP server: 192.168.0.132
    LDAP server name: dc1.test.alt
    Workgroup: TEST
    Realm: TEST.ALT
    Bind Path: dc=TEST,dc=ALT
    LDAP port: 389
    Server time: Вт, 24 июн 2025 12:12:01 MSK
    KDC server: 192.168.0.132
    Server time offset: 2
    Last machine account password change: Пн, 20 июн 2025 12:07:09 MSK
    
  3. Проверить, действителен ли пароль учетной записи компьютера:
    # net ads testjoin
    Join is OK
    

Примечание

Список пользователей можно посмотреть на сервере командой:
# samba-tool user list

21.3. Подключение к домену с использованием Winbind

В этом разделе описывается использование Samba Winbind для подключения системы к Альт Домен.
Дополнительные ресурсы:
  • man realm
  • man winbindd

21.3.1. Установка пакетов

Установить пакет task-auth-ad-winbind:
# apt-get install task-auth-ad-winbind

21.3.2. Ввод в домен в командной строке

Для ввода компьютера в домен необходимо выполнить команду:
# system-auth write ad test.alt host-02 test 'administrator' 'Pa$$word' --winbind
Joined 'HOST-02' to dns domain 'test.alt'
где:
  • test.alt — имя домена;
  • host-02 — имя компьютера, вводимого в домен;
  • test — рабочая группа;
  • administrator — имя пользователя, имеющего право вводить машины в домен;
  • Pa$$word — пароль пользователя, имеющего право вводить машины в домен.
Перезагрузить рабочую станцию для применения всех настроек.

21.3.3. Ввод в домен в Центре управления системой

Для ввода компьютера в домен в ЦУС необходимо выбрать пункт ПользователиАутентификация.
В окне модуля Аутентификация следует выбрать пункт Домен Active Directory, заполнить поля (Домен, Рабочая группа, Имя компьютера), выбрать пункт Winbind (в сложных доменах) и нажать кнопку Применить:
Ввод в домен в Центре управления системой
В открывшемся окне необходимо ввести имя пользователя, имеющего право вводить машины в домен, и его пароль и нажать кнопку ОК:
Пароль для учётной записи с правами подключения к домену
При успешном подключении к домену отобразится соответствующая информация:
Успешное подключение к домену
Для применения всех настроек следует перезагрузить рабочую станцию.

21.3.4. Проверка результатов присоединения

Проверка корректности присоединения:
  1. Для проверки возможности поиска доменных пользователей отобразить сведения о пользователе домена (ivanov — пользователь в домене):
    # getent passwd ivanov
    ivanov:*:1187401105:1187400513:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash
    
  2. Проверить возможность получения информации о домене:
    # net ads info
    LDAP server: 192.168.0.132
    LDAP server name: dc1.test.alt
    Workgroup: TEST
    Realm: TEST.ALT
    Bind Path: dc=TEST,dc=ALT
    LDAP port: 389
    Server time: Вт, 24 июн 2025 12:12:01 MSK
    KDC server: 192.168.0.132
    Server time offset: 2
    Last machine account password change: Пн, 20 июн 2025 12:07:09 MSK
    
  3. Проверить, действителен ли пароль учетной записи компьютера:
    # net ads testjoin
    Join is OK
    

Примечание

Список пользователей можно посмотреть на сервере командой:
# samba-tool user list

Глава 22. Вход пользователя в систему

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

Примечание

Использование в логине символов верхнего регистра (например, Irina.Soboleva вместо irina.soboleva) или лишних символов (не использующихся для стандартного имяобразования в Linux) может привести к некорректному поведению системы (в частности не выставляются переменные окружения XDG_RUNTIME_DIR и DBUS_SESSION_BUS_ADDRESS).
Для возможности использовать для входа привычные способы написания логина (с доменным суффиксом, точками, символами верхнего регистра) необходимо включить канонизацию имён пользователей Сделать это можно, выполнив команду (должен быть установлен пакет pam-config-control):
# control pam_canonicalize_user enabled
или, раскомментировав в файле /etc/pam.d/system-auth-common строку:
auth required pam_canonicalize_user.so
Модуль PAM pam_canonicalize_user.so использует введенное имя пользователя в качестве ключа для запроса базы данных паролей и заменяет имя пользователя на возвращенное значение.
Данную настройку можно применить с помощью механизма групповых политик Control (политика Управление канонизацией имен пользователей в PAM).

Примечание

Отключить отображение списка пользователей на экране входа можно в приложении Настройки GDM (должен быть установлен пакет gdm-settings):
Настройки GDM. Выключение списка пользователей

Примечание

Для отключения отображения списка пользователей можно также воспользоваться следующим решением:
  1. Создать файл 96-local-gdm-settings в каталоге /etc/dconf/db/gdm.d/ (если каталог отсутствует, необходимо его создать) со следующим содержимым:
    [org/gnome/login-screen]
    #Отключить список пользователей
    disable-user-list=true
    
  2. Создать файл /etc/dconf/profile/gdm со следующим содержимым:
    user-db:user
    system-db:gdm
    file-db:/usr/share/gdm/greeter-dconf-defaults
    
  3. Выполнить команду:
    # dconf update
    

Глава 23. Отображение глобальных групп на локальные

При вводе машины в домен в системе автоматически создаются следующие локальные роли:
  • роль обычных пользователей (users);
  • роль пользователей с расширенными правами (powerusers);
  • роль локальных администраторов (localadmins).
По умолчанию локальные роли users и localadmins сопоставляются с глобальными группами домена:
  • domain Users → users;
  • domain Admins → localadmins.
Это сопоставление позволяет пользователям домена автоматически получать членство в необходимых локальных группах и, как следствие, доступ к устройствам и подсистемам (звук, видео, USB-устройства, монтирование файловых систем и т. д.).
Просмотреть текущие сопоставления ролей можно с помощью команды:
# rolelst
domain users:users
domain admins:localadmins
localadmins:wheel,vboxadd,vboxusers
powerusers:remote,vboxadd,vboxusers
users:cdwriter,cdrom,audio,video,proc,radio,camera,floppy,xgrp,scanner,uucp,vboxusers,fuse,vboxadd
vboxadd:vboxsf
# id ivanov
uid=906201103(ivanov) gid=906200513(domain users) группы=906200513(domain users),906201107(sales),
906201114(office),100(users),80(cdwriter),22(cdrom),81(audio),475(video),19(proc),
83(radio),444(camera),71(floppy),498(xgrp),499(scanner),14(uucp),462(vboxusers),464(fuse),488(vboxadd),487(vboxsf)
Если требуется выдать права локального администратора пользователям, которые не являются администраторами домена (членами группы Domain Admins), нужно:
  1. На контроллере домена завести новую группу в AD (например, PC Admins):
    # samba-tool group add 'PC Admins'
    Added group PC Admins
    
  2. Добавить в группу пользователей (например, пользователя ivanov):
    # samba-tool group addmembers 'PC Admins' ivanov
    Added members to group PC Admins
    
  3. На машине, введённой в домен, добавить роль для данной группы:
    # roleadd 'PC Admins' localadmins
    
    Проверка:
    # rolelst
    domain users:users
    domain admins:localadmins
    pc admins:localadmins
    localadmins:wheel,vboxadd,vboxusers
    powerusers:remote,vboxadd,vboxusers
    users:cdwriter,cdrom,audio,video,proc,radio,camera,floppy,xgrp,scanner,uucp,vboxusers,fuse,vboxadd
    vboxadd:vboxsf
    
После этого пользователи, входящие в группу PC Admins, будут получать права локального администратора.

Глава 24. Отладочная информация

24.1. Настройка уровня журналирования Samba

Установить уровень журналирования для Samba можно, используя параметр log level в разделе [global] файла /etc/samba/smb.conf, например:
log level = 3
После настройки следует перезапустить службу samba:
# systemctl restart samba
Дополнительные сведения см. в разделе Уровни журналирования.

24.2. Ошибка при подключении к IP-адресу 127.0.0.1

По умолчанию утилита net пытается подключиться к IP-адресу 127.0.0.1. Если Samba не прослушивает loopback-интерфейс, соединение завершится ошибкой:
# net rpc rights list -U administrator
Could not connect to server 127.0.0.1
Connection failed: NT_STATUS_CONNECTION_REFUSED
Чтобы решить эту проблему, необходимо настроить Samba на прослушивание петлевого интерфейса, добавив в smb.conf строки:
interfaces = lo enp1s0
bind interfaces only = yes
Дополнительные сведения см. в разделе Настройка Samba для привязки к определённым интерфейсам.

Примечание

Чтобы временно обойти проблему, можно указать IP-адрес или имя хоста контроллера домена, передав параметр -I <IP-адрес> или -S <Имя хоста> в команду net:
# net rpc rights list -U administrator -I 192.168.0.132
Password for [TEST\administrator]:
     SeMachineAccountPrivilege  Add machines to domain
      SeTakeOwnershipPrivilege  Take ownership of files or other objects
      …

24.3. Команда getent не показывает доменных пользователей и группы

Используя команды getent passwd и getent group, нельзя увидеть доменных пользователей и группы. Этот функционал отключен по умолчанию, чтобы сократить нагрузку на серверы.
Для проверки наличия доменного пользователя необходимо указать точное имя пользователя:
# getent passwd <имя_пользователя>
Например:
# getent passwd ivanov
Если команда getent passwd <имя_пользователя> ничего не возвращает, попробуйте выполнить команду:
# getent passwd <рабочая_группа>\<имя_пользователя>
Например:
# getent passwd "TEST\ivanov"
Если эта команда работает, а первая — нет, в файл smb.conf необходимо добавить строку:
winbind use default domain = yes

Примечание

Список пользователей можно посмотреть на сервере командой:
# samba-tool user list

Глава 25. Удаление клиента из домена

Для вывода системы из домена используется команда realm leave.
Например:
# realm leave test.alt
Эта команда удалит конфигурацию домена из SSSD и локальной системы.
По умолчанию удаление выполняется от имени администратора (для Альт Домен — administrator). Если для присоединения к домену использовалась учётная запись другого пользователя, может потребоваться выполнить удаление от имени этого пользователя.
Чтобы указать пользователя, следует использовать параметр -U:
# realm leave test.alt -U <пользователь>
Сначала команда пытается подключиться без использования учетных данных, но при необходимости запрашивает пароль.
Следует обратить внимание, что когда клиент удаляется из домена, учётная запись компьютера не удаляется из каталога; удаляется только конфигурация локального клиента.
Если необходимо удалить учётную запись компьютера, следует запустить команду с параметром --remove:
# realm leave --remove test.alt
Для получения дополнительной информации см. справочную страницу man realm (8).

Примечание

После вывода из домена схема аутентификации пользователей в системе должна переключиться на локальную базу:
# control system-auth
local

Примечание

После вывода машины из домена можно восстановить отображение списка пользователей на экране входа (если ранее он был скрыт).
Включить отображение списка пользователей на экране входа можно в приложении Настройки GDM (должен быть установлен пакет gdm-settings):
Настройки GDM. Включение списка пользователей

Примечание

Если для отключения отображения списка пользователей создавались файлы 96-local-gdm-settings и gdm, то необходимо выполнить следующие действия:
  1. Удалить файл 96-local-gdm-settings в каталоге /etc/dconf/db/gdm.d/:
    # rm -f /etc/dconf/db/gdm.d/96-local-gdm-settings
    
  2. Удалить файл /etc/dconf/profile/gdm
    # rm -f /etc/dconf/profile/gdm
    
  3. Выполнить команду:
    # dconf update
    

Глава 26. Повторная регистрация клиента в домене

В этом разделе рассмотрена процедура повторной регистрации клиента в Альт Домен с тем же именем хоста.
Повторная регистрация может потребоваться, если клиентский компьютер был уничтожен и потерял связь с серверами домена, например, из-за аппаратного сбоя клиента.
Шаги перед повторным вводом:
  1. Убедиться, что машина удалена из домена. Чтобы запись в домене была автоматически удалена при выводе машины из домена, необходимо использовать команду:
    # realm leave --remove <домен>
  2. Очистить кеш:
    # sss_cache -E
  3. Убедиться в корректности имени машины.
  4. Восстановить конфигурационные файлы (/etc/samba/smb.conf, /etc/sssd/sssd.conf и /etc/krb5.conf) к состоянию по умолчанию.

Примечание

Привести файлы /etc/samba/smb.conf и /etc/krb5.conf к виду по умолчанию можно в модуле ЦУС Аутентификация.
В окне модуля Аутентификация следует установить отметку в поле Восстановить файлы конфигурации по умолчанию (smb.conf, krb5.conf, sssd.conf) и нажать кнопку Применить:
Восстановить файлы конфигурации по умолчанию
В открывшемся окне подтверждения нажать кнопку Да:
Окно подтверждения
Это автоматически сбросит все настройки домена.
После выполненных настроек можно повторно ввести машину в домен (см. Присоединение к домену в роли участника)

Глава 27. Настройка аутентификации доменных пользователей на контроллере домена

Примечание

Настройка аутентификации доменных пользователей на контроллере домена с использованием SSSD не поддерживается.

Важно

На текущий момент (samba 4.21.7-alt4, gpupdate 0.13.2-alt1) данный метод не позволяет применять пользовательские групповые политики на контроллере домена, машинные политики при этом применяются успешно.

Важно

Для каталога /var/lib/samba/sysvol соответствия между SID домена и локальными UID/GID вычисляются по внутреннему алгоритму Samba. Изменить этот процесс с помощью настроек невозможно.

Важно

Winbind не поддерживает аутентификацию по UPN (например, user@test.alt). Для входа и других операций следует использовать формат DOMAIN\user (например, TEST\ivanov).
Контроллер домена, помимо своих основных функций, также является обычной машиной в домене и имеет соответствующий машинный аккаунт. После настройки он может выполнять функции члена домена, включая:
  • аутентификацию доменных пользователей (в том числе по SSH);
  • применение групповых политик;
  • использование всех возможностей клиента Winbind.

Важно

На контроллере домена в качестве клиента аутентификации должен использоваться только Winbind.

27.1. Установка пакетов

На контроллере домена необходимо установить пакеты task-auth-ad-winbind и gpupdate:
# apt-get install task-auth-ad-winbind gpupdate

27.2. Настройка конфигурационных файлов

27.2.1. Настройка Kerberos (krb5.conf)

В файле /etc/krb5.conf должны быть заданы следующие параметры:
  • dns_lookup_realm = false
  • default_realm = TEST.ALT
Пример файла /etc/krb5.conf:
[logging]

[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = TEST.ALT

[realms]

[domain_realm]

27.2.2. Настройка Samba (smb.conf)

В файле /etc/samba/smb.conf должен быть задан параметр:
  • kerberos method = system keytab
Значения остальных параметров в файле должны соответствовать аналогичному файлу на обычных клиентах домена.
Пример файла /etc/samba/smb.conf:
[global]
    dns forwarder = 8.8.8.8
    netbios name = DC1
    kerberos method = system keytab
    dedicated keytab file = /etc/krb5.keytab
    realm = TEST.ALT
    server role = active directory domain controller
    workgroup = TEST
    idmap_ldb:use rfc2307 = yes

    template shell = /bin/bash
    template homedir = /home/TEST.ALT/%U

    wins support = no
    winbind use default domain = yes
    winbind enum users = no
    winbind enum groups = no
    winbind refresh tickets = yes
    winbind offline logon = yes

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

[netlogon]
    path = /var/lib/samba/sysvol/test.alt/scripts
    read only = No

Примечание

Приведённый пример конфигурации актуален при использовании Samba с DNS-бэкендом SAMBA_INTERNAL, ваша конфигурация может отличаться.
После внесения изменений в файл smb.conf необходимо перезапустить Samba:
# systemctl restart samba

27.2.3. Настройка NSS (nsswitch.conf)

В файле /etc/nsswitch.conf должны быть заданы следующие параметры:
  • passwd: files winbind systemd
  • shadow: tcb files winbind
  • group: files [SUCCESS=merge] winbind role systemd
Эти настройки позволяют системе искать пользователей и группы через Winbind.
Пример файла /etc/nsswitch.conf:
passwd:     files winbind systemd
shadow:     tcb files winbind
group:      files [SUCCESS=merge] winbind role systemd
gshadow:    files

hosts:      files myhostname dns

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

automount:  files
aliases:    files

27.2.4. Настройка аутентификации

Переключить PAM-стек на использование для аутентификации Winbind-модуля:
# control system-auth winbind

27.3. Генерация keytab-файла

Сгенерировать системный keytab-файл для машинного аккаунта контроллера домена:
# net ads keytab create

Примечание

Возможно появление сообщения об ошибке Kerberos:
kerberos_kinit_password TEST@TEST.ALT failed: Client not found in Kerberos database
Это ожидаемое поведение в данной конфигурации. Ошибка не указывает на неисправность, если keytab-файл создан и klist показывает тикеты.
Просмотреть результат:
# klist -ket

27.4. Управление службами

Отключить сервис nscd:
# systemctl disable --now nscd

Примечание

nscd кеширует NSS-запросы и может мешать корректной работе Winbind на контроллере домена.

27.5. Настройка ролей

Сопоставить доменные группы с локальными ролями:
  • обычные пользователи домена (Domain Users) соответствуют локальной роли users:
    # roleadd 'domain users' users
    
  • администраторы домена (Domain Admins) соответствуют локальной роли localadmins:
    # roleadd 'domain admins' localadmins
    

Важно

В русскоязычных версиях MS Windows Server встроенные группы Domain Users и Domain Admins имеют локализованные имена Пользователи домена и Администраторы домена.
Следует убедиться, что в команде roleadd используется имя группы в том виде, в котором оно отображается в домене (учитывая локализацию, если необходимо).

27.6. Групповые политики

Включить поддержку групповых политик:
# gpupdate-setup enable --local-policy ad-domain-controller
Эта команда настраивает применение машинных политик на контроллере домена.

27.7. Настройка SSH

Разрешить удалённый доступ по SSH только Администраторам домена:
# control sshd-allow-groups enabled
# control sshd-allow-groups-list remote
Группа remote включает пользователей, которым разрешён доступ по SSH.
При необходимости можно включить аутентификацию с использованием Kerberos-билетов:
# control sshd-gssapi-auth enabled
Аутентификация с использованием Kerberos-билетов позволяет пользователям входить по SSH без ввода пароля, если у них уже есть действующий Kerberos-билет (например, после входа в домен).

Примечание

Доменная учётная запись Administrator при использовании winbind получает локальный идентификатор (UID) = 0 (на контроллере домена это стандартное и неизменяемое поведение), что соответствует пользователю root в Linux. По умолчанию прямой вход по SSH под этой учётной записью запрещён из соображений безопасности.
Это поведение можно изменить, разрешив аутентификацию пользователю root:
# control sshd-permit-root-login enabled
Это снижает безопасность системы. Прямой доступ под root не рекомендуется в целях безопасности.
Для применения настроек необходимо перезапустить службу SSH:
# systemctl restart sshd

Примечание

Указанные параметры можно настроить с помощью механизма групповых политик control. Подробнее см. Групповые политики control.

27.8. Проверка настройки

Для проверки возможности поиска доменных пользователей можно отобразить сведения о доменном пользователе (ivanov — пользователь в домене):
# getent passwd ivanov
TEST\ivanov:*:3000020:100::/home/TEST.ALT/ivanov:/bin/bash
Успешный вывод означает, что:
  • Winbind работает;
  • NSS и PAM настроены корректно;
  • пользователь может войти в систему.

Глава 28. Настройка обновления паролей аккаунтов машин

После ввода в домен каждая машина получает специальный аккаунт вида MACHINE01$. Такой аккаунт, ассоциированный с машиной, а не с конкретным пользователем, позволяет машине выполнять в домене действия от своего имени. Например, запрашивать информацию о пользователях, получать машинные групповые политики и т. д.
Как и у обычного пользователя, у машинной учётной записи есть пароль, который генерируется автоматически в процессе ввода машины в домен. В отличие от обычных пользователей, у машинных аккаунтов нет ограничения на время жизни пароля, но машина имеет возможность поменять его самостоятельно. По умолчанию машины с MS Windows 2000 и старше меняют пароль каждые 30 дней. Дата последнего изменения хранится в атрибуте pwdlastset машинной учётной записи.

28.1. Локальная политика смены пароля

Сменой пароля учётной записи компьютера можно управлять с помощью групповых политик. Для этого нужно отредактировать параметр политики домена по умолчанию (Default domain policy) Член домена: максимальный срок действия пароля учётной записи компьютера, который располагается в подразделе Конфигурация компьютераПолитикиКонфигурация WindowsПараметры безопасностиЛокальные политикиПараметры безопасности (Computer ConfigurationPoliciesWindows SettingsSecurity SettingsLocal PoliciesSecurity Options).
Настройка максимального срока действия пароля учётной записи компьютера в RSAT

Примечание

На данный момент в ADMC (admc 0.20.0-alt2) нет возможности настроить данные параметры групповой политики. Необходимо использовать оснастку RSAT «Управление групповыми политиками» (см. Установка административных инструментов (машина Windows)).
Этот параметр безопасности определяет, как часто член домена будет пытаться изменить пароль учётной записи компьютера. Значение по умолчанию: 30 дней.
С помощью параметра Член домена: отключить изменение пароля учётных записей компьютера можно полностью отключить обновления пароля машинного аккаунта. Отключать обновление пароля не рекомендуется, так как это может привести к потере доверия.

Важно

Выше указанные параметры корректно работают на машинах с ОС MS Windows 2000 и старше.

Важно

На машинах с ОС «Альт» (sssd 2.9.6-alt3) данные политики игнорируются.

28.2. Включение обновления пароля

28.2.1. ОС Windows

На машинах под управлением Windows 2000 и новее автоматическое обновление включено по умолчанию. Периодичность обновления настраивается с помощью соответствующей групповой политики.

28.2.2. ОС «Альт»

На машинах под управлением ОС «Альт» за обновление пароля машинного аккаунта отвечают сервисы sssd и winbind.

28.2.2.1. Winbind

Winbind на текущий момент (samba-winbind 4.21.7-alt4) не умеет обновлять системный keytab-файл (/etc/krb5.keytab) после смены пароля учётной записи компьютера. Поэтому во избежание конфликтов с SSSD следует отключить этот функционал.
Для отключения периодического обновления пароля учётной записи компьютера необходимо в файл /etc/samba/smb.conf в секцию [global] добавить параметр machine password timeout = 0:
[global]
machine password timeout = 0

28.2.2.2. SSSD

SSSD использует утилиту adcli для обновления пароля учётной записи компьютера. Необходимо убедиться, что пакет adcli установлен в системе:
# apt-get install adcli
Периодичностью обновления пароля учётной записи компьютера можно управлять с помощью параметра ad_maximum_machine_account_password_age (секция [domain/<Домен>]) в /etc/sssd/sssd.conf. Значение по умолчанию: 30 дней.
Для корректного функционирования обновления пароля учётной записи компьютера, SSSD должен иметь доступ на запись в файл /etc/krb5.keytab. Для этого не достаточно привилегий пользователя _sssd, от которого обычно и запускается sssd. Необходимо запускать sssd с правами суперпользователя. Для этого следует в файле /etc/sssd/sssd.conf в секции [sssd] изменить значение параметра user на root:
[sssd]
user = root

[domain/<Домен>]
ad_update_samba_machine_account_password = true

Важно

При вводе компьютера в домен с помощью ЦУС следующие параметры прописываются в конфигурационные файлы по умолчанию:
  • /etc/samba/smb.conf:
    machine password timeout = 0
  • /etc/sssd/sssd.conf:
    ad_update_samba_machine_account_password = true

28.3. Отключение обновления пароля

28.3.1. ОС Windows

Для отключения периодического обновления пароля учётной записи компьютера на машинах под управлением ОС Windows 2000 и старше достаточно включить параметр групповой политики Default domain policy: Член домена: отключить изменение пароля учётных записей компьютера.

28.3.2. ОС «Альт»

Отключение периодического обновления пароля учётной записи компьютера на машинах под управлением ОС «Альт»:
  • в файле /etc/sssd/sssd.conf (секция [domain/<Домен>]) значение параметра ad_maximum_machine_account_password_age установить равным 0:
    [domain/<Домен>]
    ad_maximum_machine_account_password_age = 0
    
  • в файле /etc/samba/smb.conf (секция [global]) значение параметра machine password timeout установить равным 0:
    [global]
    machine password timeout = 0
    

28.4. Диагностика

28.4.1. Дата последней смены пароля

Дата последней смены пароля учётной записи компьютера хранится в базе данных домена. Запросить её можно одним из следующих способов:
  • на введённой в домен машине выполнить команду:
    # net ads info
    …
    Last machine account password change: Вт, 24 июн 2025 12:30:06 MSK
    
  • если машина уже потеряла доверие в домене, то выполнить эту же команду от доменного пользователя:
    # net ads info -U <user>
    
Дата последней смены пароля учётной записи компьютера будет показана в параметре Last machine account password change.

28.4.2. Проверка доверия между машиной и доменом

Для проверки того, имеет ли машина возможность аутентифицироваться в домене, можно выполнить следующие действия:
  • убедиться, что файл keytab (/etc/krb5.keytab) содержит корректную информацию:
    # klist -ke
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       1 host/host-01.test.alt@TEST.ALT (aes256-cts-hmac-sha1-96)
       1 host/HOST-01@TEST.ALT (aes256-cts-hmac-sha1-96)
       1 host/host-01.test.alt@TEST.ALT (aes128-cts-hmac-sha1-96)
       1 host/HOST-01@TEST.ALT (aes128-cts-hmac-sha1-96)
       1 host/host-01.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
       1 host/HOST-01@TEST.ALT (DEPRECATED:arcfour-hmac)
       1 restrictedkrbhost/host-01.test.alt@TEST.ALT (aes256-cts-hmac-sha1-96)
       1 restrictedkrbhost/HOST-01@TEST.ALT (aes256-cts-hmac-sha1-96)
       1 restrictedkrbhost/host-01.test.alt@TEST.ALT (aes128-cts-hmac-sha1-96)
       1 restrictedkrbhost/HOST-01@TEST.ALT (aes128-cts-hmac-sha1-96)
       1 restrictedkrbhost/host-01.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
       1 restrictedkrbhost/HOST-01@TEST.ALT (DEPRECATED:arcfour-hmac)
       1 HOST-01$@TEST.ALT (aes256-cts-hmac-sha1-96)
       1 HOST-01$@TEST.ALT (aes128-cts-hmac-sha1-96)
       1 HOST-01$@TEST.ALT (DEPRECATED:arcfour-hmac)
    
  • попытаться получить билет Kerberos для учётной записи компьютера (в примере HOST-01$), используя файл keytab (/etc/krb5.keytab):
    # kinit -k HOST-01$\@TEST.ALT
    
  • убедиться, что билет успешно получен и удалить его:
    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: HOST-01$@TEST.ALT
    
    Valid starting       Expires              Service principal
    24.06.2025 15:15:01  25.06.2025 01:15:01  krbtgt/TEST.ALT@TEST.ALT
    	renew until 01.07.2025 15:15:01
    
    # kdestroy -p HOST-01\$@TEST.ALT
    

Важно

Следует убедиться, что имя машины в keytab-файле (/etc/krb5.keytab) соответствует реальному имени машины (см. вывод команды hostnamectl).

28.5. Восстановление работоспособности

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

Часть VI. Инструменты управления объектами домена и групповыми политиками

Содержание

29. Групповые политики в Альт Домен
30. Установка административных шаблонов и административных инструментов
30.1. Установка административных шаблонов
30.2. Установка административных инструментов
30.2.1. ADMC
30.2.2. GPUI
30.3. Установка административных инструментов (машина Windows)
30.3.1. Windows Server
30.3.2. Windows 10 (1809 и более поздних версиях)
30.3.3. Windows Vista и 7
31. Включение механизма применения конфигурации на клиентских машинах
32. Модуль клиентской машины для применения конфигурации
32.1. Утилиты модуля gpupdate
32.2. Локальная политика
32.3. Ключи реестра
32.4. Модули клиентской стороны (Applier)
32.5. Периодичность запуска групповых политик
32.6. Утилита gpresult
33. Модуль удаленного управления базой данных конфигурации (ADMC)
33.1. Запуск ADMC
33.2. Смена пользователя
33.3. Интерфейс ADMC
33.4. Свойства объектов
33.5. Выбор контейнера
33.6. Управление пользователями
33.6.1. Создание учётной записи пользователя
33.6.2. Изменение учётной записи пользователя
33.7. Управление контактами
33.7.1. Создание контакта
33.7.2. Изменение свойств контакта
33.8. Управление группами
33.8.1. Создание группы
33.8.2. Изменение группы
33.9. Управление компьютерами
33.9.1. Создание учётной записи компьютера
33.9.2. Изменение учётной записи компьютера
33.9.3. Использование LAPS для просмотра пароля администратора
33.10. Управление подразделениями
33.10.1. Создание подразделения
33.10.2. Изменение подразделения
33.11. Делегирование административных полномочий
33.11.1. Управление разрешениями
33.11.2. Просмотр дескриптора безопасности в формате SDDL
33.11.3. Настройка разрешений для перемещения объектов между OU
33.11.4. Делегирование полномочий на управление учётными записями пользователей
33.11.5. Делегирование полномочий на присоединение компьютеров к домену
33.12. Управление объектами парольных настроек
33.12.1. Создание объекта парольных настроек
33.12.2. Просмотр и изменение объекта парольных настроек
33.12.3. Удаление объекта парольных настроек
33.13. Управление общими папками
33.14. Управление объектами групповых политик
33.14.1. Создание объекта групповой политики
33.14.2. Изменение объекта групповой политики
33.14.3. Блокирование наследования
33.14.4. Фильтрация безопасности групповых политик
33.15. Добавление/Удаление UPN суффиксов
33.16. Просмотр и передача ролей FSMO
33.17. Выбор объектов
33.18. Поиск объектов
33.18.1. Простой поиск
33.18.2. Обычный поиск
33.18.3. Продвинутый поиск
33.19. Использование сохранённых результатов поиска
34. Модуль редактирования настроек клиентской конфигурации (GPUI)
34.1. Команда gpui-main
34.2. Запуск GPUI для редактирования доменных политик
34.3. Выбор набора шаблонов групповых политик
34.4. Интерфейс
34.4.1. Редактирование параметров в разделе Административные шаблоны
34.4.2. Фильтрация административных шаблонов
34.4.3. Работа с предпочтениями групповых политик
34.4.4. Работа со скриптами
34.4.5. Смена языка
34.5. Редактирование групповых политик
34.5.1. Включение или выключение различных служб (сервисов systemd)
34.5.2. Управление control framework
34.5.3. Управление настройками службы Polkit
34.5.4. Политика доступа к съемным носителям
34.5.5. Управление gsettings
34.5.6. Управление настройками среды рабочего стола KDE
34.5.7. Управление пакетами
34.5.8. Экспериментальные групповые политики
34.5.9. Механизмы GPUpdate
34.5.10. Установка пароля для локального пользователя root (LAPS)
34.5.11. Управление политиками браузера Chromium
34.5.12. Управление политиками браузера Firefox
34.5.13. Управление политиками «Яндекс.Браузера»
34.5.14. Управление политиками почтового клиента Thunderbird
34.5.15. Политика замыкания
34.6. Редактирование предпочтений
34.6.1. Управление ярлыками
34.6.2. Управление каталогами
34.6.3. Управление INI-файлами
34.6.4. Управление переменными среды
34.6.5. Управление файлами
34.6.6. Управление общими каталогами
34.6.7. Подключение сетевых дисков
34.6.8. Настройка реестра
34.6.9. Указание прокси-сервера
34.6.10. Настройка периодичности запроса конфигураций
34.7. Управление logon-скриптами
34.7.1. Сценарии для входа/выхода пользователя
34.7.2. Сценарии для автозагрузки или завершения работы компьютера
34.7.3. Включение экспериментальных групповых политик
34.7.4. Файлы настроек политики
34.7.5. Диагностика проблем
35. Расширение возможностей ГП
35.1. Схема административных шаблонов (ADMX)
35.1.1. Структура ADMX-файла
35.1.2. Структура ADML-файла
35.1.3. Связывание информации из ADMX и ADML-файлов
35.1.4. Рекомендации для создания ADMX-файлов
35.2. Разработка новой политики
35.2.1. Пример для механизма Systemd
35.2.2. Пример для механизма Control
35.2.3. Пример для механизма Gsetting
35.2.4. Пример для механизма Polkit
36. Решение проблем
36.1. Область действия и статус групповой политики
36.2. Наследование групповых политик
36.3. Порядок применения групповых политик
36.4. Замыкание групповой политики
36.5. Диагностика применения GPO на стороне клиента
36.5.1. Коды ошибок
36.6. Диагностика проблем при работе с политикой скриптов
36.7. Диагностика проблем при подключении сетевых ресурсов

Глава 29. Групповые политики в Альт Домен

Групповые политики (ГП) — это механизм централизованного управления настройками компьютеров и пользователей в корпоративной среде. Они позволяют задавать правила конфигурации, которые применяются к рабочим станциям и серверам, переопределяя локальные настройки по умолчанию.
Групповые политики как механизм отличаются от стандартных инструментов управления конфигурациями (например, Puppet, Ansible) тремя ключевыми особенностями:
  • интеграцией с инфраструктурой каталогов — в частности, с LDAP-объектами Альт Домен;
  • соответствием декларативной части настроек конфигураций особенностям конкретного дистрибутива;
  • наличием не только управления конфигурациями компьютеров, но и конфигурациями пользователей.
В дистрибутивах Альт для применения групповых политик используется инструмент gpupdate (см. Модуль клиентской машины для применения конфигурации). Инструмент предназначен для работы на машинах, введённых в Альт Домен.
Интеграция с LDAP-объектами домена позволяет привязывать политики к определённым группам объектов в дереве каталогов. Политики могут применяться на следующих уровнях:
  • подразделения (OU, организационные единицы) — пользователи и компьютеры, хранящиеся в соответствующей части дерева объектов;
  • сайты — логические группы компьютеров, объединённые по сетевому признаку (например, подсеть);
  • отдельные объекты — конкретные пользователи и компьютеры.
Кроме того, в самих объектах групповых политик могут быть заданы дополнительные условия, фильтры и ограничения, на основании которых определяется способ применения групповой политики.
Политики подразделяются на политики для компьютеров (Machine) и политики для пользователей (User). Некоторые задачи управления конфигурациями можно решить как через пользовательские, так и через машинные параметры.

Примечание

Групповая политика для компьютеров должна быть привязана к OU с компьютерами. Групповая политика для пользователей должна быть привязана к OU с пользователями. Объект, к которому должна применяться политика, должен находиться в соответствующем контейнере. Подробнее см. Область действия и статус групповой политики.
Политики для компьютеров применяются на узле в момент загрузки, а также в момент явного или регулярного запроса планировщиком (раз в час). Пользовательские политики применяются в момент входа в систему.
Система управления групповыми политиками в Альт Домен представлена широким набором конфигурационных настроек. В общем виде эти настройки делятся на две категории — политики (рolicies) и предпочтения (Preferences).
Основное отличие политик от предпочтений состоит в том, что политики нельзя отменить, поскольку они «накладываются» через реестр поверх настроек приложений так, что приложения не могут их изменить. Исключение составляют настройки, перегружаемые через такие механизмы, как GConf или dconf, а также определённые правила для PolicyKit.
Основным отличием предпочтений от политик состоит в том, что эти настройки пользователь или приложение может изменить или отменить после их применения. Регулярная перезапись таких настроек частично сглаживает эту особенность, доставляя пользователю неудобства, но не лишая его возможности изменить заданное предпочтение.
Ключевое ограничение, не позволяющее использовать политики вместо предпочтений, состоит в том, что значения конфигурационных настроек при их задании перезаписываются, а исходное состояние теряется. В рамках дистрибутивных решений «Альт» разработан механизм локальной политики (аналогичный Local Policy под Windows), позволяющий частично преодолеть эту проблему. На текущий момент этот механизм представлен профилями, которые определяют шаблон локальных настроек при включении механизма групповых политик (см. Локальная политика).
Для упрощения изложения термины «политика» и «предпочтение» далее объединяются под общим названием «Групповая политика (ГП)» с учётом особенностей их применения.
В таблице Список групповых политик представлен список ГП, которые можно настроить и применять в Альт Домен.

Таблица 29.1. Список групповых политик

Политика
Статус
Комментарий
Стабильная
ADMX-файлы ALT (пакет admx-basealt)
Стабильная
ADMX-файлы ALT (пакет admx-basealt)
Стабильная
ADMX-файлы Mozilla Firefox (пакет admx-firefox)
Стабильная
ADMX-файлы Mozilla Thunderbird (пакет admx-thunderbird)
Стабильная
ADMX-файлы Google Chrome (пакет admx-chromium)
Стабильная
ADMX-файлы Yandex (пакет admx-yandex-browser)
Стабильная
Стабильная
ADMX-файлы ALT (пакет admx-basealt)
Стабильная
ADMX-файлы ALT (пакет admx-basealt)
Экспериментальная
ADMX-файлы ALT (пакет admx-basealt)
Стабильная
ADMX-файлы ALT (пакет admx-basealt)
Стабильная
Экспериментальная
Стабильная
Стабильная
Экспериментальная
Экспериментальная
Экспериментальная
Экспериментальная
Экспериментальная
Экспериментальная

Примечание

Экспериментальными считаются политики, чья реализация находится в стадии разработки. Их поведение может измениться в будущих версиях, что может привести к потере ранее установленных настроек. Такие политики не считаются стабильными и не прошли техническое утверждение.
Система управления групповыми политиками включает следующие компоненты:
  • сервер базы данных с информацией о клиентах и их конфигурации;
  • клиентское ПО для репликации и применения конфигурации;
  • графическая панель управления включением механизма применения конфигурации;
  • графический редактор базы данных конфигурации (ADMC);
  • графический редактор настроек клиентской конфигурации (GPUI).
Логическая структура

Глава 30. Установка административных шаблонов и административных инструментов

30.1. Установка административных шаблонов

Для задания конфигурации необходимо на контроллере домена установить административные шаблоны (ADMX-файлы):
  1. Установить пакеты с ADMX-шаблонами и утилиту для загрузки Microsoft ADMX:
    # apt-get install \
     admx-basealt \
     admx-chromium \
     admx-firefox \
     admx-yandex-browser \
     admx-thunderbird \
     admx-msi-setup
    
    Доступны следующие пакеты политик:
    • admx-basealt — ADMX-файлы, специфичные для дистрибутивов «Альт»;
    • admx-yandex-browser — ADMX-файлы для управления настройками Яндекс.Браузера;
    • admx-firefox — ADMX-файлы для управления настройками браузера Mozilla Firefox;
    • admx-thunderbird — ADMX-файлы, специфичные для почтового клиента Mozilla Thunderbird;
    • admx-chromium — ADMX-файлы для управления настройками браузера Google Chrome.
  2. Запустить утилиту admx-msi-setup, которая загрузит и установит ADMX-файлы от Microsoft:
    # admx-msi-setup
    
  3. После установки шаблоны находятся в каталоге /usr/share/PolicyDefinitions. Чтобы они были доступны всем клиентам домена, скопировать локальные ADMX-файлы в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/), выполнив команду:
    # samba-tool gpo admxload -U Administrator
    

Примечание

По умолчанию утилита admx-msi-setup устанавливает последнюю версию ADMX от Microsoft (сейчас это «Microsoft Group Policy — Windows 10 October 2020 Update (20H2)»). С помощью параметров можно указать другой источник:
# admx-msi-setup -h
admx-msi-setup - download msi files and extract them in <destination-directory>
default value is /usr/share/PolicyDefinitions/.
Usage: admx-msi-setup [-d  <destination-directory>] [-s  <screen>]

Removing admx-msi-setup temporary files...

30.2. Установка административных инструментов

Административные инструменты обычно устанавливаются на рабочей станции, введённой в домен, но могут быть установлены и на контроллере домена, если на нем установлена графическая среда.

30.2.1. ADMC

Установить пакет admc:
# apt-get install admc
Интерфейс модуля удаленного управления базой данных конфигурации

30.2.2. GPUI

Установить пакет gpui:
# apt-get install gpui

Примечание

В настоящее время GPUI не умеет читать файлы ADMX с контроллера домена. Для корректной работы необходимо также установить пакеты admx и файлы ADMX от Microsoft:
# apt-get install admx-basealt admx-chromium admx-firefox admx-yandex-browser admx-thunderbird admx-msi-setup
# admx-msi-setup
Окно модуля редактирования настроек клиентской конфигурации (GPUI)

30.3. Установка административных инструментов (машина Windows)

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

30.3.1. Windows Server

В ОС Windows Server средства удаленного администрирования сервера Microsoft (RSAT) включены по умолчанию.
Установка:
  1. Запустить Диспетчер серверов.
  2. На Windows Server 2012, 2012 R2, и 2016:
    • выбрать УправлениеДобавить роли и компоненты:
      Диспетчер серверов
    • в открывшемся окне Мастер добавления ролей и компонентов выбрать пункт Установка ролей или компонентов:
      Мастер добавления ролей и компонентов
    • выбрать хост, на котором будут установлены компоненты:
      Хост, на котором будут установлены компоненты
    • на шаге Выбор компонентов для установки нажать кнопку Далее.
  3. На Windows Server 2008 и 2008 R2 в дереве навигации выбрать Компоненты и нажать Добавить компоненты.
  4. Выбрать компоненты для установки (см. Рекомендуемые компоненты для администрирования Samba AD):
    Выбор компонентов для установки

Таблица 30.1. Рекомендуемые компоненты для администрирования Samba AD

Компонент
Описание
Group Policy Management
Предоставляет оснастки для групповой политики: средство управления (GPMC), редактор управления (gpedit) и начальный редактор GPO
AD DS Snap-Ins and Command-Line Tools
Предоставляет оснастку «Пользователи и компьютеры Active Directory» (ADUC) и «Сайты и службы Active Directory» (ADSS)
Server for NIS
Добавляет вкладку Атрибуты UNIX в свойства объектов ADUC. Позволяет настраивать атрибуты RFC2307. Эта функция не поддерживается в Windows Server 2016
Active Directory Module for Windows PowerShell
Включает командлеты Active Directory (AD) PowerShell
DNS Server tools
Оснастка MMC DNS для удаленного управления DNS

30.3.2. Windows 10 (1809 и более поздних версиях)

В Windows 10 1809 и более поздних версиях RSAT устанавливается в качестве дополнительной функции. Для установки компьютер должен иметь доступ в Интернет.
Установка:
  1. Перейти в раздел SettingsAppsOptional FeaturesView features (Параметры WindowsПриложенияДополнительные возможностиДобавить компонент):
    Добавить компонент Windows
  2. Выбрать нужные компоненты RSAT (см. Рекомендуемые компоненты для администрирования Samba AD) и нажать кнопку Next:
    Включение компонентов Windows
  3. Нажать кнопку Install.

Таблица 30.2. Рекомендуемые компоненты для администрирования Samba AD

Компонент
Описание
RSAT: Group Policy Management Tools
Включают консоль управления групповыми политиками (gpmc.msc), редактор управления групповыми политиками (gpme.msc) и редактор GPO инициализирующей программы групповой политики (gpedit.msc)
RSAT: Active Directory Domain Services and Lightweight Directory Services Tools
Предоставляет оснастку «Пользователи и компьютеры Active Directory» (ADUC) и «Сайты и службы Active Directory» (ADSS)
RSAT: DNS Server Tools
Включает оснастку «Диспетчер DNS» для удаленного управления DNS и программу командной строки dnscmd.exe
RSAT: Remote Desktop Services Tool
Добавляет вкладку Профиль служб удаленных рабочих столов в свойства объекта пользователя ADUC и устанавливает оснастку MMC «Удаленные рабочие столы» для администрирования RDP-сервера (tsmmc.msc).

30.3.3. Windows Vista и 7

До версии Windows 10 1809 пакет удаленного администрирования серверов RSAT устанавливается в виде MSU обновления, которое нужно скачать с серверов Microsoft.
Установка:
  1. Перейти в Панель управленияПрограммыВключение или отключение компонентов Windows:
    Панель управления Windows 7
  2. Включение компонентов Windows
  3. Нажать кнопку ОК.

Таблица 30.3. Рекомендуемые компоненты для администрирования Samba AD

Компонент
Описание
Group Policy Management Tools (Средства управления групповыми политиками)
Включает консоль управления групповыми политиками (gpmc.msc), редактор управления групповыми политиками (gpme.msc) и редактор GPO инициализирующей программы групповой политики (gpedit.msc)
AD DS Tools (Оснастки и программы командной строки доменных служб Active Directory)
Предоставляет оснастку «Пользователи и компьютеры Active Directory» (ADUC) и «Сайты и службы Active Directory» (ADSS)
Server for NIS Tools (Средства сервера для NIS)
Добавляет вкладку Атрибуты UNIX (UNIX Attributes) в свойства объектов ADUC. Позволяет настраивать атрибуты RFC2307. Включает программу командной строки ypclear.exe
Active Directory Module for Windows PowerShell (Модуль Active Directory для Windows PowerShell)
Обеспечивает централизованную среду для управления службами каталогов
DNS Server tools (Средства серверов DNS)
Включает оснастку «Диспетчер DNS» для удаленного управления DNS и программу командной строки dnscmd.exe
Remote Desktop Services Tool (Средства служб удалённых рабочих столов)
Добавляет вкладку Профиль служб удаленных рабочих столов в свойства объекта пользователя ADUC и устанавливает оснастку MMC «Удаленные рабочие столы» для администрирования RDP-сервера (tsmmc.msc).

Глава 31. Включение механизма применения конфигурации на клиентских машинах

Модуль панели управления операционной системы для включения механизма применения конфигурации на клиентских машинах предназначен для управления включением работы групповых политик и выбором политики по умолчанию.
Данный модуль представляет собой следующие модули ЦУС: Аутентификация (пакет alterator-auth) и Групповые политики (пакет alterator-gpupdate).
Для возможности применения ГП на клиентских машинах должен быть установлен пакет gpupdate (подробнее см. Модуль клиентской машины для применения конфигурации), а для возможности включения ГП в ЦУС — пакет alterator-gpupdate:
# apt-get install gpupdate alterator-gpupdate
Включить ГП можно как при вводе машины в Альт Домен, так и на уже включенной в домен рабочей станции.
Для включения групповых политик при вводе машины в домен (см. Присоединение к домену в роли участника) следует в модуле ЦУС Аутентификация выбрать пункт Домен Active Directory, заполнить поля Домен, Рабочая группа и Имя компьютера и нажать кнопку Применить:
Ввод в домен в Центре управления системой
Затем в открывшемся окне ввести имя пользователя, имеющего право вводить машины в домен, и его пароль, отметить пункт Включить групповые политики и нажать кнопку ОК:
Включение групповых политик при вводе в домен
Включить поддержку управления групповыми политиками на машине уже введенной в домен можно в модуле ЦУС Групповые политики:
Включение групповых политик в модуле ЦУС «Групповые политики»
Модуль Групповые политики позволяет управлять включением/выключением поддержки групповых политик на машинах, введенных в домен, а также выбирать профиль политики по умолчанию — Сервер, Контроллер домена Active Directory или Рабочая станция.
Для возможности включения групповых политик на машинах под управлением ОС «Альт», на которых не установлена графическая оболочка, модуль Групповые политики доступен также в веб-интерфейсе ЦУС:
Веб-интерфейс модуля ЦУС «Групповые политики»

Глава 32. Модуль клиентской машины для применения конфигурации

Модуль клиентской машины для применения конфигурации (далее — gpupdate) отвечает за применение заданных администратором системы настроек конфигурации к клиентской машине и/или пользователю машины.
ПО состоит из компонента, который авторизуется в домене и выполняет скачивание файлов настроек на клиентскую машину. Далее происходит разбор файлов настроек и складывание полученных данных в хранилище, именуемое также «реестр». Это позволяет развязать методы доставки и применения настроек.
При успешной репликации настроек запускается часть системы, называемая «фронтенд». Она отвечает за запуск различных модулей (appliers), каждый из которых отвечает за свою логическую функцию. Например, модуль firefox отвечает за вычитывание настроек для браузера Mozilla Firefox и создание файла политик для него, а модуль ntp отвечает за чтение настроек, касающихся NTP-сервера, и создание подходящей конфигурации. Количество и функционал модулей может меняться по мере развития и актуализации продукта и компонентов системы, с которыми они работают.
Групповые политики обрабатываются в следующем порядке:
  • объект локальной групповой политики;
  • объекты групповой политики, связанные с доменом (в рамках возможностей и ограничений поддержки леса доменов в Samba, как набора клиентских компонентов);
  • объекты групповой политики, связанные с OU: сначала обрабатываются объекты групповой политики, связанные с OU, находящиеся на самом высоком уровне в иерархии службы каталогов, затем объекты групповой политики, связанные с дочерним подразделением, и т. д. Последними обрабатываются объекты групповой политики, связанные с OU, в которой находится пользователь или компьютер.
Процесс применения настроек:
  • настройки для машины реплицируются при запуске компьютера и далее обновляются раз в час;
  • настройки для пользователя реплицируются при входе пользователя в систему и далее обновляются раз в час.
Для работы механизмов применения пользовательских настроек задействовано множество компонентов ОС, таких как systemd, D-Bus, PAM.
Механизм применения групповых политик
Часть проекта, отвечающая за получение и применение групповых политик, внутри использует базу данных («реестр») для хранения настроек, полученных из различных источников.

32.1. Утилиты модуля gpupdate

Модуль gpupdate включает три утилиты:
  • gpoa — системная утилита, осуществляющая применение групповых политик для компьютера или пользователя (gpoa без параметра отрабатывает только для машины, для пользователя нужно указывать username);
  • gpupdate — утилита, осуществляющая запрос на применение групповых политик. При запуске с привилегиями администратора может непосредственно выполнить применение групповых политик, минуя необходимость повышения привилегий;
  • gpupdate-setup — управляет состоянием механизма групповых политик. Позволяет включать и отключать применение групповых политик, а также задавать шаблон политики по умолчанию (Рабочая станция, Сервер, Контроллер домена).
Синтаксис команды gpoa:
gpoa [-h] [--dc DC] [--nodomain] [--noupdate] [--noplugins] [--list-backends] [--force] [--loglevel LOGLEVEL] [пользователь]

Таблица 32.1. Опции команды gpoa

Ключ
Описание
-h, --help
Вывести справку о команде
--dc DC
Указать полное имя (FQDN) контроллера домена для реплицирования SYSVOL
--nodomain
Работать без домена (применить локальную политику)
--noupdate
Не обновлять хранилище, только применить закешированные настройки
--noplugins
Не запускать плагины
--list-backends
Показать доступные бэкэнды
--force
Принудительно загрузить политики с контроллера
--loglevel LOGLEVEL
Установить уровень журналирования
пользователь
Имя пользователя домена
Примеры работы с командой gpoa:
  • получить и применить настройки для текущей машины:
    # gpoa --loglevel 0
    
  • применить закешированные настройки для текущей машины:
    # gpoa --noupdate
    
  • получить и применить настройки с контроллера домена dc1.test.alt для пользователя ivanov:
    # gpoa --dc dc1.test.alt --loglevel 3 ivanov
    
  • применить локальную политику:
    # gpoa --nodomain --loglevel 0
    
Синтаксис команды gpupdate:
gpupdate [-h] [-u USER] [-t {ALL,USER,COMPUTER}] [-l LOGLEVEL] [-f] [-s]

Таблица 32.2. Опции команды gpupdate

Ключ
Описание
-h, --help
Вывести справку о команде
-u USER, --user USER
Указать пользователя для обновления
-t {ALL,USER,COMPUTER}, --target {ALL,USER,COMPUTER}
Указать политики, которые нужно обновить (пользователя или компьютера). Возможные значения: All (по умолчанию), Computer, User
-l LOGLEVEL, --loglevel LOGLEVEL
Установить уровень журналирования
-f, --force
Принудительно загрузить политики с контроллера
-s, --system
Запустить в системном режиме (требует прав root)
Только root может указать любое имя пользователя для обновления. Пользователь может выполнять gpupdate только для машины или самого себя.
Примеры работы с командой gpupdate:
  • получить и применить настройки для текущей машины:
    $ gpupdate --target Computer
    Apply group policies for computer.
    
  • получить и применить настройки для текущего пользователя:
    $ gpupdate --target User
    Apply group policies for ivanov.
    
  • получить и применить настройки для текущего пользователя и машины:
    $ gpupdate
    Apply group policies for computer.
    Apply group policies for ivanov.
    
  • попытаться получить настройки для пользователя ivanov (с правами пользователя kim):
    $ gpupdate -u ivanov --target User --loglevel 0
    2025-06-25 14:35:41.330|[D00010]| Групповые политики будут обновлены для указанной цели|{'target': 'USER'}
    2025-06-25 14:35:41.330|[W00002]| Текущий уровень привилегий не позволяет выполнить gpupdate для указанного пользователя. Будут обновлены настройки текущего пользователя.|{'username': 'kim'}
    2025-06-25 14:35:41.336|[D00013]| Запускается GPOA обращением к oddjobd через D-Bus|{}
    2025-06-25 14:35:41.336|[D00900]| Неизвестный отладочный код|{'bus_name': 'ru.basealt.oddjob_gpupdate'}
    2025-06-25 14:35:41.336|[D00006]| Запускается GPOA для пользователя обращением к oddjobd через D-Bus|{'username': 'kim'}
    2025-06-25 14:35:45.049|[D00012]| Получен код возврата из утилиты|{'retcode': dbus.Int32(0)}
    Apply group policies for kim.
    
  • попытаться получить настройки для пользователя ivanov (с правами суперпользователя):
    # gpupdate -u ivanov --target User --loglevel 0
    2025-06-25 14:38:50.882|[D00010]| Групповые политики будут обновлены для указанной цели|{'target': 'USER'}
    2025-06-25 14:38:50.887|[D00013]| Запускается GPOA обращением к oddjobd через D-Bus|{}
    2025-06-25 14:38:50.888|[D00900]| Неизвестный отладочный код|{'bus_name': 'ru.basealt.oddjob_gpupdate'}
    2025-06-25 14:38:50.888|[D00006]| Запускается GPOA для пользователя обращением к oddjobd через D-Bus|{'username': 'ivanov'}
    2025-06-25 14:38:51.735|[D00012]| Получен код возврата из утилиты|{'retcode': dbus.Int32(0)}
    Apply group policies for ivanov.
    

Примечание

Изменения политик меняют версию в объекте ГП (GPO), gpupdate сравнивает версию на контроллере и локально и загружает только измененные политики.
Синтаксис команды gpupdate-setup:
gpupdate-setup [-h] действие …

Таблица 32.3. Список возможных действий для команды gpupdate-setup

Ключ
Описание
list
Показать список доступных типов локальной политики
list-backends
Показать список доступных бэкэндов
status
Показать текущий статус групповой политики (действие по умолчанию)
enable
Включить механизм групповых политик
disable
Отключить механизм групповых политик
update
Обновить состояние. Проверяет, в каком состоянии находилась служба gpupdate. В случае если служба gpupdate запущена, gpupdate-setup также запустит весь перечень необходимых служб (например, gpupdate-run-scripts)
write
Операции с групповыми политиками (включить, отключить, указать профиль политики по умолчанию)
set-backend
Установить или изменить активную в данный момент серверную часть (бэкэнд)
default-policy
Показать политику по умолчанию
active-policy
Показать текущий профиль политики
active-backend
Показать текущий бэкэнд
Примеры работы с командой gpupdate-setup:
  • просмотр текущего состояния подсистемы групповых политик:
    # gpupdate-setup
    disabled
    
  • включить групповые политики (для включения ГП через ЦУС доступен соответствующий графический модуль управления, а также отметка во время введения машины в домен см. раздел Включение механизма применения конфигурации на клиентских машинах):
    # gpupdate-setup enable
    workstation
    Created symlink /etc/systemd/user/default.target.wants/gpupdate-user.service → /usr/lib/systemd/user/gpupdate-user.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/gpupdate-scripts-run.service → /lib/systemd/system/gpupdate-scripts-run.service.
    Created symlink /etc/systemd/user/default.target.wants/gpupdate-scripts-run-user.service → /usr/lib/systemd/user/gpupdate-scripts-run-user.service.
    Created symlink /etc/systemd/system/timers.target.wants/gpupdate.timer → /lib/systemd/system/gpupdate.timer.
    Created symlink /etc/systemd/user/timers.target.wants/gpupdate-user.timer → /usr/lib/systemd/user/gpupdate-user.timer.
    # control system-policy
    gpupdate
    
  • выключить групповые политики:
    # gpupdate-setup disable
    Removed /etc/systemd/system/multi-user.target.wants/gpupdate.service.
    Removed /etc/systemd/user/default.target.wants/gpupdate-user.service.
    Removed /etc/systemd/system/timers.target.wants/gpupdate.timer.
    Removed /etc/systemd/user/timers.target.wants/gpupdate-user.timer.
    Removed /etc/systemd/system/multi-user.target.wants/gpupdate-scripts-run.service.
    Removed /etc/systemd/user/default.target.wants/gpupdate-scripts-run-user.service.
    
  • вывести список доступных бэкендов:
    # gpupdate-setup list-backends
    local
    samba
    
  • включить групповые политики и установить профиль политики по умолчанию server:
    # gpupdate-setup write enable server
    
Gpupdate устанавливается с набором преднастроек. По умолчанию нет необходимости конфигурировать gpupdate. Однако в файле /etc/gpupdate/gpupdate.ini можно указать в явном виде следующие опции:
  • раздел [gpoa]:
    • backend — способ получения настроек;
    • local-policy — профиль политики по умолчанию, который будет применен сразу после загрузки ОС (ad-domain-controller, workstation, server, default);
  • раздел [samba]:
    • dc — контроллер домена, с которого нужно обновлять групповые политики.
Пример файла /etc/gpupdate/gpupdate.ini на контроллере домена:
[gpoa]
backend = samba
local-policy = ad-domain-controller
Пример файла /etc/gpupdate/gpupdate.ini на рабочей станции:
[gpoa]
backend = samba
local-policy = workstation
В следующем примере указан пустой профиль локальной политики. Указать пустой профиль бывает необходимо для тестирования групповых политик, чтобы они не наслаивались на локальные политики:
[gpoa]
backend = samba
local-policy = /usr/share/local-policy/default

[samba]
dc = dc1.test.alt

32.2. Локальная политика

Настройки локальной политики находятся в каталоге /usr/share/local-policy/. Данные настройки по умолчанию поставляются пакетом local-policy. Администраторы инфраструктур имеют возможность поставлять собственный пакет с локальной политикой и разворачивать её единообразно на всех клиентах. Формат шаблонов политик по умолчанию представляет собой архивный формат политик Samba с дополнительными модификациями. Локальную политику рекомендуется править только опытным администраторам. Состав локальной политики может меняться или адаптироваться системным администратором.

Таблица 32.4. Состав локальной политики

Параметры
Описание
Комментарий
sshd-gssapi-auth, ssh-gssapi-auth
Включает поддержку аутентификации с использованием GSSAPI на сервере OpenSSH (механизм Control)
Отвечает за возможность аутентификации в домене при доступе через SSH
sshd-allow-groups, sshd-allow-groups-list
Ограничение аутентификации на сервере OpenSSH по группам wheel и remote (механизм Control)
Необходимо для ограничения доступа через SSH для всех пользователей домена (только при наличии соответствующей привилегии)
system-policy
Применяет групповые политики при логине (механизм Control)
oddjobd.service
Включение oddjobd.service (механизм Systemd)
Необходимо для обеспечения возможности запуска gpupdate для пользователя с правами администратора
gpupdate.service
Включение gpupdate.service (механизм Systemd)
Необходимо для регулярного обновления настроек машины
sshd.service
Включение sshd.service (механизм Systemd)
Необходимо для обеспечения возможности удалённого администрирования
OpenSSH
Открытие порта 22
Необходимо для обеспечения возможности подключения по SSH на машинах при старте Firewall applier
Пример локальной политики для рабочей станции (файл /usr/share/local-policy/workstation/Machine/Registry.pol.xml):
<?xml version="1.0" encoding="utf-8"?>
<PolFile num_entries="9" signature="PReg" version="1">
    <Entry type="1" type_name="REG_SZ">
        <Key>Software\BaseALT\Policies\Control</Key>
        <ValueName>sshd-gssapi-auth</ValueName>
        <Value>enabled</Value>
    </Entry>
    <Entry type="1" type_name="REG_SZ">
        <Key>Software\BaseALT\Policies\Control</Key>
        <ValueName>ssh-gssapi-auth</ValueName>
        <Value>enabled</Value>
    </Entry>
    <Entry type="1" type_name="REG_SZ">
        <Key>Software\BaseALT\Policies\Control</Key>
        <ValueName>sshd-allow-groups</ValueName>
        <Value>enabled</Value>
    </Entry>
    <Entry type="1" type_name="REG_SZ">
        <Key>Software\BaseALT\Policies\Control</Key>
        <ValueName>sshd-allow-groups-list</ValueName>
        <Value>remote</Value>
    </Entry>
    <Entry type="1" type_name="REG_SZ">
        <Key>Software\BaseALT\Policies\Control</Key>
        <ValueName>system-policy</ValueName>
        <Value>gpupdate</Value>
    </Entry>
    <Entry type="4" type_name="REG_DWORD">
        <Key>Software\BaseALT\Policies\SystemdUnits</Key>
        <ValueName>oddjobd.service</ValueName>
        <Value>1</Value>
    </Entry>
    <Entry type="4" type_name="REG_DWORD">
        <Key>Software\BaseALT\Policies\SystemdUnits</Key>
        <ValueName>sshd.service</ValueName>
        <Value>1</Value>
    </Entry>
    <Entry type="4" type_name="REG_DWORD">
        <Key>Software\BaseALT\Policies\SystemdUnits</Key>
        <ValueName>gpupdate.service</ValueName>
        <Value>1</Value>
    </Entry>
    <Entry type="1" type_name="REG_SZ">
        <Key>SOFTWARE\Policies\Microsoft\WindowsFirewall\FirewallRules</Key>
        <ValueName>OpenSSH</ValueName>
        <Value>v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=22|Name=Open SSH port|Desc=Open SSH port|</Value>
    </Entry>
</PolFile>

32.3. Ключи реестра

Ключи реестра, полученные из объектов групповой политики (GPO), хранятся в Dconf.
Машинные политики хранятся в файле /etc/dconf/db/policy.d/policy.ini, политики пользователя — в файле /etc/dconf/db/policy<UID>.d/policy<UID>.ini (где UID — идентификатор пользователя в системе).
Отследить, какие политики «прилетели» на машину клиента, можно, выполнив команду:
dconf dump /
При выполнении этой команды с правами доменного пользователя будут выведены машинные политики и политики данного пользователя, при выполнении с правами пользователя root будут выведены только машинные политики.
Пример результата выполнения команды dconf dump / с правами доменного пользователя:
$ dconf dump /
[SOFTWARE/Policies/Microsoft/WindowsFirewall/FirewallRules]
OpenSSH='v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=22|Name=Open SSH port|Desc=Open SSH port|'

[Software/BaseALT/Policies/Control]
ssh-gssapi-auth='enabled'
sshd-allow-groups='enabled'
sshd-allow-groups-list='remote'
sshd-gssapi-auth='enabled'
system-policy='gpupdate'

[Software/BaseALT/Policies/ReadQueue/Machine]
0="('Local Policy', '/var/cache/gpupdate/local-policy', None)"
1="('Firefox', '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{0CCFA74C-57F5-42B5-98E2-007D4A59C4C4}', 262148)"

[Software/BaseALT/Policies/ReadQueue/User]
0="('nm', '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{6F65CD4D-9209-4A81-9801-17A35CEE5CFD}', 131074)"

[Software/BaseALT/Policies/SystemdUnits]
gpupdate.service=1
oddjobd.service=1
sshd.service=1

[Software/Policies/Mozilla/Firefox]
DisableMasterPasswordCreation=1
PasswordManagerEnabled=1
ShowHomeButton=1

[Software/Policies/Mozilla/Firefox/Authentication]
SPNEGO="['.test.alt']"

[Software/Policies/Mozilla/Firefox/Homepage]
Locked=1
URL='https://basealt.ru'

[org/gnome/evolution-data-server]
migrated=true
network-monitor-gio-name=''

[org/mate/caja/window-state]
geometry='800x550+310+75'
maximized=false
start-with-sidebar=true
start-with-status-bar=true
start-with-toolbar=true

[org/mate/desktop/accessibility/keyboard]
bouncekeys-beep-reject=true
bouncekeys-delay=300
bouncekeys-enable=false
enable=false
feature-state-change-beep=false
mousekeys-accel-time=1200
mousekeys-enable=false
mousekeys-init-delay=160
mousekeys-max-speed=750
slowkeys-beep-accept=true
slowkeys-beep-press=true
slowkeys-beep-reject=false
slowkeys-delay=300
slowkeys-enable=false
stickykeys-enable=false
stickykeys-latch-to-lock=true
stickykeys-modifier-beep=true
stickykeys-two-key-off=true
timeout=120
timeout-enable=false
togglekeys-enable=false

[org/mate/desktop/session]
session-start=1718111448

[org/mate/mate-menu/plugins/applications]
last-active-tab=0

[org/mate/panel/general]
object-id-list=['menu-bar', 'show-desktop', 'workspace-switcher', 'window-list', 'notification-area', 'clock']
toplevel-id-list=['bottom']

[org/mate/panel/objects/clock]
applet-iid='ClockAppletFactory::ClockApplet'
locked=true
object-type='applet'
panel-right-stick=true
position=0
toplevel-id='bottom'

[org/mate/panel/objects/clock/prefs]
custom-format=''
format='24-hour'

[org/mate/panel/objects/menu-bar]
applet-iid='MateMenuAppletFactory::MateMenuApplet'
has-arrow=false
locked=true
object-type='applet'
position=0
toplevel-id='bottom'

[org/mate/panel/objects/notification-area]
applet-iid='NotificationAreaAppletFactory::NotificationArea'
locked=true
object-type='applet'
panel-right-stick=true
position=10
toplevel-id='bottom'

[org/mate/panel/objects/show-desktop]
applet-iid='WnckletFactory::ShowDesktopApplet'
locked=true
object-type='applet'
position=1
toplevel-id='bottom'

[org/mate/panel/objects/window-list]
applet-iid='WnckletFactory::WindowListApplet'
locked=true
object-type='applet'
position=20
toplevel-id='bottom'

[org/mate/panel/objects/workspace-switcher]
applet-iid='WnckletFactory::WorkspaceSwitcherApplet'
locked=true
object-type='applet'
position=10
toplevel-id='bottom'

[org/mate/panel/toplevels/bottom]
expand=true
orientation='bottom'
screen=0
size=28
y=836
y-bottom=0

[org/mate/terminal/profiles/default]
background-color='#2C2C2C2C2C2C'
background-darkness=0.94999999999999996
background-type='transparent'
bold-color='#000000000000'
foreground-color='#F5F5F5F5E4E4'
palette='#2E2E34343636:#CCCC00000000:#4E4E9A9A0606:#C4C4A0A00000:#34346565A4A4:#757550507B7B:#060698209A9A:#D3D3D7D7CFCF:#555557575353:#EFEF29292929:#8A8AE2E23434:#FCFCE9E94F4F:#72729F9FCFCF:#ADAD7F7FA8A8:#3434E2E2E2E2:#EEEEEEEEECEC'
use-theme-colors=false
visible-name='По умолчанию'

32.4. Модули клиентской стороны (Applier)

На клиентский компьютер должны распространяться параметры политики, указанные в соответствующем объекте ГП.
Каждая группа параметров групповой политики обслуживается определенным модулем (Applier) клиентской стороны.

Таблица 32.5. Список модулей

Расширение клиентской стороны
Модуль
Описание
Управление control framework
control
Управляет фреймворком control. Может быть вызван только машинной политикой. Принцип работы — вызвать утилиту control с нужным параметром
Управление настройками службы Polkit
polkit
Управляет генерацией настроек PolicyKit. Работа с правилами PolicyKit ведется методом генерации файлов .rules
Управление настройками службы Polkit
polkit_user
Управляет генерацией настроек PolicyKit в контексте пользователя
Включение или выключение различных служб
systemd
Управление включением или выключением сервисов systemd. Данный applier реализован только для машин. Его функция — включение или выключение systemd units (при их наличии). Applier способен обрабатывать параметры, полученные из PReg файлов (через ADMX) в виде ветвей реестра
Настройка браузера Chromium
chromium
Генерирует файл политики для Chromium (policies.json). Данные настройки устанавливаются из ADMX-файлов для Chromium. Может быть вызван только машинной политикой
Настройка браузера Firefox
firefox
Генерирует файл политики для Firefox (policies.json). Данные настройки устанавливаются из ADMX-файлов для Firefox. Может быть вызван только машинной политикой
Настройка Яндекс.Браузера
yandex
Генерирует файл политики для Яндекс.Браузера (policies.json). Данные настройки устанавливаются из ADMX-файлов для Яндекс.Браузера. Может быть вызван только машинной политикой
Настройка Thunderbird
thunderbird
Генерирует файл политики для Thunderbird (policies.json). Данные настройки устанавливаются из ADMX-файлов для почтового клиента Thunderbird. Может быть вызван только машинной политикой
Управление ярлыками запуска программ
shortcut
Управляет .desktop файлами (создание/удаление/замена)
Управление ярлыками запуска программ
shortcut_user
Управляет .desktop файлами в контексте пользователя. Способен реагировать на опцию выполнения операций в контексте администратора или пользователя
Управление подключением сетевых дисков
cifs
Управляет подключением сетевых дисков
Управление подключением сетевых дисков
cifs_user
Управляет подключением сетевых дисков в контексте пользователя
Управление каталогами файловой системы
folder
Управляет каталогами файловой системы (создание/удаление/пересоздание)
Управление каталогами файловой системы
folder_user
Управляет каталогами файловой системы в контексте пользователя
Управление файлами
files
Управляет файлами (создание/удаление/пересоздание)
Управление файлами
files_user
Управляет файлами в контексте пользователя
Управление INI-файлами
ini
Управляет INI-файлами (создание/удаление/пересоздание)
Управление INI-файлами
ini_user
Управляет INI-файлами в контексте пользователя
Управление переменными среды
envvar
Управляет переменными среды
Управление переменными среды
envvar_user
Управляет переменными среды в контексте пользователя
Управление общими каталогами
networkshare
Управляет общими каталогами
Управление общими каталогами
networkshare_user
Управляет общими каталогами в контексте пользователя
Управление gsettings (настройки графической среды Mate)
gsettings
Разворачивает системные настройки gsettings. Редактирование системных настроек осуществляется методом развертывания файлов с расширением .gschema.override (в формате INI) в директории с XML схемами. После разворачивания необходимо осуществить вызов glib-compile-schemas, для того чтобы настройки вступили в силу
Управление gsettings (настройки графической среды Mate)
gsettings_user
Устанавливает настройки gsettings для пользователя
Управление настройками графической среды GNOME
gnome
Средство управления настройками среды рабочего стола GNOME
Управление настройками графической среды GNOME
gnome_user
Устанавливает настройки GNOME в контексте пользователя
Управление настройками графической среды KDE
kde
Средство управления настройками среды рабочего стола KDE
Управление настройками графической среды KDE
kde_user
Устанавливает настройки KDE в контексте пользователя
Управление пакетами
package
Средство работы с пакетным менеджером для установки и удаления пакетов программ
Управление пакетами
package_user
Управление пакетами в контексте пользователя
Управление logon-скриптами
scripts
Управление скриптами запуска и завершения работы компьютера, входа и выхода из системы пользователя
Управление logon-скриптами
scripts_user
Управление скриптами в контексте пользователя
Модель групповых политик вызывает расширение клиентской стороны, отвечающие за внесение изменений согласно параметрам политики. Для выполнения настроек, указанных в параметрах групповой политики, расширения клиентской стороны изменяют конкретные параметры операционной системы. Изменения, внесённые в операционную систему при помощи модуля групповых политик, записываются в журналы событий.

32.5. Периодичность запуска групповых политик

Каждый фронтенд срабатывает на определённые ветки настроек. Запуск фронтенда для машины по умолчанию производится раз в час средством Systemd — gpupdate.timer. Запуск фронтенда для пользователя в административном контексте производится с помощью модуля pam_oddjob при входе в систему и далее раз в час (по умолчанию) также средством Systemd — gpupdate-user.timer.
Для мониторинга и контроля времени выполнения службы gpupdate.service используются системный таймер gpupdate.timer и пользовательский таймер gpupdate-user.timer. Для управления периодом запуска групповых политик достаточно изменить параметр соответствующего таймера systemd (по умолчанию период запуска составляет 1 час).
Изменить периодичность запуска системного таймера можно, изменив значение параметра OnUnitActiveSec в файле /lib/systemd/system/gpupdate.timer:
[Unit]
Description=Run gpupdate every hour

[Timer]
OnStartupSec=60min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target
По умолчанию таймер gpupdate.timer запустится после загрузки ОС, а затем будет запускаться каждый час во время работы системы. Просмотреть статус системного таймера можно, выполнив команду:
# systemctl status gpupdate.timer
● gpupdate.timer - Run gpupdate every hour
     Loaded: loaded (/lib/systemd/system/gpupdate.timer; enabled; vendor preset: disabled)
     Active: active (waiting) since Wed 2025-06-25 14:30:17 MSK; 33min ago
    Trigger: Wed 2025-06-25 15:30:16 MSK; 26min left
   Triggers: ● gpupdate.service

июн 25 14:30:17 host-01.test.alt systemd[1]: Started gpupdate.timer - Run gpupdate every hour.
Изменить периодичность запуска пользовательского таймера можно, изменив значение параметра OnUnitActiveSec в файле /usr/lib/systemd/user/gpupdate-user.timer:
[Unit]
Description=Run gpupdate-user every hour

[Timer]
OnStartupSec=60min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target
По умолчанию таймер gpupdate-user.timer запустится после входа пользователя в систему, а затем будет запускаться каждый час пока активен сеанс соответствующего пользователя. Просмотреть статус пользовательского таймера можно, выполнив команду от имени пользователя:
$ systemctl --user status gpupdate-user.timer
● gpupdate-user.timer - Run gpupdate-user every hour
     Loaded: loaded (/usr/lib/systemd/user/gpupdate-user.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Wed 2025-06-25 14:38:16 MSK; 31min ago
    Trigger: Wed 2025-06-25 15:38:16 MSK; 28min left
   Triggers: ● gpupdate-user.service

июн 25 14:38:16 host-01.test.alt systemd[8278]: Started gpupdate-user.timer - Run gpupdate-user every hour.
Чтобы изменения, внесённые в файл /usr/lib/systemd/user/gpupdate-user.timer, вступили в силу следует выполнить команду:
$ systemctl --user daemon-reload

Примечание

Управлять периодичностью запуска gpupdate можно также через групповые политики (см. раздел Настройка периодичности запроса конфигураций).
Просмотреть список запущенных системных таймеров можно, выполнив команду:
$ systemctl list-timers
Просмотреть список запущенных пользовательских таймеров можно, выполнив команду:
$ systemctl --user list-timers

32.6. Утилита gpresult

GPResult (gpresult) отображает сведения о результирующем наборе групповых политик для текущего пользователя (для которого запущена сессия) на текущей машине.
Для возможности использования утилиты должен быть установлен пакет gpresult:
# apt-get install gpresult
Сведения о примененных групповых политиках генерируются из данных, полученных после последнего выполнения gpupdate. GPResult не вызывает утилиту gpupdate.
Синтаксис команды gpresult:
gpresult [-h] [-r] [-c] [-v] [-l] [-p] [-w WIDTH] [-i POLICY_GUID] [-n POLICY_NAME] [-u] [-m]

Таблица 32.6. Опции команды gpresult

Ключ
Описание
-h, --help
Вывести справку о команде
-r, --raw
Формат вывода: отображаются ключи групповых политик, текущие и предыдущие значения
-c, --common
Формат вывода: отображаются сведения о системе и имена групповых политик
-v, --verbose
Формат вывода (по умолчанию): отображаются подробные сведения о групповых политиках
-l, --list
Формат вывода: отображаются имена групповых политик и их GUID
-p, --previous
Включить информацию о предыдущих значениях ключей групповых политик
-w WIDTH, --width WIDTH
Задать ширину столбцов для вывода внутренних таблиц (ключи и значения, настройки):
  • по умолчанию ширина столбцов равна максимальной длине строки;
  • если указано значение ≤0, то ширина столбцов будет равна максимальной длине строки;
  • если длина максимальной строки меньше заданного значения, ширина столбцов не изменяется
-i POLICY_GUID, --policy_guid POLICY_GUID
Получить информацию о примененных ключах и значениях политики по GUID
-n POLICY_NAME, --policy_name POLICY_NAME
Получить информацию о примененных ключах и значениях политики по имени
-u, --user
Отобразить информацию для текущего пользователя
-m, --machine
Отобразить информацию для текущей машины

Примечание

Опция -l не применяется с опциями -i и -n. Опция -l может использоваться вместе с опцией -r — вывод не будет форматированным. Имя GPO и GUID разделяются одним пробелом. Без выбора опции формата вывода по умолчанию используется -v.

Примечание

GUID групповой политики можно передавать как в фигурных скобках, так и без: {1BA9EB0C-7B29-49CC-813D-75D8701FC221} и 1BA9EB0C-7B29-49CC-813D-75D8701FC221
Примеры работы с командой gpresult:
  • получить полный отчет о примененных ГП для пользователя и машины:
    $ gpresult -v
    Отчет сформирован 25-06-2025 15:15
    
    Результирующий набор политик
    ----------------------------
         Операционная система:    ALT
         Версия ОС:               11.0 (Prometheus)
    
    ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ
    --------------------------
        Примененные Объекты Групповой Политики
        --------------------------------------
             GPO          Файлы
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Версия       65537
             GUID         {96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Ключи        -
             Настройки    -
    
             GPO          Local Policy
             Путь         /var/cache/gpupdate/local-policy
             Версия       -
             GUID         -
             Ключи        -
             Настройки    -
    
             GPO          Экспериментальные политики
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Версия       65537
             GUID         {377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Ключи        -
             Настройки    -
    
             GPO          Default Domain Policy
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{31B2F340-016D-11D2-945F-00C04FB984F9}
             Версия       0
             GUID         {31B2F340-016D-11D2-945F-00C04FB984F9}
             Ключи        -
             Настройки    -
    
             GPO          KDE
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Версия       655370
             GUID         {3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Ключи        -
             Настройки    -
    
    МАШИННЫЕ НАСТРОЙКИ
    ------------------
        Примененные Объекты Групповой Политики
        --------------------------------------
             GPO          Экспериментальные политики
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Версия       65537
             GUID         {377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Ключи        -
             Настройки    -
    
             GPO          KDE
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Версия       655370
             GUID         {3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Ключи        /Software/BaseALT/Policies/GPUpdate/KdeApplier                            1
                          /Software/BaseALT/Policies/GPUpdate/KdeApplierUser                        1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Autolock            1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockGrace           20
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockOnResume        1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Timeout             5
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Autolock       0
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockGrace      1
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockOnResume   1
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Timeout        0
             Настройки    -
    
             GPO          Local Policy
             Путь         /var/cache/gpupdate/local-policy
             Версия       -
             GUID         -
             Ключи        /SOFTWARE/Policies/Microsoft/WindowsFirewall/FirewallRules/OpenSSH   v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=22|Name=Open SSH port|Desc=Open SSH port|
                          /Software/BaseALT/Policies/Control/ssh-gssapi-auth                   enabled
                          /Software/BaseALT/Policies/Control/sshd-allow-groups                 enabled
                          /Software/BaseALT/Policies/Control/sshd-allow-groups-list            remote
                          /Software/BaseALT/Policies/Control/sshd-gssapi-auth                  enabled
                          /Software/BaseALT/Policies/Control/system-policy                     gpupdate
                          /Software/BaseALT/Policies/SystemdUnits/gpupdate.service             1
                          /Software/BaseALT/Policies/SystemdUnits/oddjobd.service              1
                          /Software/BaseALT/Policies/SystemdUnits/sshd.service                 1
             Настройки    -
    
             GPO          Default Domain Policy
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{31B2F340-016D-11D2-945F-00C04FB984F9}
             Версия       0
             GUID         {31B2F340-016D-11D2-945F-00C04FB984F9}
             Ключи        -
             Настройки    -
    
             GPO          Файлы
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Версия       65537
             GUID         {96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Ключи        /Software/BaseALT/Policies/GPUpdate/GlobalExperimental   1
             Настройки    Тип                  Файлы
                          Источник файла(ов)   //test.alt/sysvol/test.alt/test.txt
                          Источник             -
                          Действие             U
                          Место назначения     %DesktopDir%/new2.txt
                          Только для чтения    0
                          Архивный             0
                          Скрытый              0
                          Подавление ошибок    0
                          Исполняемый          0
    
             GPO          Сетевой диск
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{1F4C3297-9355-4098-B9C8-53CAD6FFEBEF}
             Версия       720907
             GUID         {1F4C3297-9355-4098-B9C8-53CAD6FFEBEF}
             Ключи        /Software/BaseALT/Policies/GPUpdate/DriveMapsName   my_share
             Настройки    Тип                Сетевые диски
                          Пароль
                          Имя диска          I
                          Путь               \\dc1.test.alt\sysvol
                          Действие           U
                          Этот диск          SHOW
                          Все диски          SHOW
                          Название
                          Переподключиться   1
                          Использовать       0
    
                          Тип                Сетевые диски
                          Пароль
                          Имя диска          O
                          Путь               \\dc1.test.alt\Free
                          Действие           U
                          Этот диск          SHOW
                          Все диски          SHOW
                          Название
                          Переподключиться   0
                          Использовать       1
    
  • получить полный отчет о примененных ГП для машины:
    $ gpresult -v -m
    Отчет сформирован 25-06-2025 15:19
    
    Результирующий набор политик
    ----------------------------
         Операционная система:    ALT
         Версия ОС:               11.0 (Prometheus)
    
    МАШИННЫЕ НАСТРОЙКИ
    ------------------
        Примененные Объекты Групповой Политики
        --------------------------------------
             GPO          Экспериментальные политики
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Версия       65537
             GUID         {377A04D4-213E-4783-9B37-5FEE4FF112AA}
             Ключи        -
             Настройки    -
    
             GPO          KDE
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Версия       655370
             GUID         {3C70AD47-E9D5-415F-A565-C1E1472C6D55}
             Ключи        /Software/BaseALT/Policies/GPUpdate/KdeApplier                            1
                          /Software/BaseALT/Policies/GPUpdate/KdeApplierUser                        1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Autolock            1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockGrace           20
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockOnResume        1
                          /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Timeout             5
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Autolock       0
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockGrace      1
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockOnResume   1
                          /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Timeout        0
             Настройки    -
    
             GPO          Local Policy
             Путь         /var/cache/gpupdate/local-policy
             Версия       -
             GUID         -
             Ключи        /SOFTWARE/Policies/Microsoft/WindowsFirewall/FirewallRules/OpenSSH   v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=22|Name=Open SSH port|Desc=Open SSH port|
                          /Software/BaseALT/Policies/Control/ssh-gssapi-auth                   enabled
                          /Software/BaseALT/Policies/Control/sshd-allow-groups                 enabled
                          /Software/BaseALT/Policies/Control/sshd-allow-groups-list            remote
                          /Software/BaseALT/Policies/Control/sshd-gssapi-auth                  enabled
                          /Software/BaseALT/Policies/Control/system-policy                     gpupdate
                          /Software/BaseALT/Policies/SystemdUnits/gpupdate.service             1
                          /Software/BaseALT/Policies/SystemdUnits/oddjobd.service              1
                          /Software/BaseALT/Policies/SystemdUnits/sshd.service                 1
             Настройки    -
    
             GPO          Default Domain Policy
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{31B2F340-016D-11D2-945F-00C04FB984F9}
             Версия       0
             GUID         {31B2F340-016D-11D2-945F-00C04FB984F9}
             Ключи        -
             Настройки    -
    
             GPO          Файлы
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Версия       65537
             GUID         {96D5897A-CEFB-4A1B-90AF-5D83707130C4}
             Ключи        /Software/BaseALT/Policies/GPUpdate/GlobalExperimental   1
             Настройки    Тип                  Файлы
                          Источник файла(ов)   //test.alt/sysvol/test.alt/test.txt
                          Источник             -
                          Действие             U
                          Место назначения     %DesktopDir%/new2.txt
                          Только для чтения    0
                          Архивный             0
                          Скрытый              0
                          Подавление ошибок    0
                          Исполняемый          0
    
             GPO          Сетевой диск
             Путь         /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{1F4C3297-9355-4098-B9C8-53CAD6FFEBEF}
             Версия       720907
             GUID         {1F4C3297-9355-4098-B9C8-53CAD6FFEBEF}
             Ключи        /Software/BaseALT/Policies/GPUpdate/DriveMapsName   my_share
             Настройки    Тип                Сетевые диски
                          Пароль
                          Имя диска          I
                          Путь               \\dc1.test.alt\sysvol
                          Действие           U
                          Этот диск          SHOW
                          Все диски          SHOW
                          Название
                          Переподключиться   1
                          Использовать       0
    
                          Тип                Сетевые диски
                          Пароль
                          Имя диска          O
                          Путь               \\dc1.test.alt\Free
                          Действие           U
                          Этот диск          SHOW
                          Все диски          SHOW
                          Название
                          Переподключиться   0
                          Использовать       1
    
  • вывести список (примененных) имен групповых политик и их GUID:
    $ gpresult -lm
     Экспериментальные политики    {377A04D4-213E-4783-9B37-5FEE4FF112AA}
     KDE                           {3C70AD47-E9D5-415F-A565-C1E1472C6D55}
     Local Policy                  -
     Default Domain Policy         {31B2F340-016D-11D2-945F-00C04FB984F9}
     Файлы                         {96D5897A-CEFB-4A1B-90AF-5D83707130C4}
     Сетевой диск                  {1F4C3297-9355-4098-B9C8-53CAD6FFEBEF}
    
  • получить информацию о примененных ключах групповой политики по GUID:
    $ gpresult -c -i 6F65CD4D-9209-4A81-9801-17A35CEE5CFD
    /Software/BaseALT/Policies/Polkit/org.freedesktop.NetworkManager.enable-disable-network         Auth_admin
    /Software/BaseALT/Policies/Polkit/org.freedesktop.NetworkManager.settings.modify.system         No
    /Software/BaseALT/Policies/PolkitLocks/org.freedesktop.NetworkManager.enable-disable-network    0
    /Software/BaseALT/Policies/PolkitLocks/org.freedesktop.NetworkManager.settings.modify.system    0
    
  • получить информацию о примененных ключах групповой политики по имени политики:
    $ gpresult -c -n KDE
     /Software/BaseALT/Policies/GPUpdate/KdeApplier                             1
     /Software/BaseALT/Policies/GPUpdate/KdeApplierUser                         1
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Autolock             1
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockGrace            20
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockOnResume         1
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Timeout              5
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Autolock        0
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockGrace       1
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockOnResume    1
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Timeout         0
    
    где KDE — имя групповой политики;
  • получить информацию о текущих и предыдущих ключах групповой политики по имени политики:
    $ gpresult -c -p -n KDE
     /Software/BaseALT/Policies/GPUpdate/KdeApplier                             1     -
     /Software/BaseALT/Policies/GPUpdate/KdeApplierUser                         1     -
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Autolock             1     -
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockGrace            20    11
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/LockOnResume         1     -
     /Software/BaseALT/Policies/KDE/kscreenlockerrc/Daemon/Timeout              5     12
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Autolock        0     1
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockGrace       1     -
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.LockOnResume    1     -
     /Software/BaseALT/Policies/KDELocks/kscreenlockerrc.Daemon.Timeout         0     1
    

Глава 33. Модуль удаленного управления базой данных конфигурации (ADMC)

33.1. Запуск ADMC
33.2. Смена пользователя
33.3. Интерфейс ADMC
33.4. Свойства объектов
33.5. Выбор контейнера
33.6. Управление пользователями
33.6.1. Создание учётной записи пользователя
33.6.2. Изменение учётной записи пользователя
33.7. Управление контактами
33.7.1. Создание контакта
33.7.2. Изменение свойств контакта
33.8. Управление группами
33.8.1. Создание группы
33.8.2. Изменение группы
33.9. Управление компьютерами
33.9.1. Создание учётной записи компьютера
33.9.2. Изменение учётной записи компьютера
33.9.3. Использование LAPS для просмотра пароля администратора
33.10. Управление подразделениями
33.10.1. Создание подразделения
33.10.2. Изменение подразделения
33.11. Делегирование административных полномочий
33.11.1. Управление разрешениями
33.11.2. Просмотр дескриптора безопасности в формате SDDL
33.11.3. Настройка разрешений для перемещения объектов между OU
33.11.4. Делегирование полномочий на управление учётными записями пользователей
33.11.5. Делегирование полномочий на присоединение компьютеров к домену
33.12. Управление объектами парольных настроек
33.12.1. Создание объекта парольных настроек
33.12.2. Просмотр и изменение объекта парольных настроек
33.12.3. Удаление объекта парольных настроек
33.13. Управление общими папками
33.14. Управление объектами групповых политик
33.14.1. Создание объекта групповой политики
33.14.2. Изменение объекта групповой политики
33.14.3. Блокирование наследования
33.14.4. Фильтрация безопасности групповых политик
33.15. Добавление/Удаление UPN суффиксов
33.16. Просмотр и передача ролей FSMO
33.17. Выбор объектов
33.18. Поиск объектов
33.18.1. Простой поиск
33.18.2. Обычный поиск
33.18.3. Продвинутый поиск
33.19. Использование сохранённых результатов поиска
Компонент удалённого управления базой данных конфигурации (далее — ADMC) предназначен для управления:
  • объектами домена (пользователями, группами, компьютерами, организационными подразделениями);
  • групповыми политиками.
Возможности ADMC:
  • создание и администрирование учётных записей пользователей, компьютеров и групп;
  • смена паролей пользователей;
  • создание организационных подразделений для структурирования и построения иерархической системы учётных записей в домене;
  • просмотр и редактирование атрибутов объектов;
  • создание и просмотр объектов групповых политик;
  • поиск объектов по различным критериям;
  • сохранение поисковых запросов;
  • перенос поисковых запросов между компьютерами (экспорт и импорт).
В ADMC реализована функция поиска объектов групповых политик.

33.1. Запуск ADMC

Запуск ADMC осуществляется из меню запуска приложений: пункт СистемныеADMC или из командной строки (команда admc).

Примечание

Для запуска ADMC необходимо предварительно получить ключ Kerberos для польователя домена. Например:
$ kinit administrator
Начиная с версии 0.21.0-alt1, в ADMC реализована поддержка аутентификации по протоколу Kerberos. Если билет не получен заранее, при запуске откроется диалоговое окно аутентификации:
ADMC. Окно аутентификация Kerberos
Начиная с версии 0.22.0-alt1, в диалоге аутентификации добавлена опция сохранения учётных данных.

Примечание

Сохраненные учетные данные храняться в каталоге /tmp/admc_uid*/ccaches/.

33.2. Смена пользователя

Примечание

Функция смены пользователя доступна в ADMC начиная с версии 0.21.0-alt1.
Логин текущего пользователя отображается в правом нижнем углу окна ADMC. Его можно скрыть, сняв отметку с пункта Показывать логин в контекстном меню пользователя:
ADMC. Контекстное меню пользователя
Пункт Выход из аккаунта завершает текущую сессию ADMC.
Для смены пользователя необходимо выбрать пункт Сменить пользователя в контекстном меню текущего пользователя или пункт ФайлСменить пользователя в меню. Откроется окно аутентификации Kerberos, в котором можно указать принципал (principal) пользователя. Принципал можно выбрать из выпадающего списка (если нужный принципал в нём присутствует) или ввести вручную.
ADMC. Выбор пользователя
Если билет Kerberos для указанного пользователя уже существует, для завершения смены пользователя достаточно нажать кнопку Войти:
ADMC. Билет для пользователя уже получен
В противном случае потребуется ввести пароль пользователя:
ADMC. Запрос пароля пользователя
Опция Системный кеш (доступна с версии 0.22.0-alt1) позволяет использовать системные учётные данные текущего доменного пользователя для аутентификации:
ADMC. Использовать системный кеш для аутентификации

33.3. Интерфейс ADMC

Интерфейс ADMC
В окне ADMC отображаются следующие панели:
  • Журнал сообщений — панель журнала (по умолчанию скрыта). В панели журнала отображаются сообщения о статусе приложения. Эти сообщения содержат отчеты обо всех выполненных действиях над объектами:
    Панель журнала ADMC
  • Панель инструментов — содержит кнопки, предоставляющие быстрый доступ к функциям программы:
    Панель инструментов ADMC
  • Дерево консоли — панель дерева объектов домена отображается слева, в правой панели будут отображаться сведения о выбранном объекте. По умолчанию дерево показывает объекты типа «контейнер»:
    Панель дерева объектов
  • Область описания — в области описания отображается название контейнера и количество объектов в контейнере:
    Область описания
Включить/выключить отображение панелей можно, отметив соответствующий пункт в меню Вид:
ADMC. Меню «Вид»
В меню ВидТема можно выбрать тему значков:
ADMC. Выбор темы значков

Примечание

Системная тема загружается из каталога /usr/share/icons, пользовательские темы загружаются по умолчанию из каталога /usr/share/ad-integration-themes. Каталоги с темами определяются по наличию в них файла index.theme и могут быть символическими ссылками.
ADMC. Меню «Настройки»
В меню Настройки можно изменить параметры ADMC:
  • Дополнительные возможности — показывать расширенные объекты и элементы интерфейса;
  • Подтверждать действия — выводить диалог Подтвердить действие при выполнении потенциально опасных действий, например, удалении объекта:
    Окно подтверждения действия
  • Ставить фамилию перед именем — изменить формат поля cn (полное имя) на «Фамилия Имя»;
  • Вносить информацию о поиске в журнал сообщений — сохранять поисковые запросы в журнал;
  • Метки времени в журнале сообщений — отображать время события в журнале;
  • Показывать неконтейнерные объекты в дереве консоли — показывать неконтейнерные объекты (например, учётные записи пользователей и компьютерные учётные записи) в панели дерева объектов Active Directory;
  • Загружать значения необязательных атрибутов — подгружать необязательные атрибуты на вкладке Атрибуты в свойствах объекта;
  • Показывать отчество при создании — отображать поле Отчество (middle name) в свойствах и диалогах создания пользователей;
  • Показывать окно логина при старте — если включено, при запуске не используются системные учётные данные;

    Примечание

    Окно аутентификации будет отображаться даже при наличии действующего билета Kerberos.
  • Язык — выбрать язык интерфейса (русский или английский).
Выбранные настройки сохраняются и восстанавливаются при каждом запуске программы.
При выборе корневого элемента в дереве консоли отображается информация о домене: дерево сайтов, контроллеры домена и FSMO-роли. Данный виджет также содержит версию контроллера домена, количество сайтов и контроллеров домена, режимы работы домена и леса, версию схемы домена:
ADMC. Информация о домене
Меню операций с объектом доступно из строки меню (пункт Действие) после выбора объекта:
ADMC. Меню «Действие»→«Создать»
или в контекстном меню объекта:
ADMC. Контекстное меню контейнера
Меню операций содержит действия, применимые к выделенному объекту.

33.4. Свойства объектов

В ADMC доступны два режима работы: обычный и расширенный режим. При включении расширенного режима (НастройкиДополнительные возможности) в окне свойств любого объекта появляются дополнительные вкладки: Атрибуты и Объект. Для учётных записей пользователей также становится доступна вкладка Безопасность.
Окно Учетная запись пользователя – cвойства в расширенном режиме:
Окно Учетная запись пользователя – cвойства
По умолчанию при открытии свойств объекта активна вкладка Общее.

Таблица 33.1. Назначение вкладок окна Свойства учётной записи пользователя

Вкладка
Описание
Расширенный режим
Общее
Основная информация, идентифицирующая личность пользователя, которой соответствует данная учётная запись
-
Учётная запись
Параметры учётной записи: имя входа, срок действия, политики блокировки и паролей
-
Адрес
Почтовый адрес пользователя
-
Организация
Данные о должности, отделе и руководителе (согласно штатному расписанию)
-
Телефоны
Номера телефонов пользователя
-
Группы
Управление членством в группах безопасности
-
Атрибуты
Просмотр и редактирование всех атрибутов объекта
+
Объект
Служебная информация: GUID, SID, дата создания и изменения
+
Делегирование
Настройка делегирования полномочий
-
Безопасность
Управление правами доступа к объекту (ACL)
+
На вкладке Общее задаются личные и контактные данные пользователя: ФИО, телефоны, размещение, адрес электронной почты и др. Эта вкладка отображается по умолчанию при открытии свойств любого объекта домена.

Таблица 33.2. Соответствие полей вкладки Общее атрибутам Active Directory

Поле на вкладке Общее
Примечание
Атрибут в AD
Тип
Полное имя
На вкладке Общее значение этого поля изменить нельзя
cn, name
Юникод
Описание
description
Юникод
Имя
givenName
Юникод
Отчество
middleName
Юникод
Фамилия
sn
Юникод
Отображаемое имя
Формируется автоматически из значений трёх параметров: First Name, Initials и Last Name
displayName
Юникод
Инициалы
Максимум 6 символов
initials
Юникод
Электронная почта
Заполняется автоматически при создании почтового ящика в формате UPN (RFC 822). По умолчанию пустое
mail
Юникод
Расположение офиса
Физическое местоположение: комната, этаж, здание
physicalDeliveryOfficeName
Юникод
Номер телефона
telephoneNumber
Юникод
Другие телефоны
Добавляются через кнопку Другие…
otherTelephone
Юникод
Адрес веб-страницы
wWWHomePage
Юникод
Другие адреса веб-страниц
Добавляются через кнопку Другие…
url
Юникод
На вкладке Учетная запись настраиваются параметры доступа пользователя к домену: имя входа, срок действия, политики паролей и блокировки:
Вкладка Учетная запись

Таблица 33.3. Соответствие полей вкладки Учетная запись атрибутам Active Directory

Поле на вкладке Учетная запись
Примечание
Атрибут в AD
Тип
Имя для входа
Логин пользователя (UPN)
userPrincipalName
Юникод
Разблокировать учётную запись
Позволяет разблокировать учётную запись пользователя, если она была заблокирована, например, после множества неудачных попыток входа
userAccountControl = 16
Целое число
Срок действия учётной записи
Дата отключения учётной записи (по умолчанию Никогда — неограниченный срок действия). Если нужно задать дату окончания срока действия учётной записи пользователя, следует выбрать Конец и затем выбрать дату
accountExpires
Большое целое число
Время входа…
Ограничение времени входа в систему
logonHours
Октет
Учетная запись отключена (ACCOUNTDISABLE)
Запрещает вход пользователя в систему
userAccountControl = 0x0002 (2)
Целое число
Пользователь не может изменить пароль (PASSWD_CANT_CHANGE)
userAccountControl = 0x0040 (64)
Целое число
Пользователь должен сменить пароль при следующем входе в систему
pwdLastSet = 0
Большое целое число
Пароль не истекает (DONT_EXPIRE_PASSWORD)
Срок действия пароля не ограничен
userAccountControl = 0x10000 (65536)
Целое число
Хранить пароль с использованием обратимого шифрования (ENCRYPTED_TEXT_PWD_ALLOWED)
Для шифрования ключей использовать DES-шифрование (небезопасно). Эта политика обеспечивает поддержку приложений, использующих протоколы, требующие знание пароля пользователя для проверки подлинности
userAccountControl = 0x0080 (128)
Целое число
Смарт-карта необходима для интерактивного входа в систему (SMARTCARD_REQUIRED)
Пользователь должен использовать смарт-карту для входа
userAccountControl = 0x40000 (262144)
Целое число
Учетная запись является конфиденциальной и не может быть делегирована (NOT_DELEGATED)
Запрещает делегирование полномочий для этой учётной записи
userAccountControl = 0x100000 (1048576)
Целое число
Использовать Kerberos DES тип шифрования для этой учётной записи (USE_DES_KEY_ONLY)
Ограничивает использование только DES-шифрованием (устаревший и небезопасный алгоритм)
userAccountControl = 0x200000 (2097152)
Целое число
Не требовать предварительной аутентификации Kerberos (DONT_REQ_PREAUTH)
Отключает обязательную предварительную аутентификацию Kerberos (снижает безопасность)
userAccountControl = 0x400000 (4194304)
Целое число
Настройки паролей (начиная с версии 0.21.0-alt1)
Ссылка на применённый объект политики паролей (PSO)
ms-DS-PSO-Applied
Различающееся имя

Примечание

Атрибут userAccountControl — это флаговый атрибут, управляющий состоянием учётной записи. Его значение формируется как сумма установленных битовых флагов. В таблице выше указаны только те флаги, которые можно изменить явным образом на вкладках Учётная запись и Делегирование. Примеры значений UserAccountControl по умолчанию:
  • обычный пользователь (NORMAL_ACCOUNT): 0x200 (512);
  • контроллер домена (SERVER_TRUST_ACCOUNT): 0x2000 (8192);
  • рабочая станция или сервер (WORKSTATION_TRUST_ACCOUNT): 0x1000 (4096).
На вкладке Группы отображается список групп, членом которых является пользователь. Здесь можно добавить или удалить пользователя из групп (кнопоки Добавить… и Удалить), а также назначить основную группу (Primary Group). По умолчанию пользователь состоит в группе Domain Users.
Вкладка Группы
На вкладке Делегирование доступны два режима:
  • Не доверять делегирование — делегирование полномочий запрещено;
  • Доверять делегирование любых служб с использованием Kerberos — разрешено делегирование только через протокол Kerberos.
Вкладка Делегирование

Примечание

Протокол Kerberos — основной механизм аутентификации в домене, обеспечивающий безопасную проверку подлинности пользователей и компьютеров.
Каждому объекту в сети назначается набор данных об управлении доступом. Этот набор данных определяет, какой тип доступа разрешается пользователям и группам.
Управление разрешениями для выбранного объекта доступно на вкладке Безопасность:
Вкладка Безопасность
В разделе Разрешения отображается список действующих разрешений и запретов для каждой группы. Для добавления новых субъектов используются кнопки Добавить… или Добавить известное доверенное лицо….
Вкладка Атрибуты предназначена для просмотра и редактирования всех атрибутов объекта, включая те, которые недоступны на других вкладках. Полезна для диагностики и тонкой настройки.
Вкладка Атрибуты
Эту вкладку можно использовать для просмотра и редактирования атрибутов, недоступных через другие вкладки окна Свойства объекта (например, для просмотра значений неизменяемых атрибутов).
Содержимое окна редактирования атрибута зависит от типа атрибута. Окно редактирования целочисленного атрибута:
Изменение значения целочисленного атрибута
Окно редактирования логического атрибута:
Изменение значение атрибута логического типа
Для большинства атрибутов поддерживается автоматическое декодирование значений. Например, атрибуты lastLogon и lastLogonTimestamp (время последнего входа пользователя в домен) на вкладке Атрибуты и в окне редактирования атрибута отображаются в формате ДД.ММ.ГГГГ ЧЧ:ММ, хотя в AD хранятся как 64-битные целые числа (100-нс интервалы с 1 января 1601 (UTC)):
Атрибут lastLogonTimestamp
Кнопки Загрузить необязательные атрибуты и Фильтр позволяют управлять списком отображаемых атрибутов.
Кнопка Загрузить необязательные атрибуты — подгружает дополнительные атрибуты, скрытые по умолчанию:
Необязательные атрибуты
Кнопка Фильтр — позволяет выбрать категории отображаемых атрибутов:
  • Без значения — пустые атрибуты;
  • Только для чтения — все атрибуты, включая недоступные для редактирования. Если снять отметку с этого пункта, будут показаны только те атрибуты, на правку которых делегированы полномочия (например, если у пользователя нет полномочий на изменение атрибутов данного объекта, список атрибутов будет пуст);
  • Обязательные — атрибуты, обязательные для объекта;
  • Необязательные — дополнительные атрибуты;
  • Системные — атрибуты, изменяемые только контроллером домена (например, objectClass);
  • Сконструированные — атрибуты, которые не хранятся в каталоге, но вычисляются контроллером домена (например, canonicalName);
  • Обратные ссылки — связанные атрибуты (например, memberOf).
Управление отображением списка атрибутов

33.5. Выбор контейнера

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

33.6. Управление пользователями

Учётная запись пользователя домена:
  • удостоверяет личность пользователя;
  • определяет доступ к ресурсам домена (разрешает или запрещает).
В ADMC предусмотрена возможность создания новых учётных записей пользователей, а также управления существующими учётными записями.

Примечание

Для выполнения некоторых операций необходимо быть членом одной из следующих групп: Account Operators, Domain Admins, Enterprise Admins.

Примечание

Объект InetOrgPerson является производным от класса пользователь (user). Он может использоваться как субъект безопасности аналогично обычной учётной записи пользователя. Для создания учётной записи InetOrgPerson в контекстном меню контейнера следует выбрать пункт СоздатьinetOrgPerson.

33.6.1. Создание учётной записи пользователя

Для создания учётной записи пользователя в контекстном меню контейнера следует выбрать пункт СоздатьПользователь.
Откроется окно создания учётной записи пользователя:
Создание нового пользователя
При создании учётной записи пользователя можно указать следующие параметры (атрибуты):
  • Имя — имя пользователя;
  • Фамилия — фамилия пользователя;
  • Полное имя — отображаемое имя пользователя (в это поле можно добавить отчество или поменять имя и фамилию местами);
  • Инициалы — инициалы пользователя;
  • Имя для входа — логин пользователя в формате UPN (user@domain). В раскрывающемся списке отображаются доступные суффиксы UPN. Список содержит DNS-имя домена и альтернативные суффиксы, настроенные администратором:
    Список доступных суффиксов UPN
  • Имя для входа (до Windows 2000) — имя входа в формате SAM (DOMAIN\user), используемое для совместимости с устаревшими системами (пред-Windows 2000);
  • Пароль/Подтвердите пароль — пароль пользователя. Должен соответствовать политике сложности;
  • Пользователь должен сменить пароль при следующем входе в систему — пользователь должен изменить пароль при следующем входе в систему. Если эта опция включена, только пользователь будет знать свой пароль;
  • Пользователь не может изменить пароль — блокирует возможность изменения пароля пользователем;
  • Пароль не истекает — установить бессрочный пароль. Если эта опция включена, срок действия учётной записи пользователя не ограничен (по умолчанию срок действия пароля задан атрибутом maxPwdAge);
  • Учетная запись отключена — запрещает вход пользователя в систему. Учётная запись остаётся в каталоге, но недоступна.

Примечание

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

Примечание

Для совместимости с устаревшими системами используются два формата имени пользователя:
  • UPN (User Principal Name) — современный формат (соответствует атрибуту userPrincipalName): user@domain, где domain — DNS-имя домена, например, TEST.ALT; user — имя пользователя. UPN состоит из префикса (имя пользователя) и суффикса (домен в формате DNS);
  • SAM-имя (Security Account Manager) — устаревший формат (соответствует атрибуту samAccountName): domain\user, где domain — короткое (NetBIOS) имя домена, например, TEST; user — имя пользователя. Хранится только имя пользователя, первая часть SAM-имени вычисляется по DNS-имени.
По умолчанию суффиксом UPN является DNS-имя домена. Однако администратор может добавить альтернативные суффиксы UPN, чтобы упростить вход для пользователей.

33.6.2. Изменение учётной записи пользователя

Для изменения учётной записи пользователя следует в контекстном меню пользователя выбрать соответствующее действие:
Контекстное меню пользователя
Добавление пользователя в группу:
  1. В контекстном меню пользователя выбрать пункт Добавить в группу….
  2. В открывшемся окне выбрать группы, в которые следует добавить учётную запись пользователя в качестве участника:
    Диалоговое окно «Добавить в группу – ADMC»
  3. Нажать кнопку ОК.
Переименование пользователя:
  1. В контекстном меню пользователя выбрать пункт Переименовать.
  2. В открывшемся окне, если необходимо, изменить соответствующие поля:
    ADMC. Переименование пользователя
  3. Нажать кнопку ОК для сохранения изменений.
Изменение пароля пользователя:
  1. В контекстном меню пользователя выбрать пункт Сбросить пароль.
  2. В открывшемся окне ввести новый пароль и подтвердить его:
    ADMC. Изменение пароля пользователя
  3. Если необходимо, чтобы пользователь изменил этот пароль при следующем входе в систему, установить отметку Пользователь должен изменить пароль при следующем входе в систему.
  4. Установить отметку Разблокировать учётную запись, если необходимо разблокировать учётную запись пользователя.
  5. Нажать кнопку ОК для сохранения изменений.
Перемещение пользователя в другой контейнер:
  1. В контекстном меню пользователя выбрать пункт Переместить….
  2. В открывшемся окне выбрать контейнер, в который следует переместить учётную запись пользователя:
    ADMC. Диалоговое окно выбора контейнера
  3. Нажать кнопку ОК.
Для включения/отключения учётной записи пользователя необходимо в контекстном меню пользователя выбрать пункт Отключить или Включить (в зависимости от состояния учётной записи будет доступно одно из этих действий).
Разблокировать учётную запись пользователя:
  1. В контекстном меню пользователя выбрать пункт Свойства.
  2. В открывшемся окне на вкладке Учетная запись отметить пункт Разблокировать учётную запись:
    ADMC. Разблокировать учётную запись пользователя
  3. Нажать кнопку ОК или Применить.
Для удаления учётной записи пользователя следует в контекстном меню пользователя выбрать пункт Удалить.

Предупреждение

Если в настройках ADMC не отмечен пункт Подтверждать действия, пользователь будет удален сразу после выбора пункта меню Удалить.
Найти группы, участником которых является пользователь:
  1. В контекстном меню пользователя выбрать пункт Свойства.
  2. В открывшемся окне на вкладке Группы будут отображаться группы, в которые входит данный пользователь:
    ADMC. Вкладка «Группы»

33.7. Управление контактами

Контакт предназначен для хранения информации о пользователях, которым не требуется доступ к домену. Контакт не является субъектом безопасности и не может входить в домен или получать права доступа к ресурсам.

33.7.1. Создание контакта

Для создания контакта в контекстном меню контейнера следует выбрать пункт СоздатьКонтакт.
Окно мастера создания контакта:
Создание нового контакта
При создании контакта можно указать следующие параметры (атрибуты):
  • Имя — имя контакта;
  • Фамилия — фамилия контакта;
  • Инициалы — инициалы контакта;
  • Полное имя — отображаемое имя в каталоге (в это поле можно добавить отчество или поменять имя и фамилию местами);
  • Отображаемое имя — имя, которое будет отображаться в адресной книге (часто совпадает с Полным именем, но может быть изменено для удобства).
Если включена опция НастройкиПоказывать отчество при создании, в диалоговом окне создания контакта будет отображаться поле Отчество.

33.7.2. Изменение свойств контакта

Для изменения контакта следует в контекстном меню контакта выбрать соответствующее действие:
Контекстное меню контакта
Вкладки Общие, Адрес, Телефоны и Организация в окне Свойства контакта идентичны соответствующим вкладкам окна Свойства учётной записи пользователя.
На вкладке Группы можно, по аналогии с учётными записями пользователей, указать, членом каких групп является контакт. Возможность членства в группах не даёт контакту никаких прав в рамках домена и предназначена для организации групп рассылки. Для контакта нельзя указать основную группу, так как это не требуется для функционирования групп рассылки.

33.8. Управление группами

Группа — это объект домена, объединяющий учётные записи пользователей, компьютеров, контактов и другие группы. Группа может управляться как единое целое.
Пользователи и компьютеры, входящие в определённую группу, являются её членами.
Группы характеризуются областью действия и типом:
  • Область действия определяет, где группа может использоваться — в пределах одного домена или во всём лесу.
  • Тип группы определяет её назначение:
    • Группа безопасности — для управления доступом к ресурсам;
    • Группа рассылки — только для организации списков электронной почты.

33.8.1. Создание группы

Для создания группы следует в контекстном меню контейнера выбрать пункт СоздатьГруппа.
Откроется окно мастера создания группы:
Создание новой группы
При создании группы можно указать следующие параметры (атрибуты):
  • Имя — имя группы;
  • Имя группы (до Windows 2000) — имя в формате SAM (DOMAIN\group), используемое в устаревших системах (пред-Windows 2000);
  • Область группы — область действия группы:
    • Глобальная — членами могут пользователи, компьютеры и группы только из этого домена. Может использоваться для доступа к ресурсам в любом домене леса;
    • Домен локальная — используется внутри одного домена. Членами могут быть объекты из любого домена леса;
    • Универсальная — членами могут быть объекты из любого домена леса. Может использоваться для доступа к ресурсам в любом домене;
  • Тип группы — назначение группы:
    • Безопасность — для управления разрешениями доступа к ресурсам;
    • Рассылка — только для списков электронной почты.

33.8.2. Изменение группы

Для управления группой используется контекстном меню её объекта:
Контекстное меню группы
Добавление группы в другую группу:
  1. В контекстном меню группы выбрать пункт Добавить в группу….
  2. В открывшемся окне выбрать группы, в которые следует включить данную группу:
    Диалоговое окно «Добавить в группу – ADMC»
  3. Нажать кнопку ОК.
Перемещение группы в другой контейнер:
  1. В контекстном меню группы выбрать пункт Переместить….
  2. В открывшемся окне выбрать контейнер, в который следует переместить группу:
    ADMC. Диалоговое окно выбора контейнера
  3. Нажать кнопку ОК.
Переименование группы:
  1. В контекстном меню группы выбрать пункт Переименовать.
  2. В открывшемся окне, если необходимо, изменить соответствующие поля:
    ADMC. Переименование группы
  3. Нажать кнопку ОК для сохранения изменений.
Для удаления группы следует в контекстном меню группы выбрать пункт Удалить.

Предупреждение

Если в настройках ADMC отключено подтверждение действий (Подтверждать действия), группа будет удалена сразу после выбора пункта меню Удалить.
Добавление участников в группу:
  1. В контекстном меню группы выбрать пункт Свойства.
  2. В открывшемся диалоговом окне на вкладке Участники нажать кнопку Добавить…:
    ADMC. Свойства группы. Вкладка «Участники»
  3. Выбрать объекты (пользователей, компьютеры, другие группы), которые необходимо добавить в группу:
    Диалоговое окно «Добавить участника – ADMC»
  4. Нажать кнопку ОК.
  5. Нажать кнопку ОК или Применить для сохранения изменений.
Изменение области действия/типа группы:
  1. В контекстном меню группы выбрать пункт Свойства.
  2. В открывшемся диалоговом окне на вкладке Общее в выпадающем списке Тип группы выбрать тип группы, в выпадающем списке Область группы выбрать область действия группы:
    ADMC. Изменение типа/области действия группы
  3. Нажать кнопку ОК или Применить для сохранения изменений.

33.9. Управление компьютерами

Учётные записи компьютеров представляют собой объекты в Альт Домен, соответствующие устройствам, подключённым к домену. Они создаются при присоединении компьютера к домену и хранятся в базе данных домена.
Учётная запись компьютера используется для:
  • аутентификации компьютера в домене;
  • применения групповых политик;
  • управления доступом к ресурсам.

33.9.1. Создание учётной записи компьютера

Учётная запись компьютера создаётся автоматически при стандартной процедуре присоединения компьютера к домену.
Если требуется создать учётную запись вручную, следует в контекстном меню контейнера выбрать пункт СоздатьКомпьютер.
Откроется окно мастера создания учётной записи компьютера:
Создание учётной записи компьютера
При создании учётной записи компьютера необходимо указать:
  • Имя — имя компьютера;
  • Имя для входа (до Windows 2000) — имя компьютера, используемое в устаревших системах.

Примечание

Ручное создание учётной записи позволяет заранее зарезервировать имя компьютера и настроить его членство в группах до присоединения.

33.9.2. Изменение учётной записи компьютера

Для управления учётной записью компьютера используется контекстное меню объекта:
Контекстное меню компьютера
Для включения/отключения учётной записи компьютера необходимо в контекстном меню компьютера выбрать пункт Отключить или Включить (доступно только одно действие в зависимости от текущего состояния).

Примечание

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

Примечание

Сброс не удаляет учётную запись, а только сбрасывает её состояние и пароль доверия к домену.
Перемещение компьютера в другой контейнер:
  1. В контекстном меню компьютера выбрать пункт Переместить….
  2. В открывшемся окне выбрать контейнер, в который следует переместить учётную запись компьютера:
    ADMC. Диалоговое окно выбора контейнера
  3. Нажать кнопку ОК.

Примечание

Перемещение влияет на применение групповых политик, если они привязаны к контейнеру (OU).
Для удаления учётной записи компьютера следует в контекстном меню компьютера выбрать пункт Удалить.

Предупреждение

Если в настройках ADMC отключено подтверждение действий (Подтверждать действия), учётная запись будет удалена сразу после выбора пункта меню Удалить.

Важно

Удаление учётной записи не влияет на сам компьютер. После удаления его потребуется заново добавить в домен.

33.9.3. Использование LAPS для просмотра пароля администратора

Примечание

Нативная реализация LAPS 2023 доступна в ADMC начиная с версии 0.20.0-alt1.
После применения политик LAPS пароль локального администратора сохраняется в защищённом атрибуте msLAPS-EncryptedPassword объекта компьютера.
Текущий пароль локального администратора можно просмотреть на вкладке LAPS в свойствах компьютера.
ADMC. Информация о пароле локального администратора
Вкладка LAPS предоставляет следующие функции:
  • просмотр даты и времени окончания срока действия текущего пароля;
  • просмотр текущего пароля локального администратора (при наличии соответствующих прав доступа);
  • принудительный сброс пароля;
  • установка даты следующего автоматического сброса пароля.

Примечание

Вкладка LAPS отображается в свойствах объектов класса компьютер, если для компьютера включена поддержка LAPS и хотя бы один из атрибутов msLAPS* содержит данные:
ADMC. Атрибуты msLAPS*

33.10. Управление подразделениями

Организационная единица или подразделение (Organizational Unit, OU) — это субконтейнер в Альт Домен, в который можно помещать пользователей, группы, компьютеры и другие объекты каталога. Подразделение — наименьшая единица, для которой можно назначать групповые политики. Подразделения могут быть вложенными, что позволяет строить иерархическую структуру домена (например, по отделам, филиалам, ролям).

Примечание

Рекомендуется использовать иерархию OU для эффективного управления политиками и делегированием, например: КомпанияОтделыITСерверы.

33.10.1. Создание подразделения

Для создания подразделения следует в контекстном меню контейнера выбрать пункт СоздатьПодразделение.
Откроется окно мастера создания подразделения:
Создание подразделения
При создании подразделения необходимо указать название организационной единицы (поле Имя).

Примечание

Если при создании подразделения отметить пункт Защитить от удаления, то удалить подразделение будет невозможно до тех пор, пока эта отметка не будет снята в свойствах объекта.

33.10.2. Изменение подразделения

Для управления подразделением используется контекстное меню объекта:
Контекстное подразделения
Переименование подразделения:
  1. В контекстном меню подразделения выбрать пункт Переименовать.
  2. В открывшемся окне изменить имя подразделения:
    ADMC. Переименование подразделения
  3. Нажать кнопку ОК для сохранения изменений.

Примечание

При переименовании изменяется только отображаемое имя. Уникальный идентификатор (DN) обновляется автоматически.
Для удаления подразделения следует в контекстном меню подразделения выбрать пункт Удалить.

Важно

Удаление подразделения также удаляет все содержащиеся в нём объекты, если они не перемещены заранее.

Предупреждение

Если подразделение было защищено от удаления (отметка Защитить от удаления), удалить его нельзя до снятия этой защиты:
ADMC. Свойства подразделения
Перемещение подразделения в другой контейнер:
  1. В контекстном меню подразделения выбрать пункт Переместить….
  2. В открывшемся окне выбрать контейнер, в который следует переместить подразделение:
    ADMC. Диалоговое окно выбора контейнера
  3. Нажать кнопку ОК.

Примечание

Перемещение подразделения влияет на применение групповых политик, привязанных к исходной или целевой OU.

33.11. Делегирование административных полномочий

Разрешения — это правила, определяющие, какие действия пользователь или группа могут выполнять с объектами в домене (например, просматривать, изменять, удалять).
Делегирование позволяет пользователям ограниченные административные права без включения их в привилегированные группы, такие как «Domain Admins», «Account Operators» и т.д.
Например, с помощью делегирования можно:
  • разрешить группе создавать и управлять учётными записями пользователей;
  • предоставить возможность сбрасывать пароли;
  • разрешить добавлять пользователей в определённые группы.
Делегирование может быть настроено на уровне домена или конкретной OU.
Важно:
  • По умолчанию разрешения наследуются от родительских объектов. Это поведение можно отключить.
  • Изменение разрешений может повлиять на безопасность и работоспособность домена. Все изменения следует тщательно проверять перед применением.
  • Для упрощения управления рекомендуется назначать права группам, а не отдельным пользователям.
  • Не следует делегировать управление OU, содержащим административные учётные записи. Все чувствительные объекты (например группы с повышенными правами) должны размещаться в отдельной защищённой OU, на которую не распространяются правила делегирования.
  • Запрещающие правила имеют приоритет над разрешающими.

Примечание

Для возможности редактирования разрешений необходимо включить расширенный режим: в меню Настройки отметить пункт Дополнительные возможности.

33.11.1. Управление разрешениями

Просмотр и настройка разрешений выполняются в окне свойств объекта:
  1. В контекстном меню объекта выбрать пункт Свойства:
    ADMC. Свойства группы — Вкладка «Безопасность»
  2. В окне свойств объекта перейти на вкладку Безопасность.
Каждому объекту в каталоге назначен список управления доступом (ACL), определяющий, какие действия могут выполнять пользователи и группы.
В поле Пользователи и группы отображаются группы и пользователи, имеющие права на объект. Это поле показывает, кто имеет права на выполнение определенных действий с объектом (например, чтение, запись, изменение и т.д.). В этом поле отображаются встроенные группы безопасности:
  • Domain Admins — администраторы домена, которые имеют полный контроль над объектами в домене;
  • Enterprise Admins — администраторы предприятия, которые имеют полный контроль над всеми доменами в лесу;
  • Administrators — локальные администраторы;
  • Authenticated Users — все аутентифицированные пользователи;
  • SYSTEM — встроенная учётная запись ОС с полными правами;
  • Self — специальная группа, представляющая сам объект (используется для делегирования прав на редактирование собственных свойств).
Чтобы установить разрешения для группы (или пользователя), которая отсутствует в списке можно воспользоваться кнопкой Добавить… (выбор пользователей и групп):
ADMC. Выбор группы manager
Или Добавить известное доверенное лицо… (выбор встроенных групп):
ADMC. Выбор известного доверенного лица
После выбора участника в разделе Разрешения отображается список назначенных разрешений. Разрешения сгруппированы по категориям:
  • Обычные — стандартные действия: чтение, запись, удаление и т.д.;
  • Расширенные — специфические права (например, сброс пароля);
  • Создание/Удаление — права на создание или удаление дочерних объектов;
  • Чтение/Запись — права на чтение или изменение конкретных атрибутов;
  • Делегирование задач — задачи управления доменом.
Разрешения определяют, какие действия могут выполнять пользователи или группы с данным объектом.
Примеры разрешений:
  • Полный доступ — полный доступ к объекту, включая изменение разрешений;
  • Читать — возможность просматривать свойства объекта;
  • Изменять — возможность изменять свойства объекта;
  • Удаление — возможность удалять объект;
  • Создавать дочерние объекты — возможность создавать любые объекты в контейнере;
  • Удалять все дочерние объекты — возможность удалять любые объекты в контейнере;
  • Чтение разрешений — возможность просматривать разрешения объекта;
  • Сменить разрешения — возможность изменять разрешения объекта.
Тип разрешения:
  • Разрешено — разрешает выполнение указанного действия;
  • Запрещено — явно запрещает выполнение указанного действия (имеет приоритет над разрешениями).
Область применения (поле Применять) определяет, к каким объектам применяются разрешения:
  • Этот объект — только к текущему объекту;
  • Этот объект и все дочерние объекты — к текущему объекту и всем вложенным;
  • Все дочерние объекты — только к вложенным объектам;
  • Дочерние объекты: <класс объекта> — только к объектам указанного класса (например, только к пользователям или только к группам).
ADMC. Область действия разрешений
Разрешения могут быть явно назначены или унаследованы от родительского объекта. Унаследованные разрешения отображаются серым цветом и не могут быть изменены на уровне дочернего объекта. Явно назначенные разрешения имеют приоритет над унаследованными.

Примечание

Снятие/установка бо́льших разрешений снимает/устанавливает все меньшие тоже. Например, снятие разрешения Полный доступ автоматическиснимает все остальные разрешения, так как оно включает в себя все остальные права. Аналогично, его установка даёт все права.

33.11.2. Просмотр дескриптора безопасности в формате SDDL

На вкладке Безопасность доступно действие ДополнительноПоказать дескриптор в SDDL:
ADMC. «Дополнительно»→«Показать дескриптор в SDDL»
Оно позволяет отобразить дескриптор безопасности в текстовом формате SDDL:
ADMC. Дескриптор безопасности в формате SDDL для выбранного доверенного лица
По умолчанию отображается дескриптор для выбранного доверенного лица — то есть упрощённое представление прав, назначенных конкретному субъекту (пользователю, группе или службе).
Если снять отметку с пункта Показывать дескриптор для выбранного доверенного лица, будет показан полный дескриптор безопасности объекта, включающий:
  • полный список всех правил доступа (ACE);
  • информацию о владельце (Owner);
  • информацию о группе (Primary Group);
  • DACL и SACL.
Этот режим отображает все правила доступа, применяемые ко всем субъектам, имеющим доступ к объекту:
ADMC. Дескриптор безопасности объекта
Для возврата к предыдущему виду дескриптора безопасности необходимо выбрать действие ДополнительноВернуться к предыдущему дескриптору
ADMC. Вернуться к предыдущему дескриптору

Примечание

SDDL (Security Descriptor Definition Language) — это специальный текстовый формат, используемый для представления дескрипторов безопасности в виде строки. Он применяется для компактного и читаемого описания прав доступа к объектам, удобного для анализа, передачи и автоматической обработки.
Дескриптор безопасности в формате SDDL обычно включает следующие компоненты:
  • O: (Owner) — идентификатор владельца объекта;
  • G: (Group) — идентификатор основной группы (редко используется в Linux/Unix-подобных системах для контроля доступа);
  • D: (DACL — Discretionary Access Control List) — список прав доступа, определяющий, какие действия могут выполнять субъекты (пользователи, группы);
  • S: (SACL — System Access Control List) — список для аудита, определяющий, какие действия должны регистрироваться в журнале (например, успешный или неудачный доступ).

33.11.3. Настройка разрешений для перемещения объектов между OU

Чтобы перемещать объекты (учётные записи пользователей, групп и компьютеров) из одной организационной единицы (OU) в другую, необходимо иметь следующие права в обоих контейнерах — исходном и целевом:
  • создание объектов указанного типа;
  • удаление объектов указанного типа;
  • изменение свойств объекта.

Примечание

Если разрешения назначены на верхний уровень OU, они автоматически наследуются всеми дочерними контейнерами, если явно не отключено наследование.
Предоставление членам группы manager разрешения на перемещение объектов из одного контейнера (OU) в другой:
  1. В контекстном меню исходного контейнера (OU) выбрать пункт Свойства:
    ADMC. Контекстное меню контейнера
  2. В окне свойств контейнера перейти на вкладку Безопасность.
  3. Добавить объект, которому будут добавлены разрешения: нажать кнопку Добавить… и выбрать группу manager:
    ADMC. Выбор группы manager
  4. В списке Применять выбрать пункт Этот объект и все дочерние объекты.
  5. Настроить разрешения для добавленной группы: в разделе Разрешения установить отметки Разрешено в полях Читать, Изменять и Удаление:
    ADMC. Настройка разрешений
  6. Нажать кнопку ОК, чтобы сохранить изменения.
  7. Повторите все шаги для целевого OU, чтобы обеспечить права на создание объектов.

Примечание

Перемещение объекта — это удаление из одного контейнера и создание в другом, поэтому требуются права на оба действия.

33.11.4. Делегирование полномочий на управление учётными записями пользователей

В этом примере членам группы manager делегируются права на управление учётными записями пользователей в определённой организационной единице (OU).
Для делегирования полномочий необходимо выполнить следующие действия:
  1. В контекстном меню организационной единицы выбрать пункт Свойства:
    ADMC. Контекстное меню контейнера
  2. В окне свойств контейнера перейти на вкладку Безопасность.
  3. Добавить объект, которому будут делегированы задачи: нажать кнопку Добавить… и выбрать группу manager:
    ADMC. Выбор группы manager
  4. В списке Применять выбрать пункт Этот объект и все дочерние объекты.
  5. Делегировать задачи добавленному объекту: в разделе Разрешения перейти на вкладку Делегирование задач и установить отметку в поле Создание, удаление и управление учетными записями пользователей (отметки в полях Переустановить пароли пользователей и установить изменение пароля при следующем входе в систему и Чтение информации о всех пользователях будут проставлены автоматически):
    ADMC. Делегирование административных полномочий
  6. Нажать кнопку OK.
Далее можно зарегистрироваться в системе с учетной записью члена группы manager и убедиться, что пользователь имеет может создавать и удалять учётные записи, сбрасывать пароли, изменять свойства пользователей в указанной OU.

33.11.5. Делегирование полномочий на присоединение компьютеров к домену

Делегирование полномочий членам группы manager на присоединение компьютеров к домену:
  1. В контекстном меню домена выбрать пункт Свойства:
    ADMC. Контекстное меню домена
  2. В окне свойств домена перейти на вкладку Безопасность.
  3. Добавить объект, которому будут делегирована задача: нажать кнопку Добавить… и выбрать группу manager:
    ADMC. Выбор группы manager
  4. Делегировать задачи добавленному объекту: в разделе Разрешения перейти на вкладку Делегирование задач и установить отметку в поле Присоединение компьютера к домену:
    ADMC. Делегация полномочий на присоединение компьютеров в домен
  5. Нажать кнопку OK.
Далее можно зарегистрироваться в системе с учётной записью члена группы manager и убедиться, что пользователь имеет возможность, присоединять компьютеры к домену, создавать учётные записи компьютеров (в процессе присоединения).

33.12. Управление объектами парольных настроек

Объекты настроек паролей (Password Settings Object, PSO) позволяют администраторам домена переопределять параметры политики паролей домена и настраивать более точные параметры паролей для конкретных пользователей или групп пользователей. Например, для определённых пользователей можно установить требование минимальной длины пароля, ослабить ограничения сложности для других пользователей и т.д. PSO могут применяться к группам или к отдельным пользователям.

Примечание

Для работы с объектами парольных настроек необходимо предварительно включить режим расширенных возможностей: в меню Настройки отметить пункт Дополнительные возможности.
В ADMC начиная с версии 0.21.0-alt1 контейнер парольных настроек продублирован в верхний уровень дерева:
ADMC. Контейнер «Password Settings Container» на верхнем уровне дерева объектов
Просмотреть имя применяемого PSO для пользователя можно на вкладке Учетная запись свойств пользователя:
ADMC. Имя применяемого PSO

Примечание

Примененная парольная настройка отображается в атрибут пользователя/группы ms-DS-PSO-Applied.

33.12.1. Создание объекта парольных настроек

Для создания объекта парольных настроек следует в контекстном меню контейнера Password Settings Container выбрать пункт Создать объект парольных настроек:
ADMC. Контейнер «Password Settings Container»
Окно мастера создания объекта парольных настроек:
Создание объекта парольных настроек
При создании объекта парольных настроек необходимо в поле Имя указать имя объекта парольных настроек (имя должно быть уникальным на уровне домена).
В поле Приоритет можно указать приоритет политики (precedence), который определяет порядок применения политик, если к пользователю или группе применяется несколько PSO. Чем меньше значение, тем выше приоритет (например, приоритет 1 выше, чем 10).
Далее можно указать следующие параметры объекта парольных настроек:
  • Минимальная длина пароля — минимальное количество символов в пароле (по умолчанию 7);
  • Длина истории паролей — количество предыдущих паролей, которые нельзя повторно использовать (требование неповторяемости паролей) (по умолчанию 24);
  • Разрешено неудачных попыток входа — максимальное количество неудачных попыток ввода пароля до блокировки учётной записи (по умолчанию 0 — никогда не блокировать);
  • Время до сброса блокировки — интервал времени (в минутах), после которого счётчик неудачных попыток сбрасывается (по умолчанию 30);
  • Минимальный срок действия пароля — минимальное время (в днях), в течение которого пароль не может быть изменён (по умолчанию один день);
  • Максимальный срок действия пароля — максимальное время (в днях), в течение которого пароль остаётся действительным (по умолчанию 42 дня);
  • Длительность блокировки учетной записи — время (в минутах), в течение которого возможность аутентификации для пользователя, превысившего количество попыток входа, будет заблокирована (по умолчанию 30);
  • Включить требования сложности — требовать, чтобы пароль соответствовал требованиям сложности (по умолчанию включено);
  • Хранить пароли, используя обратимое шифрование — хранить пароли, используя обратимое шифрование (по умолчанию выключено).

Примечание

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

Примечание

Если при создании объекта парольных настроек отметить пункт Защитить от удаления, то для удаления данного объекта, необходимо сначала снять данную отметку в окне свойств объекта.

33.12.2. Просмотр и изменение объекта парольных настроек

Для просмотра параметров объекта парольных настроек можно дважды щелкнуть мышью по объекту парольных настроек или выбрать объект в списке Password Settings Container:
ADMC. Просмотр объекта парольных настроек
Для изменения параметров объекта парольных настроек следует нажать кнопку Изменить…, внести изменения и нажать кнопку Применить:
ADMC. Изменение объекта парольных настроек

Примечание

Изменить имя объекта парольных настроек нельзя.

33.12.3. Удаление объекта парольных настроек

Для удаления объекта парольных настроек следует в контекстном меню объекта выбрать пункт Удалить:
ADMC. Контекстное меню объекта парольных политик

Предупреждение

Если при создании объекта парольных настроек был отмечен пункт Защитить от удаления, то сразу удалить объект не получится, необходимо сначала снять данную отметку в окне свойств PSO:
ADMC. Свойства объекта парольных настроек

33.13. Управление общими папками

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

Примечание

Общие папки не создают сетевые ресурсы автоматически. Ресурс должен быть предварительно настроен на файловом сервере.
Для создания общей папки следует в контекстном меню контейнера выбрать пункт СоздатьОбщая папка.
Откроется окно мастера создания общей папки:
Создание общей папки
При создании общей папки можно указать следующие параметры (атрибуты):
  • Имя — отображаемое имя папки;
  • Фамилия — полный UNC-путь к сетевому ресурсу.

Примечание

Просмотреть содержимое общей папки на машине Windows можно в консоли управления «Active Directory — пользователи и компьютеры», выбрав в контекстном меню общей папки пункт Проводник. Откроется новое окно Проводника, с содержимым указанного сетевого ресурса.
Для управления общей папкой используется контекстное меню объекта:
Контекстное общей папки

33.14. Управление объектами групповых политик

Групповая политика (Group Policy) — это набор настроек, объединённых в объект групповой политики (GPO — Group Policy Object). Чтобы настройки GPO вступили в силу, объект необходимо связать с одним или несколькими контейнерами каталога (например, доменом или организационной единицей, OU). Любой GPO может быть связан с несколькими контейнерами, и, наоборот, один контейнер может иметь несколько привязанных GPO. GPO наследуются дочерними контейнерами. GPO, связанный с родительским OU, автоматически применяется ко всем пользователям и компьютерам в этом OU и его дочерних подразделениях.
ADMC позволяет управлять объектами групповых политик: создавать, удалять, создавать ссылки на групповые политики.
В разделе Объекты групповой политики отображаются групповые политики, привязанные к различным OU (отображается вся структура OU). Полный список всех GPO в домене доступен в разделе Все политики.
ADMC. Объекты групповой политики

Примечание

В каждом домене автоматически создаются два стандартных объекта групповой политики:
  • Default Domain Policy — применяется ко всем пользователям и компьютерам в домене;
  • Default Domain Controller Policy — применяется к контроллерам домена.
ADMC. Объекты групповой политики по умолчанию
Эти политики критически важны для безопасности и функционирования домена. Не рекомендуется изменять их без крайней необходимости.
GPO можно привязывать к домену или OU. На практике политики чаще всего привязываются к OU с конкретными пользователями или компьютерами для точечного управления.

Примечание

Редактирование настроек GPO выполняется в модуле редактирования настроек клиентской конфигурации (GPUI).

33.14.1. Создание объекта групповой политики

Создание GPO и привязка его к OU:
  1. В контекстном меню нужного контейнера выбрать пункт Создать политику и связать с этим подразделением:
    ADMC. Контекстное меню контейнера
  2. В открывшемся окне задать имя политики:
    ADMC. Создание объекта групповой политики
  3. Нажать кнопку ОК.
Создание GPO без привязки к OU:
  1. В контекстном меню папки Все политики выбрать пункт Создать политику:
    ADMC. Контекстное меню папки «Все политики»
  2. В открывшемся окне задать имя политики:
    ADMC. Создание объекта групповой политики
  3. Нажать кнопку ОК.

Примечание

Созданный GPO не будет применяться, пока не будет привязан к домену или OU.

33.14.2. Изменение объекта групповой политики

Для управления GPO используется контекстное меню объекта:
ADMC. Контекстное меню объекта групповой политики
Контекстное меню GPO в разделе Все политики:
ADMC. Контекстное меню GPO в разделе Все политики

33.14.2.1. Переименование объекта групповой политики

Переименование политики:
  1. В контекстном меню политики выбрать пункт Переименовать.
  2. В открывшемся окне ввести новое название:
    ADMC. Переименование политики
  3. Нажать кнопку ОК.

33.14.2.2. Удаление объекта групповой политики

Удаление политики:
  1. В контекстном меню политики в разделе Все политики выбрать пункт Удалить:
    ADMC. Контекстное меню объекта групповой политики
  2. Подтвердить удаление, нажав кнопку Yes (Да):
    ADMC. Удаление политики

Примечание

Если выбрать пункт Удалить в контекстном меню политики в подразделении, на которое она назначена:
ADMC. Удаление связи между политикой и подразделением
будет удалена только привязка (связь) между политикой и OU — сам объект GPO останется в домене:
ADMC. Подтверждение удаления связи между политикой и подразделением

33.14.2.3. Создание и удаление связи между политикой и подразделением

Связь между объектом групповой политики (GPO) и подразделением (OU) называется ссылкой на политику. Она определяет, где применяется GPO.
Создание связи между политикой и подразделением (создания ссылки на политику):
  1. В контекстном меню GPO выбрать пункт Добавить связь….
  2. В открывшемся окне выбрать OU, к которым нужно привязать политику:
    ADMC. Создание ссылки на политику
  3. Нажать кнопку ОК.

Примечание

Один GPO может быть связан с несколькими OU.
Удаление ссылки не удаляет сам объект GPO, а только отключает его применение к конкретному подразделению.
Удаление ссылки на объект групповой политики:
  1. Выбрать политику, которую следует изменить (в папке Все политики или в папке соответствующего OU).
  2. В контекстном меню подразделения, связь с которым нужно отключить от политики, выбрать пункт Удалить связь:
    ADMC. Удаление ссылки на политику
Удалить связь между политикой и подразделением также можно, выбрав пункт Удалить в контекстном меню политики в подразделении, на которое она назначена:
ADMC. Удаление связи между политикой и подразделением

33.14.2.4. Параметры ссылки на объект групповой политики

В ADMC можно настроить параметры ссылки на GPO:
  • опция Принудительно — запрещает переопределение этой политики нижестоящими GPO. Политика с включённой опцией отображается с красным кружком;
  • опция Отключено — временно отключает применение политики к данному подразделению. Отключённая политика отображается серым цветом.
Изменение параметров ссылки:
  1. Выбрать нужную политику.
  2. На панели результатов найти подразделение, для которого нужно изменить параметры.
  3. Включить опцию Принудительно, чтобы запретить переопределение параметров политик (см. Блокирование наследования).
  4. Включить опцию Отключено, чтобы временно отключить действие политики.
ADMC. Изменение параметров ссылки

Примечание

Если необходимо, чтобы политика перестала действовать на клиентов в данном подразделении, можно либо удалить ссылку (при этом сам объект ГП не будет удален), либо временно отключить действие политики.
Включить/отключить опции Принудительно и Отключено также можно:
  • в контекстном меню политики в подразделении:
    ADMC. Контекстное меню объекта групповой политики
  • на вкладке Привязанные политики подразделения:
    ADMC. Вкладка Привязанные политики

33.14.2.5. Редактирование настроек групповой политики

Примечание

Для возможности редактирования настроек политики на машине должен быть установлен модуль редактирования настроек клиентской конфигурации (GPUI).
Для изменения настроек политики необходимо в контекстном меню политики выбрать пункт Изменить…, будет запущен модуль редактирования настроек клиентской конфигурации, где можно изменить параметры групповой политики.
При создании GPO в базе данных автоматически создается контейнер групповой политики (Group Policy Container, GPC) — служебный объект в дереве CN=Policies,CN=System.

Примечание

Чтобы увидеть GPC в ADMC, необходимо включить расширенный режим: НастройкиДополнительные возможности.
GPC — это объект типа groupPolicyContainer. Его GUID отображается в ADMC в столбце Имя:
Контейнеры групповой политики в домене
Ключевые атрибуты объекта GPO:
  • displayName — отображаемое имя GPO;
  • gPCFileSysPath — путь к файловому шаблону политики (GPT) в формате \\<домен>\SYSVOL\<домен>\Policies\<GUID>;
  • gPCMachineExtensionNames — cписок GUID-расширений, обрабатывающих политики на стороне компьютера. Значение атрибута выглядит следующим образом: [{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{D02B1F72-3407-48AE-BA88-E8213C6761F1}], что представляет собой [{GUID CSE-расширения}{GUID расширения MMC}{GUID второго расширения MMC}][GUID-идентификаторы последующих CSE- и MMC-расширений];
  • gPCUserExtensionNames — cписок GUID-расширений для конфигурации пользователя;
  • versionNumber — номер версии GPC. Должен совпадать с номером версии GPT для корректной синхронизации;
  • flags — состояние GPO: включён (значение 0), отключена конфигурация пользователя (значение 1), отключена конфигурация компьютера (значение 2), GPO полностью отключён (значение 3):
    ADMC. Атрибуты объекта групповой политики

Примечание

Не рекомендуется вручную изменять атрибуты GPO — это может нарушить работу политик. Все изменения должны выполняться через GPUI или ADMC.

33.14.3. Блокирование наследования

Чтобы предотвратить применение групповых политик, наследуемых от вышестоящих контейнеров (например, домена или родительской OU), к объектам в текущем подразделении, необходимо заблокировать наследование.
Это можно сделать двумя способами:
  • в контекстном меню контейнера, к которому привязан объект групповой политики, установить отметку Блокировать наследование:
    Отметка «Блокировать наследование» в контекстном меню контейнера
  • в окне свойств контейнера, к которому привязан объект групповой политики, на вкладке Групповая политика установить отметку Заблокировать наследование политик:
    Окно свойств контейнер. Вкладка «Групповая политика»

Примечание

Подразделение с заблокированным наследованием отображается в дереве консоли со значком замка.
Администратор домена может запретить переопределение политик нижестоящими подразделениями с помощью опции Принудительно:
ADMC. Объекты групповой политики
Если опция Принудительно включена для GPO, политика будет применяться даже если наследование заблокировано.
Политика, находящаяся выше в иерархии (например, на уровне домена), имеет приоритет, если для неё включена опция Принудительно. Например, политика Default Domain Policy будет применяться ко всем дочерним OU, даже если они заблокировали наследование.

Примечание

Подразделение с блокированным наследованием отображается в дереве консоли со значком замка.
После установки параметра Принудительно, на значке групповой политики появится красный кружок, означающий, что для данной политики запрещено переопределение параметров.
ADMC. Отметки «Принудительно» и «Блокировать наследование»
На вкладке Наследуемые политики свойств подразделения можно увидеть, какие политики применяются к OU и откуда они наследуются (домен, родительская OU и т.д.):
ADMC. Вкладка Наследуемые политики

33.14.4. Фильтрация безопасности групповых политик

Фильтрация безопасности (Security Filtering) позволяет ограничить применение GPO только определёнными пользователями, компьютерами или группами на основе их прав доступа к объекту GPO.
По умолчанию новому GPO автоматически назначается разрешение для группы Authenticated Users. Это означает, что политика применяется ко всем аутентифицированным пользователям и компьютерам в области действия (OU, домене).
Чтобы политика применялась только к определённым объектам необходимо:
  1. В контекстном меню GPO выбрать пункт Свойства:
    ADMC. Контекстное меню групповой политики
  2. Перейти на вкладку Безопасность.
  3. У группы Authenticated Users снять разрешение на применение групповых политик (в разделе Разрешения на вкладке Расширенные снять отметку с пункта Применить групповые политики в столбце Разрешено):
    ADMC. Вкладка «Безопасность» свойства групповой политики
  4. Добавить объект, к которому будет применяться групповая политика: нажать Добавить… и выбрать нужный объект (можно выбрать пользователя, компьютер или группу). В данном примере будет добавлена группа office:
    ADMC. Добавить группу как доверенное лицо
  5. Для добавленного объекта установить разрешения Читать (вкладка Обычные) и Применить групповые политики (вкладка Расширенные).
  6. Нажать кнопку OK:
    ADMC. Разрешение на применение групповых политик

Примечание

Если выставить все разрешения, групповые политики применяться не будут.
Запрет применения политики для конкретного объекта:
  1. В контекстном меню GPO выбрать пункт Свойства:
    ADMC. Контекстное меню групповой политики
  2. Перейти на вкладку Безопасность.
  3. У группы Authenticated Users оставить разрешение на применение групповых политик (не снимать отметку с пункта Применить групповые политики в столбце Разрешено):
    ADMC. Вкладка «Безопасность» свойства групповой политики
  4. Добавить объект, к которому не будет применяться групповая политика: нажать Добавить… и выбрать нужный объект (можно выбрать пользователя, компьютер или группу). В данном примере будет добавлен компьютер EDU:
    ADMC. Добавить компьютер как доверенное лицо
  5. Для добавленного объекта установить запрет применения групповых политик (установить отметку в пункте Применить групповые политики в столбце Запрещено) и нажать кнопку Применить:
    ADMC. Запрет на применение групповых политик
  6. Нажать кнопку OK:

Примечание

Правило Запрещено имеет приоритет над Разрешено.

33.15. Добавление/Удаление UPN суффиксов

UserPrincipalName (UPN) — имя для входа пользователя в формате, аналогичном email-адресу, например, ivanov@test.alt:
  • ivanov — UPN-префикс (имя пользователя в домене);
  • test.alt — UPN-суффикс (доменная часть).
По умолчанию в качестве UPN-суффикса используется DNS-имя домена (например, test.alt). Добавление дополнительных имен доменов позволяет:
  • упростить процесс входа для пользователей;
  • использовать привычные или брендированные домены;
  • повысить удобство и безопасность при аутентификации.
Добавление и удаление альтернативных UPN-суффиксов:
  1. В контекстном меню домена выбрать пункт Изменить суффиксы UPN:
    ADMC. Контекстное меню домена
  2. В открывшемся диалоговом окне нажать кнопку Добавить…:
    ADMC. Список UPN-суффиксов домена
  3. Ввести альтернативный суффикс:
    ADMC. Новый UPN-суффикс

    Примечание

    UPN-суффикс не обязан быть действующим DNS-именем домена. Однако он должен соответствовать правилам именования DNS:
    • содержать только допустимые символы (буквы, цифры, дефисы);
    • не начинаться и не заканчиваться дефисом;
    • разделяться точками.
  4. Нажать кнопку ОК, чтобы добавить суффикс в список.
  5. Для удаления существующего суффикса необходимо выбрать его в списке и нажать кнопку Удалить:
    ADMC. Удаление UPN-суффикса

33.16. Просмотр и передача ролей FSMO

FSMO (Flexible Single-Master Operations — операции с единственным мастером) — это специальные операции в домене, которые должны выполняться только на одном контроллере домена, чтобы обеспечить целостность и согласованность данных.
В зависимости от типа роли её область действия может быть в пределах одного домена или всего леса доменов. Разные FSMO-роли могут быть распределены между несколькими контроллерами домена. Сервер, на котором выполняется роль, называется владельцем роли, а сама функция — ролью FSMO.
Для просмотра текущего владельца роли необходимо выбрать пункт меню ФайлМастера Операций. В открывшемся окне в списке слева выбрать роль, в поле Текущий мастер отобразится имя владельца:
ADMC. Просмотр текущего владельца роли
Список возможных ролей:
  1. DNS домена — Domain DNS Zone Master role;
  2. DNS леса — Forest DNS Zone Master role;
  3. PDC эмуляция — эмулятор PDC (PDC Emulator);
  4. Схема — хозяин схемы (Schema Master);
  5. Имена домена — хозяин именования доменов (Domain Naming Master);
  6. Инфраструктура — хозяин инфраструктуры (Infrastructure Master);
  7. RID распределение — хозяин RID (RID Master).
Если включена опция Редактирование политик только с подключением к PDC-Emulator, при отсутствии подключения к контроллеру домена с ролью PDC-эмулятора будут заблокированы операции с групповыми политиками (редактирование, изменение, удаление):
ADMC. Запрет редактирования групповой политики

Примечание

Эта опция повышает согласованность политик, но требует доступа к PDC-эмулятору для администрирования.
Штатная передача FSMO-роли:
  1. В окне Параметры подключения — ADMC (ФайлПараметры подключения) выбрать контроллер домена, который должен стать новым владельцем роли, и нажать кнопку ОК:
    ADMC. Выбор контроллера домена
  2. В окне Мастера Операций — ADMC (ФайлМастера Операций) выбрать роль (при этом в поле Текущий мастер будет показан текущий владелец роли, а в поле Изменить на — контроллер домена, который должен стать новым владельцем роли) и нажать кнопку Изменить:
    ADMC. Передача роли на новый контроллер домена
    Владение ролью будет передано:
    ADMC. Новый владелец роли

Примечание

Передача роли (transfer) — это штатный процедура, требующая, чтобы текущий владелец был доступен. Если сервер недоступен, используется форсированное принятие роли (seizure) — только в аварийных случаях.
FSMO-роли также отображаются в окне информации о домене (открывается при выборе корневого элемента в дереве консоли).
В столбце Хост указан текущий владелец каждой роли. Если текущий контроллер домена не является владельцем, но требуется принять роль, следует нажать кнопку Захватить.
ADMC. FSMO роли в окне информации о домене

33.17. Выбор объектов

Выбор объектов осуществляется в диалоговом окне Выбрать объекты — ADMC. Доступ к этому диалоговому окну можно получить из разных мест, например, при выборе действия Добавить в группу… в контекстном меню учётной записи пользователя.
Диалоговое окно «Выбрать объекты — ADMC»
Для выбора объекта достаточно указать класс объекта, выбрать расположение, с которого требуется начать поиск, и в поле Имя ввести имена объектов:
  1. В поле Классы, нажав кнопку Выбрать…, выбрать типы объектов, которые будут использоваться для поиска (в большинстве случаев это поле будет заполнено автоматически, в зависимости от контекста задачи).
  2. В поле Искать в выбрать объект, который будет использоваться в качестве основы для поиска.
  3. В поле Имя ввести имя объекта (можно ввести часть имени или выполнить поиск по имени для входа).
  4. Нажать кнопку Добавить для поиска объекта по названию.
  5. Если объект найден, он будет добавлен в список найденных объектов.
  6. Если объект не найден, исправить имя и повторить попытку.
  7. Если есть несколько совпадений, откроется диалоговое окно, в котором можно выбрать одно или несколько совпадений:
    ADMC. Выбор объектов из списка найденных совпадений
  8. Повторить пункты 1-7, пока не будут добавлены все объекты.
  9. Чтобы удалить объект из списка, нужно выбрать объект и нажать кнопку Удалить.
Для выбора объектов можно также использовать продвинутый поиск, который можно открыть, нажав кнопку Продвинутый.

33.18. Поиск объектов

Поиск объектов осуществляется в диалоговом окне Поиск объектов — ADMC. Доступ к этому диалоговому окну можно получить, выбрав пункт Найти… в меню Действие или в контекстном меню контейнера.
ADMC. Поиск объектов
Поиск объектов в домене возможен по разным критериям:
  • по типу и имени (простой поиск) — вкладка Упрощенный;
  • по атрибутам — вкладка Обычный;
  • в синтаксисе запросов LDAP — вкладка Продвинутый.

Примечание

В диалоговом окне, вызываемом меню ВидНастроить колонки, можно выбрать поля, которые будут отображаться в списке результатов поиска.
ADMC. Поля, отображаемые в результатах поиска

33.18.1. Простой поиск

Процедура простого поиска:
  1. В диалоговом окне Поиск объектов — ADMC выбрать вкладку Упрощенный:
    ADMC. Простой поиск
  2. В поле Классы, нажав кнопку Выбрать…, выбрать классы объектов для поиска:
    ADMC. Выбор классов объектов
  3. В поле Имя ввести имя объекта.
  4. Нажать кнопку Поиск:
    ADMC. Простой поиск

33.18.2. Обычный поиск

При использовании обычного поиска создаются фильтры, определяющие критерии поиска:
  1. В диалоговом окне Поиск объектов — ADMC выбрать вкладку Обычный:
    ADMC. Простой поиск
  2. В поле Классы, нажав кнопку Выбрать…, выбрать классы объектов для поиска:
    ADMC. Выбор классов объектов
  3. Создать фильтр:
    • в списке Класс атрибута выбрать класс атрибута;
    • в списке Атрибут выбрать атрибут (список атрибутов зависит от выбранного класса атрибутов);
    • в списке Состояние выбрать условие, которое будет использоваться для фильтра;
    • в поле Значение ввести значение условия (не для всех условий необходимо вводить значения).
  4. Нажать кнопку Добавить.
  5. Повторить пункты 2-3, чтобы добавить больше фильтров (фильтры для создания критериев поиска объединяются логическим И).
  6. Нажать кнопку Удалить, если необходимо удалить фильтр из списка.
  7. Нажать кнопку Очистить, если необходимо очистить список фильтров.
  8. Нажать кнопку Поиск:
    ADMC. Обычный поиск

33.18.3. Продвинутый поиск

Продвинутый поиск предполагает использование LDAP-фильтров.
Использование LDAP-фильтров является наиболее эффективным способом поиска объектов в AD.
Синтаксис LDAP-фильтра имеет вид:
<Фильтр>=(<Атрибут><оператор сравнения><значение>)
При наличии нескольких условий поиска фильтры можно комбинировать с помощью логических операторов.
Процедура продвинутого поиска:
  1. В диалоговом окне Поиск объектов — ADMC выбрать вкладку Продвинутый:
    ADMC. Продвинутый поиск
  2. В поле Искать в выбрать область поиска (можно воспользоваться кнопкой Обзор).
  3. Ввести LDAP-фильтр в поле Введите фильтр LDAP.
  4. Нажать кнопку Поиск:
    ADMC. Продвинутый поиск

33.19. Использование сохранённых результатов поиска

Сохранение запросов (результатов поиска) — это удобный способ сохранять и воспроизводить поиск. Сохранённые запросы позволяют создавать различные LDAP-фильтры для выборки объектов домена. С помощью сохранённых запросов можно быстро и эффективно решать задачи поиска и выборки объектов в домене по различным критериям.
При использовании сохранённых запросов администратор может выполнять групповые операции с объектами из разных OU. Например, можно выполнить массовую блокировку/разблокировку, удаление учётных записей, переименование.
Сохранённые запросы можно организовать в древовидную структуру:
ADMC. Древовидная структура сохранённых запросов
Создание папки запросов:
  1. В контекстном меню папки Сохранённые запросы или её подпапки выбрать пункт СоздатьПапка запросов:
    ADMC. Контекстное меню папки «Сохраненные запросы»
  2. В диалоговом окне Создать папку запросов — ADMC в поле Имя вести название папки, в поле Описание можно добавить описание папки:
    ADMC. Создать папку запросов
  3. Нажать кнопку ОК.
Создание запроса:
  1. В контекстном меню папки запроса выбрать пункт СоздатьЭлемент запроса:
    ADMC. Контекстное меню папки запроса
  2. В диалоговом окне создания запроса необходимо указать:
    • Имя — название запроса;
    • Описание — описание запроса;
    • Искать в — объект, который будет использоваться в качестве основы для поиска. По умолчанию поиск выполняется по всему домену. Сузить область поиска можно, нажав кнопку Обзор и выбрав контейнер;
    • Рекурсивный поиск — поиск должен включать объекты более чем одного уровня;
    ADMC. Создание запроса
  3. Нажать кнопку Изменить фильтр, чтобы создать фильтр поиска (для получения информации о том, как создавать фильтры, см. раздел Поиск объектов).
  4. После создания фильтра он будет отображаться в поле Фильтр (в формате LDAP).
  5. Нажать кнопку ОК.
При выборе сохранённого запроса, в правом окне появится список объектов, который соответствует данному запросу:
ADMC. Результат выполнения запроса
Редактирование запроса:
  1. В контекстном меню запроса выбрать пункт Изменить…:
    ADMC. Контекстное меню запроса
  2. Внести необходимые изменения.
  3. Нажать кнопку ОК.
В ADMC существует возможность переноса поисковых запросов между компьютерами (экспорт и импорт поисковых запросов).
Экспорт запроса:
  1. В контекстном меню запроса выбрать пункт Экспортировать запрос….
    ADMC. Экспорт запроса
  2. В открывшемся диалоговом окне указать название файла (<имя_файла>.json) и место назначения.
  3. Нажать кнопку Сохранить.
Импорт запроса:
  1. В контекстном меню папки, в которую будет импортирован запрос, выбрать пункт Импортировать запрос…:
    ADMC. Контекстное меню папки запросов
  2. В открывшемся диалоговом окне выбрать экспортированный файл поиска.
  3. Нажать кнопку Открыть.
Для удаления запроса или папки запросов, необходимо в контекстном меню объекта выбрать пункт Удалить.

Глава 34. Модуль редактирования настроек клиентской конфигурации (GPUI)

34.1. Команда gpui-main
34.2. Запуск GPUI для редактирования доменных политик
34.3. Выбор набора шаблонов групповых политик
34.4. Интерфейс
34.4.1. Редактирование параметров в разделе Административные шаблоны
34.4.2. Фильтрация административных шаблонов
34.4.3. Работа с предпочтениями групповых политик
34.4.4. Работа со скриптами
34.4.5. Смена языка
34.5. Редактирование групповых политик
34.5.1. Включение или выключение различных служб (сервисов systemd)
34.5.2. Управление control framework
34.5.3. Управление настройками службы Polkit
34.5.4. Политика доступа к съемным носителям
34.5.5. Управление gsettings
34.5.6. Управление настройками среды рабочего стола KDE
34.5.7. Управление пакетами
34.5.8. Экспериментальные групповые политики
34.5.9. Механизмы GPUpdate
34.5.10. Установка пароля для локального пользователя root (LAPS)
34.5.11. Управление политиками браузера Chromium
34.5.12. Управление политиками браузера Firefox
34.5.13. Управление политиками «Яндекс.Браузера»
34.5.14. Управление политиками почтового клиента Thunderbird
34.5.15. Политика замыкания
34.6. Редактирование предпочтений
34.6.1. Управление ярлыками
34.6.2. Управление каталогами
34.6.3. Управление INI-файлами
34.6.4. Управление переменными среды
34.6.5. Управление файлами
34.6.6. Управление общими каталогами
34.6.7. Подключение сетевых дисков
34.6.8. Настройка реестра
34.6.9. Указание прокси-сервера
34.6.10. Настройка периодичности запроса конфигураций
34.7. Управление logon-скриптами
34.7.1. Сценарии для входа/выхода пользователя
34.7.2. Сценарии для автозагрузки или завершения работы компьютера
34.7.3. Включение экспериментальных групповых политик
34.7.4. Файлы настроек политики
34.7.5. Диагностика проблем
Модуль редактирования настроек клиентской конфигурации (далее — GPUI) предназначен для настройки параметров объектов групповой политики (GPO), которые привязаны к организационным подразделениям (OU) в домене.
GPUI предоставляет администраторам иерархическую древовидную структуру для управления политиками. Объекты GPO, редактируемые в GPUI, связываются с OU через модуль ADMC.
Интерфейс GPUI разделён на два основных раздела:
  • конфигурация компьютера — содержит политики, определяющие поведение компьютера. Применяются при загрузке системы и во время циклов обновления групповой политики;
  • конфигурация пользователя — содержит политики, определяющие настройки пользовательской среды. Применяются при входе пользователя в систему и во время циклов обновления групповой политики.
Каждая политика в GPO может находиться в одном из трёх состояний:
  • Включено — политика активна, можно задать её параметры;
  • Отключено — политика не применяется, даже если настройки заданы;
  • Не сконфигурировано — политика не влияет на объект (по умолчанию).
GPUI —  расширяемый инструмент. Разработчики могут добавлять поддержку своих приложений, создавая настраиваемые административные шаблоны (ADMX-файлы). Эти шаблоны подключаются к GPUI и позволяют управлять параметрами приложений через групповые политики (подробнее см. Расширение возможностей ГП).

34.1. Команда gpui-main

Синтаксис команды gpui-main:
gpui-main [параметры]

Таблица 34.1. Опции команды gpui-main

Параметр
Описание
-p <путь>
Полный путь к редактируемому шаблону групповой политики (GPT)
-b <путь>
Полный путь к каталогу с ADMX-файлами
-n <имя>
Опция оставлена для совместимости с ADMC. Она ничего не делает
--log-console <уровень>
Установить уровень логирования для консоли. По умолчанию: none
--log-syslog <уровень>
Установить уровень логирования для syslog. По умолчанию: none
--log-file <уровень>
Установить уровень логирования для файла в ~/.local/share/gpui/. По умолчанию: warning
-v, --version
Вывести версию GPUI
-h, --help
Вывести справку о команде

34.2. Запуск GPUI для редактирования доменных политик

По умолчанию GPUI не редактирует никаких политик. Для того чтобы редактировать политику, GPUI нужно запустить:
  • из ADMC, выбрав в контекстном меню объекта групповой политики пункт Изменить…:
    Запуск GPUI из ADMC
  • из командной строки, указав каталог групповой политики:
    $ gpui-main -p "smb://dc1.test.alt/SysVol/test.alt/Policies/{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX}"
    
    Ключ -p позволяет указать путь к шаблону групповой политики (GPT), dc1.test.alt — имя контроллера домена, {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX} — GUID объекта GPO. Можно указывать как каталоги smb, так и локальные каталоги.

Примечание

GUID шаблона групповой политики можно посмотреть в ADMC (это дочерний контейнер Policies контейнера System), в настройках должен быть отмечен пункт Дополнительные возможности:
Контейнеры групповой политики в домене AD
Пример запуска GPUI для редактирования политики:
$ gpui-main -p "smb://dc1.test.alt/SysVol/test.alt/Policies/{2E80AFBE-BBDE-408B-B7E8-AF79E02839D6}"

34.3. Выбор набора шаблонов групповых политик

По умолчанию GPUI загружает ADMX-файлы из каталога /usr/share/PolicyDefinitions.
Чтобы использовать другой набор шаблонов, GPUI можно запустить с ключом -b:
$ gpui-main -b "/usr/share/PolicyDefinitions"
Каталог шаблонов также можно выбрать в графическом интерфейсе:
  1. Выбрать пункт меню ФайлОткрыть папку с ADMX-файлами:
    Выбор набора шаблонов групповых политик
  2. Указать каталог с нужными ADMX-файлами.

Примечание

При смене набора шаблонов GPUI перезагружает дерево политик с учётом новых ADMX-файлов.

34.4. Интерфейс

Все настройки в GPUI разделены на два раздела:
  • Компьютер (Machine) — настройки, применяемые к компьютерам;
  • Пользователь (User) — настройки, применяемые к пользователям домена.
Если политика настраивается в разделе Компьютер, она должна быть привязана к OU с компьютерами. Если политика относится к пользователям, её следует привязать к OU с пользователями. Также следует убедиться, что целевые объекты (компьютеры или пользователи) находятся в соответствующем контейнере.
Окно модуля редактирования настроек клиентской конфигурации (GPUI)
В каждом разделе доступны три подраздела:
  • Административные шаблоны (Administrative Templates) — содержит параметры конфигурации компонентов ОС и приложений. Поддерживаются шаблоны для ОС «Альт», Windows, а также сторонние ADMX-шаблоны (например, для Mozilla Firefox, Google Chrome);
  • Настройки (Preferences) — содержит дополнительный набор настроек (предпочтений). Предпочтения предоставляют расширенные возможности по управлению окружением: создание ярлыков, подключение сетевых дисков, копирование файлов и папок на компьютеры, настройка переменных среды и т.д.;
  • Настройки системы (System settings) — позволяет указать сценарии (скрипты), выполняемые при запуске и завершении работы компьютера, входе и выходе пользователя из системы.
Для быстрого поиска нужной политики используется поле Поиск…. Достаточно ввести ключевое слово (например, «фон», «пароль», «обновление»), и GPUI отфильтрует список политик.

34.4.1. Редактирование параметров в разделе Административные шаблоны

Чтобы изменить параметр политики, нужно найти нужный параметр в дереве настроек и открыть его — настройки отобразятся в правой панели:
GPUI. Настройки групповой политики
Каждый параметр в разделе Административные шаблоны может находиться в одном из трёх состояний:
  • Не сконфигурировано — политика не применяется (по умолчанию);
  • Включено — политика активна, применяется действие, указанное в описании;
  • Отключено — политика явно отключена. Применяется действие, противоположное описанному (если применимо).

Примечание

Как правило, состояния Не сконфигурировано и Отключено приводят к одинаковому результату, но механизм применения разный:
  • Не сконфигурировано — политика игнорируется;
  • Отключено — политика явно запрещает действие.
В поле Помощь для каждого параметра содержится подробные сведения о состояниях Включено, Отключено и Не сконфигурировано.
В поле Поддерживается на указаны версии ОС, для которых данная политика применима. Например, запись 10 платформа ALT как минимум означает, что политика поддерживается в дистрибутивах ОС «Альт» p10 и p11, но не работает на p9.
По умолчанию все параметры находятся в состоянии Не сконфигурировано. Чтобы изменить настройку параметра групповой политики, достаточно выбрать новое состояние и нажать кнопку ОК.
У некоторых настроек групповых политик можно задать дополнительные параметры, которые можно настроить в секции Опции. Например, чтобы установить изображение в качестве фона рабочего стола через ГП, нужно включить политику и указать путь к файлу с изображением в поле Файл:
GPUI. Установка изображения в качестве фона рабочего стола
В поле Комментарий можно добавить пояснение для ГП. Комментарий не влияет на работу GPO, но помогает при последующем сопровождении.

34.4.2. Фильтрация административных шаблонов

По умолчанию в GPUI отображаются все установленные административные шаблоны. Чтобы упростить поиск или сузить список параметров, можно настроить фильтр административных шаблонов.
Фильтр полезен, если требуется:
  • быстро найти нужный параметр политики;
  • отобразить только сконфигурированные настройки;
  • показать только те политики, которые поддерживаются на определённых платформах или приложениях.
Административные шаблоны можно фильтровать по следующим критериям:
  • состоянию настройки (сконфигурировано/не сконфигурировано);
  • ключевым словам в заголовке или тексте справки;
  • требованиям к платформам и приложениям.
GPUI. Диалог фильтров административных шаблонов

Примечание

Фильтры в GPUI — включающие, поэтому необходимо выбирать элементы, которые следует отображать, а не исключаемые элементы.

34.4.2.1. Фильтр по настроенным параметрам

Фильтр по настроенным позволяет отобразить параметры в зависимости от их состояния:
  • Любой — отображаются все параметры (по умолчанию);
  • Да — отображаются только сконфигурированные параметры (в состоянии Включено или Отключено);
  • Нет — отображаются только не сконфигурированные параметры.
Для установки фильтра по настроенным параметрам необходимо:
  1. В меню выбрать ВидФильтрРедактировать фильтры:
    GPUI. Запуск диалога фильтров административных шаблонов
  2. В открывшемся окне в списке Сконфигурирован выбрать нужное значение:
    GPUI. Фильтр по настроенным параметрам
  3. Нажать кнопку ОК, чтобы сохранить параметры фильтра.
  4. Включить фильтр: ВидФильтрВключить фильтр:
    GPUI. Включение фильтра административных шаблонов

34.4.2.2. Фильтр по ключевым словам

Фильтр по ключевым словам позволяет найти параметры по словам в заголовке или тексте справки.
Для установки фильтра по ключевым словам необходимо:
  1. В меню выбрать ВидФильтрРедактировать фильтры:
    GPUI. Запуск диалога фильтра административных шаблонов
  2. В открывшемся окне установить отметку Включить фильтр ключевых слов:
    GPUI. Включить фильтр ключевых слов
  3. Ввести одно или несколько ключевых слов в поле Фильтр слов и выбрать необходимый фильтр:
    • Содержит любое слово — показывать параметры, содержащие хотя бы одно из слов;
    • Содержит все слова — показывать параметры с упоминанием всех слов;
    • Полностью совпадает — показывать параметры с точным совпадением с фразой.
  4. Указать, где искать, установив соответствующие отметки в поле Внутри:
    • Заголовка — поиск в названии параметра;
    • Текста помощи — поиск в описании.
  5. Нажать кнопку ОК, чтобы сохранить параметры фильтра:
    GPUI. Настроенный фильтр ключевых слов
  6. Включить фильтр: ВидФильтрВключить фильтр:
    GPUI. Включить фильтр административных шаблонов
Результат применения фильтра по ключевым словам:
GPUI. Результат применения фильтра по ключевым словам

34.4.2.3. Фильтр по требованиям

Фильтр по требованиям позволяет отображать только те параметры, которые поддерживаются на выбранных платформах или приложениях.
Для установки фильтра по требованиям необходимо:
  1. В меню выбрать ВидФильтрРедактировать фильтры:
    GPUI. Запуск диалога фильтра административных шаблонов
  2. В открывшемся окне установить отметку Включить фильтр требований:
    GPUI. Включить фильтр требований
  3. В списке Выберите желаемые фильтры для платформы и приложений выбрать режим:
    • Включать настройки, которые совпадают с любой из выбранных платформ — логическое ИЛИ;
    • Включить настройки, которые совпадают со всеми выбранными платформами — логическое И.
  4. Выбрать нужные платформы:
    GPUI. Выбор платформы для фильтра
    Можно использовать кнопки:
    • Выбрать всё — отметить все элементы;
    • Очистить всё — снять все отметки.
  5. Нажать кнопку ОК, чтобы сохранить параметры фильтра.
  6. Включить фильтр: ВидФильтрВключить фильтр:
    GPUI. Включить фильтр административных шаблонов

34.4.3. Работа с предпочтениями групповых политик

GPUI позволяет настраивать следующие типы предпочтений:
  • Значки (управление ярлыками) — создание, редактирование или удаление ярлыков;
  • Окружение (управление переменными среды) — создание, редактирование или удаление переменных среды;
  • Папки (управление каталогами) — создание, редактирование или удаление каталогов;
  • Реестр — копирование параметров реестра и их применение к другим компьютерам, создание, замена или удаление параметров реестра (для машин Windows);
  • Сетевые папки (управление общими каталогами) — создание, удаление (скрытие из общего доступа) или редактирование общих ресурсов;
  • Сетевые диски (подключение сетевых дисков) — создание, редактирование или удаление сопоставленных дисков и настройка видимости всех дисков;
  • Файлы (управление файлами) — копирование, замена, удаление или изменение атрибутов файлов;
  • INI-файлы (управление INI-файлами) — добавление, замена или удаление разделов/свойств файлов параметров настройки (INI) или информации об установке (INF).
Предпочтения можно настроить как для компьютеров, так и для пользователей — в соответствующих разделах: КомпьютерНастройки и ПользовательНастройки:
GPUI. Управление предпочтениями
В одном объекте групповой политики (GPO) можно создать несколько элементов для каждого типа предпочтений.
Для создания предпочтения необходимо перейти в Компьютер/ПользовательНастройкиНастройки системы, выбрать нужный тип предпочтения, затем в контекстном меню пустой области правой панели выбрать пункт НовыйНазвание_предпочтения.
Например, для создания нового предпочтения Папки необходимо перейти в Компьютер/ПользовательНастройкиНастройки системыПапки. В контекстном меню пустой области правой панели выбрать пункт НовыйПапки.
GPUI. Создание новой политики «Папки»
Откроется окно Диалог настроек, где на вкладке Основные настройки можно задать параметры, специфичные для выбранного предпочтения (подробнее параметры настройки предпочтений рассмотрены в следующих разделах данного документа):
GPUI. Создание предпочтения — вкладка «Основные настройки»
Вкладка Общие одинакова для всех типов предпочтений и содержит следующие настройки:
  • Остановить обработку элементов в этом расширении при возникновении ошибки — при сбое элемента предпочтений обработка других элементов предпочтений в этом расширении останавливается;
  • Выполнять в контексте безопасности текущего пользователя (опция пользовательских политик);
  • Удалить элемент, если больше не применим;
  • Описание.
GPUI. Создание предпочтения — вкладка «Общие»
Для редактирования элемента предпочтения следует дважды щелкнуть мышью по элементу (или в контекстном меню предпочтения выбрать пункт Изменить элемент):
GPUI. Редактирование элемента предпочтения
Откроется окно редактирования предпочтения:
GPUI. Редактирование предпочтения «Папки»
Для удаления элемента следует в контекстном меню предпочтения выбрать пункт Удалить элемент:
GPUI. Удаление элемента предпочтения

34.4.4. Работа со скриптами

Работа со скриптами подробно описана на странице: Управление logon-скриптами.

34.4.5. Смена языка

Для того чтобы изменить язык интерфейса, необходимо в меню выбрать ВидЯзык:
GPUI. Выбор языка интерфейса

34.5. Редактирование групповых политик

34.5.1. Включение или выключение различных служб (сервисов systemd)

Данные групповые политики позволяют управлять состоянием (включением или выключением) различных служб (сервисов systemd).
Для настройки политики следует перейти в КомпьютерАдминистративные шаблоныСистема ALTСлужбыSystemd:
Список политик SystemdUnits
При выборе политики откроется диалоговое окно настройки политики:
Диалоговое окно настройки политики
Можно не задавать настройку политики, включить или отключить:
  • Не сконфигурировано — не изменять системное состояние службы;
  • Включено — перевести службу во включенное состояние (выполнить команду systemctl enable <служба>);
  • Отключено — перевести службу в состояние выключено (выполнить команду systemctl disable <служба>).

Таблица 34.2. Список служб, состояние которых можно изменить, настроив соответствующую политику в GPUI

Служба
Описание
Сервис Systemd
Агент передачи почты Postfix
Политика определяет, включен ли systemd юнит агента передачи почты Postfix
postfix.service
Графический менеджер входа в систему (lightdm)
Политика определяет, включен ли systemd юнит службы графического менеджера входа в систему
lightdm.service
Демон Upower
Политика определяет, включен ли systemd юнит Daemon Upower (управление питанием)
upower.service
Диспетчер авторизации (polkit)
Политика определяет, включен ли systemd юнит диспетчера авторизации (polkit)
polkit.service
Менеджер модема
Политика определяет, включен ли systemd юнит диспетчера модемов
ModemManager.service
Менеджер мыши в консоли
Политика определяет, включен ли sytemd юнит диспетчера мыши консоли
gpm.service
Ожидание Network Manager'ом сети при загрузке
Политика определяет, включен ли systemd юнит «Network Manager Wait Online»
NetworkManager-wait-online.service
Отображение адресов и номеров RPC
Политика определяет, включен ли systemd юнит RPC bind
rpcbind.service
Планировщик CUPS
Политика определяет, включен ли systemd юнит Service CUPS (планировщик)
org.cups.cupsd.service
Сервер frontend веб-интерфейса Alterator
Политика определяет, включен ли systemd юнит веб-сервера frotend WWW интерфейса Alterator
ahttpd.service
Серверная часть Alterator
Политика определяет, включен ли systemd юнит внутреннего сервера Alterator
alteratord.service
Сервис кеширования службы имен (nscd)
Политика определяет, включён ли systemd юнит сервиса кеширования службы имен
nscd.service
Сервис службы именования LDAP-клиента (nslcd)
Политика определяет, включен ли systemd юнит сервиса служб именования клиента LDAP
nslcd.service
Сервис Сonsolesaver SYSV
Политика определяет, включен ли systemd юнит Сonsolesaver (SYSV: этот пакет загружает конфигурацию энергосбережения консоли)
consolesaver.service
Сервис colord
Политика определяет, включен ли systemd юнит colord (сервис для управления, установки и создания цветовых профилей)
colord.service
Системный модуль kmod-static-nodes
Политика определяет, включен ли systemd юнит kmod-static-nodes (создаёт список необходимых статических узлов устройства для текущего ядра)
kmod-static-nodes.service
Системный модуль oddjobd
Политика определяет, включен ли systemd юнит oddjobd (используется для запуска привилегированных операций для непривилегированных процессов)
oddjobd.service
Служба аудита безопасности
Политика определяет, включен ли системный модуль службы аудита безопасности
auditd.service
Служба защищенного управления (sshd)
Политика определяет, включен ли systemd юнит демона сервера OpenSSH
sshd.service
Служба сетевых подключений
Политика определяет, включен ли systemd юнит службы сетевых подключений
network.service
Служба события ACPI
Политика определяет, включен ли systemd юнит системной службы событий ACPI
acpid.service
Служба учётных записей (accounts-daemon)
Политика определяет, включен ли systemd юнит службы учётных записей (accounts-daemon)
accounts-daemon.service
Служба Crond
Политика определяет, включен ли systemd юнит службы Cron
crond.service
Служба Network Manager
Политика определяет, включен ли systemd юнит «Network Manager»
NetworkManager.service
Служба PC/SC Smart Card
Политика определяет, включен ли systemd юнит службы поддержки PC/SC Smart Card
pcscd.service
Avahi mDNS/DNS-SD
Политика определяет, включен ли systemd юнит стека mDNS/DNS-SD Avahi
avahi-daemon.service
Chronyd (служба NTP)
Политика определяет, включен ли systemd юнит NTP клиента/сервера Chronyd
chronyd.service
Cpufreq-simple сервис
Политика определяет, включен ли systemd юнит службы Cpufreq-simple (загружает модули ядра, необходимые для масштабирования cpufreq)
cpufreq-simple.service
DNS-сервер BIND
Политика определяет, включен ли systemd юнит DNS-сервера (сервиса) BIND (Berkeley Internet Name Domain)
bind.service
Служба Dnsmasq
Политика определяет, включен ли systemd юнит службы Dnsmasq (облегченный DHCP и кеширующий DNS-сервер, а также TFTP-сервер для поддержки загрузки по сети)
dnsmasq.service
Kerberos 5 KDC
Политика определяет, включен ли systemd юнит Kerberos 5 KDC
krb5kdc.service
Samba NMB сервис
Политика определяет, включен ли systemd юнит сервиса Samba NMB
nmb.service
Samba SMB сервис
Политика определяет, включен ли systemd юнит сервис Samba SMB
smb.service
Samba Winbind сервис
Политика определяет, включен ли systemd юнит Samba Winbind
winbind.service
SYSV: интерфейс терминала смарт-карт
Политика определяет, включен ли systemd юнит Openct (SYSV: терминал смарт-карт)
openct.service

34.5.2. Управление control framework

Через групповые политики реализовано управление настройками control.
control — использующийся в ОС «Альт» механизм переключения между неким набором фиксированных состояний для задач, допускающих такой набор. Подсистема control используется для управления доступом к службам и позволяет переключать многие системные службы между заранее определенными состояниями.
Для настройки политики следует перейти в КомпьютерАдминистративные шаблоныСистема ALT. В этом разделе есть несколько подразделов, соответствующих категориям control:
GPUI. Политики настройки систем ALT
После выбора категории в правом окне редактора отобразится список политик:
GPUI. Список политик группы «Безопасность»
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно выбрать режим доступа для данного control:
GPUI. Выбор режима доступа для control

Таблица 34.3. Категория «Безопасность»

Политика
Control
Описание
Режимы
Выполнение программы /usr/bin/chfn
chfn
Политика позволяет контролировать поведение и права доступа к команде chfn (/usr/bin/chfn). Команда chfn может изменить полное имя пользователя, номер кабинета, номера офисного и домашнего телефона для учётной записи пользователя. Обычный пользователь может изменять поля только для своей учётной записи, с учётом ограничений в /etc/login.defs (конфигурация по умолчанию не позволяет пользователям менять свое полное имя)
  • Только root — только суперпользователь (root) может выполнить /usr/bin/chfn
  • Любой пользователь — любой пользователь может использовать команду /usr/bin/chfn
Выполнение программы /usr/bin/chage
chage
Политика позволяет контролировать доступ для выполнения программы /usr/bin/chage
  • Только root — только суперпользователь (root) может выполнить /usr/bin/chage
  • Любой пользователь — любой пользователь может просмотреть, когда ему следует сменить свой пароль, используя команду chage -l имя_пользователя
Выполнение программы /usr/bin/gpasswd
gpasswd
Определяет права на запуск инструмента /usr/bin/gpasswd
  • Любой пользователь — любой пользователь может выполнить /usr/bin/gpasswd
  • Только wheel — только члены группы «wheel» могут выполнять /usr/bin/gpasswd
  • Только root — только суперпользователь (root) может выполнить /usr/bin/gpasswd
Выполнение программы /usr/bin/groupmems
groupmems
Определяет права на выполнение программы /usr/bin/groupmems
  • Любой пользователь — любой пользователь может выполнить /usr/bin/groupmems
  • Только wheel — только члены группы «wheel» могут выполнять команду /usr/bin/groupmems
  • Только root — только суперпользователь (root) может выполнить /usr/bin/groupmems
Метод аутентификации
system-auth
Определяет метод аутентификации пользователя
  • Winbind — использовать Winbind для аутентификации;
  • SSSD — использовать метод проверки подлинности демона System Security Services
Разрешение на использование /usr/bin/chsh
chsh
Политика позволяет управлять правами доступа к команде chsh (/usr/bin/chsh). Команда chsh позволяет изменить командную оболочку (или интерпретатор командной строки), запускаемую по умолчанию при регистрации пользователя в текстовой консоли (по умолчанию используется /bin/bash). Обычный пользователь может изменить командную оболочку только для своей учётной записи (командная оболочка должна быть перечислена в файле /etc/shells). Суперпользователь может изменить настройки для любой учётной записи (могут быть указаны любые значения)
  • Только root — только суперпользователь (root) может выполнить /usr/bin/chsh
  • Все пользователи — любой пользователь может использовать команду /usr/bin/chsh
Разрешение на использование /usr/sbin/hddtemp
hddtemp
Разрешение на использование инструмента /usr/sbin/hddtemp — отслеживание температуры жёсткого диска
  • Любой пользователь — любой пользователь может выполнить /usr/sbin/hddtemp
  • Только wheel — только члены группы «wheel» могут выполнять /usr/sbin/hddtemp
  • Только root — только суперпользователь (root) может выполнить /usr/sbin/hddtemp
Разрешение на использование consolehelper
consolehelper
Определяет права доступа к инструменту consolehelper (/usr/lib/consolehelper/priv/auth), который позволяет пользователям консоли запускать системные программы, выполняя аутентификацию через PAM. Когда это возможно, аутентификация выполняется графически; в противном случае выполняется в текстовой консоли, с которой был запущен consolehelper
  • Любой пользователь — любой пользователь может использовать consolehelper;
  • Только wheel — только члены группы «wheel» могут использовать команду consolehelper;
  • Только root — только суперпользователь (root) может использовать consolehelper
Разрешения для /bin/su
su
Определяет разрешения для /bin/su
  • Любой пользователь — любой пользователь может запускать /bin/su
  • Все пользователи, кроме root — любой пользователь может запускать /bin/su, но только пользователи группы «wheel» могут повышать привилегии суперпользователя;
  • Только wheel — только пользователи из группы «wheel» могут запускать /bin/su
  • Только root — только суперпользователь (root) может запускать /bin/su
Разрешения для /usr/bin/newgrp
newgrp
Разрешение на использование инструмента /usr/bin/newgrp
  • Любой пользователь — любой пользователь может выполнить /usr/bin/newgrp
  • Только wheel — только члены группы «wheel» могут выполнять /usr/bin/newgrp
  • Только root — только суперпользователь (root) может выполнить /usr/bin/newgrp
Разрешения для /usr/bin/sudo
sudo
Определяет разрешения для /usr/bin/sudo
  • Любой пользователь — любой пользователь может запускать /usr/bin/sudo
  • Только wheel — только пользователи из группы «wheel» могут запускать /usr/bin/sudo
  • Только root — только суперпользователь (root) может запускать /usr/bin/sudo
Разрешения для /usr/bin/sudoreplay
sudoreplay
Определяет разрешения для /usr/bin/sudoreplay
  • Любой пользователь — любой пользователь может запускать /usr/bin/sudoreplay
  • Только wheel — только пользователи из группы «wheel» могут запускать /usr/bin/sudoreplay
  • Только root — только суперпользователь (root) может запускать /usr/bin/sudoreplay
Разрешения для /usr/bin/write
write
Определяет разрешения для /usr/bin/write
  • Любой пользователь — любой пользователь может запускать /usr/bin/write
  • Только root — только суперпользователь (root) может запускать /usr/bin/write
Разрешения для /usr/lib/chkpwd/tcb_chkpwd
tcb_chkpwd
Определяет разрешения для привилегированного помощника /usr/lib/chkpwd/tcb_chkpwd
  • Любой пользователь с отключенным tcb — любой пользователь может быть аутентифицирован с использованием привилегированного помощника /usr/lib/chkpwd/tcb_chkpwd когда отключена схема tcb;
  • Любой пользователь с включенным tcb — любой пользователь может аутентифицироваться с помощью привилегированного помощника /usr/lib/chkpwd/tcb_chkpwd если включена схема tcb;
  • Только root — только суперпользователь (root) может быть аутентифицирован с помощью /usr/lib/chkpwd/tcb_chkpwd
Разрешить команду sudo членам группы «wheel»
sudowheel
Эта политика разрешает или запрещает членам группы «wheel» применять команду sudo. Если политика включена, пользователи, входящие в группу «wheel», могут повысить системные привилегии через команду sudo. Если политика не сконфигурирована или отключена, пользователи, входящие в группу «wheel», не смогут применить команду sudo
  • Отключено — пользователи группы «wheel» не могут повысить привилегии через команду sudo;
  • Включено — пользователи группы «wheel» могут повысить привилегии через команду sudo
Режим передачи родительской среды в sudo
sudoers
Определяет, передаются ли переменные среды в sudo
  • Строгий — не передавать переменные окружения дочернему процессу;
  • Слабый — передать переменные окружения дочернему процессу
Создание временных каталогов
pam_mktemp
Определяет, следует ли создавать отдельные временные каталоги для пользователей
  • Отключено — отключить создание отдельных временных каталогов для пользователей;
  • Включено — включить создание отдельных временных каталогов для пользователей
Управление канонизацией имен пользователей в PAM
control pam_canonicalize_user
Политика определяет, будет ли система автоматически приводить имена пользователей к стандартному формату при аутентификации
  • Включено — введённые имена пользователей автоматически преобразуются к стандартному формату;
  • Отключено — введённые имена пользователей принимаются в исходном формате
Управление паролями с помощью passwd
passwd
Определяет политику управления паролями с помощью команды /usr/bin/passwd
  • TCB — любой пользователь может изменить свой пароль, используя /usr/bin/passwd, когда включена схема tcb;
  • Традиционный (схема tcb отключена) — любой пользователь может изменить свой пароль, используя /usr/bin/passwd, когда схема tcb отключена;
  • Только root — только суперпользователь (root) имеет право изменять пароли пользователей
Управление проверками сложности пароля
passwdqc-enforce
Политика управляет паролями для достаточной надежности пароля
  • Все — включить проверку сложности пароля для всех пользователей;
  • Только для пользователей — включить проверку сложности пароля для всех пользователей, кроме суперпользователей

Примечание

Для поддержки общих сетевых ресурсов с помощью политик на клиенте должны быть выполнены следующие условия:
  • установлен пакет samba-usershares;
  • в файле /etc/samba/smb.conf в секции [global] подключен файл /etc/samba/usershares.conf (include = /etc/samba/usershares.conf).
Подробнее см. в разделе Пользовательские общие ресурсы в Samba (Usershares).

Таблица 34.4. Категория «Службы»

Политика
Control
Описание
Режимы
Обратный поиск DNS для запросов OpenLDAP
ldap-reverse-dns-lookup
Политика определяет, разрешен ли обратный поиск DNS для запросов OpenLDAP
  • Разрешено — выполнять обратный поиск DNS для запросов OpenLDAP;
  • Не разрешено — не выполнять обратный поиск DNS для запросов OpenLDAP;
  • По умолчанию — выполнять обратный поиск DNS для запросов OpenLDAP
Поддержка аутентификации OpenSSH-клиентов через GSSAPI
ssh-gssapi-auth
Эта политика определяет функциональные возможности поддержки аутентификации OpenSSH-клиентов через GSSAPI
  • Включено — поддержка аутентификации через GSSAPI для OpenSSH-клиентов включена;
  • Отключено — поддержка аутентификации через GSSAPI для OpenSSH-клиентов отключена
Поддержка SFTP на сервере OpenSSH
sftp
Политика определяет поддержку SFTP на сервере OpenSSH
  • Включено — включить поддержку SFTP на сервере OpenSSH;
  • Отключено — отключить поддержку SFTP на сервере OpenSSH
Права доступа и поведение очереди заданий /usr/bin/at
at
Политика позволяет контролировать поведение и права доступа для запуска очереди заданий (права доступа для запуска /usr/bin/at)
  • Все пользователи — всем пользователям разрешено запускать /usr/bin/at
  • Только root — только суперпользователь (root) может запускать /usr/bin/at
  • Режим совместимости — режим «atdaemon» (не должен использоваться)
Проверка сертификата при установлении соединений TLS OpenLDAP
ldap-tls-cert-check
Политика определяет режим проверки сертификата при установке TLS соединений OpenLDAP
  • По умолчанию — установить соединение только с правильным сертификатом;
  • Никогда — не выполнять никаких проверок;
  • Разрешить — установить соединение, даже если сертификат отсутствует или неверный;
  • Пробовать — установить соединение, если нет сертификата или с действующим сертификатом;
  • Требовать — установить соединение только с правильным сертификатом
Разрешение на использование crontab
crontab
Политика определяет права доступа к инструменту crontab (/usr/bin/crontab)
  • Любой пользователь — любой пользователь может использовать /usr/bin/crontab
  • Только root — только суперпользователь (root) может использовать /usr/bin/crontab
Разрешения для /usr/sbin/postqueue
postqueue
Определяет разрешения для /usr/sbin/postqueue
  • Любой пользователь — любому пользователю разрешено запускать /usr/sbin/postqueue
  • Группа mailadm — пользователям из группы «mailadm» разрешено запускать /usr/sbin/postqueue
  • Только root — только суперпользователю (root) разрешено запускать /usr/sbin/postqueue
Режим демона NTP Chrony
chrony
Политика определяет режим работы (конфигурацию) демона Chrony, который реализует функции сетевого протокола времени
  • Сервер — в файл конфигурации будет добавлена директива «allow all»;
  • Клиент — директива «allow» в файле конфигурации демона будет закомментирована
Режим работы Postfix MTA
postfix
Политика определяет режим работы MTA Postfix (почтовый транспортный агент)
  • Локальный (отключен) — Postfix MTA отключен;
  • Сервер (фильтры отключены) — Postfix MTA включен без почтовых фильтров;
  • Фильтр — Postfix MTA включен с почтовыми фильтрами
Режим работы Rpcbind
rpcbind
Политика определяет режим работы rpcbind (/sbin/rpcbind)
  • Сервер — rpcbind будет прослушивать входящие соединения из сети;
  • Локальный — rpcbind будет принимать только локальные запросы
Режим CUPS
cups
Политика определяет поведение CUPS
  • Внешний интерфейс IPP — внешний интерфейс IPP доступен для пользователя;
  • Только локальные утилиты — только локальные утилиты могут работать с CUPS
Samba опции
Гостевой доступ к общим каталогам
smb-conf-usershare-allow-guests
Политика управляет возможностью предоставления гостевого доступа общему ресурсу.
Данная политика управляет параметром usershare allow guests в файле /etc/samba/usershares.conf
  • Включено — разрешить предоставление гостевого доступа к общему ресурсу; разрешить создание общих каталогов с параметром доступа без авторизации (usershare allow guests = yes);
  • Отключено — запретить предоставление гостевого доступа к общему ресурсу; запретить создание общих каталогов с параметром доступа без авторизации (usershare allow guests = no)
Доступ к общим каталогам других пользователей
smb-conf-usershare-owner-only
Политика управляет правом пользователя на предоставление общего доступа или доступ к каталогу, если пользователь не является владельцем этого каталога.
Данная политика управляет параметром usershare owner only в файле /etc/samba/usershares.conf
  • Включено — запретить предоставление общего доступа не владельцу каталога; запретить доступ к общим каталогам пользователей, без проверки владельца каталога (usershare owner only = yes);
  • Отключено — разрешить предоставление общего доступа не владельцу каталога; разрешить доступ к общим каталогам пользователей, без проверки владельца каталога (usershare owner only = no)
Доступ членам группы «sambashare» к управлению общими каталогами
role-sambashare
Политика управляет разрешением членам группы «sambashare» управлять общими каталогами.
Конфигурации пользовательских общих ресурсов расположены в каталоге /var/lib/samba/usershares, права на запись в котором имеют члены группы «usershares». Данная политика позволяет расширить привилегии членов группы «sambashare», добавляя их в группу «usershares»
  • Включено — разрешить членам группы «sambashare» управлять общими каталогами;
  • Отключено — запретить членам группы «sambashare» управлять общими каталогами
Доступ членам группы «users» к управлению общими каталогами
role-usershares
Политика управляет разрешением членам группы «users» управлять общими каталогами.
Конфигурации пользовательских общих ресурсов расположены в каталоге /var/lib/samba/usershares, права на запись в котором имеют члены группы «usershares». Данная политика позволяет расширить привилегии членов группы «users», добавляя их в группу «usershares»
  • Включено — разрешить членам группы «users» управлять общими каталогами;
  • Отключено — запретить членам группы «users» управлять общими каталогами. Данный параметр также влияет на разрешение управления общими каталогами через настройку предпочтений
Запрет на создание общих ресурсов в системных каталогах
smb-conf-usershare-deny-list
Данная политика управляет параметром usershare prefix deny list в файле /etc/samba/usershares.conf — открывая или закрывая комментарием этот параметр.
Параметр usershare prefix deny list определяет каталоги в корневом каталоге (/), в которых пользователю запрещено создавать общие каталоги. Если абсолютный путь к общему каталогу пользователя начинается с одного из перечисленных каталогов, то доступ к нему будет запрещен. Таким образом ограничивается список каталогов, в которых возможно создавать общие пользовательские каталоги. По умолчанию в параметре usershare prefix deny list заданы каталоги: /etc, /dev, /sys, /proc.
Если настроен список запрещенных каталогов usershare prefix deny list и список разрешенных каталогов usershare prefix allow list, сначала обрабатывается список запрета, а затем уже список разрешений
  • Включено — включить список запрещенных каталогов (параметр usershare prefix deny list будет раскомментирован);
  • Отключено — отключить список запрещенных каталогов (параметр usershare prefix deny list будет закомментирован)
Разрешение на создание общих ресурсов в системных каталогах
smb-conf-usershare-allow-list
Данная политика управляет параметром usershare prefix allow list в файле /etc/samba/usershares.conf — открывая или закрывая комментарием этот параметр.
Параметр usershare prefix allow list определяет каталоги в корневом каталоге (/), в которых пользователю разрешено создавать общие каталоги. Если абсолютный путь к общему каталогу пользователя не начинается с одного из перечисленных каталогов, то доступ к нему будет запрещен. Таким образом ограничивается список каталогов, в которых возможно создавать общие пользовательские каталоги. По умолчанию в параметре usershare prefix allow list заданы каталоги: /home, /srv, /mnt, /media, /var.
Если настроен список запрещенных каталогов usershare prefix deny list, и список разрешенных каталогов usershare prefix allow list, сначала обрабатывается список запрета, а затем уже список разрешений
  • Включено — включить список разрешенных каталогов (параметр usershare prefix allow list будет раскомментирован);
  • Отключено — отключить список разрешенных каталогов (параметр usershare prefix allow list будет закомментирован)
Разрешение на создание пользовательских общих каталогов
smb-conf-usershare
Политика управляет возможностью создания пользовательских общих каталогов на компьютере.
Данная политика управляет параметром usershare max shares в файле /etc/samba/usershares.conf, который устанавливает предельное число общих каталогов
  • Включено — включить возможность создания и использования общих каталогов пользователей (usershare max shares = 100);
  • Отключено — отключить возможность создания и использования общих каталогов пользователей (usershare max shares = 0)
SSHD опции
Аутентификация по паролю на сервере OpenSSH
sshd-password-auth
Эта политика включает поддержку аутентификации по паролю на сервере OpenSSH
  • Включено — поддержка аутентификации по паролю на сервере OpenSSH включена;
  • Отключено — поддержка аутентификации по паролю на сервере OpenSSH отключена
Аутентификация суперпользователя на сервере OpenSSH
sshd-permit-root-login
Эта политика определяет режимы аутентификации для суперпользователя (root) на сервере OpenSSH
  • Только без пароля — суперпользователю разрешена только беспарольная аутентификация на сервере OpenSSH;
  • Разрешено — суперпользователю разрешена аутентификация на сервере OpenSSH;
  • Не разрешено — суперпользователю запрещена аутентификация на сервере OpenSSH;
  • По умолчанию — сбросить режим аутентификации для суперпользователя на значение по умолчанию в пакете
Группы для контроля доступа к серверу OpenSSH
sshd-allow-groups-list
Эта политика определяет, какие группы входят в список разрешенных для службы удаленного доступа к серверу OpenSSH
  • Все пользователи — разрешить доступ к серверу OpenSSH для групп «wheel» и «users»;
  • Группы wheel и remote — разрешить доступ к серверу OpenSSH для групп администраторов и пользователей удалённого доступа («wheel» и «remote»);
  • Только wheel — разрешить доступ к серверу OpenSSH только для группы администраторов («wheel»);
  • Только remote — разрешить доступ к серверу OpenSSH только для группы «remote»
Контроль доступа по группам к серверу OpenSSH
ssh-gssapi-auth
Эта политика включает в службе удаленного доступа OpenSSH контроль доступа по списку разрешенных групп
  • Включено — контроль доступа по группам для службы удаленного доступа OpenSSH включен;
  • Отключено — контроль доступа по группам для службы удаленного доступа OpenSSH отключен
Поддержка GSSAPI-аутентификации на сервере OpenSSH
sshd-gssapi-auth
Эта политика включает поддержку аутентификации с использованием GSSAPI на сервере OpenSSH
  • Включено — поддержка GSSAPI на сервере OpenSSH включена;
  • Отключено — поддержка GSSAPI на сервере OpenSSH отключена
SSSD опции
Игнорирование политик при недоступности GPT
sssd-ad-gpo-ignore-unreadable
Эта настройка определяет будут ли проигнорированы правила управления доступом в SSSD основанные на групповых политиках, если недоступен какой-либо шаблон (GPT) объекта групповой политики (GPO)
  • Включить — игнорировать правила управления доступом через групповые политики, если шаблоны групповых политик не доступны для SSSD;
  • Отключить — запретить доступ пользователям SSSD AD, которым назначены групповые политики, если шаблоны групповых политик не доступны;
  • По умолчанию — настройка игнорирования политик, при недоступности шаблонов групповых политик сброшена на значение по умолчанию в пакете
Контроль доступа в SSSD через групповые политики
sssd-ad-gpo-access-control
Эта политика определяет в каком режиме будет осуществляться контроль доступа в SSSD основанный на групповых политиках Active Directory (GPO)
  • Принудительный режим — правила управления доступом в SSSD основанные на GPO выполняются, ведётся логирование;
  • Разрешающий режим — правила управления доступом в SSSD основанные на GPO не выполняются, ведётся только логирование. Такой режим необходим администратору, чтобы оценить как срабатывают новые правила;
  • Отключить — правила управления доступом в SSSD основанные на GPO не логируются и не выполняются;
  • По умолчанию — настройка контроля доступом в SSSD основанное на GPO сброшена на значение по умолчанию в пакете
Кеширование учётных данных пользователей
sssd-cache-credentials
Эта политика определяет, будут ли учётные данные удалённых пользователей сохраняться в локальном кеше SSSD
  • Включить — сохранение в локальном кеше SSSD учётных данных пользователей включено;
  • Отключить — сохранение в локальном кеше SSSD учётных данных пользователей отключено;
  • По умолчанию — настройка сохранения в локальном кеше SSSD учётных данных пользователей сброшена на значение по умолчанию в пакете
Обновление DNS-записей обратной зоны
sssd-dyndns-update-ptr
Данная политика определяет будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG). Эта политика работает только если включено «Обновление DNS-записей прямой зоны»
  • Включить — автоматическое обновление DNS-записи обратной зоны через SSSD включено;
  • Отключить — автоматическое обновление DNS-записи обратной зоны через SSSD отключено;
  • По умолчанию — настройка автоматического обновления DNS-записи обратной зоны задана по умолчанию в пакете
Обновление DNS-записей прямой зоны
sssd-dyndns-update
Эта политика позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) с IP-адресом клиента через SSSD
  • Включить — автоматическое обновление DNS-записи клиента через SSSD включено;
  • Отключить — автоматическое обновление DNS-записи клиента через SSSD отключено;
  • По умолчанию — настройка автоматического обновления DNS-записи клиента через SSSD задана по умолчанию в пакете
Режим привилегий службы SSSD
sssd-drop-privileges
Эта политика позволяет сбросить права службы SSSD, чтобы избежать работы от имени суперпользователя (root)
  • Привилегированный — служба SSSD запущена от имени привилегированного суперпользователя (root);
  • Непривилегированный — служба SSSD запущена от имени непривилегированного пользователя (_sssd);
  • По умолчанию — режим привилегий службы SSSD задан по умолчанию в пакете

Таблица 34.5. Категория «Сетевые приложения»

Политика
Control
Описание
Режимы
Разрешение на использование /usr/bin/mtr
mtr
Разрешение на использование сетевого инструмента /usr/bin/mtr
  • Любой пользователь — любой пользователь может выполнить /usr/bin/mtr
  • Группа netadmin — только члены группы «netadmin» могут выполнять /usr/bin/mtr
  • Только root — только суперпользователь (root) может выполнить /usr/bin/mtr
Разрешения для /usr/bin/ping
ping
Эта политика определяет разрешения для /usr/bin/ping
  • Любой пользователь — любой пользователь может запускать /usr/bin/ping
  • Группа netadmin — пользователям из группы «netadmin» разрешено запускать /usr/bin/ping
  • Только root — только суперпользователь (root) может запускать /usr/bin/ping
  • Любой пользователь (в контейнерах) — любой пользователь может запускать /usr/bin/ping (в контейнерах);
  • Группа netadmin (в контейнерах) — пользователям из группы «netadmin» разрешено запускать /usr/bin/ping (в контейнерах)
Разрешения для /usr/sbin/pppd
ppp
Эта политика определяет разрешения для /usr/sbin/pppd
  • Только root — только суперпользователю (root) разрешено запускать /usr/sbin/pppd
  • Традиционный — любой пользователь имеет право запустить /usr/sbin/pppd без повышения привилегий;
  • Группа uucp — пользователям из группы «uucp» имеют право запускать /usr/sbin/pppd с правами суперпользователя;
  • Любой пользователь — любой пользователь имеет право запускать /usr/sbin/pppd с правами суперпользователя
Разрешения для wireshark-capture (dumpcap)
wireshark-capture
Эта политика определяет функциональные возможности (режимы) разрешения для захвата wireshark (/usr/bin/dumpcap)
  • Любой пользователь — любой пользователь имеет право запустить /usr/bin/dumpcap, захват трафика включен;
  • Любой пользователь, без захвата трафика — любой пользователь имеет право запустить /usr/bin/dumpcap, захват трафика отключен;
  • Группа netadmin — пользователям из группы «netadmin» имеют право запускать /usr/bin/dumpcap
  • Только root — только суперпользователь (root) может запускать /usr/bin/dumpcap

Таблица 34.6. Категория «Приложения для CD/DVD»

Политика
Control
Описание
Режимы
Разрешение на использование /usr/bin/dvd-ram-control
dvd-ram-control
Эта политика определяет права доступа к /usr/bin/dvd-ram-control
  • Только cdwriter — только члены группы «cdwriter» могут выполнять /usr/bin/dvd-ram-control
  • Только root — только суперпользователь (root) может выполнять /usr/bin/dvd-ram-control
  • Режим совместимости — режим совместимости, не должен использоваться
Разрешения на использование /usr/bin/dvd+rw-booktype
dvd+rw-booktype
Эта политика определяет права доступа к /usr/bin/dvd+rw-booktype
  • Только cdwriter — только члены группы «cdwriter» могут выполнять /usr/bin/dvd+rw-booktype
  • Только root — только суперпользователь (root) может выполнять /usr/bin/dvd+rw-booktype
  • Режим совместимости — режим совместимости, не должен использоваться
Разрешения на использование /usr/bin/dvd+rw-format
dvd+rw-format
Эта политика определяет права доступа к /usr/bin/dvd+rw-format
  • Только cdwriter — только члены группы «cdwriter» могут выполнять /usr/bin/dvd+rw-format
  • Только root — только суперпользователь (root) может выполнять /usr/bin/dvd+rw-format
  • Режим совместимости — режим совместимости, не должен использоваться
Разрешения на использование /usr/bin/dvd+rw-mediainfo
dvd+rw-mediainfo
Эта политика определяет права доступа к /usr/bin/dvd+rw-mediainfo
  • Только cdwriter — только члены группы «cdwriter» могут выполнять /usr/bin/dvd+rw-mediainfo
  • Только root — только суперпользователь (root) может выполнять /usr/bin/dvd+rw-mediainfo
  • Режим совместимости — режим совместимости, не должен использоваться
Разрешения на использование /usr/bin/growisofs
growisofs
Эта политика определяет права на использование инструмента /usr/bin/growisofs
  • Только cdwriter — только члены группы «cdwriter» могут выполнять /usr/bin/growisofs
  • Только root — только суперпользователь (root) может выполнять /usr/bin/growisofs
  • Режим совместимости — режим совместимости, не должен использоваться

Таблица 34.7. Категория «Монтирование»

Политика
Control
Описание
Режимы
Доступ к инструментам FUSE
fusermount
Эта политика определяет права доступа для монтирования файловой системы FUSE (выполнение программ /usr/bin/fusermount и /usr/bin/fusermount3)
  • Любой пользователь — любой пользователь может выполнить /usr/bin/fusermount и /usr/bin/fusermount3
  • Только fuse — только члены группы «fuse» могут выполнять /usr/bin/fusermount и /usr/bin/fusermount3
  • Только wheel — только члены группы «wheel» могут выполнять /usr/bin/fusermount и /usr/bin/fusermount3
  • Только root — только суперпользователь (root) может выполнить /usr/bin/fusermount и /usr/bin/fusermount3
Разрешения для /bin/mount и /bin/umount
mount
Эта политика определяет разрешения для /bin/mount и /bin/umount
  • Любой пользователь — любому пользователю разрешено запускать /bin/mount и /bin/umount
  • Группа wheel — пользователям из группы «wheel» разрешено запускать /bin/mount и /bin/umount
  • Непривилегированный пользователь — любой пользователь может запускать /bin/mount и /bin/umount для непривилегированных действий (не от имени root)
  • Только root — только суперпользователь (root) может запускать /bin/mount и /bin/umount
Разрешения для /sbin/mount.nfs
nfsmount
Эта политика определяет разрешения для /sbin/mount.nfs
  • Любой пользователь — любому пользователю разрешено запускать /sbin/mount.nfs
  • Только wheel — пользователям из группы «wheel» разрешено запускать /sbin/mount.nfs
  • Только root — только суперпользователю (root) может запускать /sbin/mount.nfs
Правила подключения USB-накопителей
udisks2
Эта политика определяет правила подключения USB-накопителей
  • По умолчанию — подключить накопитель индивидуально (/run/media/$user/) для каждого пользователя;
  • Общий — подключить накопитель к общедоступной точке (/media/)

Таблица 34.8. Категория «Виртуализация»

Политика
Control
Описание
Режимы
Разрешения для VirtualBox
virtualbox
Эта политика определяет разрешения для VirtualBox
  • Любой пользователь — любому пользователю разрешено использовать VirtualBox;
  • Группа vboxusers — пользователям из группы «vboxusers» разрешено использовать VirtualBox;
  • Только root — только суперпользователю (root) разрешено использовать VirtualBox

Таблица 34.9. Категория «Графическая подсистема»

Политика
Control
Описание
Режимы
Разрешения для Xorg
xorg-server
Эта политика определяет разрешения для Xorg (/usr/bin/Xorg)
  • Любой пользователь — любому пользователю разрешено запускать /usr/bin/Xorg
  • Группа xgrp — пользователям группы «xgrp» разрешено запускать /usr/bin/Xorg
  • Только root — только суперпользователь (root) может запускать /usr/bin/Xorg
Cписок пользователей в greeter (LightDM)
lightdm-greeter-hide-users
Эта политика определяет, будет ли показан список всех пользователей при входе в систему с помощью LightDM (в greeter — на экране приветствия/входа в систему LightDM) или нет
  • Показать — показать список доступных пользователей в greeter;
  • Скрыть — не перечислять всех пользователей в greeter
Стандартные каталоги в home
xdg-user-dirs
Эта политика определяет, работает ли функция стандартных каталогов (Документы, Загрузки, Изображения и т.д.) xdg-user-dirs в домашнем каталоге (/home) пользователя
  • Отключено — функция сохранения списка пользовательских каталогов отключена;
  • Группа vboxusers — функция сохранения списка пользовательских каталогов включена

34.5.3. Управление настройками службы Polkit

Через групповые политики реализовано управление настройками службы Polkit (PolicyKit).
В настоящий момент реализованы следующие настройки:
Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTПравила Polkit. В этом разделе есть несколько подразделов:
GPUI. Список разделов Polkit
При выборе раздела в правом окне редактора отобразится список политик:
GPUI. Список политик PackageKit
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки ограничения Polkit
Можно не задавать настройку политики, включить или отключить. Если политика находится в состоянии Отключено/Не сконфигурировано ограничения определяются системными параметрами. Если выбрать параметр Включено, в разделе Опции в выпадающем списке можно будет выбрать вариант ограничения:
GPUI. Настройка ограничения Polkit
Если выбран параметр Включено, для каждой из политик Polkit доступны следующие ограничения:
  • No — установить ограничение с запретом действия (пользователю не разрешено выполнять действие);
  • Yes — снять ограничение (пользователь может выполнять действие без какой-либо аутентификации);
  • Auth_self — пользователь должен ввести свой пароль для аутентификации. Следует обратить внимание, что этого уровня ограничения недостаточно для большинства применений в многопользовательских системах, обычно рекомендуется ограничение Auth_admin;
  • Auth_admin — пользователь должен ввести пароль администратора при каждом запросе. Требуется аутентификация пользователя с правами администратора;
  • Auth_self_keep — подобно Auth_self, но авторизация сохраняется в течение короткого периода времени (например, пять минут). Следует обратить внимание, что этого уровня ограничения недостаточно для большинства применений в многопользовательских системах, обычно рекомендуется ограничение Auth_admin_keep;
  • Auth_admin_keep — аналогично Auth_admin, но авторизация сохраняется в течение короткого периода времени (например, пять минут).

Примечание

Администратор — в ОС «Альт» определён в правиле /etc/polkit-1/rules.d/50-default.rules:
polkit.addAdminRule(function(action, subject) {
        return ["unix-group:wheel"];
});
По умолчанию запрашивается пароль пользователя, находящегося в группе wheel.
Для машинной политики создается файл правил 49-alt_group_policy_permissions.rules, для пользовательской политики — 48-alt_group_policy_permissions_user.<USERNAME>.rules. Правила для пользовательской политики обрабатываются до правил для машинной политики. У машинных политик имеются блокировки (параметр Блокировать), при установке которых машинные политики становятся приоритетнее пользовательских (создается файл правил 47-alt_group_policy_permissions.rules).

Таблица 34.10. Ограничения Accounts

Политика
Описание
Правило Polkitd для службы Accounts (org.freedesktop.accounts)
Ограничение возможности изменения конфигурации экрана входа в систему
Данная политика управляет ограничением возможности изменения конфигурации экрана входа в систему
set-login-option
Ограничение возможности изменения собственного пароля пользователя
Данная политика управляет ограничением возможности изменения собственного пароля пользователя
change-own-password
Ограничение возможности изменения собственных пользовательских данных
Данная политика управляет ограничением возможности изменения собственных пользовательских данных
change-own-user-data
Ограничение возможности управления учетными записями пользователей
Данная политика управляет ограничением возможности управления учетными записями пользователей
user-administration

Таблица 34.11. Ограничения ColorManager

Политика
Описание
Правило Polkitd
Ограничение возможности изменения цветового профиля
Политика ограничивает возможность изменения цветового профиля
org.freedesktop.color-manager.modify-profile
Ограничение возможности изменения цветовых параметров для устройства
Политика ограничивает возможность изменения цветовых параметров для устройства
org.freedesktop.color-manager.modify-device
Ограничение возможности использования цветового датчика
Политика ограничивает возможность использования цветового датчика
org.freedesktop.color-manager.sensor-lock
Ограничение возможности создания цветового профиля
Политика ограничивает возможность создания цветового профиля
org.freedesktop.color-manager.create-profile
Ограничение возможности создания цветоуправляемого устройства
Политика управляет ограничением возможности создания цветоуправляемого устройства
org.freedesktop.color-manager.create-device
Ограничение возможности удаления цветового профиля
Политика ограничивает возможность удаления цветового профиля
org.freedesktop.color-manager.delete-profile
Ограничение возможности удаления цветоуправляемого устройства
Политика ограничивает возможность удаления цветоуправляемого устройства
org.freedesktop.color-manager.delete-device
Ограничение возможности установки цветовых профилей в системный каталог
Политика ограничивает возможность установки цветовых профилей в системный каталог
org.freedesktop.color-manager.install-system-wide
Ограничение возможности временной блокировки цветового профиля устройства
Политика управляет ограничением возможности временной блокировки цветового профиля устройства.
Метод device-inhibit утилиты colormgr блокирует цветовой профиль для применения к устройству. Блокировка устанавливается на время (в секундах). При параметре timeout равным «0», применение цветового профиля к устройству будет заблокировано «навсегда», до прекращения работы утилиты colormgr. Polkit позволяет ограничить доступ пользователя к данному методу.
org.freedesktop.color-manager.device-inhibit

Таблица 34.12. Ограничения DisplayManager

Политика
Описание
Правило Polkitd для службы DisplayManager
Ограничение доступа к своей учетной записи
Данная политика управляет ограничением возможности доступа к своей учетной записи
org.freedesktop.DisplayManager.AccountsService.ModifyOwn
Ограничение доступа к списку учетных записей пользователей
Данная политика управляет ограничением возможности доступа к списку учетных записей пользователей
org.freedesktop.DisplayManager.AccountsService.ModifyAny
Ограничение чтения списка учетных записей пользователей
Данная политика управляет ограничением возможности чтения списка учетных записей пользователей
org.freedesktop.DisplayManager.AccountsService.ReadAny

Таблица 34.13. Ограничения HostName

Политика
Описание
Правило Polkitd для HostName
Ограничение возможности установки имени хоста
Данная политика управляет ограничением возможности установки имени хоста
org.freedesktop.hostname1.set-hostname
Ограничение возможности установки информации о машине
Данная политика управляет ограничением возможности установки информации о машине
org.freedesktop.hostname1.set-machine-info
Ограничение возможности установки статического имени хоста
Данная политика управляет ограничением возможности установки статического имени хоста
org.freedesktop.hostname1.set-static-hostname

Таблица 34.14. Ограничения для работы с токенами и смарт-картами

Политика
Описание
Правило Polkitd
Ограничение возможности доступа к демону PC/SC
Данная политика управляет ограничением возможности доступа к демону PC/SC и регулирует работу с токенами
org.debian.pcsc-lite.access_pcsc
Ограничение возможности доступа к смарт-картам
Данная политика управляет ограничением возможности доступа к смарт-картам
org.debian.pcsc-lite.access_card

Таблица 34.15. Ограничения службы Login

Политика
Описание
Правило Polkitd
Ограничение возможности блокировки или разблокировки экрана активных сеансов
Политика ограничивает возможность блокировки или разблокировки экрана активных сеансов
org.freedesktop.login1.lock-sessions
Ограничение возможности выключения питания системы
Политика ограничивает возможность выключения питания системы
org.freedesktop.login1.power-off
Ограничение возможности выключения системы, когда приложение запрещает это действие
Политика ограничивает возможность выключения системы, когда приложение запрещает это действие
org.freedesktop.login1.power-off-ignore-inhibit
Ограничение возможности выключения системы, при наличии активных сеансов других пользователей
Политика ограничивает возможность выключения системы, при наличии активных сеансов других пользователей
org.freedesktop.login1.power-off-multiple-sessions
Ограничение возможности изменения сеанса виртуального терминала
Политика управляет ограничением возможности изменить сеанс виртуального терминала
org.freedesktop.login1.chvt
Ограничение возможности остановки системы
Политика ограничивает возможность остановки системы
org.freedesktop.login1.halt
Ограничение возможности остановки системы, пока приложение запрещает это действие
Политика ограничивает возможность остановки системы, пока приложение запрещает это действие
org.freedesktop.login1.halt-ignore-inhibit
Ограничение возможности остановки системы, при наличии активных сеансов других пользователей
Политика ограничивает возможность остановки системы, при наличии активных сеансов других пользователей
org.freedesktop.login1.halt-multiple-sessions
Ограничение возможности очистки устройства в месте привязки (изменение способа подключения устройств к рабочим местам)
Политика управляет ограничением возможности очистки устройства в месте привязки (изменение способа подключения устройств к рабочим местам)
org.freedesktop.login1.flush-devices
Ограничение возможности перевода системы в спящий режим
Политика ограничивает возможность перевода системы в спящий режим
org.freedesktop.login1.hibernate
Ограничение возможности перевода системы в спящий режим, пока приложение препятствует этому
Политика ограничивает возможность перевода системы в спящий режим, пока приложение препятствует этому
org.freedesktop.login1.hibernate-ignore-inhibit
Ограничение возможности перевода системы в спящий режим, при наличии активных сеансов других пользователей
Политика ограничивает возможность перевода системы в спящий режим, при наличии активных сеансов других пользователей
org.freedesktop.login1.hibernate-multiple-sessions
Ограничение возможности перезагрузки системы
Политика ограничивает возможность перезагрузки системы
org.freedesktop.login1.reboot
Ограничение возможности перезагрузки системы, когда приложение препятствует этому действию
Политика ограничивает возможность перезагрузки системы, когда приложение препятствует этому действию
org.freedesktop.login1.reboot-ignore-inhibit
Ограничение возможности перезагрузки системы, при наличии активных сеансов других пользователей
Политика ограничивает возможность перезагрузки системы, при наличии активных сеансов других пользователей
org.freedesktop.login1.reboot-multiple-sessions
Ограничение возможности приложениям блокировать выключение системы
Политика ограничивает возможность приложениям блокировать выключение системы
org.freedesktop.login1.inhibit-block-shutdown
Ограничение возможности приложениям запрещать автоматическое приостановление работы системы
Политика ограничивает возможность приложениям запрещать автоматическое приостановление работы системы
org.freedesktop.login1.inhibit-block-idle
Ограничение возможности приложениям запрещать низкоуровневую обработку аппаратного ключа гибернации (энергосбережения) системы
Политика ограничивает возможность приложениям запрещать низкоуровневую обработку аппаратного ключа гибернации (энергосбережения) системы
org.freedesktop.login1.inhibit-handle-hibernate-key
Ограничение возможности приложениям запрещать низкоуровневую обработку аппаратного переключателя крышки (устройства)
Политика ограничивает возможность приложениям запрещать низкоуровневую обработку аппаратного переключателя крышки (устройства)
org.freedesktop.login1.inhibit-handle-lid-switch
Ограничение возможности приложениям запрещать низкоуровневую обработку аппаратной клавиши перезагрузки системы
Политика ограничивает возможность приложениям запрещать низкоуровневую обработку аппаратной клавиши перезагрузки системы
org.freedesktop.login1.inhibit-handle-reboot-key
Ограничение возможности приложениям запрещать низкоуровневую обработку аппаратной клавиши питания системы
Политика ограничивает возможность приложениям запрещать низкоуровневую обработку аппаратной клавиши питания системы
org.freedesktop.login1.inhibit-handle-power-key
Ограничение возможности приложениям запрещать низкоуровневую обработку аппаратной клавиши приостановки системы
Политика ограничивает возможность приложениям запрещать низкоуровневую обработку аппаратной клавиши приостановки системы
org.freedesktop.login1.inhibit-handle-suspend-key
Ограничение возможности приложениям запрещать системный сон
Политика ограничивает возможность приложениям запрещать системный сон
org.freedesktop.login1.inhibit-block-sleep
Ограничение возможности приложениям откладывать выключение системы
Политика ограничивает возможность приложениям откладывать выключение системы
org.freedesktop.login1.inhibit-delay-shutdown
Ограничение возможности приложениям откладывать переход в спящий режим
Политика ограничивает возможность приложениям откладывать переход в спящий режим
org.freedesktop.login1.inhibit-delay-sleep
Ограничение возможности приостановки работы системы
Политика ограничивает возможность приостановки работы системы
org.freedesktop.login1.suspend
Ограничение возможности приостановки работы системы, пока приложение препятствует этому действию
Политика ограничивает возможность приостановки работы системы, пока приложение препятствует этому действию
org.freedesktop.login1.suspend-ignore-inhibit
Ограничение возможности приостановки работы системы, при наличии активных сеансов других пользователей
Политика ограничивает возможность приостановки работы системы, при наличии активных сеансов других пользователей
org.freedesktop.login1.suspend-multiple-sessions
Ограничение возможности присоединения устройств к рабочим местам
Политика управляет ограничением возможности присоединить устройства к рабочим местам
org.freedesktop.login1.attach-device
Ограничение возможности разрешения незалогиненному пользователю запускать программы
Политика ограничивает возможность разрешения незалогиненному пользователю запускать программы
org.freedesktop.login1.set-self-linger
Ограничение возможности разрешения незалогиненным пользователям запускать программы
Политика ограничивает возможность разрешения незалогиненным пользователям запускать программы
org.freedesktop.login1.set-user-linger
Ограничение возможности указания загрузчику системы на загрузку в определенную запись загрузчика
Политика ограничивает возможность указания загрузчику системы на загрузку в определенную запись загрузчика
org.freedesktop.login1.set-reboot-to-boot-loader-entry
Ограничение возможности указания загрузчику системы на необходимость загрузки в меню загрузчика
Политика ограничивает возможность указания загрузчику системы на необходимость загрузки в меню загрузчика
org.freedesktop.login1.set-reboot-to-boot-loader-menu
Ограничение возможности указания микропрограмме системы на необходимость перезагрузки в интерфейс настройки микропрограммы
Политика ограничивает возможность указания микропрограмме системы на необходимость перезагрузки в интерфейс настройки микропрограммы
org.freedesktop.login1.set-reboot-to-firmware-setup
Ограничение возможности управления активными сеансами, пользователями и местами
Политика ограничивает возможность управления активными сеансами, пользователями и местами
org.freedesktop.login1.manage
Ограничение возможности установки «причины» перезагрузки в ядре
Политика ограничивает возможность установить «причины» перезагрузки в ядре
org.freedesktop.login1.set-reboot-parameter
Ограничение возможности установки сообщения на стене (сообщение, которое будет отправлено на все терминалы)
Политика ограничивает возможность установки сообщения на стене (сообщение, которое будет отправлено на все терминалы)
org.freedesktop.login1.set-wall-message

Таблица 34.16. Ограничения службы Machine

Политика
Описание
Правило Polkitd
Ограничение возможности авторизации в локальном контейнере
Политика управляет ограничением возможности авторизации в локальном контейнере
org.freedesktop.machine1.login
Ограничение возможности авторизации на локальном хосте
Политика управляет ограничением возможности авторизации на локальном хосте
org.freedesktop.machine1.host-login
Ограничение возможности получения интерпретатора командной строки (командной оболочки) в локальном контейнере
Политика управляет ограничением возможности получения интерпретатора командной строки (командной оболочки) в локальном контейнере
org.freedesktop.machine1.shell
Ограничение возможности получения интерпретатора командной строки (командной оболочки) на локальном хосте
Политика управляет ограничением возможности получения интерпретатора командной строки (командной оболочки) на локальном хосте
org.freedesktop.machine1.host-shell
Ограничение возможности получения псевдотелетайпа (TTY) в локальном контейнере
Политика управляет ограничением возможности получения псевдотелетайпа (TTY) в локальном контейнере
org.freedesktop.machine1.open-pty
Ограничение возможности получения псевдотелетайпа (TTY) на локальном хосте
Политика управляет ограничением возможности получения псевдотелетайпа (TTY) на локальном хосте
org.freedesktop.machine1.host-open-pty
Ограничение возможности управления локальными виртуальными машинами и контейнерами
Политика управляет ограничением возможности управления локальными виртуальными машинами и контейнерами
org.freedesktop.machine1.manage-machines
Ограничение возможности управления локальными виртуальными машинами и образами контейнеров
Политика управляет ограничением возможности управления локальными виртуальными машинами и образами контейнеров
org.freedesktop.machine1.manage-images

Таблица 34.17. Ограничения ModemManager

Политика
Описание
Правило Polkitd
Ограничение возможности блокировки и управления мобильным широкополосным устройством
Политика ограничивает возможность изменения конфигурации мобильного широкополосного устройства
org.freedesktop.ModemManager1.Device.Control
Ограничение возможности добавления, изменения или удаления контактов устройства
Политика управляет ограничением возможности добавления, изменения и удаления контактов мобильного широкополосного доступа
org.freedesktop.ModemManager1.Contacts
Ограничение возможности запросов и использования сетевой информации и услуг
Политика ограничивает возможность запрашивать или использовать сетевую информацию и службы
org.freedesktop.ModemManager1.USSD
Ограничение возможности запросов информации о сетевом времени и часовом поясе
Политика ограничивает возможность запрашивать информацию о сетевом времени
org.freedesktop.ModemManager1.Time
Ограничение возможности отправки, сохранения, изменения и удаления текстовых сообщений
Политика ограничивает возможность отправки или манипулирования текстовыми сообщениями устройства
org.freedesktop.ModemManager1.Messaging
Ограничение возможности приема входящих голосовых вызовов или начала исходящего голосового вызова
Политика ограничивает возможность голосовых вызовов
org.freedesktop.ModemManager1.Voice
Ограничение возможности просмотра информации о географическом положении и позиционировании
Политика ограничивает возможность просмотра информации о географическом положении
org.freedesktop.ModemManager1.Location
Ограничение возможности управления демоном Modem Manager
Политика ограничивает возможность управления диспетчером модемов
org.freedesktop.ModemManager1.Control
Ограничение возможности управления прошивкой мобильного широкополосного устройства
Политика ограничивает возможность управления микропрограммой мобильного широкополосного устройства
org.freedesktop.ModemManager1.Firmware

Таблица 34.18. Ограничения NetworkManager

Политика
Описание
Правило Polkitd
Ограничение возможности включения или отключения сети
Политика управляет ограничением возможности включения или отключения сетевого взаимодействия системы. Если сетевое взаимодействие отключено, все управляемые интерфейсы отсоединяются и деактивируются. Если сетевое взаимодействие включено, все управляемые интерфейсы доступны для активации
org.freedesktop.NetworkManager.enable-disable-network
Ограничение возможности включения или отключения статистики
Политика управляет ограничением возможности включения или отключения счётчика статистики устройства
org.freedesktop.NetworkManager.enable-disable-statistics
Ограничение возможности включения или отключения устройств Wi-Fi
Данная политика управляет ограничением возможности включения или отключения устройств Wi-Fi
org.freedesktop.NetworkManager.enable-disable-wifi
Ограничение возможности включения или отключения устройств WiMAX
Данная политика управляет ограничением возможности включения или отключения мобильных широкополосных устройств WiMAX
org.freedesktop.NetworkManager.enable-disable-wimax
Ограничение возможности включения или отключения WWAN-устройств
Политика управляет ограничением возможности включения или отключения WWAN-устройств
org.freedesktop.NetworkManager.enable-disable-wwan
Ограничение возможности изменения общих настроек DNS
Политика управляет ограничением возможности изменений общей конфигурации DNS
org.freedesktop.NetworkManager.settings.modify.global-dns
Ограничение возможности изменения персональных сетевых настроек
Данная политика управляет ограничением возможности изменений личных сетевых соединений
org.freedesktop.NetworkManager.settings.modify.own
Ограничение возможности изменения постоянного имени хоста
Данная политика управляет ограничением возможности изменения постоянного имени (hostname) системы
org.freedesktop.NetworkManager.settings.modify.hostname
Ограничение возможности изменения сетевых подключений для всех пользователей
Политика управляет ограничением возможности изменения системных сетевых настроек для всех пользователей
org.freedesktop.NetworkManager.settings.modify.system
Ограничение возможности изменения системных настроек для сети
Политика управляет ограничением возможности изменения системных сетевых настроек
org.freedesktop.NetworkManager.network-control
Ограничение возможности изменения состояния сна NetworkManager
Данная политика управляет ограничением возможности перевода NetworkManager в спящий режим или пробуждения из спящего режима (должна использоваться только для управления питанием системы).
В спящем состоянии все интерфейсы, которыми управляет NetworkManager, деактивированы. В бодрствующем состоянии устройства доступны для активации. Обращение к состоянию сна NetworkManager не вызывается пользователем напрямую; функция предназначена для отслеживания приостановки/возобновления работы системы.
org.freedesktop.NetworkManager.sleep-wake
Ограничение возможности отката конфигурации сетевых интерфейсов к контрольной точке
Политика управляет ограничением возможности создания контрольной точки сетевых интерфейсов или отката к ней
org.freedesktop.NetworkManager.checkpoint-rollback
Ограничение возможности перезагрузки NetworkManager
Политика управляет ограничением возможности перезагрузки конфигурации NetworkManager
org.freedesktop.NetworkManager.reload
Ограничение возможности проверки подключения сети
Политика управляет ограничением возможности включения или отключения проверки подключения к сети
org.freedesktop.NetworkManager.enable-disable-connectivity-check
Ограничение возможности сканирования Wi-Fi сетей
Данная политика управляет ограничением возможности сканирования Wi-Fi сетей
org.freedesktop.NetworkManager.wifi.scan
Ограничение возможности совместных подключений через защищённую сеть Wi-Fi
Политика управляет ограничением возможности совместного подключения через защищенную сеть Wi-Fi
org.freedesktop.NetworkManager.wifi.share.protected
Ограничение возможности совместных подключений через открытую сеть Wi-Fi
Политика управляет ограничением возможности совместного подключения ерез открытую сеть Wi-Fi
org.freedesktop.NetworkManager.wifi.share.open
Ограничения NetworkManager для текущего пользователя можно просмотреть, выполнив команду:
$ nmcli general permissions
PERMISSION                                                        VALUE
org.freedesktop.NetworkManager.checkpoint-rollback                auth
org.freedesktop.NetworkManager.enable-disable-connectivity-check  нет
org.freedesktop.NetworkManager.enable-disable-network             auth
org.freedesktop.NetworkManager.enable-disable-statistics          auth
org.freedesktop.NetworkManager.enable-disable-wifi                да
org.freedesktop.NetworkManager.enable-disable-wimax               да
org.freedesktop.NetworkManager.enable-disable-wwan                да
org.freedesktop.NetworkManager.network-control                    да
org.freedesktop.NetworkManager.reload                             auth
org.freedesktop.NetworkManager.settings.modify.global-dns         нет
org.freedesktop.NetworkManager.settings.modify.hostname           auth
org.freedesktop.NetworkManager.settings.modify.own                auth
org.freedesktop.NetworkManager.settings.modify.system             да
org.freedesktop.NetworkManager.sleep-wake                         да
org.freedesktop.NetworkManager.wifi.scan                          да
org.freedesktop.NetworkManager.wifi.share.open                    да
org.freedesktop.NetworkManager.wifi.share.protected               да

Таблица 34.19. Ограничения PackageKit

Политика
Описание
Правило Polkitd
Ограничение возможности восстановления пакетов в системе
Данная политика ограничивает пользователям возможность восстановления системы пакетов, если в ней возникли проблемы, например, пропали зависимости, посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.repair-system
Ограничение возможности добавления ключа электронной подписи
Данная политика ограничивает пользователям возможность добавления ключа подписи в список доверенных ключей системы посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.system-trust-signing-key
Ограничение возможности обновления пакетов
Данная политика ограничивает пользователям возможность обновления пакетов, установленных в систему, посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.system-update
Ограничение возможности обновления системных источников пакетов
Данная политика ограничивает пользователям возможность обновления системных источников пакетов посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.system-sources-refresh
Ограничение возможности переустановки пакетов
Данная политика ограничивает пользователям возможность переустановки пакетов посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.package-reinstall
Ограничение возможности принятия лицензионного соглашения
Данная политика ограничивает пользователям возможность принятия пользовательского соглашения программ посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.package-eula-accept
Ограничение возможности редактирования источников пакетов
Данная политика ограничивает пользователям возможность редактирования источников пакетов в системе посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.system-sources-configure
Ограничение возможности удаления пакетов
Данная политика ограничивает пользователям возможность удаления пакетов посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.package-remove
Ограничение возможности установки пакетов
Данная политика ограничивает пользователям возможность установки пакетов посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.package-install
Ограничение возможности установки непроверенных пакетов
Данная политика ограничивает пользователям возможность установки ненадёжных или непроверенных пакетов посредством интерфейса управления пакетами PackageKit
org.freedesktop.packagekit.package-install-untrusted

Таблица 34.20. Ограничения Realmd

Политика
Описание
Правило Polkitd
Ограничение возможности возможности запустить обнаружение области Kerberos REALM
Данная политика управляет ограничением возможности запустить обнаружение области Kerberos REALM
org.freedesktop.realmd.discover-realm
Ограничение возможности изменения политики входа в систему
Данная политика управляет ограничением возможности изменения политики входа в систему
org.freedesktop.realmd.login-policy
Ограничение возможности присоединения машины к домену или Kerberos REALM
Данная политика управляет ограничением возможности присоединения машины к домену или Kerberos REALM
org.freedesktop.realmd.configure-realm
Ограничение возможности отключения машины из домена или Kerberos REALM
Данная политика управляет ограничением возможности удаления машины из домена или Kerberos REALM
org.freedesktop.realmd.deconfigure-realm

Таблица 34.21. Ограничения Systemd

Политика
Описание
Правило Polkitd для службы Systemd (org.freedesktop.systemd1)
Ограничение возможности отправки пароля системе
Данная политика управляет ограничением возможности отправки пароля системе
reply-password
Ограничение возможности перезагрузки состояния systemd
Данная политика управляет ограничением возможности перезагрузки состояния systemd
reload-daemon
Ограничение возможности управления системными службами или другими устройствами
Данная политика управляет ограничением возможности управления системными службами или другими устройствами
manage-units
Ограничение возможности управления файлами системных служб или модулей
Данная политика управляет ограничением возможности управления файлами системных служб или модулей
manage-unit-files
Ограничение возможности установки или удаления переменных окружения менеджера систем и служб
Данная политика управляет ограничением возможности установки или удаления переменных окружения менеджера систем и служб
set-environment

Таблица 34.22. Ограничения TimeDate

Политика
Описание
Правило Polkitd для службы TimeDate (org.freedesktop.timedate1)
Ограничение возможности включения или выключения синхронизации сетевого времени
Данная политика управляет ограничением возможности включения или выключения синхронизации сетевого времени
set-ntp
Ограничение возможности установки системного времени
Данная политика управляет ограничением возможности установки системного времени
set-time
Ограничение возможности установки системного часового пояса
Данная политика управляет ограничением возможности установки системного часового пояса
set-timezone
Ограничение возможности установки RTC в местный часовой пояс или UTC
Данная политика управляет ограничением возможности установки RTC в местный часовой пояс или UTC
set-local-rtc

Таблица 34.23. Ограничения Udisks

Политика
Описание
Правило Polkitd
Общая политика ограничения возможности монтирования
Данная политика ограничивает возможность монтирования съёмных запоминающих устройств, монтирования системных разделов, монтирования съёмных запоминающих устройств в удалённых сеансах
org.freedesktop.udisks2.filesystem-mount
org.freedesktop.udisks2.filesystem-mount-other-seat
org.freedesktop.udisks2.filesystem-mount-system
Ограничение возможности включения/отключения SMART
Данная политика управляет ограничением возможности включения/отключения SMART
org.freedesktop.udisks2.ata-smart-enable-disable
Ограничение возможности демонтировать устройство, смонтированное другим пользователем
Данная политика управляет ограничением возможности демонтировать устройство, смонтированное другим пользователем
org.freedesktop.udisks2.filesystem-unmount-others
Ограничение возможности заблокировать зашифрованное устройство, разблокированное другим пользователем
Данная политика управляет ограничением возможности заблокировать зашифрованное устройство, разблокированное другим пользователем
org.freedesktop.udisks2.encrypted-lock-others
Ограничение возможности запуска самопроверки SMART
Данная политика управляет ограничением возможности запуска самопроверки SMART
org.freedesktop.udisks2.ata-smart-selftest
Ограничение возможности извлечь носитель
Данная политика управляет ограничением возможности извлечь носитель
org.freedesktop.udisks2.eject-media
Ограничение возможности извлечь носитель из дисковода, подключенного к другому рабочему месту
Данная политика управляет ограничением возможности извлечь носитель из дисковода, подключенного к другому рабочему месту
org.freedesktop.udisks2.eject-media-other-seat
Ограничение возможности извлечь носитель из системного диска
Данная политика управляет ограничением возможности извлечь носитель из системного диска
org.freedesktop.udisks2.eject-media-system
Ограничение возможности изменения настроек привода
Данная политика управляет ограничением возможности изменения настроек привода
org.freedesktop.udisks2.modify-drive-settings
Ограничение возможности изменения общесистемной конфигурации
Данная политика управляет ограничением возможности изменения общесистемной конфигурации
org.freedesktop.udisks2.modify-system-configuration
Ограничение возможности изменения петлевых (loop) устройств
Данная политика управляет ограничением возможности изменения петлевых (loop) устройств
org.freedesktop.udisks2.loop-modify-others
Ограничение возможности изменения системного устройства
Данная политика управляет ограничением возможности изменения системного устройства
org.freedesktop.udisks2.modify-device-system
Ограничение возможности изменения устройства
Данная политика управляет ограничением возможности изменения устройства
org.freedesktop.udisks2.modify-device
Ограничение возможности изменения устройства, подключенного к другому рабочему месту
Данная политика управляет ограничением возможности изменения устройства, подключенного к другому рабочему месту
org.freedesktop.udisks2.modify-device-other-seat
Ограничение возможности изменить пароль для зашифрованного устройства
Данная политика управляет ограничением возможности изменения пароля для зашифрованного устройства
org.freedesktop.udisks2.encrypted-change-passphrase
Ограничение возможности изменения системного пароля для зашифрованного устройства
Данная политика управляет ограничением возможности изменения системного пароля для зашифрованного устройства
org.freedesktop.udisks2.encrypted-change-passphrase-system
Ограничение возможности монтирования системных разделов
Данная политика ограничивает возможность монтирования системных разделов. Системное устройство хранения информации — это неизвлекаемое устройство. Для таких устройств переменная HintSystem установлена в значение True. Жёсткий диск с установленной ОС относится к системным устройствам
org.freedesktop.udisks2.filesystem-mount-system
Ограничение возможности монтирования съёмных запоминающих устройств в удалённых сеансах
Данная политика ограничивает возможность монтирования съёмных запоминающих устройств с устройства, подключенного к удалённому рабочему месту (например, на другом компьютере или удаленной сессии)
org.freedesktop.udisks2.filesystem-mount-other-seat
Ограничение возможности монтирования файловой системы
Данная политика управляет ограничением возможности монтирования файловой системы устройства
org.freedesktop.udisks2.filesystem-mount
Ограничение возможности монтирования файловой системы от имени другого пользователя
Данная политика управляет ограничением возможности монтирования файловой системы от имени другого пользователя
org.freedesktop.udisks2.filesystem-mount-other-user
Ограничение возможности монтировать/демонтировать файловые системы, указанные в файле fstab с параметром x-udisks-auth
Данная политика управляет ограничением возможности монтирования/демонтирования файловых систем, указанных в файле fstab с параметром x-udisks-auth
org.freedesktop.udisks2.filesystem-fstab
Ограничение возможности надежно стереть жёсткий диск
Данная политика управляет ограничением возможности надежно стереть жёсткий диск
org.freedesktop.udisks2.ata-secure-erase
Ограничение возможности обновить данные SMART
Данная политика управляет ограничением возможности обновить данные SMART
org.freedesktop.udisks2.ata-smart-update
Ограничение возможности отменить задание
Данная политика управляет ограничением возможности отменить задание
org.freedesktop.udisks2.cancel-job
Ограничение возможности отменить задание, начатое другим пользователем
Данная политика управляет ограничением возможности отменить задание, начатое другим пользователем
org.freedesktop.udisks2.cancel-job-other-user
Ограничение возможности отправить команду ожидания для диска с удаленного места
Данная политика управляет ограничением возможности отправить команду ожидания для диска с удаленного места
org.freedesktop.udisks2.ata-standby-other-seat
Ограничение возможности разблокировать зашифрованное системное устройство
Данная политика управляет ограничением возможности разблокировать зашифрованное системное устройство
org.freedesktop.udisks2.encrypted-unlock-system
Ограничение возможности разблокировать зашифрованное устройство
Данная политика управляет ограничением возможности разблокировать зашифрованное устройство
org.freedesktop.udisks2.encrypted-unlock
Ограничение возможности разблокировать зашифрованное устройство, подключенное к другому рабочему месту
Данная политика управляет ограничением возможности разблокировать зашифрованное устройство, подключенное к другому рабочему месту
org.freedesktop.udisks2.encrypted-unlock-other-seat
Ограничение возможности разблокировать зашифрованное устройство, указанное в файле crypttab, с опцией x-udisks-auth
Данная политика управляет ограничением возможности разблокировать зашифрованное устройство, указанное в файле crypttab, с опцией x-udisks-auth
org.freedesktop.udisks2.encrypted-unlock-crypttab
Ограничение возможности отправить команду режима ожидания на системный диск
Данная политика управляет ограничением возможности отправить команду режима ожидания на системный диск
org.freedesktop.udisks2.ata-standby-system
Ограничение возможности отправить резервную команду
Данная политика управляет ограничением возможности отправить резервную команду
org.freedesktop.udisks2.ata-standby
Ограничение возможности разрешения на проверку состояния питания жесткого диска
Данная политика управляет ограничением возможности разрешения на проверку состояния питания жесткого диска
org.freedesktop.udisks2.ata-check-power
Ограничение возможности смены владельца файловой системы
Данная политика управляет ограничением возможности смены владельца файловой системы
org.freedesktop.udisks2.filesystem-take-ownership
Ограничение возможности удаления петлевых (loop) устройств
Данная политика управляет ограничением возможности удаления петлевых (loop) устройств
org.freedesktop.udisks2.loop-delete-others
Ограничение возможности разрешения управления массивами RAID
Данная политика управляет ограничением возможности разрешения управления массивами RAID
org.freedesktop.udisks2.manage-md-raid
Ограничение возможности управления петлевыми (loop) устройствами
Данная политика управляет ограничением возможности управления петлевыми (loop) устройствами
org.freedesktop.udisks2.loop-setup
Ограничение возможности управления пространством подкачки
Данная политика управляет ограничением возможности управления пространством подкачки
org.freedesktop.udisks2.manage-swapspace
Ограничение возможности установить данные SMART из большого двоичного объект
Данная политика управляет ограничением возможности установить данные SMART из большого двоичного объекта
org.freedesktop.udisks2.ata-smart-simulate

Таблица 34.24. Другие политики

Политика
Описание
Правило Polkitd
Ограничение возможности запуска программы от имени другого пользователя
Данная политика управляет ограничением возможности запуска программы от имени другого пользователя
org.freedesktop.policykit.exec
Все настройки политики управления политиками Polkit хранятся в файлах {GUID GPT}/Machine/Registry.pol и {GUID GPT}/User/Registry.pol.
Пример файла Registry.pol:
PReg
[Software\BaseALT\Policies\PolkitLocks;org.freedesktop.udisks2.filesystem-mount;;;]
[Software\BaseALT\Policies\Polkit;org.freedesktop.udisks2.filesystem-mount;;;No]
[Software\BaseALT\Policies\Polkit;org.freedesktop.packagekit.system-update;;;Auth_self]
[Software\BaseALT\Policies\PolkitLocks;org.freedesktop.NetworkManager.network-control;;;]
[Software\BaseALT\Policies\Polkit;org.freedesktop.NetworkManager.network-control;;Yes]

34.5.4. Политика доступа к съемным носителям

Эта групповая политика позволяет централизованно для компьютеров или пользователей настраивать доступ к съемным запоминающим устройствам (CD, DVD, USB и др.).

Примечание

Политика полного запрета на доступ к съемным носителям реализована через правила в Polkit (/etc/polkit-1/rules.d/).
Правила для пользовательской политики обрабатываются до правил для машинной политики. Для машинной политики создается файл правил 49-gpoa_disk_permissions.rules, для пользовательской политики — 48-gpoa_disk_permissions_user.<USERNAME>.rules.
Для настройки этой политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистемаДоступ к съемным запоминающим устройствам:
GPUI. Политика «Доступ к съемным запоминающим устройствам»

Примечание

На данный момент реализована только политика Съемные запоминающие устройства всех классов: Запретить любой доступ (машинная и пользовательская).
Щелкнуть левой кнопкой мыши на политике Съемные запоминающие устройства всех классов: Запретить любой доступ, откроется диалоговое окно настройки политики. Можно не задавать настройку политики, включить или отключить:
GPUI. Редактирование политики «Съемные запоминающие устройства всех классов»
Для включения запрета на доступ следует выбрать параметр Включено, для отключения — Отключено или Не сконфигурировано.
Настройки политики управления съемными носителями хранятся в файлах {GUID GPT}/Machine/Registry.pol и {GUID GPT}/User/Registry.pol.
Пример файла Registry.pol:
PReg
[Software\Policies\Microsoft\Windows\RemovableStorageDevices;Deny_All;;;]

34.5.5. Управление gsettings

Данные групповые политики позволяют управлять ключами gsettings. В свою очередь gsettings управляет ключами dconf.
В настоящий момент реализованы следующие настройки:
  • настройки графической среды GNOME:
    • настройки блокировки экрана;
    • настройки внешнего вида;
    • настройки многозадачности;
    • настройки поведения рабочей среды;
    • настройки специальных возможностей;
    • управление электропитанием;
  • настройки графической среды Mate:
    • настройки фона рабочего стола;
    • настройки хранителя экрана;
    • настройки сеанса;
    • настройки ограничений пользователя;
    • настройки оконного менеджера Marco;
    • настройки клавиатуры;
  • настройки удаленного доступа к рабочему столу (VNC) через Vino.
Машинные политики являются действующими по умолчанию, а пользовательские, при установке, замещают машинные. У машинных политик имеются блокировки, при установке которых пользовательские настройки игнорируются, а для применения используются значения, установленные машинными политиками.
Порядок применения политик:
  1. Машинные политики применяются при загрузке компьютера.
  2. Машинные политики без блокирования могут применяться, но только в том случае, если пользователь ни разу не изменял эти политики.
  3. Машинные политики с блокировкой применяются независимо от пользовательских настроек.
  4. Пользовательские политики применяются при логине пользователя и только в случае, если нет таких же машинных политик с блокировкой.

34.5.5.1. Настройки GNOME

Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTНастройки GNOME. Выбрать раздел, в правом окне редактора отобразится список политик:
GPUI. Управление настройками gsettings
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики «Стиль оформления»
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно указать настройки политики:
GPUI. Установка стиля оформления в политике «Стиль оформления»
Политика, управляющая настройкой фона рабочего стола, изменяет ключ KEY в схеме org.gnome.desktop. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.gnome.desktop.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.gnome.desktop.KEY.

Таблица 34.25. Настройки блокировки экрана

Политика
Ключ
Описание
Значение
Автоматическая блокировка экрана
screensaver.lock-delay screensaver.lock-enabled
Позволяет настроить автоматическую блокировку экрана и время задержки автоматической блокировки экрана
Возможные значения:
  • Автоматическая блокировка экрана — блокирует экран после того, как он погаснет;
  • Задержка автоматической блокировки экрана — время от отключения экрана до блокировки экрана. При выборе состояния Выключение экрана — задержка равна нулю и экран блокируется мгновенно
Задержка выключения экрана
session.idle-delay
Позволяет настроить период бездействия до отключения экрана
Время в минутах
Уведомления на экране блокировки
notifications.show-in-lock-screen
Позволяет включить/отключить показ уведомлений на экране блокировки
 — 

Таблица 34.26. Настройки внешнего вида

Политика
Ключ
Описание
Значение
Подгонка изображения рабочего стола
background.picture-options
Позволяет выбрать способ отображения фонового изображения на рабочем столе. Эта настройка влияет на то, как изображение адаптируется к размеру экрана или области, где оно отображается
Возможные значения:
  • None — подгонка изображения отключена;
  • Wallpaper — изображение повторяется в виде плитки, чтобы заполнить весь экран. Этот параметр используется для текстурных обоев или небольших изображений, которые можно копировать без заметных переходов;
  • Centered — изображение размещается в центре экрана без масштабирования. Если размеры изображения меньше разрешения экрана, вокруг остаются пустые области (заполняются фоновым цветом);
  • Scaled — изображение масштабируется, чтобы полностью поместиться в экран, при этом пропорции изображения сохраняются. Если пропорции изображения не совпадают с пропорциями экрана, могут появиться пустые полосы;
  • Stretched — изображение растягивается, чтобы полностью заполнить экран, игнорируя пропорции. Это может привести к искажению изображения;
  • Zoom — изображение масштабируется так, чтобы заполнить весь экран без пустых полос, при этом пропорции сохраняются. Часть изображения, выходящая за пределы экрана, может быть обрезана;
  • Spanned — изображение распространяется на все экраны в многомониторной конфигурации, как единое целое. Это полезно, если есть одно большое изображение, которое нужно растянуть на несколько мониторов
Стиль оформления
interface.color-scheme
Позволяет выбрать стиль оформления внешнего вида пользовательского интерфейса
 — 
Тема оформления значков
interface.icon-theme
Позволяет выбрать тему оформления значков
 — 
Фон рабочего стола
background.picture-uri background.picture-uri-dark
Позволяет выбрать фон рабочего стола в зависимости от темы оформления внешнего вида
Путь до изображения в формате file:///home/user/Изображения/picture.jpg 

Таблица 34.27. Настройки многозадачности

Политика
Ключ
Описание
Значение
Горячий угол
desktop.interface.enable-hot-corners
Позволяет включать или отключать горячий угол. Горячий угол в GNOME — это функциональность пользовательского интерфейса, которая позволяет быстро выполнять определённые действия, наведя указатель мыши в один из углов экрана
 — 
Рабочие столы
desktop.wm.preferences.num-workspaces mutter.dynamic-workspaces
Позволяет управлять количеством рабочих столов
Возможные значения:
  • Динамические — количество рабочих столов меняется в зависимости от количества открытых окон;
  • Фиксированные — количество рабочих столов остаётся постоянным, независимо от того, есть ли на них окна или нет

Примечание

Параметр Количество рабочих столов имеет смысл только при фиксированном режиме.
Режим отображения рабочих столов
mutter.workspaces-only-on-primary
Позволяет настроить способ отображения рабочих столов на дисплеях
Возможные значения:
  • На основном дисплее — в этом режиме рабочие столы переключаются только на основном экране. На дополнительных дисплеях отображаются только окна, относящиеся к текущему рабочему столу, но сами виртуальные рабочие столы не переключаются;
  • На всех дисплеях — рабочие столы синхронизированы на всех подключённых дисплеях. При переключении рабочего стола на одном экране он меняется и на других экранах

Таблица 34.28. Настройки поведения рабочей среды

Политика
Ключ
Описание
Значение
Отображение даты на панели быстрых настроек
interface.clock-show-date
Позволяет настраивать отображение даты на панели быстрых настроек
 — 
Отображение дня недели на панели быстрых настроек
interface.clock-show-weekday
Позволяет настраивать отображение дня недели на панели быстрых настроек
 — 
Отображение процента заряда батареи
interface.show-battery-percentage
Позволяет настраивать отображение процента заряда батареи на панели быстрых настроек
 — 
Отображение секунд на панели быстрых настроек
interface.clock-show-seconds
Позволяет настраивать отображение секунд на панели быстрых настроек
 — 
Фокус окна
wm.preferences.auto-raise wm.preferences.focus-mode
Позволяет выбрать способ переключения фокуса между окнами
Возможные значения:
  • Срабатывает при нажатии — окна становятся активными при нажатии;
  • Срабатывает при наведении — окна становятся активными при перемещении курсора над ними. Наведение на рабочий стол не меняет активность;
  • Фокус следует за мышью — окна становятся активными при перемещении над ними. Наведение на рабочий стол деактивирует предыдущее окно

Примечание

Параметр Поднимать окно над другими при установлении фокуса действует только в случае выбора режима фокусировки Срабатывает при наведении или Фокус следует за мышью.
Эффекты анимации
interface.enable-animations
Позволяет управлять переключением анимации во всём пользовательском интерфейсе
 — 

Таблица 34.29. Настройки специальных возможностей

Политика
Ключ
Описание
Значение
Меню специальных возможностей
a11y.always-show-universal-access-status
Позволяет включить отображение значка Меню специальных возможностей на верхней панели
 — 
Зрение
Высокая контрастность
a11y.interface.high-contrast
Позволяет увеличить цветовой контраст элементов интерфейса переднего и заднего планов
 — 
Размер курсора
interface.cursor-size
Позволяет установить размер курсора в пикселях
По умолчанию размер курсора равен 24 пикселям
Фигуры на значках состояний
a11y.interface.show-status-shapes
Позволяет включить использование фигур для обозначения состояния настроек в дополнение или вместо цвета
 — 
Политика, управляющая настройками управления электропитанием, изменяет ключ KEY в схеме org.gnome.settings-daemon.plugins.power. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.gnome.settings-daemon.plugins.power.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks, ключ org.gnome.settings-daemon.plugins.power.KEY.

Таблица 34.30. Настройки управления электропитанием

Политика
Ключ
Описание
Значение
Действие кнопки питания устройства
power-button-action
Позволяет настроить поведение устройства после нажатия кнопки питания
Возможные значения:
  • Режим ожидания;
  • Выключить;
  • Гибернация;
  • Ничего не делать
Спящий режим при питании от батареи
sleep-inactive-battery-timeout sleep-inactive-battery-type
Позволяет управлять условием перехода устройства в спящий режим при питании от батареи
Время до перехода в спящий режим при питании от батареи имеет смысл только при включённом параметре Переходить в спящий режим при питании от батареи
Спящий режим при питании от сети
sleep-inactive-ac-timeout sleep-inactive-ac-type
Позволяет управлять условием перехода устройства в спящий режим при питании от сети
Время до перехода в спящий режим при питании от сети имеет смысл только при включённом параметре Переходить в спящий режим при питании от сети

34.5.5.2. Настройки Mate

Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTНастройки Mate. Выбрать раздел, в правом окне редактора отобразится список политик:
GPUI. Управление настройками Mate
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики «Тип градиента»
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно указать настройки политики:
GPUI. Установка градиента в политике «Тип градиента»
Политика, управляющая настройкой фона рабочего стола, изменяет ключ KEY в схеме org.mate.background. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.background.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.background.KEY.

Таблица 34.31. Настройки фона рабочего стола

Политика
Ключ
Описание
Значение
Картинка фона рабочего стола
picture-filename
Позволяет установить изображение в качестве фона рабочего стола, указав файл, содержащий изображение
Строка, содержащая путь (с точки зрения клиента) к файлу изображения (например, /usr/share/backgrounds/mate/nature/Wood.jpg)
Конечный цвет градиента
secondary-color
Устанавливает «конечный» цвет градиента фона рабочего стола. Данным цветом заканчивается градиент и, в зависимости от типа градиента, параметр определяет цвет правого или нижнего края рабочего стола. Данный параметр не используется, если в параметре Тип градиента выбрана Сплошная заливка
  • Ключевое слово цвета (red, aqua, navy и т.д.);
  • Строка типа #RRGGBB;
  • Строка типа rgb(0,0,0)
Метод отображения картинки фона
picture-options
Устанавливает метод отображения изображения, заданного параметром Картинка фона рабочего стола
  • None (нет) — нет изображения;
  • Wallpaper (мозаика) — дублирует изображение в оригинальном размере таким образом, что изображение полностью покрывает рабочий стол;
  • Centered (по центру) — отображает изображение в центре рабочего стола в соответствии с оригинальным размером изображения;
  • Scaled (масштаб) — увеличивает изображение, сохраняя пропорции, до тех пор, пока величина одной из границ изображения не совпадет с величиной одной из границ экрана;
  • Stretched (растянуть) — увеличивает изображение для соответствия размеру рабочего стола, изменяя пропорции при необходимости;
  • Zoom (приближение) — увеличивает наименьшую из сторон изображения до тех пор, пока ее величина не совпадет с величиной соответствующей границы экрана; изображение может быть обрезано по другой стороне;
  • Spanned (заполнение) — увеличивает изображение, сохраняя пропорции, до тех пор, пока величина одной из границ изображения не совпадет с величиной одной из границ экрана
Начальный цвет градиента
primary-color
Устанавливает начальный цвет градиента фона рабочего стола. Данным цветом начинается градиент и, в зависимости от типа градиента, параметр определяет цвет левого или верхнего края рабочего стола, или цвет сплошной заливки
  • Ключевое слово цвета (red, aqua, navy и т.д.);
  • Строка типа #RRGGBB;
  • Строка типа rgb(0,0,0)
Тип градиента
color-shading-type
Устанавливает тип градиента фона рабочего стола. Этот параметр имеет смысл, только если не установлен параметр Картинка фона рабочего стола
  • Вертикальный градиент — градиентный эффект от верхнего края экрана к нижнему;
  • Горизонтальный градиент — градиентный эффект от левого края экрана к правому;
  • Сплошная заливка — заполнить фон рабочего стола одним цветом
Политика, управляющая настройкой хранителя экрана, изменяет ключ KEY в схеме org.mate.screensaver. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.screensaver.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.screensaver.KEY.

Таблица 34.32. Настройки хранителя экрана

Политика
Ключ
Описание
Значение
Блокировка компьютера
lock-enabled
Включает блокировку компьютера при активации хранителя экрана. Блокировка будет включена через интервал времени, установленный настройкой Время до блокировки паролем.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана
 — 
Включение хранителя экрана
idle-activation-enabled
Обеспечивает включение хранителя экрана при бездействии системы
 — 
Время до блокировки паролем
lock-delay
Устанавливает количество минут, по истечении которых после активации хранителя экрана, компьютер будет заблокирован.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана и Блокировка компьютера
Время в минутах
Время до выхода из сеанса
logout-delay
Устанавливает количество минут, по истечении которых после активации хранителя экрана, при разблокировании пользователю будет предоставлена возможность выхода из сеанса.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана и Выход из сеанса после блокировки
Время в минутах
Время смены тем
cycle-delay
Устанавливает интервал (в минутах) между сменами тем хранителя экрана.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана и если для параметра Режим работы установлено значение Случайные темы.
Время в минутах
Выход из сеанса после блокировки
logout-enabled
После некоторой задержки добавляет кнопку выхода из сеанса (Завершить сеанс) к диалогу разблокирования экрана. Время задержки указывается в настройке Время выхода из сеанса.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана и Блокировка компьютера (так как без блокировки не появляется диалог с кнопкой)
 — 
Переключить пользователя после блокировки
user-switch-enabled
Добавляет кнопку Переключить пользователя к диалогу разблокирования экрана.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана и Блокировка компьютера (так как без блокировки не появляется диалог с кнопкой)
 — 
Режим работы
mode
Устанавливает режим работы хранителя экрана.
Этот параметр имеет смысл только при активированном параметре Включение хранителя экрана
Доступны следующие режимы:
  • Пустой экран — не показывать никаких изображений, только чёрный экран;
  • Случайные темы — выбрать тему хранителя экрана случайным образом;
  • Выбранная тема — показывать одну (указанную) тему хранителя экрана
Политика, управляющая настройкой ограничений сессии, изменяет ключ KEY в схеме org.mate.session. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.session.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.session.KEY.

Таблица 34.33. Настройки сеанса

Политика
Ключ
Описание
Значение
Запрос при выходе из сеанса
logout-prompt
Если политика включена и для поля Запрос при выходе из сеанса выбрано значение Включено, при завершении сеанса будет выведено диалоговое окно с выбором действия:
MATE. Диалоговое окно завершения сеанса
Если политика включена и для поля Запрос при выходе из сеанса выбрано значение Отключено, завершение сеанса будет происходить автоматически, без появления диалогового окна.
 — 
Интервал бездействия, по истечении которого сеанс считается простаивающим
idle-delay
Устанавливает время в минутах, по истечении которого, сеанс будет считаться простаивающим.
Данная политика позволяет управлять настройкой Считать компьютер простаивающим через:
MATE. Параметры хранителя экрана
Этот параметр имеет смысл только при активированных параметрах Включение хранителя экрана и Блокировка компьютера.
Время в минутах
Отображение скрытых автоматически запускаемых приложений
show-hidden-apps
Включает отображение скрытых автоматически запускаемых приложений в меню Параметры запускаемых приложений.
Если политика включена и для неё выбрано состояние Включено, в окне Параметры запускаемых приложений будут показаны скрытые автоматически запускаемые приложения:
MATE. Отображение скрытых автоматически запускаемых приложений включено
 — 
Сохранение сеансов
auto-save-session
Позволяет автоматически сохранять рабочий сеанс для восстановления при следующем запуске.
Если политика включена и для неё выбрано состояние Включено, система будет автоматически сохранять рабочий сеанс (система запомнит какие приложения были запущены при выходе из системы и автоматически запустит их при входе в систему).
 — 
Тайм-аут выхода из сеанса
logout-timeout
Позволяет установить время в секундах, по истечении которого произойдет выход из системы.
Если политика включена, при завершении сеанса и выключении компьютера, в диалоговом окне с выбором действия будет выставлен тайм-аут со значением, указанным в поле В секундах:
MATE. Тайм-аут при выходе из сеанса
Если в поле В секундах указан 0, то тайм-аут будет отключен:
MATE. Тайм-аут при завершении работы отключен
Если политика не сконфигурирована или отключена, значение тайм-аута будет равно 60 секундам.
Время в секундах
Политика, управляющая настройкой ограничений пользователя, изменяет ключ KEY в схеме org.mate.lockdown. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.lockdown.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.lockdown.KEY.

Таблица 34.34. Настройки ограничений пользователя

Политика
Ключ
Описание
Значение
Запрет блокировки экрана
picture-filename
Запрещает пользователю блокировать экран паролем. При установке данной настройки, значение параметра Блокировка компьютера игнорируется
 — 
Запрет выбора тем рабочего стола
picture-filename
Запрещает пользователю изменять тему оформления графической среды Mate
 — 
Запрет переключения пользователей
disable-user-switching
Запрещает пользователю переключение на другую учётную запись, пока активен его сеанс. Отключает кнопку Переключить пользователя в диалоговом окне, вызываемом при выборе в главном меню пункта Завершить сеанс
 — 
Запрет пользователю завершать сеанс
disable-log-out
Запрещает пользователю завершать свой сеанс
 — 
Политика, управляющая настройкой оконного менеджера Marco, изменяет ключ KEY в схеме org.mate.Marco.general. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.pMarco.general.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.Marco.general.KEY.

Таблица 34.35. Настройки оконного менеджера Marco

Политика
Ключ
Описание
Значение
Автоматически поднимать окно, получившее фокус
auto-raise
При включении этой политики, окно, получившее фокус, автоматически отображается поверх остальных. Параметр Переключение фокуса окон должен быть установлен в Sloppy или Mouse. Интервал, по истечении которого, окно поднимается, устанавливается в параметре Задержка при восстановлении
 — 
Граница окна при переключении с помощью Alt+Tab
show-tab-border
Выделять границу выбранного окна при переключении с помощью Alt+Tab
 — 
Действие по двойному щелчку по заголовку окна
action-double-click-titlebar
Устанавливает действие, выполняемое по двойному щелчку левой кнопкой мыши по заголовку окна
  • Свернуть в заголовок (toggle_shade) — свернуть окно в заголовок. По двойному щелчку окно разворачивается обратно;
  • На весь экран (toggle_maximize) — распахнуть окно на весь экран или восстановить исходный размер;
  • Растянуть по вертикали (toggle_maximize_vertically) — развернуть окно вертикально без изменения его ширины;
  • Растянуть по горизонтали (toggle_maximize_horizontally) — развернуть окно горизонтально без изменения его высоты;
  • Свернуть (minimize) — свернуть окно;
  • Показать меню (menu) — показать меню окна;
  • Задвинуть (lower) — поместить окно под другими;
  • Ничего не делать (none) — никакого действия не производить;
  • Последнее действие (last) — повторить предыдущее действие
Действие по нажатию правой кнопки по заголовку окна
action-right-click-titlebar
Устанавливает действие, выполняемое по нажатию правой кнопки мыши по заголовку окна
  • Свернуть в заголовок (toggle_shade) — свернуть окно в заголовок. По двойному щелчку окно разворачивается обратно;
  • На весь экран (toggle_maximize) — распахнуть окно на весь экран или восстановить исходный размер;
  • Растянуть по вертикали (toggle_maximize_vertically) — развернуть окно вертикально без изменения его ширины;
  • Растянуть по горизонтали (toggle_maximize_horizontally) — развернуть окно горизонтально без изменения его высоты;
  • Свернуть (minimize) — свернуть окно;
  • Показать меню (menu) — показать меню окна;
  • Задвинуть (lower) — поместить окно под другими;
  • Ничего не делать (none) — никакого действия не производить;
  • Последнее действие (last) — повторить предыдущее действие
Действие по нажатию средней кнопки по заголовку окна
action-middle-click-titlebar
Установливает действие, выполняемое по нажатию средней кнопки мыши по заголовку окна
  • Свернуть в заголовок (toggle_shade) — свернуть окно в заголовок. По двойному щелчку окно разворачивается обратно;
  • На весь экран (toggle_maximize) — распахнуть окно на весь экран или восстановить исходный размер;
  • Растянуть по вертикали (toggle_maximize_vertically) — развернуть окно вертикально без изменения его ширины;
  • Растянуть по горизонтали (toggle_maximize_horizontally) — развернуть окно горизонтально без изменения его высоты;
  • Свернуть (minimize) — свернуть окно;
  • Показать меню (menu) — показать меню окна;
  • Задвинуть (lower) — поместить окно под другими;
  • Ничего не делать (none) — никакого действия не производить;
  • Последнее действие (last) — повторить предыдущее действие
Задержка при восстановлении
alt-tab-max-columns
Временной интервал в миллисекундах, по истечении которого окно в фокусе будет поднято поверх остальных. Этот параметр имеет смысл только при активированном параметре Автоматически поднимать окно, получившее фокус
Время в миллисекундах
Изменение размеров окна при перетаскивании
primary-color
Включает изменение размеров окна при перетаскивании его в различные области экрана.
Если включено, перетаскивание окна на границу экрана распахивает окно вертикально и изменяет горизонтальный размер до половины доступного пространства.
Если активирован параметр Распахнуть окно при перетаскивании к верхнему краю экрана, перетаскивание окна наверх разворачивает окно
 — 
Иконки заголовка окна
button-layout
Настройки расположения кнопок в заголовке окна
Строка вида: menu:minimize,maximize,spacer,close
Разделителем правой и левой половин является двоеточие. Имена кнопок разделяются запятыми.
Например, строка 'menu:minimize,maximize,spacer,close' — расположить кнопку меню окна слева, а справа кнопки свернуть, распахнуть, закрыть окно.
Дублирование кнопок не допускается. Неизвестные имена кнопок игнорируются без уведомления.
Специальный элемент spacer может использоваться для вставки пробела между двумя кнопками
Количество рабочих областей (мест)
num-workspaces
Установка количества рабочих мест
Интервал допустимых значений 1-36
Миниатюры при переключении окон
compositing-fast-alt-tab
Если включено, то вместо миниатюр предварительного просмотра в окне переключения Alt+Tab будут отображаться значки приложений
 — 
Новые окна по центру
center-new-windows
Если включено, то новые окна будут открываться по центру экрана. В противном случае они будут открыты в левом верхнем углу экрана
 — 
Переключение рабочих областей (столов)
wrap-style
Определяет, каким образом пролистывать от одного рабочего стола к другому на границе переключателя рабочих мест
  • No wrap — при попытке пролистать рабочее место за границу переключателя ничего не произойдет;
  • Classic — конец одной строки ведет на начало следующей и конец одной колонки ведет к началу следующей;
  • Toroidal — конец каждой строки ведет к её же началу и конец каждой колонки ведёт к её же началу
Переключение фокуса на новое окно
focus-new-windows
Определяет, как новое окно получает фокус
  • Smart — новое окно получает фокус при создании;
  • Strict — окна, запущенные из терминала, не получают фокус
Разворачивание при перетаскивании (Распахнуть окно при перетаскивании к верхнему краю экрана)
allow-top-tiling
Включает разворачивание окна во весь экран при перетаскивании его к верхнему краю экрана. Этот параметр имеет смысл только при активированном параметре Изменение размеров окна при перетаскивании
 — 
Размер иконок в окне Alt+Tab
icon-size
Устанавливает размер значков, отображаемых в окне переключения приложений Alt+Tab
Интервал допустимых значений: 8-256
Размер окна переключения Alt+Tab
alt-tab-max-columns
Устанавливает количество колонок в окне переключения приложений Alt+Tab
Количество колонок
Расположение новых окон
placement-mode
Указывает как будут позиционироваться новые окна
  • Автоматически (automatic) — система выбирает местоположение на основе доступного пространства на рабочем столе, или располагает каскадом, если нет места;
  • Указатель (pointer) — новые окна размещаются в соответствии с положением указателя мыши;
  • Ручной (manual) — пользователь должен вручную расположить новое окно с помощью мыши или клавиатуры
Режим активации окна
focus-mode
Режим переключения фокуса в окно определяет, как активируются окна
  • Click — для активации окна на нём надо щелкнуть;
  • Sloppy — окно активируется, когда на него перемещается указатель мыши;
  • Mouse — окно активируется, когда в него перемещается указатель мыши, и перестает быть активным, когда указатель мыши уходит из него
Системный шрифт в заголовке окон
titlebar-uses-system-font
Если включено, в заголовках окон используется стандартный системный шрифт. Параметр Шрифт заголовка окна при этом игнорируется
 — 
Тема оформления
theme
Устанавливает тему, отвечающую за отображение границ окон, заголовка и т.д.
Строка, содержащая название темы (например, Dopple)
Шрифт заголовка окна
titlebar-font
Устанавливает шрифт заголовков окон. Этот параметр игнорируется, если активирован параметр Системный шрифт в заголовке окна
Строка, содержащая название шрифта и через пробел, размер шрифта (например, Noto Sans Bold 10)
Политика, управляющая настройкой клавиатуры, изменяет ключ KEY в схеме org.mate.peripherals-keyboard. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.mate.peripherals-keyboard.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.mate.peripherals-keyboard.KEY.

Таблица 34.36. Настройки клавиатуры

Политика
Ключ
Описание
Значение
Задержка перед повтором
delay
Задержка перед повтором нажатой и удерживаемой клавиши
Время в миллисекундах
Повторять удерживаемую нажатой клавишу
repeat
Включить повтор нажатой и удерживаемой клавиши. Если нажать и удерживать клавишу при включённом повторе ввода, действие, соответствующее клавише, будет повторяться. Например, если нажать и удерживать клавишу с буквой, то эта буква будет многократно повторена
 — 
Скорость повтора
rate
Устанавливает скорость повтора нажатой и удерживаемой клавиши
Количество повторов в секунду

34.5.5.3. Настройки удаленного доступа к рабочему столу (VNC) через Vino

Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTУдаленный доступ через Vino. Выбрать раздел, в правом окне редактора отобразится список политик:
GPUI. Управление настройками удаленного доступа через Vino
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики «Методы аутентификации»
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно указать настройки политики:
GPUI. Установка метода аутентификации в политике «Методы аутентификации»
Политика, управляющая настройкой удаленного доступа VNC, изменяет ключ KEY в схеме org.gnome.Vino. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.gnome.Vino.KEY. Блокировка устанавливается в ветке реестра Software\BaseALT\Policies\GSettingsLocks ключ org.gnome.Vino.KEY.

Таблица 34.37. Настройки удаленного доступа VNC

Политика
Ключ
Описание
Значение
Альтернативный порт
alternative-port
Устанавливает альтернативный порт для удаленного подключения к рабочему столу. Используется только при установленном параметре Включить альтернативный порт
Значение номера порта в пределах от 5 000 до 50 000. По умолчанию используется порт 5900
Включить альтернативный порт
prompt-enabled
Включить прослушивание альтернативного порта для удалённых подключений (вместо порта по умолчанию 5 900). Порт указывается в параметре Альтернативный порт
  • Включено — включить прослушивание альтернативного порта;
  • Отключено — не включать прослушивание альтернативного порта
Иконка подключения
icon-visibility
Управляет отображением значка подключения в области уведомления
  • Никогда — значок не отображается;
  • Всегда — значок отображается всегда;
  • Только при подключении клиента — значок отображается при подключении удалённого пользователя
Методы аутентификации
authentication-methods
Устанавливает методы аутентификации пользователей, подключающихся к рабочему столу. Используется только при установленном параметре Пароль для подключения
  • None — пароль для подключения не требуется;
  • Vnc — для подключения необходим пароль
Подтверждение при подключении
prompt-enabled
Включает запрос подтверждения при любой попытке доступа к рабочему столу. Рекомендуется при отсутствии защиты подключения паролем
  • Включено — запрашивается подтверждение доступа;
  • Отключено — подтверждение доступа не запрашивается
Удалённое управление
view-only
Запрещает удалённое управление рабочим столом. Удалённым пользователям, разрешается только просматривать рабочий стол, но не управлять мышью и клавиатурой
  • Включено — удаленное управление разрешено;
  • Отключено — удаленное управление запрещёно
Удаленный доступ
enabled
Разрешает удаленный доступ к рабочему столу с использованием протокола RFB и VNC
  • Включено — удаленный доступ разрешен;
  • Отключено — удаленный доступ запрещён

34.5.5.4. Опции Winbind DNSupdate

С помощью групповых политик в Альт Домен можно централизованно управлять параметрами winbind-dnsupdate.
Для настройки данных политик следует перейти в КомпьютерАдминистративные шаблоныСистема ALTСлужбыОпции Winbind DNSupdate:
Время хранения DNS записи
Политика, управляющая опцией Winbind DNSupdate, изменяет ключ KEY в схеме org.altlinux.winbind.dnsupdate. В реестре Windows данная политика изменяет в Software\BaseALT\Policies\gsettings ключ org.altlinux.winbind.dnsupdate.KEY.

Таблица 34.38. Опции Winbind DNSupdate

Политика
Ключ
Описание
Значение
Время хранения DNS записи
ttl
Позволяет позволяет задать время хранения DNS записи в кеше
Время в секундах
Обновление IPv4 DNS записей
enable-update-ipv4, ipv4_ptr_update
Позволяет включить обновление прямой и обратной IPv4 DNS записи компьютера. Включение параметра Обновление обратной IPv4 DNS записи имеет смысл только при включённом параметре Обновление прямой IPv4 DNS записи
-
Обновление IPv6 DNS записей
enable-update-ipv6, ipv6_ptr_update
Позволяет включить обновление прямой и обратной IPv6 DNS записи компьютера. Включение параметра Обновление обратной IPv6 DNS записи имеет смысл только при включённом параметре Обновление прямой IPv6 DNS записи
-

34.5.6. Управление настройками среды рабочего стола KDE

Данные групповые политики позволяют управлять настройками среды рабочего стола KDE.
Для реализации применения групповых политик управления настройками среды рабочего стола KDE используется механизм, основанный на редактировании конфигурационных файлов.
Файл конфигурации состоит из пар «ключ=значение», которые размещены в группах. Начало группы обозначается именем группы, заключенным в квадратные скобки. Все последующие записи «ключ=значение» принадлежат этой группе. Группа заканчивается, когда начинается другая группа или когда достигается конец файла. Записи в верхней части файла, которым не предшествует имя группы, относятся к группе по умолчанию. Пустые строки, как и строки, начинающиеся с решетки («#»), в файлах конфигурации игнорируются.
Пример файла конфигурации:
[General]
FilterBar=0
Version=202
ViewPropsTimestamp=2023,10,5,18,6,33.478

[MainWindow]
MenuBar=Disabled
ToolBarsMovable=Disabled
Если в дереве каталогов обнаружено несколько файлов конфигурации с одинаковым именем, их содержимое объединяется. Здесь играет роль порядок приоритета каталогов: когда два файла определяют один и тот же ключ конфигурации, файл с наивысшим приоритетом определяет, какое значение используется для ключа. Конфигурационные файлы из $KDEHOME всегда обладают наивысшим приоритетом. В случае если в одном конфигурационном файле один ключ указан несколько раз, будет использовано последнее его значение.
Машинные политики являются действующими по умолчанию, а пользовательские при установке замещают машинные. У политик имеются блокировки. При установке машинных блокировок пользовательские настройки игнорируются, а для применения используются значения, установленные машинными политиками.

Примечание

Поведение разных приложений на блокировку может отличаться. Одни приложения могут распознавать блокировку, другие использовать пользовательские настройки, несмотря на наличие блокировки.
Порядок применения политик:
  1. Машинные политики применяются при загрузке компьютера.
  2. Машинные политики без блокирования могут применяться, но только в том случае, если пользователь ни разу не изменял эти политики.
  3. Машинные политики с блокировкой применяются независимо от пользовательских настроек.
  4. Пользовательские политики применяются при логине пользователя и только в случае, если нет таких же машинных политик с блокировкой.
Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTНастройки KDE. Выбрать раздел, в правом окне редактора отобразится список политик:
GPUI. Управление настройками среды рабочего стола KDE
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики «Виртуальные рабочие столы»
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно указать настройки политики:
GPUI. Настройка политики «Виртуальные рабочие столы»
Политики управления настройками среды рабочего стола KDE относятся к экспериментальным, поэтому на машинах с ОС «Альт», где они применяются, должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Значения параметров данных политик прописываются в файлы конфигурации:
  • /etc/xdg/<имя_файла> — машинная политика;
  • ~/.config/<имя_файла> — пользовательская политика.

Таблица 34.39. Настройки среды рабочего стола KDE

Политика
Описание
Примечание
Виртуальные рабочие столы
Позволяет настроить количество виртуальных рабочих столов
Файлы конфигурации:
  • /etc/xdg/kwinrc — машинная политика;
  • ~/.config/kwinrc — пользовательская политика.
Пример файла конфигурации:
[Desktops]
Number=4
Rows=1
Где:
  • Rows=1 — количество строк отображения виртуальных окон на панели;
  • Number=4 — количество виртуальных окон на панели
Наличие кнопки «Удалить» в контекстном меню Dolphin
Позволяет управлять отображением кнопки Удалить в контекстном меню Dolphin
Файлы конфигурации:
  • /etc/xdg/kdeglobals — машинная политика;
  • ~/.config/kdeglobals — пользовательская политика.
Пример файла конфигурации:
[KDE]
ShowDeleteCommand[$i]=1
Возможные значения:
  • ShowDeleteCommand=1 — показывать кнопку Удалить в контекстном меню Dolphin;
  • ShowDeleteCommand=0 — не показывать кнопку Удалить в контекстном меню Dolphin;
  • ShowDeleteCommand[$i]=1 — показывать кнопку Удалить в контекстном меню Dolphin и заблокировать возможность изменения данной настройки пользователем
Настройка подключаемых устройств
Позволяет настроить автоматическое монтирование подключаемых устройств
Возможные значения:
  • Автоматически монтировать устройства — если этот параметр отключён (AutomountEnabled=0), никакие носители информации не будут монтироваться автоматически;
  • При входе в систему — если этот параметр включён (AutomountOnLogin=1) и при входе пользователя в систему к ней были подключены внешние носители информации, Plasma автоматически сделает их содержимое доступным для других программ;
  • При подключении — если этот параметр включён (AutomountOnPlugin=1), устройства будут монтироваться при подключении их к системе;
  • Автоматически монтировать те носители, которые никогда ранее не были примонтированы вручную — если этот параметр отключён (AutomountUnknownDevices=0), автоматически будут монтироваться только те носители, информацию о которых помнит система (носитель «запоминается», если он был хотя бы один раз был смонтирован).
Файлы конфигурации:
  • /etc/xdg/kded_device_automounterrc — машинная политика;
  • ~/.config/kded_device_automounterrc — пользовательская политика.
Пример файла конфигурации:
[General]
AutomountEnabled=1
AutomountOnLogin=1
AutomountOnPlugin=0
AutomountUnknownDevices=0
Региональные и языковые параметры
Позволяет установить региональные и языковые параметры. Эти параметры меняют настройки не только самого языка системы, но и задают настройки валюты, стандарт времени, числовые значения, стиль написания имени, телефонный код и стандарт телефонного номера страны. Параметры вписываются в поля Стандарт и Язык.
Примеры:
  • «Русский язык»: Стандарт — ru_RU.UTF-8; Язык — ru;
  • Французский язык»: Стандарт — fr_FR.UTF-8; Язык — fr;
  • Немецкий язык»: Стандарт — de_DE.UTF-8; Язык — de;
  • «Английский язык (Американский)»: Стандарт — en_US.UTF-8; Язык — en_US;
  • «Английский язык (Британский)»: Стандарт — en_GB.UTF-8; Язык — en_GB
Файлы конфигурации:
  • /etc/xdg/plasma-localerc — машинная политика;
  • ~/.config/plasma-localerc — пользовательская политика.
Пример файла конфигурации:
[Formats]
LANG[$i]=ru_RU.UTF-8

[Translation]
LANGUAGE=ru
Где:
  • LANG[$i]=ru_RU.UTF-8 — стандарт русского языка, возможность изменения данной настройки пользователем заблокирована;
  • LANGUAGE=ru — русский язык
Служба поиска файлов
Позволяет включить службу поиска файлов и задать параметры индексирования файлов
Возможные значения:
  • Включить службу поиска файлов — включить поиск файлов с помощью Baloo (Indexing-Enabled=1);
  • Включить индексацию содержимого файлов — индексировать не только имена файлов, но и их содержимое (only basic indexing=1);
  • Включить индексацию скрытых файлов и папок — индексировать также скрытые файлы и папки (index hidden folders=1).
Файлы конфигурации:
  • /etc/xdg/baloofilerc — машинная политика;
  • ~/.config/baloofilerc — пользовательская политика.
Пример файла конфигурации:
[Basic Settings]
Indexing-Enabled=1

[General]
index hidden folders=0
only basic indexing=1

Примечание

Параметры Включить индексацию содержимого файлов и Включить индексацию скрытых файлов и папок имеют смысл только при включённом параметре Включить службу поиска файлов

34.5.6.1. Внешний вид

Таблица 34.40. Внешний вид

Политика
Описание
Значение
Оформление рабочего стола
Позволяет выбрать оформление рабочего стола (определяет то, как отображаются различные компоненты Plasma), указав название темы (например, breeze-light).
Используются темы оформления рабочего стола, доступные в /usr/share/kf5/plasma/desktoptheme. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
  • default — тема по умолчанию (Breeze);
  • breeze-dark — Breeze, тёмный вариант;
  • breeze-light — Breeze, светлый вариант;
  • oxygen — Oxygen;
  • air — Air
Оформление рабочей среды
Позволяет установить тему оформления рабочей среды, указав название темы (например, org.kde.название.desktop или org.kde.название).
Используются темы оформления рабочего стола, доступные в /usr/share/kf5/plasma/look-and-feel/. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
  • org.kde.breeze.desktop;
  • org.kde.breezedark.desktop;
  • org.kde.oxygen;
  • org.kde.breezetwilight.desktop
Тема заставки
Позволяет установить тему заставки, указав название темы (например, org.kde.название.desktop или org.kde.название).
Используются темы заставки, доступные в /usr/share/kf5/plasma/look-and-feel/. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
  • org.kde.breeze.desktop;
  • org.kde.oxygen
Тема значков
Позволяет установить тему значков, указав название темы (например, gnome).
Применение темы значков зависит от её наличия в системе. Используются темы значков, доступные в /usr/share/icons/. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
  • Adwaita;
  • oxygen;
  • breeze;
  • breeze-dark;
  • gnome
Тема курсора
Позволяет установить тему курсора мыши, указав название темы (например, Adwaita).
Применение темы курсора зависит от её наличия в системе. Используются темы курсоров, доступные в /usr/share/icons/. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
  • Adwaita — Adwaita;
  • Breeze_Snow — Breeze, светлый вариант;
  • KDE_Classic — классический KDE;
  • Oxygen_Black — Oxygen, чёрный вариант;
  • Oxygen_Blue — Oxygen, синий вариант;
  • Oxygen_White — Oxygen, белый вариант;
  • Oxygen_Yellow — Oxygen, жёлтый вариант;
  • Oxygen_Zion — Oxygen Zion;
  • jimmac — jimmac;
  • breeze_cursors — Breeze
Цвета
Позволяет установить цветовую схему, указав название схемы (например, BreezeClassic).
Применение цветовой схемы зависит от её наличия в системе. Используются цветовые схемы, доступные в /usr/share/kf5/color-schemes. Для добавления новых тем необходимо установить пакеты, включающие в себя эти темы
Варианты цветовых схем:
  • OxygenCold — холодный Oxygen;
  • BreezeClassic — Breeze, классический вариант;
  • BreezeLight — Breeze, светлый вариант;
  • BreezeDark — Breeze, тёмный вариант;
  • Oxygen — Oxygen
Пользовательские политики
Включение панели фильтрации в файловом менеджере Dolphin
Позволяет включить или отключить панель фильтрации в файловом менеджере Dolphin
 — 
Обои рабочего стола
Позволяет установить изображение в качестве фона рабочего стола, указав файл, содержащий изображение
В качестве значения должна быть указана строка, содержащая путь (с точки зрения клиента) к файлу изображения. Например:
  • /usr/share/wallpapers/table.png — локальный путь к изображению;
  • smb://dc1.test.alt/reGr/test.png — путь в формате Linux к изображению в общем каталоге на сервере;
  • \\computername\share\image.png — путь в формате Windows к изображению в общем каталоге на сервере

34.5.6.2. Поведение рабочей среды

Таблица 34.41. Поведение рабочей среды

Политика
Описание
Примечание
Блокировка экрана
Позволяет регулировать параметры блокировки экрана.
Позволяет определить, сколько времени должно проходить перед включением блокировки экрана, настроить период отсрочки для разблокировки экрана без пароля.
Настройка Время до блокировки экрана при отсутствии активности будет применена только в случае включения параметра Автоматически блокировать экран
Файлы конфигурации:
  • /etc/xdg/kscreenlockerrc — машинная политика;
  • ~/.config/kscreenlockerrc — пользовательская политика.
Пример файла конфигурации:
[Daemon]
Autolock[$i]=1
Timeout[$i]=12
LockOnResume[$i]=1
LockGrace[$i]=11
Где:
  • Autolock=1 — автоматически блокировать экран;
  • Autolock=0 — не блокировать экран автоматически;
  • Autolock[$i]=1 — включить автоматическую блокировку экрана и заблокировать возможность изменения данной настройки пользователем;
  • Timeout=12 — продолжительность периода отсутствия активности пользователя до запуска блокировщика экрана (в минутах);
  • LockOnResume=1 — включить блокировку экрана рабочего стола после приостановки работы системы;
  • LockOnResume=0 — отключить блокировку экрана рабочего стола после приостановки работы системы;
  • LockOnResume[$i]=1 — включить блокировку экрана рабочего стола после приостановки работы системы и заблокировать возможность изменения данной настройки пользователем;
  • LockGrace=11 — интервал времени после блокирования экрана, во время которого можно вернуться в систему без ввода пароля (в секундах)
Графические эффекты
Позволяет настроить включение или отключение графических эффектов при входе в систему
Файлы конфигурации:
  • /etc/xdg/kwinrc — машинная политика;
  • ~/.config/kwinrc — пользовательская политика.
Пример файла конфигурации:
[Compositing]
Enabled=1
Возможные значения:
  • Enabled=1 — включить эффекты при входе в систему;
  • Enabled=0 — не включать эффекты при входе в систему;
  • Enabled[$i]=1 — включить эффекты при входе в систему и заблокировать возможность изменения данной настройки пользователем
Задержка отрисовки
Позволяет установить уровень задержки и плавности анимации
Возможные значения:
  • Принудительно низкая задержка (может привести к артефактам) (LatencyPolicy=ExtremelyLow);
  • Предпочитать низкую задержку (LatencyPolicy=Low);
  • Баланс скорости и плавности (LatencyPolicy=Medium);
  • Предпочитать более плавную анимацию (LatencyPolicy=High);
  • Принудительно наиболее плавная анимация» (по умолчанию) (LatencyPolicy=NONE).
Файлы конфигурации:
  • /etc/xdg/kwinrc — машинная политика;
  • ~/.config/kwinrc — пользовательская политика.
Пример файла конфигурации:
[Compositing]
LatencyPolicy=Medium
Открытие файла или каталога одним щелчком
Позволяет настроить открытие файла или каталога одним щелчком
Файлы конфигурации:
  • /etc/xdg/kdeglobals — машинная политика;
  • ~/.config/kdeglobals — пользовательская политика.
Пример файла конфигурации:
[KDE]
SingleClick[$i]=1
Возможные значения:
  • SingleClick=1 — щелчок по файлу или каталогу открывает объект;
  • SingleClick=0 — щелчок по файлу или каталогу выделяет объект;
  • SingleClick[$i]=1 — щелчок по файлу или каталогу открывает объект, возможность изменения данной настройки пользователем заблокирована
Режим активации окна
Позволяет определить как активируются окна при переключении фокуса
Возможные значения:
  • Фокус по щелчку — при выборе этого значения (FocusPolicy=FocusFollowMouse), окно становится активным по щелчку по нему мышью;
  • Фокус по щелчку + Приоритет мыши (FocusPolicy=FocusFollowMouse + NextFocusPrefersMouse=1) — этот режим похож на Фокус по щелчку. Если система сама должна выбрать активное окно (например, при закрытии активного окна), предпочтение будет отдано окну, находящемуся под указателем мыши;
  • Фокус следует за мышью — при выборе этого значения (FocusPolicy=FocusFollowsMouse), окно активируется при перемещении в него указателя мыши. Окна, которые появляются под указателем мыши случайно, не будут получать фокус, так как предотвращение смены фокуса работает как обычно. Этот вариант похож на Фокус по щелчку, но щелчок не требуется;
  • Фокус следует за мышью + Приоритет мыши (FocusPolicy=FocusFollowsMouse + NextFocusPrefersMouse=1) — этот режим похож на Фокус следует за мышью. Если система сама должна выбрать активное окно (например, при закрытии активного окна), предпочтение будет отдано окну, находящемуся под указателем мыши. Данный режим следует выбрать для смены фокуса по наведению указателя мыши;
  • Фокус под мышью — при выборе этого значения (FocusPolicy=FocusUnderMouse), активным становится окно, находящееся под указателем мыши. Если последний указывает не на окно (а, например, на обои рабочего стола), фокус перемещается на окно, которое находилось под указателем мыши последним. Примечание: предотвращение смены фокуса и переключение через Alt+Tab противоречат этому поведению и не будут работать;
  • Фокус строго под мышью (FocusPolicy=FocusStrictlyUnderMouse) — этот режим схож с режимом Фокус под мышью, но имеет более узкое применение. Активным становится только то окно, которое находится под указателем мыши. При смещении указателя мыши с окна фокус теряется. Примечание: предотвращение смены фокуса и переключение через Alt+Tab противоречат этому поведению и не будут работать.
Файлы конфигурации:
  • /etc/xdg/kwinrc — машинная политика;
  • ~/.config/kwinrc — пользовательская политика.
Пример файла конфигурации:
[Windows]
FocusPolicy=FocusFollowMouse
NextFocusPrefersMouse=0
Пользовательские политики
Обновление графического окружения Plasma
Если политика включена, при изменении пути до файла изображения рабочего стола сервис графического окружения Plasma-plasmashell будет автоматически обновляться

34.5.6.3. Управление электропитанием

Данные политики позволяют настроить параметры энергосбережения в зависимости от режима электропитания: «Питание от сети», «Питание от батареи» и «Низкий уровень заряда».
Значения параметров прописываются в файл конфигурации:
  • /etc/xdg/powermanagementprofilesrc — машинная политика;
  • ~/.config/powermanagementprofilesrc — пользовательская политика.

Таблица 34.42. Управление электропитанием

Политика
Описание
Файл конфигурации
Потухание экрана
Позволяет настроить время до угасания экрана (уменьшения яркости до нуля) в зависимости от режима электропитания
Для указания значения используется точное время в минутах, заданное в миллисекундах. Если время в миллисекундах указано неверно и не соответствует целому значению в минутах, то время автоматически округляется к ближайшему целому значению в меньшую сторону, например:
  • 60000 — угасание монитора через 60000 миллисекунд, 1 минуту;
  • 80000 — угасание монитора через 80000 миллисекунд, 1 минуту;
  • 120000 — угасание монитора через 120000 миллисекунд, 2 минуты;
  • 600000 — угасание монитора через 600000 миллисекунд, 10 минут.
Пример файла конфигурации:
[AC][DimDisplay]
idleTime=800000

[Battery][DimDisplay]
idleTime=600000

[LowBattery][DimDisplay]
idleTime=600000
Энергосбережение монитора
Позволяет настроить время до выключения монитора (при бездействии) в зависимости от режима электропитания
Для указания значения используется точное время в минутах, заданное в секундах. Если время в секундах указано неверно и не соответствует целому значению в минутах, то время автоматически округляется к ближайшему целому значению в меньшую сторону, например:
  • 120 — выключение монитора через 120 секунд, 2 минуты;
  • 300 — выключение монитора через 300 секунд, 5 минут;
  • 600 — выключение монитора через 600 секунд, 10 минут;
  • 700 — выключение монитора через 600000 секунд, 11 минут.
Пример файла конфигурации:
[AC][DPMSControl]
idleTime=800

[Battery][DPMSControl]
idleTime=600

[LowBattery][DPMSControl]
idleTime[$i]=60
Яркость клавиатуры
Позволяет настроить яркость клавиатуры в зависимости от режима электропитания
Для указания значения используется число от 0 до 100, например:
  • 0 — яркость клавиатуры 0 процентов;
  • 60 — яркость клавиатуры 60 процентов;
  • 100 — яркость клавиатуры 100 процентов.
Пример файла конфигурации:
[AC][KeyboardBrightnessControl]
value=60

[Battery][KeyboardBrightnessControl]
value=20

[LowBattery][KeyboardBrightnessControl]
value[$i]=0
Яркость экрана
Позволяет настроить яркость экрана в зависимости от режима электропитания
Для указания значения используется число от 0 до 100, например:
  • 0 — яркость экрана 0 процентов;
  • 60 — яркость экрана 60 процентов;
  • 100 — яркость экрана 100 процентов.
Пример файла конфигурации:
[AC][BrightnessControl]
value=80

[Battery][BrightnessControl]
value=50

[LowBattery][BrightnessControl]
value=30

34.5.6.4. Настройки приложений

Таблица 34.43. Настройки приложений

Политика
Описание
Значение
Браузер по умолчанию
Позволяет выбрать браузер по умолчанию
Возможные значения:
  • Yandex-Browser;
  • Firefox;
  • Chromium-gost.

Примечание

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

34.5.7. Управление пакетами

Эта групповая политика позволяет централизованно для компьютеров устанавливать и удалять пакеты.

Примечание

Для возможности установки и удаления пакетов на компьютерах, на которых будет применяться политика, должен быть установлен пакет packagekit.
Для настройки политики следует перейти в Компьютер/ПользовательАдминистративные шаблоныСистема ALTУправление пакетами. Выбрать раздел, в правом окне редактора отобразится список политик:
GPUI. Раздел «Управление пакетами»
Для задания списка пакетов, которые необходимо установить, щелкнуть левой кнопкой мыши на политике Установка пакетов, откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно «Установка пакетов»
Для включения политики следует установить отметку в поле Включено. Для задания списка пакетов, которые должны быть установлены/удалены, нажать кнопку Редактировать и в открывшемся окне ввести список пакетов по одному на каждой строке:
GPUI. Список пакетов для установки
Для добавления/удаления строк можно воспользоваться соответствующими кнопками.

Примечание

Для задания списка пакетов, которые необходимо удалить, необходимо выбрать политику Удаление пакетов.
Можно также включить политику Синхронная работа с пакетами. Включение данной настройки запретит работу (установка, удаление) с пакетами в фоновом режиме, что может замедлить работу компьютера при применении политики (при загрузке машины, если политика машинная, или входе пользователя в систему, если политика пользовательская).
Для включения политики Синхронная работа с пакетами следует в разделе Компьютер/ПользовательАдминистративные шаблоныСистема ALTУправление пакетами выбрать пункт Синхронная работа с пакетами, в открывшемся окне установить отметку в поле Включено и нажать кнопку ОК, для сохранения изменений:
GPUI. Включение политики «Синхронная работа с пакетами»
Политики управления пакетами относятся к экспериментальным, поэтому на машинах с ОС «Альт» где они применяются должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Все настройки политики управления пакетами хранятся в файлах {GUID GPT}/Machine/Registry.pol и {GUID GPT}/User/Registry.pol.
Пример файла Registry.pol:
PReg
[Software\BaseALT\Policies\GPUpdate;GlobalExperimental;;;]
[Software\BaseALT\Policies\Packages;Sync;;;]
[Software\BaseALT\Policies\Packages\Install;gimp;;;gimp]
[Software\BaseALT\Policies\Packages\Install;simple-scan;;;simple-scan]
[Software\BaseALT\Policies\Packages\Remove;python3-tools;;;python3-tools]

34.5.8. Экспериментальные групповые политики

На тех машинах с ОС «Альт», где применяются экспериментальных политики, должны быть включены «Экспериментальные групповые политики».
Для включения экспериментальных групповых политик следует в разделе КомпьютерАдминистративные шаблоныСистема ALTГрупповые политики выбрать пункт Экспериментальные групповые политики и установить в открывшемся окне отметку в поле Включено:
GPUI. Включение политики «Экспериментальные групповые политики»

34.5.9. Механизмы GPUpdate

Каждый механизм применения групповых политик можно отдельно включить или отключить. Для этого следует включить/отключить соответствующую политику в разделе КомпьютерАдминистративные шаблоныСистема ALTГрупповые политикиМеханизмы GPUpdate. Например, включить/отключить механизм групповых политик управления пакетами (Packages) можно, включив/отключив политики Установка и удаление программ или Установка и удаление программ для пользователей:
GPUI. Механизмы GPUpdate

34.5.10. Установка пароля для локального пользователя root (LAPS)

Для редактирования политик, относящихся к настройке LAPS, следует перейти в КомпьютерАдминистративные шаблоныСистема ALTLAPS. Отобразится список политик:
GPUI. Политики LAPS
При выборе политики откроется диалоговое окно настройки политики:
GPUI. Диалоговое окно настройки политики «Каталог резервного копирования паролей»
Можно не задавать настройку политики, включить или отключить. Если выбрать параметр Включено, в разделе Параметры в выпадающем списке можно указать настройки политики:
GPUI. Установка каталога для резервного копирования паролей «Active Directory»
Для работы LAPS необходимо включить групповую политику Настройки LAPS расположенную в разделе КомпьютерАдминистративные шаблоныСистема ALTГрупповые политикиМеханизмы GPUpdate
GPUI. Настройки LAPS

Таблица 34.44. Групповые политики LAPS

Политика
Ключ
Описание
Значение
Действия после проверки подлинности
PostAuthenticationActions, PostAuthenticationResetDelay
Политика позволяет настроить автоматические действия, выполняемые после входа в систему под учетной записью, управляемой LAPS
Льготный период — время (в часах), в течение которого никакие действия не выполняются. Если значение больше 0, LAPS выполнит указанные действия по истечении указанного времени. Если значение равно 0, действия не выполняются. Если политика не настроена, испольуется значение по умолчанию — 24 часа;
Доступные действия:
  • Сбросить пароль — LAPS меняет пароль по истечении льготного периода;
  • Сбросить пароль и выйти из системы — LAPS меняет пароль и завершает все активные сеансы пользователя (локальные и RDP). Поведение по умолчанию, если политика не настроена;
  • Сбросить пароль и перезагрузить устройство —  LAPS меняет пароль и немедленно перезагружает компьютер.

Примечание

По умолчанию, если политика не настроена, применяется действие Сбросить пароль и выйти из системы через 24 часа
Имя учетной записи администратора
AdministratorAccountName
Позволяет указать имя локальной учётной записи, пароль которой будет управляться LAPS
Если политика включена, LAPS будет управлять паролем для локальной учётной записи с указанным именем.
Если политика отключена или не настроена, LAPS будет управлять паролем учётной записи root
Истечение срока действия пароля
PasswordExpirationProtectionEnabled
Определяет, разрешено ли превышение срока действия пароля, заданного в политике Параметры паролей
Если политика включена или не настроена, превышение срока действия запрещено. При обнаружении истечения срока пароль немедленно изменяется, а новый срок устанавливается в соответствии с политикой Параметры паролей.
Если политика отключена, срок действия может превышать заданный
Каталог резервного копирования паролей
BackupDirectory
Позволяет указать место резервного копирования пароля локальной учётной записи администратора
Возможные значения:
  • Отключено — резервное копирование отключено;
  • Active Directory — пароль сохранятся в Active Directory.

Примечание

Если для выбрано значение Active Directory, но управляемое устройство не присоединено к Active Directory, резервное копирование не выполняется.
Если политика отключена или не настроена, пароль не управляется LAPS.
Параметры паролей
PasswordAgeDays, PasswordComplexity, PasswordLength
Позволяет настроить сложность, длину и срок действия паролей
Сложность пароля — определяет допустимые символы при создании нового пароля:
  • Заглавные буквы;
  • Заглавные буквы, строчные буквы;
  • Заглавные буквы, строчные буквы, цифры;
  • Заглавные буквы, строчные буквы, цифры, специальные символы (по умолчанию);
Длина пароля — количество символов в пароле:
  • Минимум: 8 символов
  • Максимум: 64 символа
  • По умолчанию: 14 символов
Срок действия пароля (в днях):
  • Минимум: 1 день;
  • Максимум: 365 дней;
  • По умолчанию: 30 дней
Размер журнала зашифрованных паролей
ADEncryptedPasswordHistorySize
Позволяет указать количество зашифрованных паролей, хранящихся в Active Directory
Допустимый диапазон: 0 — 12.
Если политика включена, указанное количество предыдущих паролей будет храниться в Active Directory.
Если политика отключена или не настроена, предыдущие пароли не сохраняются.

Примечание

Настройка политики не действует, если:
  • не настроено резервное копирование пароля в Active Directory;
  • шифрование паролей отключено
Расшифрование паролей
ADPasswordEncryptionPrincipal
Политика позволяет задать пользователя или группу, пользователям которой разрешено расшифровывать зашифрованные пароли
Если политика включена, зашифрованные пароли могут расшифровывать указанный пользователь или члены указанной группы.
Если политика отключена или не настроена, расшифровывать пароли могут только члены группы Администраторы домена

Примечание

Настройка не действует, если шифрование паролей не включено.

Примечание

Значение может быть:
  • Идентификатором безопасности (SID): S-1-5-21-2127521184-1604012920-1887927527-35197
  • Именем пользователя или группы в формате: test\LAPSAdmins
  • Универсальным именем: lapsadmins@test.alt
Шифрование паролей
ADPasswordEncryptionEnabled
Позволяет включить шифрование пароля перед отправкой в Active Directory
Если политика отключена, пароль управляемой учётной записи не шифруется.
Если политика включена или не настроена, пароль управляемой учётной записи шифруется

Примечание

Пароль не будет зашифрован, если:
  • не настроено резервное копирование пароля в Active Directory;
  • функциональный уровень домена ниже Windows Server 2016

34.5.11. Управление политиками браузера Chromium

Эти групповые политики позволяют централизованно управлять настройками интернет-браузера Google Chromium.
Механизм Chromium в составе пакета gpupdate формирует JSON-файл для браузера из шаблонов групповых политик. Во время запуска веб-браузер Google Chromium считывает файл /etc/chromium/policies/managed/policies.json и применяет параметры групповых политик. Групповые политики на основе policies.json предоставляют кроссплатформенную совместимость, что позволяет управлять браузерами в любом дистрибутиве Альт с установленным окружением рабочего стола.

Примечание

Для случаев, если требуется вести параллельно другой файл с конфигурациями, можно создать файл /etc/chromium/policies/managed/policies_local.json и вносить изменения в него. При коллизиях будет применена последняя прочитанная настройка.

Примечание

Данный механизм реализован только для машинных политик.

Примечание

Настройка политик для браузера Chromium требует дополнительной установки ADMX-файлов Google Chrome (пакет admx-chromium).
Результат применения параметров групповой политики для Chromium можно проверить, указав в адресной строке URL: chrome://policy:
Активные политики Chromium
В качестве примера рассмотрим политику установки URL домашней страницы.
Для редактирования политик браузера Chromium следует перейти в КомпьютерАдминистративные шаблоныGoogleGoogle Chrome. Отобразится список политик:
GPUI. Политики настройки веб-браузера Chromium
Для установки URL домашней страницы следует выбрать пункт Главная страница и страница быстрого доступа при запуске, щелкнуть левой кнопкой мыши на политике Настройка URL домашней страницы, откроется диалоговое окно настройки политики. Выбрать параметр Включено, в разделе Параметры ввести URL и нажать кнопку ОК:
GPUI. Настройка URL домашней страницы веб-браузера Chromium
Результат применения политики:
Настройки веб-браузера Chromium
Все настройки политики браузера Chromium хранятся в файле {GUID GPT}/Machine/Registry.pol. Пример файла Registry.pol:
PReg[Software\Policies\Google\Chrome;HomepageLocation;;;https://docs.altlinux.org]
В таблице Настройки веб-браузера Chromium описаны только некоторые политики. Полный список политик и их описание можно найти в браузере Chromium, указав в адресной строке URL: chrome://policy и установив отметку на пункте Показывать правила, значения которых не заданы.

Таблица 34.45. Настройки веб-браузера Chromium

Политика
Ключ
Описание
Действие при запуске
RestoreOnStartup
Настройка процесса запуска Chromium.
При выборе значения Восстановить последний сеанс или «Открыть список URL и восстановить последний сеанс» будут отключены некоторые функции, такие как удаление данных о работе в браузере или сессионных файлов cookie при завершении работы.
Если для политики указано значение Открыть список URL и восстановить последний сеанс, браузер будет восстанавливать предыдущий сеанс и открывать URL, заданные в политике URL, открывающиеся при запуске, в отдельном окне. Если пользователь не закроет страницы с этими URL, они также будут восстановлены в новом сеансе.
Если политика находится в состоянии Включено, пользователи не смогут изменить эту настройку в Chromium
Настройка URL домашней страницы
HomepageLocation
Позволяет установить URL домашней страницы и запрещает пользователям его изменять.
Если политика находится в состоянии Включено, можно установить домашнюю страницу по умолчанию (открыть эту страницу в Chromium можно, нажав кнопку Главная страница на панели инструментов). Пользователи при этом не смогут изменить домашнюю страницу.
Если политика находится в состоянии Отключено, пользователи не смогут установить домашнюю страницу.
Если политика находится в состоянии Не сконфигурировано, пользователь может сам установить и изменить домашнюю страницу.
Данная политика не будет работать, если пользователем или политикой «Сделать страницу быстрого доступа главной» в качестве главной страницы была задана страница быстрого доступа
Настройка URL страницы быстрого доступа
NewTabPageLocation
Позволяет установить URL страницы быстрого доступа по умолчанию и запрещает пользователям его изменять.
Страница быстрого доступа появляется, когда пользователь открывает новую вкладку или окно.
Политика не определяет, какие страницы открываются при запуске. Для этого применяется политика Действие при запуске. Но если страница быстрого доступа используется в качестве главной или стартовой страницы, эта политика также распространяется и на них.
Если политика находится в состоянии Не сконфигурировано или URL не указан, используется страница быстрого доступа, установленная по умолчанию
Отображать кнопку Главная страница на панели инструментов
ShowHomeButton
Позволяет управлять отображением кнопки Главная страница на панели инструментов.
Если политика находится в состоянии Включено, кнопка Главная страница отображается на панели инструментов.
Если политика находится в состоянии Отключено, кнопка Главная страница не будет отображаться.
Если эта политика настроена, пользователи не смогут изменить эту настройку в Chromium. В противном случае пользователи смогут добавить или скрыть кнопку главного экрана
Сделать страницу быстрого доступа главной
HomepageIsNewTabPage
Если политика находится в состоянии Включено, в качестве главной страницы используется страница быстрого доступа. Заданный URL главной страницы игнорируется.
Если политика находится в состоянии Отключено или Не сконфигурировано, страница быстрого доступа открывается, только когда в качестве URL главной страницы указан путь chrome://newtab.
Если эта политика настроена, пользователи не смогут изменить главную страницу в Chromium. Если политика не сконфигурирована, пользователи смогут выбрать, устанавливать ли страницу быстрого доступа в качестве главной
URL, открывающиеся при запуске
RestoreOnStartupURLs
Если для политики Действие при запуске задано значение Открыть одну или несколько страниц, в данной политике можно настроить список URL-адресов.
В противном случае при запуске будет открываться страница быстрого доступа
Включить сохранение паролей
PasswordManagerEnabled
Если политика находится в состоянии Включено или Не сконфигурировано, Chromium будет предлагать запоминать введенные пароли (а также предлагать их при следующем входе).
Если политика находится в состоянии Отключено, пользователям будут доступны только ранее сохраненные пароли, а сохранить новые будет нельзя.
Если политика настроена, пользователи не могут изменить её в Chromium. В противном случае пользователи при желании смогут отключить функцию сохранения паролей
Включить поисковую систему по умолчанию
DefaultSearchProviderEnabled
Если политика находится в состоянии Включено, то при вводе в адресную строку текста (не URL) будет выполняться поиск в используемой по умолчанию поисковой системе.
Задать поисковую систему по умолчанию можно с помощью других политик. Если значения для этих политик не установлены, пользователь может сам выбрать поисковую систему по умолчанию.
Если политика находится в состоянии Отключено, то поиск текста, введенного в адресную строку, не выполняется
Название поисковой системы по умолчанию
DefaultSearchProviderName
Если политика Включить поисковую систему по умолчанию включена, то данная политика задает название поисковой системы по умолчанию.
Если параметр Включить поисковую систему по умолчанию не задан, то используется имя хоста, указанное в URL поискового запроса
Показ URL страницы быстрого доступа в поисковой системе по умолчанию
DefaultSearchProviderNewTabURL
Если политика Включить поисковую систему по умолчанию включена, то данная политика указывает URL поисковой системы, используемой для страницы быстрого доступа.
Если политика находится в состоянии Отключено или Не сконфигурировано, страница быстрого доступа не будет использоваться
URL поиска для поисковой системы по умолчанию
DefaultSearchProviderSearchURL
Если политика Включить поисковую систему по умолчанию включена, то данная политика содержит URL поисковой системы, используемой по умолчанию. В URL должна быть строка '{searchTerms}', которая во время отправки запроса заменяется на текст пользователя.
URL поисковой системы Google можно указать так: '{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion} {google:assistedQueryStats}{google:searchFieldtrialParameter} {google:searchClient}{google:sourceId}ie={inputEncoding}'
URL поисковой системы Яндекс можно указать так: https://yandex.ru/search/?text={searchTerms}
Включить панель закладок
BookmarkBarEnabled
Если политика находится в состоянии Включено, в Chromium будет видна панель закладок.
Если политика находится в состоянии Отключено, панель закладок будет всегда скрыта.
Если эта политика настроена, пользователи не смогут её изменить. Если политика находится в состоянии Не сконфигурировано, пользователи смогут самостоятельно решать, использовать эту функцию или нет
Разрешить пользователям менять фон на странице быстрого доступа
NTPCustomBackgroundEnabled
Если политика находится в состоянии Отключено, пользователи не смогут изменять фон страницы быстрого доступа. Уже используемые изображения удаляются без возможности восстановления.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователи могут изменять фон страницы быстрого доступа
Блокировать изображения на этих сайтах
ImagesBlockedForUrls
Позволяет задать список шаблонов URL для указания сайтов (значение * не поддерживается для этой политики), на которых запрещен показ изображений.
Если политика находится в состоянии Включено, Chromium будет блокировать изображения на указанных сайтах.
Если политика находится в состоянии Не сконфигурировано, то действует политика Настройка изображений по умолчанию при условии, что оно задано. В противном случае применяются персональные настройки пользователя
Блокировка доступа к списку URL
URLBlocklist
Если политика находится в состоянии Включено, страницы с запрещенными URL не загружаются (задаются шаблоны запрещенных URL).
Если политика находится в состоянии Не сконфигурировано, браузер не блокирует URL.
Формат шаблона URL должен соответствовать требованиям, указанным на странице https://www.chromium.org/administrators/url-blocklist-filter-format. В политике URLAllowlist можно задавать не более 1000 исключений
Всегда открывать PDF-файлы во внешнем приложении
AlwaysOpenPdfExternally
Если политика находится в состоянии Включено, встроенное средство просмотра PDF-файлов в Chromium отключается, они начинают обрабатываться как скачанный контент, а пользователю разрешается открывать их в приложении, установленном по умолчанию.
Если политика находится в состоянии Отключено, для просмотра PDF-файлов будет использоваться плагин PDF (если он не отключен пользователем).
Если политика находится в состоянии Не сконфигурировано, пользователи смогут настраивать этот параметр самостоятельно
Всегда указывать место для скачивания
PromptForDownloadLocation
Если политика находится в состоянии Включено, то при скачивании каждого файла пользователь должен указать, в какой каталог его сохранить.
Если политика находится в состоянии Отключено, скачивание выполняется без запроса каталога для сохранения.
Если политика находится в состоянии Не сконфигурировано, пользователи могут выбрать каталог, в который всегда будут сохраняться файлы
Выбор каталога для скачиваний
DownloadDirectory
В этой политике указывается каталог, в котором браузер Chromium сохраняет скачиваемые файлы. Данный каталог используется, даже если пользователь выбрал каталог для сохранения или установил флажок, позволяющий выбирать каталог при каждом скачивании файла.
Эта политика отменяет действие политики DefaultDownloadDirectory.
Если политика находится в состоянии Не сконфигурировано, браузер Chromium скачивает файлы в каталог по умолчанию, а пользователь может его изменить.
Список переменных можно посмотреть на странице https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables
Доступ к поисковой системе по умолчанию в контекстном меню
DefaultSearchProviderContextMenuAccessAllowed
Позволяет использовать поисковую систему по умолчанию в контекстном меню.
Если политика находится в состоянии Включено или Не сконфигурировано, поиск в системе по умолчанию будет доступен в контекстном меню.
Если политика находится в состоянии Отключено, поиск будет недоступен в контекстном меню.
Значение этой политики применяется только в том случае, если включена политика Включить поисковую систему по умолчанию
Доступность режима инкогнито
IncognitoModeAvailability
Определяет, может ли пользователь просматривать страницы в Chromium в режиме инкогнито.
Если политика находится в состоянии Включено или значение не задано, страницы можно открывать в режиме инкогнито.
Если политика находится в состоянии Отключено, пользователи не смогут открывать страницы в режиме инкогнито.
Если для политики выбрано значение Включить принудительно, страницы можно просматривать ТОЛЬКО в режиме инкогнито
Удаление истории просмотров и загрузок браузера
AllowDeletingBrowserHistory
Определяет, может ли пользователь удалять историю просмотров и скачиваний.
Если политика находится в состоянии Включено или Не сконфигурировано, то историю просмотров и скачиваний можно удалить.
Если политика находится в состоянии Отключено, то историю просмотров и скачиваний удалить нельзя
Разрешить вызов окна выбора файлов
AllowFileSelectionDialogs
Если политика находится в состоянии Включено или Не сконфигурировано, то пользователи смогут открывать в Chromium окна выбора файлов.
Если политика находится в состоянии Отключено, и пользователь выполняет действия, для которых нужно открыть окно выбора файлов (например, импортирует закладки, загружает файлы, сохраняет ссылки и т.д.), вместо окна отображается сообщение и предполагается, что пользователь нажал кнопку Отмена в окне выбора файлов
Включить поисковые подсказки
SearchSuggestEnabled
Если политика находится в состоянии Включено, в адресной строке Chromium при поиске будут появляться подсказки.
Если политика находится в состоянии Отключено, поисковые подсказки не отображаются.
Эта политика не влияет на показ в строке поиска закладок и страниц из истории просмотров.
Если политика настроена, пользователи не могут изменить её. Если политика не сконфигурирована, подсказки при поиске будут включены, но пользователи смогут отключить их в любое время
Настройка изображений по умолчанию
DefaultImagesSetting
Если политика находится в состоянии Включено и выбрано значение 1 — Разрешить показ изображений на всех сайтах, на всех сайтах могут показываться изображения. При значении 2 — Запретить показ изображений на всех сайтах, показ изображений на сайтах запрещен.
Если политика находится в состоянии Не сконфигурировано, показ изображений разрешен, но пользователи могут изменять этот параметр
Разрешить полноэкранный режим
FullscreenAllowed
Если политика находится в состоянии Включено или Не сконфигурировано, то при наличии необходимых разрешений пользователи, приложения и расширения смогут включать полноэкранный режим, в котором виден только контент веб-страниц.
Если политика находится в состоянии Отключено, то полноэкранный режим будет заблокирован для всех пользователей, приложений и расширений
Управляемые закладки
ManagedBookmarks
Политика позволяет установить список закладок в Chromium.
Если политика настроена, будет создан список закладок Каждая закладка представляет собой словарь, где ключам name и url соответствуют значения — название закладки и URL-адрес сайта ([{"name": "Документация","url": "docs.altlinux.org"},{"name": "Wiki","url": "altlinux.org"}]).
По умолчанию папка называется «Управляемые закладки». Чтобы изменить это название, необходимо добавить в правило дополнительный словарь с единственным ключом toplevel_name и названием папки в качестве значения. Можно также задать подпапку для закладок. Для этого вместо ключа url следует использовать ключ children, а в качестве его значения указать список вложенных закладок или папок ([{"toplevel_name":"ALT"},{"name":"BaseALT","url":"basealt.ru"}, {"name":"ALT docs","children":[{"name": "Документация","url": "docs.altlinux.org"}, {"name": "Wiki","url": "altlinux.org"}]}]).
Chromium дополняет неполные URL так же, как при их вводе в адресной строке. Например, адрес altlinux.org будет преобразован в https://altlinux.org/.
Пользователи не смогут изменять папки с закладками, а только скрывать их на панели. Управляемые закладки не синхронизируются с аккаунтом пользователя, а расширения не могут их изменять
Включить анонимный сбор данных о URL
UrlKeyedAnonymizedDataCollectionEnabled
Если политика находится в состоянии Включено, то всегда выполняется анонимный сбор данных о URL (эти сведения отправляются в Google с целью улучшить поиск и просмотр веб-страниц).
Если политика находится в состоянии Отключено, сбор данных о URL не выполняется.
Если политика находится в состоянии Не сконфигурировано, пользователь может разрешить или запретить анонимный сбор данных о URL
Удаление данных о работе в браузере при выходе
ClearBrowsingDataOnExitList
Политика позволяет настроить список данных о работе в браузере, которые должны удаляться, когда пользователь закрывает все окна браузера.
Можно указать следующие типы данных:
  • browsing_history (история браузера);
  • download_history (история скачиваний);
  • cookies_and_other_site_data (файлы cookie и другие данные сайтов);
  • cached_images_and_files (изображения и другие файлы, сохраненные в кеше);
  • password_signin (пароли);
  • autofill (автозаполнение);
  • site_settings (настройки сайтов);
  • hosted_app_data (данные размещенных приложений).
У этой политики нет приоритета над политикой Удаление истории просмотров и загрузок браузера.
Эта политика работает, если политика Отключить синхронизацию данных с Google находится в состоянии Включено. В противном случае политика игнорируется.
Если Chromium закрывается непредвиденно (например, из-за сбоя в работе браузера или ОС), данные о работе в браузере удаляются при следующей загрузке профиля.
Если политика находится в состоянии Отключено, то данные о работе, при закрытии браузера, не удаляются
Отключить синхронизацию данных с Google
SyncDisabled
Если политика находится в состоянии Включено, синхронизация данных в Chromium с помощью сервисов, размещенных в Google, отключается.
Полностью отключить сервис «Chrome Sync» можно через Google Admin console.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут самостоятельно решать, использовать ли им сервис «Chrome Sync»
Включает гостевой режим в браузере
BrowserGuestModeEnabled
Если политика находится в состоянии Включено или Не сконфигурировано, разрешается использовать гостевой доступ. При гостевом доступе все окна для профилей Chromium открываются в режиме инкогнито.
При гостевом доступе все окна для профилей Chromium открываются в режиме инкогнито.
Если политика находится в состоянии Отключено, в браузере не разрешается использовать гостевые профили
Задать объем кеша в байтах
DiskCacheSize
Если для политики задано значение None, Chromium использует объем кеша по умолчанию для хранения кешированных файлов на диске. В этом случае пользователи не могут изменить правило.
Если политика находится в состоянии Включено Chromium будет использовать указанный размер кеша независимо от того, указали ли пользователи значение экспериментального параметра --disk-cache-size. Объем кеша задается в байтах, например, чтобы задать размер кеша 300МБ, необходимо указать 314572800. Значения меньше нескольких мегабайтов округляются.
Если политика находится в состоянии Не сконфигурировано, Chromium использует объем по умолчанию. В этом случае пользователи могут менять размер кеша с помощью экспериментального параметра --disk-cache-size.
Указанное в правиле значение используется различными подсистемами в браузере как справочное. Поэтому фактический объем используемого дискового пространства может превышать указанное значение, но будет иметь такой же порядок
Список разрешенных серверов для аутентификации
AuthServerAllowlist
Это правило указывает, какие серверы можно использовать для встроенной проверки подлинности Windows (IWA). Встроенная проверка подлинности включается, только когда Chromium получает запрос на аутентификацию от прокси-сервера или от сервера из списка разрешенных.
Если политика находится в состоянии Не сконфигурировано, Chromium отвечает на запросы IWA только после того, как определяет, находится ли сервер в интранете. Если сервер находится в Интернете, Chromium игнорирует поступающие от него IWA запросы (веб-сайту не разрешается использовать аутентификацию SPNEGO с помощью браузера).
Названия серверов нужно разделять запятыми. Допустимы подстановочные знаки (*)
Управление расширениями (Позволяет управлять расширениями)
ExtensionSettings
Это правило контролирует настройки управления расширениями в Chromium, включая те, которые заданы другими правилами. Оно заменяет любые ранее действовавшие правила.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут самостоятельно настраивать расширения.
Если политика находится в состоянии Включено, настройки расширений задает администратор с помощью кода, указанного в параметрах политики:
  • идентификатор расширения или URL обновления привязывается только к одной конкретной настройке;
  • идентификатор * действует на все расширения, для которых в политике не задана отдельная конфигурация;
  • если указан URL обновления, заданная конфигурация применяется ко всем расширениям, в манифесте которых приведен этот URL.
Пример значения:
{
  "hdokiejnpimakedhajhdlcegeplioahd": {
    "installation_mode": "force_installed",
    "update_url": "https://clients2.google.com/service/update2/crx"
  },
  "pioclpoplcdbaefihamjohnefbikjilc": {
    "installation_mode": "force_installed",
    "update_url": "https://clients2.google.com/service/update2/crx"
  }
}
Параметры политики:
  • allowed_types — типы приложений и расширений, которые пользователям разрешено устанавливать в браузере (допустимые строки: «extension», «hosted_app», «legacy_packaged_app», «tplatform_appeme», «theme», «user_script»). Используется только для настройки конфигурации по умолчанию со значением *;
  • blocked_install_message — уведомление (не более 1000 символов), которое будет появляться на устройствах пользователей при попытке установить запрещенные расширения;
  • blocked_permissions — запрещает пользователям устанавливать и запускать расширения, требующие разрешений API (список доступных разрешений указан в манифесте расширения);
  • installation_mode — указывает, разрешено ли добавлять заданные расширения. Допустимые режимы:
    • allowed — пользователи могут установить это расширение (поведение по умолчанию);
    • blocked — пользователи не могут установить это расширение;
    • removed — пользователи не могут установить это расширение. Если расширение было установлено, оно будет удалено;
    • force_installed — расширение устанавливается автоматически. Пользователи не могут его удалить. В этом режиме необходимо указать ссылку для скачивания расширения (параметр update_url);
    • normal_Installed — расширение устанавливается автоматически. Пользователи могут его удалить. В этом режиме необходимо указать ссылку для скачивания расширения (параметр update_url);
  • install_sources — список URL страниц, с которых разрешено загружать и устанавливать расширения Необходимо разрешить URL расположения CRX-файла и страницы, с которой начинается скачивание (то есть URL перехода);
  • minimum_version_required — отключает расширения (в том числе установленные принудительно) более ранних версий, чем определено этим параметром. Формат строки версии аналогичен формату, который используется в манифесте расширения;
  • update_url — определяет, откуда загружается расширение. Можно указать URL интернет-магазина Chrome, Opera или использовать XML-файл:
    • если расширение размещено в интернет-магазине Chrome, следует указать https://clients2.google.com/service/update2/crx
    • если расширение размещено в интернет-магазине Opera, следует указать https://extension-updates.opera.com/api/omaha/update/
  • override_update_url — указывает, что для всех последующих обновлений расширения будет использоваться URL из поля update_url или update в политике ExtensionInstallForcelist. Если эта политика не сконфигурирована или отключена, будет использоваться URL из манифеста расширения;
  • verified_contents_url — указывает путь до файла extension.verified_contents. С его помощью расширение проверяется на доверие (используется, если нет доступа в интернет);
  • runtime_allowed_hosts — разрешает взаимодействие расширений с указанными сайтами, даже если они указаны в поле runtime_blocked_hosts. Можно указать до 100 сайтов;
  • runtime_blocked_hosts — запрещает расширениям взаимодействовать с указанными сайтами или изменять их, в том числе вставлять скрипты, получать доступ к файлам cookie и изменять веб-запросы. Можно указать до 100 сайтов;
  • toolbar_pin — определяет, закреплен ли значок расширения на панели инструментов. Возможные значения:
    • force_pinned — значок расширения закреплен на панели инструментов и постоянно виден Пользователь не может скрыть его в меню расширения;
    • default_unpinned — расширение скрыто в меню расширений (по умолчанию), пользователь может закрепить его на панели инструментов

34.5.12. Управление политиками браузера Firefox

Эти групповые политики позволяют централизованно управлять настройками интернет-браузера Mozilla Firefox.
Механизм Firefox в составе пакета gpupdate формирует JSON-файл для браузера из шаблонов групповых политик. Во время запуска веб-браузер Mozilla Firefox считывает собственный файл policies.json и применяет параметры групповых политик. Групповые политики на основе policies.json предоставляют кроссплатформенную совместимость, что позволяет управлять браузерами в любом дистрибутиве Альт с установленным окружением рабочего стола.
Путь к файлу policies.json в зависимости от версии веб-браузера Firefox:
  • /etc/firefox/policies — новые версии;
  • /usr/lib64/firefox/distribution — старые версии.

Примечание

Данный механизм реализован только для машинных политик.

Примечание

Настройка политик для браузера Mozilla Firefox требует дополнительной установки ADMX-файлов Firefox (пакет admx-firefox).
Результат применения параметров групповой политики для Mozilla Firefox можно проверить, указав в адресной строке URL: about:policies#active:
Активные политики Mozilla Firefox
В качестве примера рассмотрим политику установки URL домашней страницы.
Для редактирования политик браузера Mozilla Firefox следует перейти в КомпьютерАдминистративные шаблоныMozillaFirefox:
GPUI. Политики настройки веб-браузера Firefox
Раскрыть группу Домашняя страница, щелкнуть левой кнопкой мыши на политике URL для домашней страницы, откроется диалоговое окно настройки политики. Выбрать параметр Включено, в разделе Параметры ввести URL и нажать кнопку ОК:
GPUI. Настройка URL домашней страницы веб-браузера
В результате применения данной политики будет установлена домашняя страница по умолчанию, а также будет заблокирована возможность изменения домашней страницы пользователем:
Настройки веб-браузера Firefox
Все настройки политики веб-браузера Firefox хранятся в файле {GUID GPT}/Machine/Registry.pol. Пример файла Registry.pol:
PReg[Software\Policies\Mozilla\Firefox\Homepage;URL;;;https://basealt.ru]
[Software\Policies\Mozilla\Firefox\Homepage;Locked;;;]
В таблице Настройки веб-браузера Mozilla Firefox описаны только некоторые политики. Полный список политик и их описание можно найти на странице описания шаблонов политик Mozilla Firefox или в браузере Mozilla Firefox, указав в адресной строке URL: about:policies#documentation.

Таблица 34.46. Настройки веб-браузера Mozilla Firefox

Политика
Ключ
Описание
Менеджер паролей
PasswordManagerEnabled
Позволяет запретить доступ к менеджеру паролей через настройки и блокирует about:logins.
Если эта политика находится в состоянии Включено или Не сконфигурировано, менеджер паролей доступен в настройках и на странице about:logins.
Если эта политика находится в состоянии Отключено, Firefox запрещает доступ к менеджеру паролей через настройки и блокирует about:logins
Отключить создание мастер-пароля
DisableMasterPasswordCreation
Позволяет отключить возможность установить мастер-пароль (основной пароль).
Если эта политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут создать мастер-пароль.
Если эта политика находится в состоянии Включено, то она работает так же, как установка политики Основной (главный) пароль состояние Отключено, и пользователи не могут создать мастер-пароль.
Если используются и политика «Отключить создание мастер-пароля», и «Основной (главный) пароль», то политика Отключить создание мастер-пароля имеет приоритет
Предлагать сохранить логины
OfferToSaveLogins
Позволяет настроить будет ли Firefox предлагать запоминать сохранённые логины и пароли.
Если политика находится в состоянии Отключено, Firefox не будет предлагать сохранять логины и пароли веб-сайтов.
Если политика находится в состоянии Включено или Не сконфигурировано, Firefox будет предлагать сохранять логины и пароли веб-сайтов
Отключить инструменты разработчика
DisableDeveloperTools
Позволяет управлять доступом к инструментам разработчика.
Если политика находится в состоянии Включено, инструменты веб-разработчика недоступны в Firefox.
Если политика находится в состоянии Отключено или Не сконфигурировано, инструменты веб-разработчика доступны в Firefox
Отключить приватный просмотр
DisablePrivateBrowsing
Запрещает доступ к приватному просмотру.
Если политика находится в состоянии Включено, приватный просмотр запрещен.
Если политика находится в состоянии Отключено или Не сконфигурировано, приватный просмотр разрешен
Нет закладок по умолчанию
NoDefaultBookmarks
Отключает создание закладок по умолчанию (идущих вместе с Firefox), и смарт-закладки (часто посещаемые, недавние).
Если политика находится в состоянии Включено, закладки по умолчанию и смарт-закладки (наиболее посещаемые, недавние теги) не создаются.
Если политика находится в состоянии Отключено или Не сконфигурировано, создаются закладки по умолчанию и смарт-закладки (наиболее посещаемые, последние теги).
Примечание: эта политика эффективна только в том случае, если она используется до первого запуска профиля
Запрос места загрузки
PromptForDownloadLocation
Позволяет указать должен ли пользователь выбирать каталог для загружаемых файлов
Если политика находится в состоянии Отключено, файлы будут сохраняться в каталог, указанный в настройках (пользователю не предлагается указать место для загрузки файла).
Если политика находится в состоянии Включено, пользователю будет всегда выдаваться запрос на сохранение файла.
Если политика находится в состоянии Не сконфигурировано, пользователю будет выдаваться запрос на сохранение файла, но он может изменить значение по умолчанию
Отключить историю форм
DisableFormHistory
Отключает запоминание истории поиска и данных форм.
Если политика находится в состоянии Включено, Firefox не запоминает историю форм или поиска.
Если политика находится в состоянии Отключено или Не сконфигурировано, Firefox будет помнить историю форм и поиска
Блокировка редактора настроек (about:config)
BlockAboutConfig
Блокирует доступ к странице about:config.
Если эта политика находится в состоянии Включено, пользователь не может получить доступ к about:config.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к about:config
Блокировка страницы управления профилями (about:profiles)
BlockAboutProfiles
Блокирует доступ к странице управления профилями (about:profiles).
Если политика находится в состоянии Включено, пользователь не может получить доступ к профилям about:profiles.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к профилям about:profiles
Блокировка информации об устранении неполадок
BlockAboutSupport
Блокирует доступ к странице about:support.
Если политика находится в состоянии Включено, пользователь не может получить доступ к информации для устранения неполадок или about:support.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к информации для устранения неполадок или about:support
Captive Portal (портал захвата)
CaptivePortal
Включает или отключает тест соединения (поддержку перехватывающего портала).
Если политика находится в состоянии Отключено, то поддержка captive portal отключена.
Если политика находится в состоянии Включено или Не сконфигурировано, то поддержка captive portal включена.
Примечание: Браузер Mozilla Firefox при запуске проверяет, требует ли используемое сетевое соединение вход в систему. Во время теста Firefox пытается подключиться к http://detectportal.firefox.com/success.txt, чтобы проверить возможность соединения с этим адресом. Этот адрес также используется для проверки поддержки активного сетевого соединения IPv6. Отключение этой функциональности уменьшает количество автоматических подключений и может немного ускорить запуск браузера
Отключить встроенную программу просмотра PDF (PDF.js)
DisableBuiltinPDFViewer
Отключает PDF.js, встроенный просмотрщик PDF в Firefox.
Если политика находится в состоянии Включено, файлы PDF не просматриваются в Firefox.
Если политика находится в состоянии Отключено или Не сконфигурировано, файлы PDF просматриваются в Firefox
Отключить команды обратной связи
DisableFeedbackCommands
Отключает команды отправки отзывов в меню Справка (Отправить отзыв… и Сообщить о поддельном сайте…).
Если политика находится в состоянии Включено, пункты меню Отправить отзыв… и Сообщить о поддельном сайте… недоступны из меню Справка.
Если политика находится в состоянии Отключено или Не сконфигурировано, пункты меню Отправить отзыв… и Сообщить о поддельном сайте… доступны из меню Справка
Отключить снимки экрана Firefox
DisableFirefoxScreenshots
Отключает функцию Firefox Screenshots.
Если политика находится в состоянии Включено, снимки экрана Firefox недоступны.
Если политика находится в состоянии Отключено или Не сконфигурировано, доступны снимки экрана Firefox
Отключить учетные записи Firefox
DisableFirefoxAccounts
Отключает службы, основанные на Аккаунте Firefox, включая синхронизацию.
Если политика находится в состоянии Включено, учетные записи Firefox отключены, в том числе отключена синхронизация.
Если политика находится в состоянии Отключено или Не сконфигурировано, доступны Аккаунты Firefox и синхронизация
Отключить исследования Firefox
DisableFirefoxStudies
Запрещает Firefox выполнять исследования.
Если политика находится в состоянии Включено, Firefox никогда не будет проводить исследования SHIELD или опросы Heartbeat.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может включить исследования SHIELD или опросы Heartbeat.
Для получения дополнительной информации см. https://support.mozilla.org/en-US/kb/shield и https://wiki.mozilla.org/Firefox/Shield/Heartbeat
Отключить кнопку «Забыть»
DisableForgetButton
Закрывает доступ к кнопке Забыть.
Если политика находится в состоянии Включено, кнопка Забыть о части истории веб-сёрфинга недоступна.
Если политика находится в состоянии Отключено или Не сконфигурировано, кнопка Забыть о части истории веб-сёрфинга доступна
Запретить показывать пароли в сохраненных логинах
DisablePasswordReveal
Не позволяет просматривать пароли у сохранённых логинов.
Если политика находится в состоянии Включено, пользователи не могут отображать пароли в сохраненных логинах.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут отображать пароли в сохраненных логинах
Отключить Pocket
DisablePocket
Отключает сохранение страниц в Pocket.
Если политика находится в состоянии Включено, Pocket недоступен.
Если политика находится в состоянии Отключено или Не сконфигурировано, Pocket доступен.
Примечание: Pocket — это специальный сервис для хранения различной информации, найденной в ходе веб-сёрфинга
Отключить импорт профиля
DisableProfileImport
Отключает команду меню для импорта данных из другого браузера.
Если политика находится в состоянии Включено, опция Импортировать данные из другого браузера… в окне закладок недоступна.
Если политика находится в состоянии Отключено или Не сконфигурировано, опция Импортировать данные из другого браузера… доступна
Отключить обновление профиля
DisableProfileRefresh
Отключает кнопку Обновить Firefox на странице about:support.
Если политика находится в состоянии Включено, кнопка Обновить Firefox будет недоступна на странице about:support.
Если эта политика отключена или не сконфигурирована, кнопка Обновить Firefox будет доступна
Отключить безопасный режим
DisableSafeMode
Отключает функцию для перезапуска в безопасном режиме.
Если политика находится в состоянии Включено, пользователь не может перезапустить браузер в безопасном режиме.
Если политика находится в состоянии Отключено или Не сконфигурировано, безопасный режим разрешен
Не проверять браузер по умолчанию
DontCheckDefaultBrowser
Отключает проверку браузера по умолчанию при запуске.
Если политика находится в состоянии Включено, Firefox не проверяет, является ли он браузером по умолчанию при запуске.
Если политика находится в состоянии Отключено или Не сконфигурировано, Firefox при запуске проверяет, является ли он браузером по умолчанию
Аппаратное ускорение
HardwareAcceleration
Отключает аппаратное ускорение.
Если политика находится в состоянии Отключено, аппаратное ускорение не может быть включено.
Если политика находится в состоянии Включено или Не сконфигурировано, включено аппаратное ускорение
Основной (главный) пароль
PrimaryPassword
Позволяет установить следует ли требовать или не давать использовать мастер-пароль.
Если политика находится в состоянии Отключено, пользователи не могут создать основной пароль.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователи могут создать основной пароль
Прогнозирование сети
NetworkPrediction
Включает или отключает прогнозирование сети (предварительная выборка DNS).
Предварительная выборка DNS — это технология, используемая Firefox для ускорения загрузки новых веб-сайтов.
Если политика находится в состоянии Отключено, прогнозирование сети (предварительная выборка DNS) будет отключено.
Если политика находится в состоянии Включено или Не сконфигурировано, будет включено прогнозирование сети (предварительная выборка DNS)
Новая вкладка
NewTabPage
Включает или отключает страницу новой вкладки.
Если эта политика находится в состоянии Отключено, в новой вкладке будет загружена пустая страница.
Если эта политика в состоянии Включено или Не сконфигурировано, в новой вкладке будет загружена страница по умолчанию
Подсказки по поиску
SearchSuggestEnabled
Включает или отключает поисковые предложения.
Если эта политика находится в состоянии Отключено, поисковые подсказки будут отключены.
Если эта политика в состоянии Включено, поисковые подсказки будут включены.
Если эта политика в состоянии Не сконфигурировано, поисковые подсказки будут включены, но пользователь может отключить их
Показывать кнопку «Домашняя страница» на панели инструментов
ShowHomeButton
Включает кнопку Домашняя страница на панели инструментов.
Если политика находится в состоянии Отключено, кнопка Домашняя страница не будет отображаться на панели инструментов.
Если политика находится в состоянии Включено, кнопка Домашняя страница отображается на панели инструментов
Блокировка менеджера дополнений (about:addons)
BlockAboutAddons
Блокирует доступ к менеджеру дополнений (about:addons).
Если политика находится в состоянии Отключено или Не сконфигурировано пользователь может получить доступ к менеджеру дополнений (about:addons).
Если политика находится в состоянии Включено, пользователь не может получить доступ к менеджеру дополнений (about:addons)
URL для домашней страницы
Homepage
Устанавливает URL домашней страницы при старте браузера и, если необходимо, блокирует её смену.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может установить и изменить домашнюю страницу.
Если политика находится в состоянии Включено, можно установить домашнюю страницу по умолчанию, а также заблокировать возможность изменения домашней страницы
SPNEGO
SPNEGO
Включает аутентификацию через SPNEGO/Kerberos.
Если политика находится в состоянии Отключено или Не сконфигурировано, никаким веб-сайтам не разрешается использовать аутентификацию SPNEGO с помощью браузера.
Если политика находится в состоянии Включено, указанным веб-сайтам разрешается использовать аутентификацию SPNEGO в браузере. Записи в списке имеют формат altlinux.org или https://altlinux.org
Не разрешать изменять настройки аутентификации
Authentication Locked
Блокирует настройки аутентификации от изменений пользователем.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователь не может изменить параметры проверки подлинности.
Если политика находится в состоянии Отключено, пользователь может изменить параметры проверки подлинности
Разрешить неполное доменное имя (Non FQDN)
Authentication AllowNonFQDN
Разрешить SPNEGO или NTLM для неполных доменных имен (Non FQDN).
Если политика находится в состоянии Отключено или Не сконфигурировано, NTLM и SPNEGO не будут включены для неполных доменных имен.
Если политика находится в состоянии Включено (и флажки отмечены), SPNEGO или NTLM будут включены для неполных доменных имен (Non FQDN)
Расширения для установки
Extensions\Install
Задаёт список URL-адресов или собственных путей для устанавливаемых расширений.
Если политика находится в состоянии Отключено или Не сконфигурировано, расширения не устанавливаются.
Если политика находится в состоянии Включено, можно указать список URL-адресов или путей расширений, которые будут устанавливаться при запуске Firefox. При каждом изменении этого списка политики будут переустанавливаться.
URL политики необходимо задавать в формате *.xpi (например, https://addons.mozilla.org/firefox/downloads/file/3450175/adapter_rutoken_plugin-1.0.5.0.xpi). Можно также указать путь на локальный каталог, в который политикой копирования файлов скопировать расширение в формате *.xpi
Управление расширениями
ExtensionSettings
Это правило позволяет управлять всеми аспектами расширений.
Политика сопоставляет идентификатор расширения с его конфигурацией. Если указан идентификатор расширения, конфигурация будет применяться только к указанному расширению. Конфигурация по умолчанию может быть установлена для специального идентификатора *, который будет применяться ко всем расширениям, для которых не задана пользовательская конфигурация в этой политике.
Чтобы получить идентификатор расширения, можно установите расширение и посмотреть идентификатор на странице about:support в разделе Расширения.
Если политика находится в состоянии Отключено или Не сконфигурировано, расширения не будут управляться.
Если политика находится в состоянии Включено, можно использовать JSON для описания политики управления расширениями.
Пример JSON:
{
    "*": {
        "blocked_install_message": "Custom error message"
    },
    "adblockultimate@adblockultimate.net": {
        "installation_mode": "force_installed",
        "install_url": "file:///home/user/file.xpi"
    },
    "rutokenplugin@rutoken.ru": {
        "installation_mode": "force_installed",
        "install_url": "https://addons.mozilla.org/…/plugin.xpi"
    }
}
Конфигурация для каждого расширения — это еще один словарь, который может содержать следующие поля:
  • installation_mode — режим установки расширения. Допустимые значения:
    • allowed — разрешает установку расширения пользователем (поведение по умолчанию). Поле install_url не используется и будет автоматически определено на основе идентификатора;
    • blocked — блокирует установку расширения и удаляет его, если оно уже установлено;
    • force_installed — расширение устанавливается автоматически и не может быть удалено пользователем. Этот параметр недействителен для конфигурации по умолчанию и требует install_url;
    • normal_installed — расширение устанавливается автоматически, но может быть отключено пользователем. Этот параметр недействителен для конфигурации по умолчанию и требует install_url;
  • install_url — сопоставляется с URL-адресом, указывающим, откуда Firefox может загрузить расширение (при force_installed или normal_installed). При установке из локальной файловой системы следует использовать URL-адрес file:///. При установке с сайта addons.mozilla.org можно использовать URL-адрес в виде https://addons.mozilla.org/firefox/downloads/file/3450175/adapter_rutoken_plugin-1.0.5.0.xpi
  • install_sources — список источников, из которых разрешена установка расширений с использованием шаблонов соответствия URL. Этот параметр не нужен, если разрешена установка только определенных расширений по идентификатору. Данный параметр можно использовать только для конфигурации по умолчанию;
  • minimum_version_required — отключает расширения (в том числе установленные принудительно) более ранних версий, чем определено этим параметром. Формат строки версии аналогичен формату, который используется в манифесте расширения;
  • allowed_types — белый список разрешённых типов расширений/приложений, которые можно установить в Firefox. Значение представляет собой список строк (допустимые строки: «extension», «theme», «dictionary», «locale»). Этот параметр можно использовать только для конфигурации по умолчанию;
  • override_update_url — указывает, что для всех последующих обновлений расширения будет использоваться URL из поля update_url или update в политике ExtensionInstallForcelist. Если эта политика не сконфигурирована или отключена, будет использоваться URL из манифеста расширения;
  • blocked_install_message — сообщение об ошибке, которое будет отображаться для пользователей, если им заблокирована установка расширения. Этот параметр можно использовать только для конфигурации по умолчанию;
  • restricted_domains — массив доменов, на которых нельзя запускать сценарии контента. Этот параметр можно использовать только для конфигурации по умолчанию;
  • updates_disabled — логическое значение, указывающее, следует ли отключать автоматические обновления для отдельного расширения;
  • default_area — указывает, где должен быть размещен значок расширения. Возможные значения: navbar и menupanel

34.5.13. Управление политиками «Яндекс.Браузера»

Эти групповые политики позволяют централизованно управлять настройками «Яндекс.Браузера».
Механизм Yandex в составе пакета gpupdate формирует JSON-файл для браузера из шаблонов групповых политик. Во время запуска «Яндекс.Браузер» считывает файл /etc/opt/yandex/browser/policies/managed/policies.json и применяет параметры групповых политик. Групповые политики на основе policies.json предоставляют кроссплатформенную совместимость, что позволяет управлять браузерами в любом дистрибутиве Альт с установленным окружением рабочего стола.

Примечание

Для случаев, если требуется вести параллельно другой файл с конфигурациями, можно создать файл /etc/opt/yandex/browser/policies/managed/policies_local.json и вносить изменения в него. При коллизиях будет применена последняя прочитанная настройка.
Данный механизм реализован только для машинных политик.

Примечание

Настройка политик для «Яндекс.Браузера» требует дополнительной установки ADMX-файлов Yandex (пакет admx-yandex-browser).
Результат применения параметров групповой политики для «Яндекс.Браузера» можно проверить, указав в адресной строке URL: browser://policy:
Активные политики «Яндекс.Браузера»
В качестве примера рассмотрим политику установки URL домашней страницы.
Для редактирования политик браузера «Яндекс.Браузера» следует перейти в КомпьютерАдминистративные шаблоныЯндексЯндекс.Браузер:
GPUI. Политики настройки «Яндекс.Браузера»
Для установки URL домашней страницы следует выбрать пункт Главная страница и страница быстрого доступа при запуске, щелкнуть левой кнопкой мыши на политике Задать URL домашней страницы, откроется диалоговое окно настройки политики. Выбрать параметр Включено, в разделе Параметры ввести URL и нажать кнопку ОК:
GPUI. Настройка URL домашней страницы «Яндекс.Браузера»
В результате применения данной политики будет установлена домашняя страница по умолчанию:
Настройки «Яндекс.Браузера»
Домашняя страница откроется, если в последний раз браузер был закрыт без вкладок или сочетанием клавиш Alt+Home.
Все настройки политики «Яндекс.Браузера» хранятся в файле {GUID GPT}/Machine/Registry.pol. Пример файла Registry.pol:
Preg[Software\Policies\YandexBrowser;BlockExternalExtensions;;;]
[Software\Policies\YandexBrowser\URLBlocklist;https://mail.ru;; ;https://mail.ru]
[Software\Policies\YandexBrowser\AutoOpenFileTypes;pdf;;pdf]
[Software\Policies\YandexBrowser;HomepageLocation;;4;https://docs.altlinux.org]
В таблице Настройки «Яндекс.Браузера» описаны только некоторые политики. Полный список политик и их описание можно найти на странице описания политик «Яндекс.Браузера» или в «Яндекс.Браузере», указав в адресной строке URL: browser://policy/ и установив отметку на пункте Показывать правила, значения которых не заданы.

Таблица 34.47. Настройки «Яндекс.Браузера»

Политика
Ключ
Описание
Включить или отключить панель закладок
BookmarkBarEnabled
Политика позволяет принудительно включить или принудительно отключить панель закладок в «Яндекс.Браузере».
Если политика находится в состоянии Включено, панель закладок отображается.
Если политика находится в состоянии Отключено, панель закладок не отображается.
Если политика находится в состоянии Не сконфигурировано, пользователь может самостоятельно решать, включить или отключить панель закладок
Настроить закладки
EditBookmarksEnabled
Политика включает или отключает возможность изменения закладок.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователи могут добавлять, изменять и удалять закладки.
Если политика находится в состоянии Отключено, пользователи не могут добавлять, изменять и удалять закладки. Закладки, созданные до отключения политики, останутся доступными
Задать форматы файлов, которые будут автоматически открываться после скачивания
AutoOpenFileTypes
Политика позволяет задать форматы файлов, которые будут автоматически открываться после скачивания.
Если политика находится в состоянии Включено, в ней можно перечислить форматы файлов (без точки), которые будут автоматически открываться после скачивания (например, txt, jpg).
Если политика находится в состоянии Отключено или Не сконфигурировано, после скачивания будут автоматически открываться файлы только тех форматов, которые выбрал пользователь в контекстном меню загруженного файла (например, «Открывать JPG автоматически»)
Запретить открывать файлы офисных форматов в браузере
CloudDocumentsDisabled
Политика запрещает пользователям открывать файлы офисных форматов в браузере.
Если политика находится в состоянии Отключено или Не сконфигурированно, пользователь может открывать в браузере файлы офисных форматов.
Если политика находится в состоянии Включено, пользователю запрещено открывать в браузере файлы офисных форматов
Настроить показ всплывающих окон
DefaultPopupsSetting
Политика разрешает или запрещает всплывающие окна на всех сайтах.
Если политика находится в состоянии Отключено или Не сконфигурировано, всплывающие окна блокируются на всех сайтах. Пользователи могут разрешать или блокировать всплывающие окна в настройках браузера.
Если политика находится в состоянии Включено, администратор может определить режим применения политики:
  • Блокировать на всех сайтах;
  • Разрешить на всех сайтах.
Пользователи не могут разрешать или блокировать всплывающие окна в настройках браузера
Разрешить полноэкранный режим
FullscreenAllowed
Политика разрешает или запрещает активацию полноэкранного режима. В этом режиме все элементы интерфейса «Яндекс.Браузера» скрыты, и на экране отображается только содержимое сайта.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователи могут активировать полноэкранный режим, нажав F11. Полноэкранный режим может быть активирован приложениями и расширениями, если у них есть на это разрешения.
Если политика находится в состоянии Отключено, полноэкранный режим отключен для всех пользователей, приложений и расширений
Задать URL домашней страницы
HomepageLocation
Политика задает URL домашней страницы. Если в качестве домашней страницы задана страница быстрого доступа, политика не будет работать.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут сами установить URL домашней страницы в настройках браузера.
Если политика находится в состоянии Включено, можно установить домашнюю страницу по умолчанию. URL должен иметь стандартный вид (например, https://altlinux.org).
Домашняя страница откроется, если в последний раз браузер был закрыт без вкладок или сочетанием клавиш Alt+Home. Пользователи не могут менять домашнюю страницу в браузере
Отключить контекстное меню для выделенного текста
InstaserpDisabled
Политика позволяет отключить контекстное меню, всплывающее при выделении текста на странице.
Если политика находится в состоянии Включено, контекстное меню не показывается, пользователи не могут включить его в настройках (опция При выделении текста показывать кнопки «Найти» и «Копировать» неактивна).
Если политика находится в состоянии Отключено, контекстное меню показывается, пользователи не могут отключить его в настройках.
Если политика находится в состоянии Не сконфигурировано, контекстное меню показывается, пользователи могут отключить его в настройках
Отображать боковую панель
SidePanelMode
Политика позволяет настроить режим отображения боковой панели и запретить пользователям его менять.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут самостоятельно настроить режим отображения боковой панели.
Если политика находится в состоянии Включено, администратор может выбрать режим отображения боковой панели:
  • Закрепить только на экране новой вкладки;
  • Закрепить на сайтах;
  • Скрыть
Включить автозаполнение адресов
AutofillAddressEnabled
Политика разрешает пользователям автозаполнение адресов.
Если политика находится в состоянии Включено или Не сконфигурировано, автозаполнение адресов включено.
Если политика находится в состоянии Отключено, автозаполнение адресов отключено, введенные адреса не сохраняются
Настроить режим Инкогнито
IncognitoModeAvailability
Политика определяет, могут ли пользователи включать режим «Инкогнито».
Если политика находится в состоянии Не сконфигурировано, пользователи могут открывать страницы в режиме Инкогнито.
Если политика находится в состоянии Включено, администратор может определить режим применения политики:
  • Принудительное использование режима Инкогнито — режим «Инкогнито» всегда включен;
  • Режим Инкогнито доступен — пользователи могут просматривать страницы как в обычном режиме, так и в режиме «Инкогнито»;
  • Режим Инкогнито отключён — пользователи могут просматривать страницы только в обычном режиме.
Если политика находится в состоянии Отключено, пользователи могут просматривать страницы только в обычном режиме
Запретить использовать мастер-пароль
MasterPasswordDisabled
Политика запрещает пользователям использовать мастер-пароль.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может использовать мастер-пароль.
Если политика находится в состоянии Включено, мастер-пароль в браузере отключен
Разрешить сохранять пароли
PasswordManagerEnabled
Политика разрешает сохранять пароли в браузере и автоматически подставлять их при авторизации на сайтах.
Если политика находится в состоянии Не сконфигурировано, сохранение паролей в браузере включено. Пользователи могут включать и отключать сохранение паролей.
Если политика находится в состоянии Включено, сохранение паролей включено. Пользователи не могут включать и отключать сохранение паролей.
Если политика находится в состоянии Отключено, сохранение новых паролей отключено. Пользователи могут использовать уже сохраненные пароли. Пользователи не могут включать и отключать сохранение паролей
Запретить сохранять историю просмотров
SavingBrowserHistoryDisabled
Политика запрещает сохранять историю просмотров и синхронизировать открытые вкладки. При синхронизации информация передается на сервер Яндекса по защищенному каналу.
Если политика находится в состоянии Отключено или Не сконфигурировано, история посещенных страниц сохраняется в журнале браузера. Вкладки и Табло синхронизируются с сервером Яндекса. Пользователи могут импортировать историю из других браузеров.
Если политика находится в состоянии Включено, история посещенных страниц не сохраняется в журнале браузера. Пользователи не могут включить сохранение истории посещенных страниц. Только Табло синхронизируются с сервером Яндекса. Возможность переноса истории вручную отключена
Выбрать папку кеша на диске
DiskCacheDir
Политика определяет место хранения данных кеша. Чтобы не потерять данные, не следует указывать в политике корневую папку или папку, которая используется в других целях.
Если политика находится в состоянии Отключено или Не сконфигурировано, браузер использует папку по умолчанию, однако пользователи могут ее изменить с помощью параметра disk-cache-dir.
Если политика находится в состоянии Включено, браузер хранит кеш на диске в заданной администратором папке. Пользователи не могут ее изменить с помощью параметра disk-cache-dir
Задать объём кеша в байтах
DiskCacheSize
Политика позволяет задать объем кеша в байтах. Значение используется различными подсистемами в браузере как справочное. Поэтому фактический объем используемого дискового пространства может превышать указанное значение, но будет иметь такой же порядок.
Если политика находится в состоянии Не сконфигурировано, браузер использует объем кеша по умолчанию.
Если политика находится в состоянии Включено, браузер использует заданный размер кеша независимо от параметра --disk-cache-size. Указывается максимальный размер кеша в байтах. Например, 104857600 — это 100 МБ.
Если политика находится в состоянии Отключено, браузер использует объем кеша по умолчанию, но пользователи могут менять размер кеша с помощью параметра --disk-cache-size
Блокировать внешние расширения
BlockExternalExtensions
Политика позволяет запретить установку внешних расширений.
Если политика находится в состоянии Отключено или Не сконфигурировано, установка внешних расширений разрешена.
Если политика находится в состоянии Включено, установка внешних расширений запрещена
Блокировать URL'ы из заданного списка
URLBlocklist
Политика блокирует доступ к URL и локальным файлам, которые внесены в черный список.
Если политика находится в состоянии Отключено или Не сконфигурировано, браузер не блокирует URL.
Если политика находится в состоянии Включено, страницы запрещенных URL не загружаются. В политике можно перечислить шаблоны запрещенных URL. Политика не действует на URL со встроенным кодом JavaScript и динамически загружаемые данные.
Общий формат шаблона URL: scheme://host:port/path, где:
  • scheme — схема обращения к ресурсу (например, http, https). Если префикс scheme:// не задан, блокируются все пути и все протоколы (http, https, ftp и т.д.). Блокировать внутренние URL с префиксом browser:// и chrome:// не рекомендуется;
  • host — полное доменное имя или IP-адрес хоста. Имя или IP-адрес хоста должны быть указаны обязательно. По умолчанию блокируются все субдомены хоста. Чтобы этого избежать, можно добавить точку (.) перед именем хоста. Звездочка (*) блокирует все домены;
  • port — номер порта. Можно указать номер от 1 до 65535. Если номер не указан, блокируются все порты;
  • path — URL-адрес.
Общий формат шаблона локального файла file://path, где:
  • file — путь до конкретного файла .html;
  • path — абсолютный путь к каталогу с файлами (все пути, для которых path является префиксом, будут внесены в список)
Задать исключения для политики URLBlocklist (Разрешить доступ к списку URL)
URLAllowlist
Политика позволяет внести в белый список URL или локальный файл. Белый список разрешает доступ к явно перечисленным в нем URL и файлам, даже если они попадают под действие шаблонов из черного списка (см. описание политики Блокировать URL'ы из заданного списка).
Если политика находится в состоянии Отключено или Не сконфигурировано, исключений из правила URLBlocklist нет.
Если политика находится в состоянии Включено, указанные URL становятся доступны пользователям и считаются исключениями из правила URLBlocklist. Политика позволяет настроить исключения для определенных протоколов, субдоменов, отдельных доменов, портов или путей. Политика URLAllowlist имеет приоритет над правилом URLBlocklist. В этом правиле можно указать не более 1000 URL.
Форматы шаблонов см. в описании политики Блокировать URL'ы из заданного списка
Разрешить вызывать окно выбора файлов
AllowFileSelectionDialogs
Политика разрешает или запрещает отображать окно выбора файлов и управляет настройками загрузки.
Если политика находится в состоянии Включено или Не сконфигурировано, пользователи могут открывать окна выбора файлов (импорт закладок или паролей, загрузка файлов, сохранение ссылок и т.д.). Пользователи также могут сохранить файл с помощью контекстного меню и изменять настройки в разделе Загруженные файлы (НастройкиИнструментыЗагруженные файлы).
Если политика находится в состоянии Отключено и пользователь выполняет действия, для которых нужно открыть окно выбора файла (например, импорт закладок, загрузка файлов, сохранение ссылок и т.д.), вместо окна отображается сообщение и имитируется нажатие пользователем кнопки Отмена в окне выбора файлов. Пользователи также не смогут сохранить файл из контекстного меню и изменять настройки в разделе Загруженные файлы
Ограничить инструменты разработчика
DeveloperToolsAvailability
Политика ограничивает использование инструментов разработчика.
Если политика находится в состоянии Отключено или Не сконфигурировано, инструменты разработчика и консоль JavaScript запрещены только для расширений, ограниченных корпоративной политикой.
Если политика находится в состоянии Включено можно установить ограничение на использование инструментов разработчика. Доступны следующие параметры:
  • Запретить;
  • Запретить для расширений, установленных в соответствии с корпоративной политикой, и разрешить во всех остальных случаях;
  • Разрешить
Управлять настройками расширений
ExtensionSettings
Политика управляет настройками расширений в «Яндекс.Браузере». Заменяет любые другие политики по настройке расширений.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут самостоятельно настраивать расширения.
Если политика находится в состоянии Включено, настройки расширений задает администратор с помощью кода, указанного в параметрах политики:
  • идентификатор расширения или URL обновления привязывается только к одной конкретной настройке;
  • идентификатор * действует на все расширения, для которых в политике не задана отдельная конфигурация;
  • если указан URL обновления, заданная конфигурация применяется ко всем расширениям, в манифесте которых приведен этот URL.
Пример значения:
{
  "hdokiejnpimakedhajhdlcegeplioahd": {
    "installation_mode": "force_installed",
    "update_url": "https://clients2.google.com/service/update2/crx"
  },
  "pioclpoplcdbaefihamjohnefbikjilc": {
    "installation_mode": "force_installed",
    "update_url": "https://clients2.google.com/service/update2/crx"
  }
}
Параметры политики:
  • allowed_types — типы приложений и расширений, которые пользователям разрешено устанавливать в браузере (допустимые строки: «extension», «hosted_app», «legacy_packaged_app», «tplatform_appeme», «theme», «user_script»). Используется только для настройки конфигурации по умолчанию со значением *;
  • blocked_install_message — уведомление (не более 1000 символов), которое будет появляться на устройствах пользователей при попытке установить запрещенные расширения;
  • blocked_permissions — запрещает пользователям устанавливать и запускать расширения, требующие разрешений API (список доступных разрешений указан в манифесте расширения);
  • installation_mode — указывает, разрешено ли добавлять заданные расширения. Допустимые режимы:
    • allowed — пользователи могут установить это расширение (поведение по умолчанию);
    • blocked — пользователи не могут установить это расширение;
    • removed — пользователи не могут установить это расширение. Если расширение было установлено, оно будет удалено;
    • force_installed — расширение устанавливается автоматически. Пользователи не могут его удалить. В этом режиме необходимо указать ссылку для скачивания расширения (параметр update_url);
    • normal_installed — расширение устанавливается автоматически. Пользователи могут его удалить. В этом режиме необходимо указать ссылку для скачивания расширения (параметр update_url);
  • install_sources — список URL страниц, с которых разрешено загружать и устанавливать расширения Необходимо разрешить URL расположения CRX-файла и страницы, с которой начинается скачивание (то есть URL перехода);
  • minimum_version_required — отключает расширения (в том числе установленные принудительно) более ранних версий, чем определено этим параметром. Формат строки версии аналогичен формату, который используется в манифесте расширения;
  • update_url — определяет, откуда загружается расширение. Можно указать URL интернет-магазина Chrome, Opera или использовать XML-файл:
    • если расширение размещено в интернет-магазине Chrome, следует указать https://clients2.google.com/service/update2/crx
    • если расширение размещено в интернет-магазине Opera, следует указать https://extension-updates.opera.com/api/omaha/update/
  • override_update_url — указывает, что для всех последующих обновлений расширения будет использоваться URL из поля update_url или update в политике ExtensionInstallForcelist. Если эта политика не сконфигурирована или отключена, будет использоваться URL из манифеста расширения;
  • verified_contents_url — указывает путь до файла extension.verified_contents. С его помощью расширение проверяется на доверие (используется, если нет доступа в интернет);
  • runtime_allowed_hosts — разрешает взаимодействие расширений с указанными сайтами, даже если они указаны в поле runtime_blocked_hosts. Можно указать до 100 сайтов;
  • runtime_blocked_hosts — запрещает расширениям взаимодействовать с указанными сайтами или изменять их, в том числе вставлять скрипты, получать доступ к файлам cookie и изменять веб-запросы. Можно указать до 100 сайтов

34.5.14. Управление политиками почтового клиента Thunderbird

Эти групповые политики позволяют централизованно управлять настройками почтового клиента Mozilla Thunderbird.

Примечание

Политики Thunderbird реализованы в механизме gpupdate, начиная с версии 0.12.0.
Механизм Thunderbird в составе пакета gpupdate формирует JSON-файл для почтового клиента из шаблонов групповых политик. Во время запуска Thunderbird считывает собственный файл policies.json и применяет параметры групповых политик. Для Thunderbird файл policies.json расположен по адресу /etc/thunderbird/policies/. Групповые политики на основе policies.json предоставляют кроссплатформенную совместимость, что позволяет управлять почтовым клиентом в любом дистрибутиве «Альт» с установленным окружением рабочего стола.

Примечание

Данный механизм реализован только для машинных политик.

Примечание

Настройка политик для почтового клиента Mozilla Thunderbird требует дополнительной установки ADMX-файлов Thunderbird (пакет admx-thunderbird).
Результат применения параметров групповой политики для Mozilla Thunderbird можно проверить, выполнив следующие действия:
  1. В меню Thunderbird выбрать СправкаИнформация для решения проблем.
  2. На странице Информация для решения проблем в разделе Сведения о приложении найти строку Корпоративные политики. При наличии примененных настроек групповых политик, напротив строки Корпоративные политики, появится ссылка Активны:
    Thunderbird. Сведения о приложении
  3. Перейти по ссылке Активны. Откроется страница со списком активных групповых политик Thunderbird:
    Активные политики Thunderbird
В качестве примера рассмотрим политику установки каталога для загрузок.
Для редактирования политик Mozilla Thunderbird следует перейти в КомпьютерАдминистративные шаблоныMozillaThunderbird:
GPUI. Политики настройки Thunderbird
Выбрать политику Каталог загрузок, откроется диалоговое окно настройки политики. Выбрать параметр Включено, в разделе Опция указать путь к каталогу и нажать кнопку ОК:
GPUI. Настройка каталог загрузок Thunderbird
В результате применения данной политики будет установлен каталог для загрузок, а также будет заблокирована возможность изменения этого каталога пользователем:
Задан и заблокирован на изменение каталог загрузок
Все настройки политики хранятся в файле {GUID GPT}/Machine/Registry.pol. Пример файла Registry.pol:
PReg
[Software\Policies\Mozilla\Thunderbird;PrimaryPassword;;;]
[Software\Policies\Mozilla\Thunderbird\Proxy;Mode;;;none]
[Software\Policies\Mozilla\Thunderbird\Authentication;Locked;;;]
[Software\Policies\Mozilla\Thunderbird;BlockAboutAddons;;;]
В таблице Настройки почтового клиента Thunderbird описаны только некоторые политики. Полный список политик и их описание можно найти на странице описания шаблонов политик Thunderbird или в почтовом клиенте Thunderbird в разделе Корпоративные политики.

Таблица 34.48. Настройки почтового клиента Thunderbird

Политика
Ключ
Описание
Блокировка редактора настроек (about:config)
BlockAboutConfig
Блокирует доступ к странице about:config.
Если эта политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к about:config:
Thunderbird. Страница about:config
Если эта политика находится в состоянии Включено, пользователь не может получить доступ к редактору настроек about:config:
Запрет доступа к странице about:config
Блокировка менеджера дополнений (about:addons)
BlockAboutAddons
Блокирует доступ к странице about:addons.
Если эта политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к менеджеру дополнений и к about:addons:
Thunderbird. Страница about:addons
Если эта политика находится в состоянии Включено, пользователь не может получить доступ к менеджеру дополнений или к about:addons:
Запрет доступа к странице about:config
Блокировка страницы управления профилями (about:profiles)
BlockAboutProfiles
Блокирует доступ к странице about:profiles.
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователь может получить доступ к about:profiles:
Thunderbird. Страница about:profiles
Если политика находится в состоянии Включено, пользователь не может получить доступ к about:profiles
Отключить инструменты разработчика
DisableDeveloperTools
Блокирует доступ к инструментам разработчика.
Если политика находится в состоянии Включено, инструменты веб-разработчика недоступны в Thunderbird.
Если политика находится в состоянии Отключено или Не сконфигурировано, инструменты веб-разработчика доступны в Thunderbird
Каталог загрузки по умолчанию
DefaultDownloadDirectory
Устанавливает каталог для загрузок по умолчанию (переменную ${home} можно использовать для указания домашнего каталога пользователя).
Если политика находится в состоянии Включено, можно установить каталог по умолчанию для загрузок:
Thunderbird. Задан каталог загрузки по умолчанию
Если политика находится в состоянии Отключено или Не сконфигурировано, используется каталог загрузки Thunderbird по умолчанию:
Каталог загрузки Thunderbird по умолчанию
Каталог загрузки
DownloadDirectory
Устанавливает и фиксирует каталог для загрузок (переменную ${home} можно использовать для указания домашнего каталога пользователя).
Если политика находится в состоянии Включено, можно установить и заблокировать каталог для загрузок:
Thunderbird. Задан и заблокирован на изменение каталог загрузок
Если политика находится в состоянии Отключено или Не сконфигурировано, используется каталог загрузки Thunderbird по умолчанию, и пользователь может его изменить:
Каталог загрузки Thunderbird по умолчанию
Запрос места загрузки
PromptForDownloadLocation
Позволяет указать должен ли пользователь выбирать каталог для загружаемых файлов.
Если политика находится в состоянии Отключено, файлы будут сохраняться в каталог, указанный в настройках (пользователю не предлагается указать место для загрузки файла):
Пользователю не будет предлагаться указать место для загрузки
Если политика находится в состоянии Включено, пользователю будет всегда выдаваться запрос на сохранение файла:
Пользователю всегда будет предлагаться указать место для загрузки
Если политика находится в состоянии Не сконфигурировано, пользователю будет выдаваться запрос на сохранение файла, но он может изменить значение по умолчанию
Основной (главный) пароль
PrimaryPassword
Позволяет установить следует ли требовать или не давать использовать мастер-пароль.
Если политика находится в состоянии Включено, требуется основной пароль.
Если политика находится в состоянии Отключено пользователи не могут создать основной пароль.
Если политика находится в состоянии Не сконфигурировано, пользователи могут создать основной пароль
Отключить создание мастер-пароля
DisableMasterPasswordCreation
Позволяет отключить возможность установить мастер-пароль (основной пароль).
Если эта политика находится в состоянии Включено, пользователи не могут создать мастер-пароль:
Нельзя создать мастер-пароль
Если политика находится в состоянии Отключено или Не сконфигурировано, пользователи могут создать мастер-пароль.
Если используются и политика «Отключить создание мастер-пароля», и «Основной (главный) пароль», то политика Отключить создание мастер-пароля имеет приоритет
Менеджер паролей
PasswordManagerEnabled
Позволяет запретить доступ к менеджеру паролей через настройки и блокировать about:logins.
Если политика находится в состоянии Отключено, менеджер паролей недоступен в настройках:
Нельзя создать мастер-пароль
Если политика находится в состоянии Включено или Не сконфигурировано, менеджер паролей доступен в настройках
Отключить встроенную программу просмотра PDF (PDF.js)
DisableBuiltinPDFViewer
Отключает PDF.js, встроенный просмотрщик PDF в Thunderbird.
Если политика находится в состоянии Включено, файлы PDF не просматриваются в Thunderbird. Встроенный просмотрщик PDF отключается, PDF-файлы загружаются и отправляются во внешнюю среду.
Если политика находится в состоянии Отключено или Не сконфигурировано, файлы PDF просматриваются в Thunderbird:
Просмотр PDF-файла в Thunderbird
Настройка параметров прокси-сервера
Connection Type (Тип подключения)
Proxy/Mode
Позволяет указать тип подключения.
Если политика находится в состоянии Отключено или Не сконфигурировано, Thunderbird по умолчанию использует системный прокси-сервер.
Если политика находится в состоянии Включено, можно задать тип подключения:
  • Без прокси (none);
  • Использовать настройки системного прокси (system);
  • Настройка прокси вручную (manual);
  • Автоопределение настроек прокси (autoDetect);
  • Автоматическая конфигурация прокси (autoConfig)
HTTP Proxy
Proxy/HTTPProxy
Позволяет указать настройки HTTP Proxy.
Если политика находится в состоянии Включено, можно задать HTTP-прокси, используемый при указании ручной конфигурации прокси.
Если политика находится в состоянии Отключено или Не сконфигурировано, Thunderbird не использует HTTP-прокси
HTTPS Proxy
Proxy/HTTPSProxy
Позволяет указать настройки HTTPS Proxy.
Если политика находится в состоянии Включено, можно задать HTTPS-прокси, используемый при указании ручной конфигурации прокси.
Если политика находится в состоянии Отключено или Не сконфигурировано, Thunderbird не использует HTTPS-прокси
Do not allow proxy settings to be changed (Не разрешать изменять настройки прокси-сервера)
Proxy/Locked
Позволяет заблокировать настройки прокси-сервера.
Если политика находится в состоянии Включено, настройки прокси-сервера не могут быть изменены пользователем:
Thunderbird. Настройки прокси-сервера не могут быть изменены пользователем
Если политика находится в состоянии Отключено или Не сконфигурировано, настройки прокси-сервера могут быть изменены пользователем
Use HTTP proxy for HTTPS (Использовать HTTP-прокси для HTTPS)
Proxy/UseHTTPProxyForAllProtocols
Позволяет указать, что для HTTPS следует использовать настройки HTTP-прокси.
Если политика находится в состоянии Включено, HTTP-прокси используется для HTTPS, когда указана ручная настройка прокси.
Если политика находится в состоянии Отключено или Не сконфигурировано, Thunderbird не использует HTTPS-прокси, если не указано иное
Do not prompt for authentication if password is saved (Не запрашивать аутентификацию, если пароль сохранен)
Proxy/AutoLogin
Позволяет указать не запрашивать аутентификацию, если пароль сохранен.
Если политика находится в состоянии Включено, Thunderbird не будет запрашивать аутентификацию прокси при сохранении пароля.
Если политика находится в состоянии Отключено или Не сконфигурировано, Thunderbird всегда будет запрашивать аутентификацию прокси
Proxy Passthrough
Proxy/Passthrough
Позволяет указать исключения (адреса, для которых не используется прокси).
Если политика находится в состоянии Включено, для указанных адресов настройки прокси-сервера не используются.
Если политика находится в состоянии Отключено или Не сконфигурировано, исключения не используются

34.5.15. Политика замыкания

Описание политики замыкания см. в разделе Замыкание групповой политики.
Для настройки этой политики следует перейти в КомпьютерАдминистративные шаблоныСистемаГрупповая политика:
GPUI. Политики ОС

Примечание

Для быстрого доступа к политике можно ввести в поле Поиск… ключевое слово.
Щелкнуть левой кнопкой мыши на политике Настройка режима обработки замыкания пользовательской групповой политики, откроется диалоговое окно настройки политики. Можно не задавать настройку политики, включить или отключить:
GPUI. Редактирование политики «Настройка режима обработки замыкания пользовательской групповой политики»
Если выбрать параметр Включено, в разделе Опции в выпадающем списке можно выбрать режим:
  • Слияние — указывает, что параметры политики пользователя определенные в объектах групповой политики компьютера, и обычно применяемые параметры пользователя для этого пользователя должны быть объединены. Если возникает конфликт этих параметров политики, то параметры пользователя в объектах групповой политики компьютера имеют приоритет над обычными параметрами пользователя;
  • Замена — указывает, что параметры политики пользователя, определенные в объектах групповой политики компьютера, заменяют параметры политики пользователя, обычно применяемые для этого пользователя.
Если выбрать параметр Отключено или не настраивать этот параметр политики, порядок применения параметров определяется объектами групповой политики для пользователей.

34.6. Редактирование предпочтений

Примечание

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

34.6.1. Управление ярлыками

Групповая политика Управление ярлыками позволяет централизованно для компьютеров или пользователей:
  • создавать ярлыки;
  • удалять ярлыки;
  • изменять свойства ярлыков.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыЗначки. В контекстном меню свободной области выбрать пункт НовыйЗначок
GPUI. Создание новой политики «Значки»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Значки»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для ярлыка:
    • Создать — создание нового ярлыка;
    • Удалить — удаление ярлыка;
    • Заменить — удаление и повторное создание ярлыка. Если ярлык не существует, то это действие создает новый ярлык;
    • Обновить — изменение параметров существующего ярлыка. Если ярлык не существует, то это действие создает ярлык. Это действие отличается от Заменить тем, что не удаляет ярлык, а только обновляет параметры ярлыка, определенные в элементе настройки;
  • Название — отображаемое имя для ярлыка. При изменении или удалении ярлыка имя должно совпадать с именем существующего ярлыка;
  • Тип цели — тип конечного объекта, на который указывает ярлык (при изменении или удалении ярлыка выбранный тип объекта должен соответствовать существующему ярлыку):
    • Объект файловой системы — путь в ФС, например, файл, папка, диск, общий ресурс или компьютер;
    • URL-адрес — URL-адрес, например, веб-сайт;
    • Объект оболочки — объект, например, принтер, элемент рабочего стола или панели управления, файл, папка, общий ресурс, компьютер или сетевой ресурс;
  • Место нахождения — место, где ярлык должен отображаться на компьютерах, для которых применяется политика. Размещения, отличные от Общее…, относятся к текущему пользователю. При изменении существующего ярлыка выбранное размещение должно совпадать с размещением существующего ярлыка. Если выбран пункт Укажите полный путь, то место задается полным путем в поле Название (при этом можно использовать переменные, например, чтобы разместить ярлык с именем Почта в подпапке Ярлыки в Program Files, необходимо ввести %ProgramFilesDir%\Ярлыки\Почта). Чтобы разместить ярлык в подпапке для выбранного размещения из списка, следует указать <название подпапки>\<имя ярлыка> в поле Название, например, чтобы разместить ярлык с именем Почта в подпапке Ярлыки в размещении Рабочий стол, необходимо ввести Ярлыки/Почта в поле Название и выбрать Рабочий стол в поле Место нахождения:
    GPUI. Выбор места для размещения ярлыка
  • Целевой путь — локальный путь (с точки зрения клиента) для типа Объект файловой системы, URL для типа URL-адрес или объект для типа Объект оболочки. Если выбран тип цели Объект файловой системы или URL-адрес, то это поле может принимать переменные. Это поле недоступно, если выбрано действие Удалить;
  • Аргументы — аргументы, которые будут использоваться при открытии целевого файла или папки. Это поле доступно только в том случае, если выбран тип цели Объект файловой системы, и выбрано действие Создать, Заменить или Обновить;
  • Путь к файлу значка и Индекс значка — значок для ярлыка. Для указания значка, отличного от значка по умолчанию необходимо выбрать значок или ввести полный путь к значку (с точки зрения клиента) и указать индекс значка. Поле Путь к файлу значка принимает переменные. Эти поля недоступны, если выбрано действие Удалить;
  • Начинать — рабочий каталог, содержащий файлы, необходимые для конечного объекта. Это поле принимает переменные. Поле доступно в случае, если выбрано действие Создать, Заменить или Обновить;
  • Быстрая клавиша — сочетание клавиш для запуска ярлыка. Чтобы назначить сочетание клавиш следует установить курсор в поле Быстрая клавиша и нажать комбинацию клавиш. Это поле недоступно, если выбрано действие Удалить. Чтобы удалить сочетание клавиш, можно нажать клавишу Ctrl или Alt, или нажать на значок, расположенный справа от сочетания клавиш:
    GPUI. Выбор сочетания клавиш для запуска ярлыка
  • Запуск — размер окна, в котором нужно открыть цель ярлыка. Поле доступно только в том случае, если выбран тип объекта Объект файловой системы или Объект оболочки, и выбрано действие Создать, Заменить или Обновить;
  • Комментарий — всплывающая подсказка, когда указатель мыши приостановлен на ярлыке. Поле принимает переменные. Поле доступно только в том случае, если выбран тип объекта Объект файловой системы или Объект оболочки, и выбрано действие Создать, Заменить или Обновить.

Предупреждение

Чтобы ярлыку назначались корректные права (для пользовательской политики), необходимо установить отметку в пункте Выполнять в контексте безопасности текущего пользователя на вкладке Общие.
Все настройки политики управления ярлыками хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Shortcuts/Shortcuts.xml
  • {GUID GPT}/User/Preferences/Shortcuts/Shortcuts.xml
Пример файла Shortcuts.xml:
<?xml version="1.0" encoding="utf-8"?>
<Shortcuts clsid="{872ECB34-B2EC-401b-A585-D32574AA90EE}">
<Shortcut bypassErrors="0"
    changed="2025-06-28 10:27:35"
    clsid="{4F2F7C55-2790-433e-8127-0739D1CFA327}"
    desc=""
    image="0"
    name="Почта"
    removePolicy="0"
    status=""
    uid="{dfd45a36-4634-47d9-8a22-5f702fba21bc}"
    userContext="0">
<Properties
    action="U"
    arguments=""
    comment=""
    iconPath="/usr/lib64/thunderbird/chrome/icons/default/default32.png"
    pidl=""
    shortcutPath="%DesktopDir%\Почта"
    startIn=""
    targetPath="/usr/bin/thunderbird"
    targetType="FILESYSTEM"
    window=""/>
</Shortcut>
</Shortcuts>

34.6.2. Управление каталогами

Групповая политика Управление каталогами позволяет для всех пользователей заданной группы создавать унифицированную структуру каталогов.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыПапки. В контекстном меню свободной области выбрать пункт НовыйПапки
GPUI. Создание новой политики «Папки»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Папки»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для папки:
    • Создать — создание новой папки;
    • Удалить — удаление папки;
    • Заменить — удаление и повторное создание папки. В результате выполнения действия Заменить содержимое существующей папки удаляется, и все существующие параметры папки перезаписываются. Если папка не существует, действие Заменить создает новую папку;
    • Обновить — изменение параметров существующей папки. Если папки не существует, то это действие создает новую папку. Это действие отличается от Заменить тем, что не удаляет папку, а только обновляет параметры;
  • Путь — путь к папке (с точки зрения клиента). Это поле может содержать переменные (не следует вводить кавычки и завершающую косую черту);

    Примечание

    Список допустимых переменных (для систем «Альт»):
    • машинные:
      • %HOME%, %HOMEPATH% — каталог /etc/skel;
      • %HOMEDRIVE%, %SystemRoot%, %SystemDrive% — корневой каталог (/);
      • %StartMenuDir% — каталог /usr/share/applications;
    • пользовательские:
      • %LogonUser% — имя текущего пользователя (username);
      • %HOME%, %HOMEPATH% — домашний каталог текущего пользователя (get_homedir(username));
      • %DesktopDir% — рабочий стол текущего пользователя (get_desktop(username, variables['HOME'])).
  • Атрибуты — атрибуты файловой системы для папки (недоступны для действия Удалить):
    • Только для чтения;
    • Скрытый;
    • Архивный;
Следующие опции доступны только для действий Заменить и Удалить:
  • Удалить папку (если пустая) — если включена эта опция, папка, указанная в поле Путь, удаляется, если она пуста. Пустая ли эта папка, оценивается после того, как были обработаны опции Удалить все файлы в папке(ах) и Рекурсивное удаление папок (если пустые). При выборе действия Удалить эта опция включена по умолчанию и её невозможно отключить;
  • Рекурсивное удаление папок (если пустые) — если включена эта опция, удаляется самый низкий уровень вложенных папок (если они пусты). Данное действие повторяется для каждой родительской папки до достижения папки, указанной в поле Путь. Пустые подпапки оцениваются после обработки опции Удалить все файлы в папке(ах);
  • Удалить все файлы в папке(ах) — если включена эта опция, удаляются все файлы в папке, которые разрешено удалять. Если также включена опция Рекурсивное удаление папок (если пустые), то удаляются также все файлы, которые разрешено удалять во всех подпапках;
  • Разрешить удаление файлов/папок только для чтения — если включена эта опция, атрибут Только для чтения игнорируются для удаляемых файлов и папок;
  • Игнорировать ошибки для файлов/папок, которые не могут быть удалены — если включена эта опция, подавляются все сообщения об ошибках, возникающие из-за невозможности удаления файлов или папок. В противном случае, если совершается попытка удалить непустую папку, открытый файл, файл или папку, для которых пользователь не имеет разрешений или любой другой файл или папку, которые не могут быть удалены, возвращается ошибка.

Примечание

Атрибуты Архивный, Скрытый и Только для чтения применимы только для Windows систем.
Все настройки политики управления каталогами хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Folders/Folders.xml
  • {GUID GPT}/User/Preferences/Folders/Folders.xml
Пример файла Folders.xml:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<Folders clsid="{77CC39E7-3D16-4f8f-AF86-EC0BBEE2C861}">
  <Folder clsid="{07DA02F5-F9CD-4397-A550-4AE21B6B4BD3}"
          bypassErrors="0"
          changed="2025-06-11 10:28:23"
          desc=""
          image="0"
          name="New"
          removePolicy="0"
          status=""
          uid="{aa0c57c5-2b0a-4795-bc46-c1bd270c085c}" userContext="0">
    <Properties action="C"
               archive="0"
               hidden="0"
               path="%DesktopDir%/New"
               readOnly="0"/>
  </Folder>
</Folders>

34.6.3. Управление INI-файлами

Групповая политика Управление INI-файлами позволяет:
  • добавить свойство в файл параметров конфигурации (.ini);
  • заменить свойство в INI-файле;
  • удалить свойство из INI-файла;
  • удалить раздел из INI-файла;
  • удалить INI-файл.
В разделах INI-файлов используется следующий формат:
[sectionA]
var01=value01

[sectionB]
var01=value01
var02=value02
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыIni файлы. В контекстном меню свободной области выбрать пункт НовыйIni файл
GPUI. Создание новой политики «Ini файл»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Ini файл»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для INI-файла:
    • Создать — добавление свойства в INI-файл. Если файл не существует, он будет создан;
    • Удалить — удаление свойства или раздела из INI-файла (либо удаление INI-файла);
    • Заменить — удаление и повторное создание свойства в INI-файле. Суммарный итог действия Заменить — переопределение свойства. Если свойство не существует, действие Заменить создаст его;
    • Обновить — удаление и повторное создание свойства в INI-файле (аналогично действию Заменить);
  • Путь к файлу — путь к INI-файлу с точки зрения клиента (путь не должен включать кавычки). Если файл и родительские папки не существуют, они будут созданы;
  • Имя секции — имя раздела в файле, свойство которого нужно настроить или удалить. Чтобы удалить INI-файл целиком, следует оставить это поле пустым;
  • Имя свойства — имя свойства, которое нужно настроить или удалить. Чтобы удалить целиком раздел файла или весь файл, следует оставить это поле пустым;
  • Значение свойства — значение свойства. Значения могут содержать символы кавычек, которые, однако, при чтении значений приложением или операционной системой обычно удаляются. Все значения воспринимаются как текст. Если данное поле оставлено пустым, свойству присваивается пустое значение, что воспринимается как отсутствие свойства. Этот параметр доступен, если выбрано действие Создать, Заменить или Обновить.
Политики управления INI-файлами относятся к экспериментальным, поэтому на машинах с ОС «Альт» где они применяются должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Все настройки политики управления INI-файлами хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Inifiles/Inifiles.xml
  • {GUID GPT}/User/Preferences/Inifiles/Inifiles.xml
Пример файла Inifiles.xml:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<IniFiles clsid="{694C651A-08F2-47fa-A427-34C4F62BA207}">
  <Ini changed="2025-06-11 10:45:13"
     clsid="{EEFACE84-D3D8-4680-8D4B-BF103E759448}"
     image="3"
     name="version.ini"
     status="version.ini"
     uid="{ADAA9BCF-C2EA-4004-980F-CEDA823E3B91}"
     bypassErrors="1">
     <Properties path="C:\tmp\version.ini"
                 section=""
                 value=""
                 property="BP"
                 action="D"/>
  </Ini>
  <Ini clsid="{EEFACE84-D3D8-4680-8D4B-BF103E759448}"
     name="BP"
     status="BP"
     image="2" changed="2025-06-11 09:45:23"
     uid="{A7C4BF09-0032-41C0-8AA2-1B30DF8484DF}">
     <Properties path="C:\Users\%LogonUser%\tmp\test.ini"
                 section="Version"
                 value="7.05"
                 property="BP"
                 action="U"/>
  </Ini>
</IniFiles>

34.6.4. Управление переменными среды

Групповая политика Управление переменными среды позволяет централизованно для компьютеров или пользователей:
  • создать постоянные пользовательские или системные переменные среды;
  • удалить переменные среды;
  • изменить переменные среды, например:
    • изменить приглашение командной строки (системная переменная PROMPT для Windows или PS1 для Linux (BASH));
    • изменить расположение папки временных файлов (системная переменная TEMP для Windows или TMPDIR для Linux);
    • заменить значение всей переменной PATH;
    • добавить сегменты в переменную PATH (разделенные точкой с запятой для Windows или двоеточием для Linux);
    • удалить сегменты из переменной PATH.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыОкружение. В контекстном меню свободной области выбрать пункт НовыйПеременные окружения
GPUI. Создание новой политики «Переменные окружения»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Переменные окружения»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для переменной среды:
    • Создать — создание новой переменной среды (если переменная среды с таким именем уже есть, например, создана локально, то её значение изменено не будет);
    • Удалить — удаление переменной среды;
    • Заменить — удаление и повторное создание переменной среды (если переменная среды с таким именем не существует, то это действие создаёт новую переменную среды);
    • Обновить — изменение параметров существующей переменной среды. Если переменная среды с таким именем не существует, то это действие создает новую переменную среды (фактически это действие полностью аналогично действию Заменить). Применение этого действия к сегменту переменной PATH не имеет практического эффекта; в этом сегменте возможно только изменение регистра текста;
  • Пользовательская переменная:
    • параметр для переменной среды в разделе Конфигурация пользователя — влияние переменной среды будет для каждого пользователя независимым. Переменная среды хранится в разделе реестра HKEY_CURRENT_USER;
    • параметр для переменной среды в разделе Конфигурация компьютера — переменная среды будет влиять только на пользователя компьютера по умолчанию;
  • Системная переменная — переменная среды будет влиять на всех пользователей компьютера. Переменная среды будет храниться в реестре в разделе HKEY_LOCAL_MACHINE;
  • Имя — имя переменной среды, к которой применяется действие. Чтобы выбрать переменную PATH, следует оставить это поле пустым;
  • Значение — значение переменной среды. В это поле можно вводить переменные;
  • PATH — действие будет применяться к переменной PATH: можно создать/заменить значение переменной PATH или добавить/удалить сегмент значения переменной PATH. В поле Имя будет отмечено значение «PATH» и оно не будет доступно для редактирования. Эта опция доступна только в том случае, если выбран параметр Системная переменная;
  • Частичный — добавить или удалить один сегмент переменной PATH. Эта опция доступна только в том случае, если выбраны Системная переменная и PATH.
Все настройки политики управления переменными среды хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/EnvironmentVariables/EnvironmentVariables.xml
  • {GUID GPT}/User/Preferences/EnvironmentVariables/EnvironmentVariables.xml
Пример файла EnvironmentVariables.xml:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<EnvironmentVariables clsid="{BF141A63-327B-438a-B9BF-2C188F13B7AD}">
  <EnvironmentVariable clsid="{78570023-8373-4a19-BA80-2F150738EA19}"
        name="VAR"
        status="VAR = value_1"
        image="0"
        changed="2025-06-11 10:56:23"
        uid="{6738058D-5455-4D9A-9B84-78E87DDD18D7}"
        desc="environment variable example"
        bypassErrors="1">
    <Properties
        action="C"
        name="VAR"
        value="value_1"
        user="1"
        partial="0"/>
  </EnvironmentVariable>
  <EnvironmentVariable clsid="{78570023-8373-4a19-BA80-2F150738EA19}"
        name="PATH"
        status="PATH = value_2"
        image="2"
        changed="2025-06-11 10:56:55"
        uid="{15E854D6-C338-4AD2-BF8D-72292B364BA3}">
    <Properties
        action="U"
        name="PATH"
        value="value_2"
        user="0"
        partial="1"/>
  </EnvironmentVariable>
</EnvironmentVariables>

Примечание

Для того чтобы политики применились (под доменным пользователем), необходимо перелогиниться.
Проверить наличие переменных окружения можно, выполнив команду:
$ env |grep имя_переменной
Просмотреть все переменные, назначенные с помощью групповой политики, можно в файле /etc/gpupdate/environment:
TEMP DEFAULT="C:\tmp"
Var DEFAULT="Value1"
HTTPS_PROXY DEFAULT="https://10.0.66.52:3128"

34.6.5. Управление файлами

Групповая политика Файлы позволяет проводить операции с файлами: копировать файлы в нужное расположение, удалять, заменять, обновлять атрибуты файлов.
Для компьютеров или пользователей эта политика предоставляет возможность:
  • копировать файл (или несколько файлов из одного каталога) в новое место, а затем настроить атрибуты этих файлов;
  • удалить файл (или несколько файлов в одном каталоге);
  • удалить файл (или несколько файлов в одном каталоге) и заменить его копией файла из исходного каталога;
  • изменить атрибуты файла (или нескольких файлов в одном каталоге);
  • изменить атрибуты, заменить или удалить все файлы с определённым расширением в одном каталоге;
  • изменить атрибуты, заменить или удалить все файлы в определённом каталоге.

Примечание

В групповой политике Файлы нет встроенной возможности скопировать целиком каталог со всем содержимым. Вместо этого можно использовать политику Папки, которая позволяет создавать каталоги на компьютере, а для копирования файлов использовать групповую политику Файлы.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыФайлы. В контекстном меню свободной области выбрать пункт НовыйФайл
GPUI. Создание новой политики «Файлы»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Файлы»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для файла(ов):
    • Создать — копирование файла (или нескольких файлов из одного каталога) из исходного местоположения в конечное, если файл еще не существует в местоположении назначения, и настройка атрибутов этих файлов;
    • Удалить — удаление файла (или нескольких файлов в одной папке);
    • Заменить — удаление файла (или нескольких файлов в одной папке), замена его другим файлом и настройка атрибутов этих файлов. Конечным результатом действия Заменить будет перезапись файлов в местоположении назначения. Если файл не существует в месте назначения, действие Заменить копирует его из исходного местоположения в место назначения;
    • Обновить — изменение параметров существующего файла (или нескольких файлов в одной папке). Это действие отличается от действия Заменить тем, что только обновляет атрибуты файла, определенные в элементе предпочтений. Все остальные атрибуты файла не изменяются. Если файл не существует, действие Обновить копирует его из исходного местоположения в место назначения;
  • Источник файла(ов) — местоположение (с точки зрения клиента), из которого требуется скопировать исходные файлы. Это местоположение может представлять полный путь UNC, или локальный путь, или сопоставленный диск со стороны клиента. Это поле может содержать переменные. Поле может содержать подстановочные знаки одного (?) или нескольких (*) символов, позволяя копировать или изменять несколько файлов (только для работы с файлами в ОС Windows). Поле недоступно для действия Удалить;

    Примечание

    Список допустимых переменных (для систем «Альт»):
    • машинные:
      • %HOME%, %HOMEPATH% — каталог /etc/skel;
      • %HOMEDRIVE%, %SystemRoot%, %SystemDrive% — корневой каталог (/);
      • %StartMenuDir% — каталог /usr/share/applications;
    • пользовательские:
      • %LogonUser% — имя текущего пользователя (username);
      • %HOME%, %HOMEPATH% — домашний каталог текущего пользователя (get_homedir(username));
      • %DesktopDir% — рабочий стол текущего пользователя (get_desktop(username, variables['HOME'])).

    Примечание

    В настоящее время в ОС «Альт» можно использовать подстановочный знак (*) только для копирования всех файлов из папки:
    GPUI. Настройка политики — «Копирование всех файлов из каталога»
  • Место назначения файлов — местоположение папки (с точки зрения клиента), в которую требуется скопировать файлы, или местоположение файлов, которые требуется изменить. Это местоположение может представлять полный путь UNC, или локальный путь, или сопоставленный диск со стороны клиента. Родительские папки создаются по мере необходимости. Необходимо включить имя файла, которое затем можно будет изменить, указав другое имя в поле Исходные файлы. Это поле может содержать переменные. Этот параметр доступен, если выбрано действие Создать, Заменить или Обновить, а поле Источник файла(ов) не содержит подстановочные знаки;
  • Папка назначения — место назначения копирования файла или местоположение файла (с точки зрения клиента), который требуется изменить. Это местоположение может представлять полный путь UNC, или локальный путь, или сопоставленный диск со стороны клиента. Родительские папки создаются по мере необходимости. Это поле может содержать переменные. Этот параметр доступен, если выбрано действие Создать, Заменить или Обновить, а поле Источник файла(ов) включает подстановочные знаки;
  • Удалить файл(ы) — путь к файлу (с точки зрения клиента), который требуется удалить. Чтобы удалить несколько файлов из одной папки необходимо включить в имя файла подстановочные знаки одного (?) или нескольких (*) символов (только для удаления файлов в ОС Windows). Этот параметр доступен, только если выбрано действие Удалить:
    GPUI. Настройка политики — «Удаление файлов»

    Примечание

    В настоящее время в ОС «Альт» нельзя удалить несколько файлов из одной папки, включив в имя файла подстановочные знаки (? и *). Необходимо указывать файлы по одному.
  • Подавление ошибок при действиях с отдельными файлами — разрешить передачу одного или нескольких файлов даже в случае сбоя передачи отдельных файлов. Не отображаются только ошибки, связанные с попыткой замены, удаления или настройки атрибутов файла. Такие ошибки могут быть вызваны тем, что файл используется, был отказ в доступе или исходный файл не найден. Если этот параметр включен, такие ошибки могут быть обнаружены только в файле трассировки. Этот параметр отличается от параметра пропуска ошибок предпочтений по умолчанию, который можно изменить на вкладке Общее;
  • Атрибуты — атрибуты файловой системы для папки (недоступны для действия Удалить):
    • Только для чтения;
    • Скрытый;
    • Архивный;
    • Исполняемый.

Примечание

Атрибуты Архивный, Скрытый и Только для чтения применимы только для Windows систем.
Политики управления файлами относятся к экспериментальным, поэтому на машинах с ОС «Альт» где они применяются должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Опционально можно включить политику Настройка механизма копирования файлов. Данная политика конфигурирует механизм «копирования файлов», формируя список суффиксов (расширений), идентифицирующих файл как исполняемый (например, .sh), и список целевых путей копирования.
Для включения политики Настройка механизма копирования файлов следует в разделе КомпьютерАдминистративные шаблоныСистема ALTГрупповые политики и выбрать пункт Настройка механизма копирования файлов. В открывшемся окне установить отметку в поле Включено:
GPUI. Диалоговое окно «Настройка механизма копирования файлов»
Для задания списка суффиксов (расширений), идентифицирующих файл как исполняемый, в поле Список суффиксов файлов нажать кнопку Редактировать и в открывшемся окне ввести список суффиксов, по одному на каждой строке:
GPUI. Список суффиксов файлов
Для задания списка целевых путей копирования в поле Список путей копирования нажать кнопку Редактировать и в открывшемся окне ввести список путей, по одному на каждой строке:
GPUI. Список путей копирования
В результате применения данной политики при копировании файлов с указанными суффиксами в назначенные пути, этим файлам будет задано право на выполнение (chmod +x).
Все настройки политики управления файлами хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Files/Files.xml
  • {GUID GPT}/User/Preferences/Files/Files.xml
Пример файла Files.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Files clsid="{215B2E53-57CE-475c-80FE-9EEC14635851}">
  <File bypassErrors="0"
        changed="2025-06-11 10:28:23"
        clsid="{50BE44C8-567A-4ed1-B1D0-9234FE1F38AF}"
        desc="Файл с сервера"
        image="0"
        name="Задание.txt"
        removePolicy="0"
        status=""
        uid="{cd0d3cba-8698-4612-9c76-5e21da62cc48}"
        userContext="0">
    <Properties
        action="C"
        archive="0"
        executable="0"
        fromPath="\\dc1.test.alt\sysvol\test.alt\newfile"
        hidden="0"
        readOnly="0"
        suppress="0"
        targetPath="%DesktopDir%\New\Задание.txt"/>
  </File>
</Files>

34.6.6. Управление общими каталогами

Групповая политика Управление общими каталогами позволяет:
  • создать общие ресурсы и настроить их свойства;
  • изменить путь к папке общего ресурса путём замены ресурса;
  • удалить (вывести из общего доступа) или изменить лимит пользователей, функцию перечисления на основе доступа и комментарий для следующих объектов:
    • общий ресурс;
    • все общие ресурсы, кроме скрытых;
    • все скрытые ресурсы, кроме административных общих ресурсов с присвоением буквы диска;
    • все административные общие ресурсы с присвоением буквы диска;
    • все общие ресурсы.

Примечание

Для создания общего сетевого ресурса, папка, используемая при их создании, должна существовать на всех компьютерах, к которым применяется объект групповой политики. Вместе с удалением сетевого ресурса удаляется ссылка на папку, но не сама папка и её содержимое.

Примечание

Для поддержки общих сетевых ресурсов с помощью политик на клиенте должны быть выполнены следующие условия:
  • установлен пакет samba-usershares;
  • control smb-conf-usershares установлен в enabled;
  • в файле /etc/samba/smb.conf в секции [global] подключен файл /etc/samba/usershares.conf (include = /etc/samba/usershares.conf).

Примечание

Для создания или удаления папок с помощью групповой политики можно использовать предпочтение Папки.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыСетевые папки. В контекстном меню свободной области выбрать пункт НовыйСетевая папка
GPUI. Создание новой политики «Сетевая папка»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Сетевая папка»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для общего сетевого ресурса:
    • Создать — создание нового сетевого ресурса;
    • Удалить — удаление общего ресурса;
    • Заменить — удаление и повторное создание сетевого ресурса. Суммарный итог действия Заменить — переопределение всех существующих параметров, связанных с общим ресурсом. Если сетевого ресурса не существует, то это действие создаёт новый сетевой ресурс;
    • Обновить — изменение параметров существующего сетевого ресурса. Если сетевого ресурса не существует, то это действие создаёт сетевой ресурс Это действие отличается от Заменить тем, что не удаляет сетевой ресурс, а только обновляет параметры сетевого ресурса, определённые в элементе настройки;
  • Имя общего сетевого ресурса — имя общего ресурса. В этом поле можно указывать переменные;
  • Путь к каталогу — путь к существующей папке, на которую будет указывать общий ресурс. В этом поле можно указывать переменные;
  • Комментарий — текст для отображения в поле Примечание общего ресурса. Если выбрано действие Обновить, общий ресурс уже существует и данное поле оставлено пустым, существующий комментарий будет оставлен без изменений. В этом поле можно указывать переменные. Этот параметр доступен, если выбрано действие Создать, Заменить или Обновить;
  • Модификаторы действий — изменять и удалять общие ресурсы конкретного типа можно не только индивидуально, но и все вместе. Эти параметры доступны, если выбранное действие — Обновить или Удалить:
    • Обновление всех регулярных общих сетевых ресурсов — изменение или удаление всех общих ресурсов, которые не являются скрытыми (с именами, оканчивающимися на $) или специальными (SYSVOL или NETLOGON);
    • Обновление всех скрытых не административных общих сетевых ресурсов — изменение или удаление всех скрытых общих ресурсов, за исключением административных общих ресурсов с буквенным обозначением дисков, ADMIN$, FAX$, IPC$ и PRINT$;
    • Обновление всех административных дисков общих сетевых ресурсов — изменение или удаление всех административных общих ресурсов с буквенным обозначением дисков (в их именах после буквы диска следует $);
  • Лимит пользователей — настройка числа пользователей, которым можно одновременно подключаться к общему ресурсу:
    • Без изменений — не изменять допустимое число пользователей при обновлении общего ресурса (если этот параметр выбран при создании или замене общего ресурса, число пользователей будет настроено на максимально допустимое);
    • Максимально допустимое — неограниченное число пользователей;
    • Разрешение на количество пользователей — ограничить число пользователей (следует ввести допустимый максимум пользователей);
  • Перечисление на основе доступа — настройка видимости папок общего ресурса:
    • Без изменений — не изменять видимость папок общего ресурса при обновлении общего ресурса;
    • Включить — сделать папки общего ресурса видимыми только при наличии доступа на чтение;
    • Отключить — сделать папки общего ресурса видимыми для всех пользователей.
Политики управления общими каталогами относятся к экспериментальным, поэтому на машинах с ОС «Альт» где они применяются должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Все настройки политики управления общими каталогами хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/NetworkShares/NetworkShares.xml
  • {GUID GPT}/User/Preferences/NetworkShares/NetworkShares.xml
Пример файла NetworkShares.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<NetworkShareSettings clsid="{520870D8-A6E7-47e8-A8D8-E6A4E76EAEC2}">
  <NetShare changed="2025-06-11 10:28:23"
        clsid="{2888C5E7-94FC-4739-90AA-2C1536D68BC0}"
        image="0"
        name="share2"
        status=""
        uid="{cd0d3cba-8698-4612-9c76-5e21da62cc48}"
        userContext="0"
        removePolicy="0">
    <Properties
        action="C"
        name="share2"
        path="/var/share2"
        comment=""
        limitUsers="NO_CHANGE"
        abe="NO_CHANGE"/>
  </NetShare>
</NetworkShareSettings>

34.6.7. Подключение сетевых дисков

Групповая политика Подключение сетевых дисков позволяет осуществлять доступ к сетевым общим каталогам как к каталогам в локальной файловой системе. Политика служит для создания, замены, обновления и удаления сопоставленных дисков и их свойств.
Точки монтирования для отображения общих ресурсов на машинах с ОС «Альт»:
  • /media/gpupdate/drives.system — для системных ресурсов;
  • /media/gpupdate/.drives.system — для скрытых системных ресурсов;
  • /run/media/USERNAME/drives — для общих ресурсов пользователя;
  • /run/media/USERNAME/.drives — для скрытых общих ресурсов пользователя.

Примечание

Групповая политика Подключение сетевых дисков использует службу autofs, которая управляет автоматическим монтированием файловых систем.
Значения параметров прописываются в файлы конфигурации:
  • /etc/auto.master.gpupdate.d/<имя>.autofs и /etc/auto.master.gpupdate.d/<имя>.conf — для отображаемых ресурсов;
  • /etc/auto.master.gpupdate.d/<имя>_hide.autofs и /etc/auto.master.gpupdate.d/<имя>_hide.conf — для скрытых ресурсов.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыСетевые диски. В контекстном меню свободной области выбрать пункт НовыйСетевой диск:
GPUI. Создание новой политики «Сетевой диск»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Сетевой диск»
Опции доступные на вкладке Основные настройки:
  • Действие — поведение элемента настройки зависит от выбранного действия и от того, существует ли уже выбранная буква диска:
    • Создать — создание нового сетевого диска;
    • Удалить — удаление сетевого диска. Нельзя удалить локальный диск рабочей станции (жёсткий диск, CD-Drive);
    • Заменить — удаление и повторное создание сетевого диска. Если диск до этого не был до создан, то будет создан новый диск. Нельзя заменить локальный диск рабочей станции (жёсткий диск, CD-Drive);
    • Обновить — изменение параметров существующего сетевого диска или создание нового, если диска с заданной буквой не существует. Это действие отличается от Заменить тем, что оно не удаляет диск, а только обновляет настройки (кроме пути к общей папке и буквы);
  • Путь — путь к общей папке или диску, который нужно отобразить (полный UNC-путь к сетевому общему ресурсу, например, \\server\sharename, \\server\hiddenshare$ или \\server\sharename\foldername). Это поле может содержать переменные. Чтобы изменить существующий сетевой диск (определяемый по букве диска), следует оставить это поле пустым;

    Примечание

    Список допустимых переменных (для систем «Альт»):
    • машинные:
      • %HOME%, %HOMEPATH% — каталог /etc/skel;
      • %HOMEDRIVE%, %SystemRoot%, %SystemDrive% — корневой каталог (/);
      • %StartMenuDir% — каталог /usr/share/applications;
    • пользовательские:
      • %LogonUser% — имя текущего пользователя (username);
      • %HOME%, %HOMEPATH% — домашний каталог текущего пользователя (get_homedir(username));
      • %DesktopDir% — рабочий стол текущего пользователя (get_desktop(username, variables['HOME'])).
  • Переподключиться — сохранять подключенный диск в настройках пользователя и повторно подключать его при каждом входе в систему;
  • Название — пользовательское имя для диска (можно оставить это поле пустым);

    Примечание

    Если в названии есть кириллица или пробелы, то название необходимо заключить в двойные кавычки.
  • Имя диска — буква, на которую будет назначен диск:
    • чтобы назначить сетевому диску первую доступную букву диска, следует выбрать Первый доступный, начиная с, а затем выбрать букву диска, с которой начинать проверку доступности букв;
    • чтобы назначить сетевому диску определённую букву, следует выбрать Использовать, а затем выбрать букву диска (если рабочая станция уже использует выбранную здесь букву, сопоставление дисков групповой политики завершится неудачно);
    • чтобы изменить существующее сопоставление диска (определяемое буквой диска), следует выбрать Использовать, а затем выбрать букву диска;
    • чтобы удалить все сопоставления дисков начиная с определённой буквы, следует выбрать Удалить, начиная с, а затем выбрать букву диска, с которой следует начать удаление сопоставлений дисков. Физические диски пропускаются без ошибок. Данный параметр доступен только при выбранном действии Удалить;
    • чтобы удалить определенный сопоставленный диск, следует выбрать Удалить, а затем выбрать букву диска. Данный параметр доступен только при выбранном действии Удалить;

    Примечание

    Пункт Имя диска совместно с Первый доступный, начиная с рекомендуется использовать для дисков, которые должны подключаться в ОС Windows. Так как если будет создано несколько дисков с данными параметрами, то в ОС «Альт» будет отображаться только один диск (последний).
  • Параметры Скрыть/Показать — настройка отображения сопоставленного диска (параметры Скрыть/Показать диск имеют приоритет над параметрами Скрыть/Показать все диски):
    • Без изменений — оставить отображение сопоставленного диска неизменным;
    • Скрыть диск — скрыть диск в окне файлового менеджера;
    • Показать диск — отобразить диск в окне файлового менеджера.

Примечание

При выборе параметра Показать диск к точке монтирования (файл /etc/auto.master.gpupdate.d/<имя>.autofs) добавляется опция --browse. В этом случае для данной точки монтирования будет создан пустой каталог, независимо от того, смонтирована ли какая-либо файловая система в него или нет.
Это удобно так как доступные автоматически монтируемые файловые системы будут показаны как существующие каталоги, даже если их файловые системы в данный момент не смонтированы.
При выборе параметра Скрыть диск необходимо запомнить название каталога, так как доступ к этому каталогу можно получить только при непосредственном обращении к нему. Каталог будет создан и файловая система будет смонтирована только при попытке доступа к нему. Незадействованный ресурс по истечении тайм-аута (по умолчанию 120 секунд) будет отмонтирован, а каталог удалён.

34.6.7.1. Дополнительные настройки

Политики монтирования находятся в разделе Компьютер/ПользовательАдминистративные шаблоныСистема ALTМонтирование:
GPUI. Политики монтирования
34.6.7.1.1. Отображение сетевых дисков в домашнем каталоге
Чтобы пользователь мог легко просматривать примонтированные сетевые ресурсы, можно включить отображение символических ссылок (symlink) на них в домашнем каталоге. Для этого следует включить политики монтирования Отображение сетевых дисков пользователя в домашнем каталоге и/или Отображение сетевых дисков машины в домашнем каталоге.
Для включения политики необходимо щёлкнуть на нужной политике, в открывшемся окне установить отметку в поле Включено и нажать кнопку ОК:
GPUI. Политика «Отображение сетевых дисков пользователя в домашнем каталоге»
При включении этих политик в домашнем каталоге пользователя появятся следующие ссылки:
  • ~/net.drives.system — ссылка на /media/gpupdate/drives.system;
  • ~/.net.drives.system — ссылка на /media/gpupdate/.drives.system;
  • ~/net.drives — ссылка на /run/media/USERNAME/drives;
  • ~/.net.drives — ссылка на /run/media/USERNAME/.drives.
34.6.7.1.2. Префикс имени каталога монтирования сетевых дисков
Политика Префикс имени каталога монтирования сетевых дисков (ПользовательАдминистративные шаблоныСистема ALTМонтирование) позволяет убрать префикс net. из имён символических ссылок:
GPUI. Политика «Префикс имени каталога монтирования сетевых дисков»
Если политика отключена или не сконфигурирована (по умолчанию), имена символических ссылок на каталоги монтирования начинаются с префикса net.:
  • ~/net.drives — ссылка на /run/media/USERNAME/drives для общих ресурсов пользователя;
  • ~/.net.drives — ссылка на /run/media/USERNAME/.drives для скрытых общих ресурсов пользователя.
Если политика включена, префикса net. в именах символических ссылок на каталоги монтирования не будет:
  • ~/drives — ссылка на /run/media/USERNAME/drives для общих ресурсов пользователя;
  • ~/.drives — ссылка на /run/media/USERNAME/.drives для скрытых общих ресурсов пользователя.
34.6.7.1.3. Время до размонтирования сетевых каталогов
Политика Время до размонтирования сетевых каталогов (Компьютер/ПользовательАдминистративные шаблоныСистема ALTМонтирование) задаёт интервал (в секундах), по истечении которого неиспользуемые сетевые ресурсы будут автоматически отмонтированы.

Примечание

Применяется к ресурсам, подключённым через групповые политики.
GPUI. Политика «Время до размонтирования сетевых каталогов»
34.6.7.1.4. Имя каталога монтирования сетевых дисков машины
Политика Имя каталога монтирования сетевых дисков машины (КомпьютерАдминистративные шаблоныСистема ALTМонтирование) позволяет задать имя символической ссылки на каталог монтирования сетевых дисков машины:
GPUI. Политика «Имя каталога монтирования сетевых дисков машины»
По умолчанию (если политика отключена или не настроена) имя символической ссылки задано следующим образом:
  • /media/gpupdate/drives.system — для системных сетевых дисков;
  • /media/gpupdate/.drives.system — для скрытых системных сетевых дисков;
  • ~/net.drives.system — для системных сетевых дисков (при включенной политике Отображение сетевых дисков машины в домашнем каталоге);
  • ~/.net.drives.system — для скрытых системных сетевых дисков (при включенной политике Отображение сетевых дисков машины в домашнем каталоге).
Если политика включена, имя символической ссылки будет задано следующим образом:
  • /media/gpupdate/<имя>.system — для системных сетевых дисков;
  • /media/gpupdate/.<имя>.system — для скрытых системных сетевых дисков;
  • ~/net.<имя>.system — для системных сетевых дисков (при включенной политике Отображение сетевых дисков машины в домашнем каталоге);
  • ~/.net.<имя>.system — для скрытых системных сетевых дисков (при включенной политике Отображение сетевых дисков машины в домашнем каталоге);
  • ~/<имя>.system — для системных сетевых дисков (при включенных политиках Отображение сетевых дисков машины в домашнем каталоге и Префикс имени каталога монтирования сетевых дисков);
  • ~/.<имя>.system — для скрытых системных сетевых дисков (при включенных политиках Отображение сетевых дисков машины в домашнем каталоге и Префикс имени каталога монтирования сетевых дисков).
34.6.7.1.5. Имя каталога монтирования сетевых дисков пользователя
Политика Имя каталога монтирования сетевых дисков пользователя (ПользовательАдминистративные шаблоныСистема ALTМонтирование) позволяет задать имя символической ссылки на каталог монтирования сетевых дисков пользователя:
GPUI. Политика «Имя каталога монтирования сетевых дисков пользователя»
По умолчанию (если политика отключена или не настроена) имя символической ссылки задано следующим образом:
  • /run/media/USERNAME/drives — для общих ресурсов пользователя;
  • /run/media/USERNAME/.drives — для скрытых общих ресурсов пользователя;
  • ~/net.drives — для общих ресурсов пользователя (при включенной политике Отображение сетевых дисков машины в домашнем каталоге);
  • ~/.net.drives — для скрытых общих ресурсов пользователя (при включенной политике Отображение сетевых дисков машины в домашнем каталоге).
Если политика включена, имя символической ссылки будет задано следующим образом:
  • /run/media/USERNAME/<имя> — для общих ресурсов пользователя;
  • /run/media/USERNAME/.<имя> — для скрытых общих ресурсов пользователя;
  • ~/net.<имя> — для общих ресурсов пользователя (при включенной политике Отображение сетевых дисков пользователя в домашнем каталоге);
  • ~/.net.<имя> — для скрытых общих ресурсов пользователя (при включенной политике Отображение сетевых дисков пользователя в домашнем каталоге);
  • ~/<имя> — для общих ресурсов пользователя (при включенных политиках Отображение сетевых дисков пользователя в домашнем каталоге и Префикс имени каталога монтирования сетевых дисков);
  • ~/.<имя> — для скрытых общих ресурсов пользователя (при включенных политиках Отображение сетевых дисков пользователя в домашнем каталоге и Префикс имени каталога монтирования сетевых дисков).
34.6.7.1.6. Отключение аргумента cifsacl
Политика Отключение аргумента cifsacl (Компьютер/ПользовательАдминистративные шаблоныСистема ALTМонтирование) позволяет исключить параметр cifsacl из команды монтирования при использовании autofs для подключения сетевых дисков через групповые политики:
GPUI. Политика «Отключение аргумента cifsacl»

Примечание

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

34.6.7.2. Результат применения политики

После обновления политик в сессии пользователя будет подключен сетевой диск, доступный из файлового менеджера и других программ:
Сетевые диски в файловом менеджере Thunar
Сетевые диски в проводнике Windows
Если включена политика Отображение сетевых дисков в домашнем каталоге, в домашнем каталоге пользователя появятся ссылки:
  • ~/net.drives.system — ссылка на /media/gpupdate/drives.system;
  • ~/.net.drives.system — ссылка на /media/gpupdate/.drives.system;
  • ~/net.drives — ссылка на /run/media/USERNAME/drives;
  • ~/.net.drives — ссылка на /run/media/USERNAME/.drives
Ссылки на сетевые диски в файловом менеджере Thunar
Сетевые диски в файловом менеджере Dolphin (включена политика Отображение сетевых дисков в домашнем каталоге, задано Имя каталога монтирования сетевых дисков машины — my_share, задано Имя каталога монтирования сетевых дисков пользователя — share, для сетевых дисков пользователя отключен префикс .net):
Сетевые диски в файловом менеджере Dolphin

Примечание

В приведенном выше примере:
net.my_share -> /media/gpupdate/my_share
share -> /run/media/<пользователь>/share
Все настройки политики подключения сетевого диска хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Drives/Drives.xml
  • {GUID GPT}/User/Preferences/Drives/Drives.xml
В одном GPO возможно задать подключение более одного сетевого диска. Пример файла Drives.xml с двумя сетевыми дисками:
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <Drives clsid="{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}">
    <Drive bypassErrors="0"
            changed="2025-06-19 08:28:32"
            clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}"
            desc=""
            image="2"
            name="\\dc1.test.alt\Free"
            removePolicy="0"
            status="O:"
            uid="{D070D4D6-DEB5-4DDE-9A53-6AB33C90352A}"
            userContext="0">
        <Properties action="U"
            allDrives="SHOW"
            cpassword=""
            label=""
            letter="O"
            path="\\dc1.test.alt\Free"
            persistent="1"
            thisDrive="SHOW"
            useLetter="1"
            userName=""/>
    </Drive>
    <Drive bypassErrors="0"
            changed="2025-06-19 08:28:32"
            clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}"
            desc=""
            image="2"
            name="I:"
            status="I:"
            uid="{4BDA1724-4BBF-4B4D-B299-E81080D9A4B5}"
            userContext="0">
        <Properties action="U"
            thisDrive="SHOW"
            allDrives="SHOW"
            userName=""
            path="\\dc1.test.alt\sysvol"
            label=""
            persistent="1"
            useLetter="0"
            letter="I"/>
    </Drive>
    </Drives>

34.6.8. Настройка реестра

Групповая политика Настройка реестра позволяет управлять настройками реестра Windows.
Для настройки этой политики следует перейти в Компьютер/ПользовательНастройкиНастройки системыРеестр. В контекстном меню свободной области выбрать пункт НовыйЗначение реестра
GPUI. Создание новой политики «Настройка реестра»
В диалоговом окне Диалог настроек задать настройки политики:
GPUI. Диалоговое окно настройки политики «Настройка реестра»
Опции доступные на вкладке Основные настройки:
  • Действие — действие, которое будет выполняться для элемента реестра:
    • Создать — создание нового значения или раздела реестра;
    • Удалить — удаление значения или раздела реестра и всех его значений и подразделов;
    • Заменить — удаление и повторное создание значения или раздела реестра. Если целевым объектом является значение реестра, то конечным результатом действия будет перезапись всех существующих параметров, сопоставленных данному значению реестра. Если целевым объектом является раздел реестра, то конечным результатом будет удаление всех значений и подразделов реестра, и останется только имя значения по умолчанию без данных. Если значение или раздел реестра не существует, то действие Заменить приведет к созданию нового значения или раздела;
    • Обновить — изменение параметров существующего значения или раздела реестра. Это действие отличается от Заменить тем, что оно обновляет только параметры, определенные в элементе настройки. Все остальные параметры значения или раздела реестра остаются прежними. Если значение или раздел реестра не существует, то действие Обновить приведет к созданию нового значения или раздела;
  • Улей — улей (куст) для раздела реестра:
    • HKEY_CLASSES_ROOT — информация о зарегистрированных в Windows типах файлов (это псевдоним для HKEY_LOCAL_MACHINE\Software\Classes);
    • HKEY_CURRENT_USER — настройки пользователя, вошедшего в Windows (это псевдоним для HKEY_USERS\куст текущего пользователя). HKEY_USERS\.Default используется в том случае, когда HKEY_CURRENT_USER настроен в разделе конфигурации компьютера;
    • HKEY_LOCAL_MACHINE — настройки, относящиеся к компьютеру (параметр по умолчанию для политики компьютера). Эти параметры применяются ко всем пользователям компьютера;
    • HKEY_USERS — настройки для всех пользователей (параметр по умолчанию для политики пользователя). Эти параметры применяются к отдельным пользователям;
    • HKEY_CURRENT_CONFIG — сведения о настройках оборудования (это псевдоним для HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current);
  • Путь к ключу — путь к ключу. Не нужно указывать улей и вводить косую черту до или после пути. Это поле воспринимает переменные процесса настройки;
  • Имя значения — для настройки значения следует установить, либо отметку в пункте По умолчанию, чтобы принять значение раздела по умолчанию, либо ввести имя настраиваемого значения. Чтобы настроить только раздел, следует оставить это поле пустым. В этом поле можно указать переменные;
  • Тип значения — тип значения. Данный параметр доступен только при выбранном действии Создать, Заменить или Обновить и введённом значении Имя значения;
  • Данные значения — значения реестра. Чтобы настроить только раздел, следует оставить это поле пустым. В этом поле можно указать переменные. Данный параметр доступен только при выбранном действии Создать, Заменить или Обновить и введенном значении Имя значения.
Все настройки политики управления настройками реестра Windows хранятся в файлах:
  • {GUID GPT}/Machine/Preferences/Registry/Registry.xml
  • {GUID GPT}/User/Preferences/Registry/Registry.xml
Пример файла Registry.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<RegistrySettings clsid="{A3CCFC41-DFDB-43a5-8D26-0FE8B954DA51}">
  <Registry changed="2025-06-19 08:28:32"
        clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}"
        image="12"
        name="failed_count"
        status="failed_count"
        uid="{D5855321-D2BA-4595-BD28-4DF452BFF65F}"
        bypassErrors="1">
    <Properties
        action="U"
        displayDecimal="0"
        hive="HKEY_CURRENT_USER"
        key="Software\Google\Chrome\BLBeacon"
        name="failed_count"
        type="REG_DWORD"
        value="00000001">
        <SubProp id="" mask="0" value="0"/">
    </Properties>
  </Registry>
</RegistrySettings>

34.6.9. Указание прокси-сервера

С помощью групповых политик можно указать прокси-сервер.

Примечание

Если прокси-сервер был настроен в модуле Прокси-сервер ЦУС, предварительно необходимо удалить эти настройки и в файле /etc/sysconfig/network удалить строки:
HTTP_PROXY=
HTTPS_PROXY=
FTP_PROXY=
NO_PROXY=
Для настройки этой политики используется политика управления переменными среды (см. раздел Управление переменными среды).
Настройка политики для указания прокси-сервера:
  1. Настроить групповую политику управления переменными окружения:
    GPUI. Настройка политики для указания прокси-сервера
    • в поле Действие выбрать пункт Заменить;
    • в поле Имя указать имя переменной: HTTPS_PROXY;
    • в поле Значение указать адрес и порт прокси-сервера, и, при необходимости, аутентификационные данные в формате http://username:password@address:port
  2. Аналогичным способом создать настройки окружения для переменных HTTP_PROXY и FTP_PROXY (в поле Имя указывать соответственно HTTP_PROXY, FTP_PROXY).
Проверка применения политики:
  1. Применить групповые политики на целевом компьютере, выполнив команду:
    $ gpupdate
    
  2. Повторно авторизоваться на целевом компьютере.
  3. Проверить наличие переменных окружения, выполнив команду:
    $ env |grep PROXY
    HTTP_PROXY=http://10.0.66.52:3128
    HTTPS_PROXY=http://10.0.66.52:3128
    FTP_PROXY=http://10.0.66.52:3128
    
  4. Запустить веб-браузер, убедиться, что сайты открываются через прокси-сервер.

34.6.10. Настройка периодичности запроса конфигураций

Для изменения периодичности запроса конфигураций можно создать файлы:
  • /etc/systemd/user/gpupdate-user.timer.d/override.conf — изменение пользовательского таймера;
  • /etc/systemd/system/gpupdate.timer.d/override.conf — изменение системного таймера.
С указанием периодичности запроса конфигураций, например:
[Timer]
OnUnitActiveSec = 10min
где 10min — периодичность запроса конфигураций.
Периодичность запроса конфигураций (запроса gpupdate) можно установить с помощью групповых политик.
Для настройки этой политики используются политика управления каталогами (см. раздел Управление каталогами) и политика управления INI-файлами (см. раздел Управление INI-файлами).
Пример настройки политики задания периодичности запроса конфигураций:
  1. Настроить групповую политику создания каталога:
    GPUI. Создание каталога для настроек таймера
    • в поле Действие выбрать пункт Создать;
    • в поле Путь указать /etc/systemd/system/gpupdate.timer.d (или /etc/systemd/system/gpupdate-user.timer.d для пользовательского таймера).
  2. Настроить групповую политику создания INI-файла:
    GPUI. Настройка периодичности запроса конфигураций
    • в поле Действие выбрать пункт Обновить;
    • в поле Путь к файлу указать /etc/systemd/system/gpupdate.timer.d/override.conf (или /etc/systemd/system/gpupdate-user.timer.d/override.conf для пользовательского таймера);
    • в поле Имя секции указать Timer;
    • в поле Имя свойства указать OnUnitActiveSec;
    • в поле Значение свойства указать периодичность запроса, в данном примере 10 минут: 10min.
Проверка применения политики:
  1. Применить групповые политики на целевом компьютере, выполнив команду:
    $ gpupdate
    
  2. Выполнить команду (или перезагрузить компьютер):
    # systemctl daemon-reload
    
  3. Убедиться, что политика применилась, выполнив команды
    $ cat /etc/systemd/system/gpupdate.timer.d/override.conf
    [Timer]
    OnUnitActiveSec = 10min
    
    $ systemctl status gpupdate.timer
    …
     Active: active (waiting) since Wed 2025-06-11 09:46:46 MSK; 52s ago
    Trigger: Wed 2025-06-11 09:56:46 MSK; 9min left
    

Примечание

Применить пользовательские настройки можно, выполнив команду:
$ systemctl --user daemon-reload

Примечание

Файл override.conf подменяет настройки системной библиотеки в файле /lib/systemd/system/gpupdate.timer только если значение секции Timer в файле override.conf меньше, чем значение аналогичной секции в gpupdate.timer.

34.7. Управление logon-скриптами

Групповые политики позволяют запускать сценарии запуска и завершения работы компьютера, входа и выхода из системы пользователя. Возможно связать один или несколько файлов сценариев (scripts) с четырьмя инициируемыми событиями:
  • Для машины:
    • Запуск компьютера (Startup);
    • Выключение компьютера/Завершение работы (Shutdown).
  • Для пользователя:
    • Вход пользователя (Logon);
    • Выход пользователя (Logoff).
Система выполняет сценарии на языках, которые поддерживает клиентский компьютер. В среде Windows эту задачу выполняет Windows Script Host (WSH), который поддерживает языки сценариев, включая bat, cmd, VBScript и Jscript. В случае, если указано более одного сценария, они будут выполняться согласно перечню в списке.

Примечание

В сценариях, запускаемых на машинах на базе ОС «Альт», необходимо в первой строке указывать шебанг, например, #!/usr/bin/env bash

Примечание

Если сценарии (scripts) хранятся в SYSVOL, они реплицируются между контроллерами домена. SYSVOL доступен всем членам домена, что гарантирует запуск сценария.

34.7.1. Сценарии для входа/выхода пользователя

Для удобства можно скопировать нужные сценарии в каталог User\Scripts\Logon (например, \\test.alt\sysvol\test.alt\Policies\{20DDB816-421B-4861-8AC5-007E56CB67D0}\User\Scripts\Logon) или User\Scripts\Logoff соответствующей политики.
Для настройки политики следует перейти в ПользовательНастройки системыСкрипты. Щёлкнуть левой кнопкой мыши на политике Вход в систему или Выход из системы:
GPUI. Сценарий (вход/выход из системы)
В диалоговом окне свойств политики нажать кнопку Добавить:
GPUI. Диалоговое окно свойств политики «Вход в систему»
В диалоговом окне Добавить скрипт в поле Имя скрипта ввести путь к сценарию, в поле Аргументы скрипта ввести необходимые параметры аналогично вводу этих параметров в командной строке. Нажать кнопку ОК.
Пример добавления сценария для ОС «Альт»:
GPUI. Диалоговое окно добавления сценария для ОС «Альт»

Примечание

Применение локальных скриптов реализовано в механизме gpupdate версии 0.9.11. В версиях ниже скрипты для ОС «Альт» должны находиться в GPT настраиваемого объекта групповой политики.
Пример добавления сценария для ОС Windows (можно указать локальный скрипт на компьютере клиента):
GPUI. Диалоговое окно добавления сценария для ОС Windows
При назначении нескольких сценариев они будут применяться в заданном порядке. Чтобы переместить сценарий в списке вверх/вниз, следует выбрать его в списке и нажать кнопку Вверх/Вниз. Для того чтобы изменить параметры сценария, необходимо выбрать его в списке и нажать кнопку Изменить. Кнопка Удалить предназначена для удаления сценария из списка:
GPUI. Список сценариев
На вкладке Скрипты PowerShell можно добавить сценарии с расширением *.ps1.

34.7.2. Сценарии для автозагрузки или завершения работы компьютера

Для удобства можно скопировать нужные сценарии в каталог Machine\Scripts\Startup (например, \\test.alt\sysvol\test.alt\Policies\{20DDB816-421B-4861-8AC5-007E56CB67D0}\Machine\Scripts\Startup) или Machine\Scripts\Shutdown соответствующей политики.
Для настройки политики следует перейти в КомпьютерНастройки системыСкрипты. Щёлкнуть левой кнопкой мыши на политике Запуск или Завершение работы:
GPUI. Сценарий (запуск/завершение работы)
В диалоговом окне свойств политики нажать кнопку Добавить:
GPUI. Диалоговое окно свойств политики «Запуск»
В диалоговом окне Добавить скрипт в поле Имя скрипта ввести путь к сценарию, в поле Аргументы скрипта ввести необходимые параметры аналогично вводу этих параметров в командной строке. Нажать кнопку ОК.
Пример добавления сценария для ОС «Альт»:
GPUI. Диалоговое окно добавления сценария для ОС «Альт»

Примечание

Применение локальных скриптов реализовано в механизме gpupdate версии 0.9.11. В версиях ниже скрипты для ОС «Альт» должны находиться в GPT настраиваемого объекта групповой политики.
Пример добавления сценария для ОС Windows (можно указать локальный скрипт на компьютере клиента):
GPUI. Диалоговое окно добавления сценария для ОС Windows
При назначении нескольких сценариев они будут применяться в заданном порядке. Чтобы переместить сценарий в списке вверх/вниз, следует выбрать его в списке и нажать кнопку Вверх/Вниз. Для того чтобы изменить параметры сценария, необходимо выбрать его в списке и нажать кнопку Изменить. Кнопка Удалить предназначена для удаления сценария из списка.
На вкладке Скрипты PowerShell можно добавить сценарии с расширением *.ps1.

34.7.3. Включение экспериментальных групповых политик

Политики управления logon-скриптами относятся к экспериментальным, поэтому на машинах с ОС «Альт» где они применяются должны быть включены экспериментальные групповые политики (подробнее см. раздел Экспериментальные групповые политики).
Включить/отключить механизм групповых политик управления logon-скриптами также можно, включив/отключив политики Модуль выполнения сценариев для компьютеров или Модуль выполнения сценариев для пользователей (КомпьютерАдминистративные шаблоныСистема ALTГрупповые политикиМеханизмы GPUpdate):
GPUI. Механизмы GPUpdate управления logon-скриптами

34.7.4. Файлы настроек политики

Файлы сценариев входа и выхода пользователя (за исключением локальных) хранятся в каталогах: {GUID GPT}/User/Scripts/Logon и {GUID GPT}/User/Scripts/Logoff. Настройки политики для сценариев входа и выхода пользователя хранятся в файле {GUID GPT}/User/Scripts/scripts.ini. В файле scripts.ini перечисляются все скрипты, выполняемые в сценариях входа и выхода пользователя из системы. Сценарии входа начинаются с преамбулы [Logon], сценарии выхода начинаются с преамбулы [Logoff].
Пример файла scripts.ini:
[Logon]
0CmdLine=date.sh
0Parameters=test
1CmdLine=test.sh
1Parameters=new
[Logoff]
0CmdLine=touch.sh
0Parameters=
1CmdLine=Logoff.bat
1Parameters=1.txt
2CmdLine=C:\share\Logon.bat
2Parameters=
Файлы сценариев запуска и завершения работы компьютера (за исключением локальных) хранятся в каталогах: {GUID GPT}/Machine/Scripts/Shutdown и {GUID GPT}/Machine/Scripts/Startup. Настройки политики для сценариев запуска и завершения работы компьютера хранятся в файле {GUID GPT}/Machine/Scripts/scripts.ini. В файле scripts.ini перечисляются все скрипты, выполняемые в сценариях запуска и завершения работы компьютера. Сценарии запуска компьютера начинаются с преамбулы [Startup], сценарии завершения работы начинаются с преамбулы [Shutdown].
Пример файла scripts.ini:
[Startup]
0CmdLine=hello.bat
0Parameters=
1CmdLine=notescript.vbs
1Parameters=
2CmdLine=notescript2.vbs
2Parameters=
3CmdLine=touch.bat
3Parameters=
[Shutdown]
0CmdLine=touch.bat
0Parameters=
Файл scripts.ini закодирован в формате UTF-16LE (little-endian).

Примечание

Настройки политики для скриптов PowerShell хранятся в файлах {GUID GPT}/User/Scripts/pgscripts.ini (для сценариев входа и выхода пользователя) и {GUID GPT}/Machine/Scripts/pgscripts.ini (для запуска и завершения работы компьютера).

34.7.5. Диагностика проблем

Глава 35. Расширение возможностей ГП

35.1. Схема административных шаблонов (ADMX)

Административные шаблоны представляют собой два типа XML-файлов:
  • независимый от языка файл (ADMX), описывающий структуру категорий и параметры политики административных шаблонов, отображаемых в редакторе управления групповыми политиками;
  • набор зависящих от языка файлов (ADML), которые предоставляют локализованные части, отображаемые в редакторе управления групповыми политиками. Каждый ADML-файл представляет один язык, для которого требуется поддержка.
Каждому ADMX-файлу должен соответствовать свой ADML-файл с таким же именем.

35.1.1. Структура ADMX-файла

Структура ADMX-файла
ADMX-файл состоит из семи разделов:
  • XML-объявление. XML-объявлением является заголовок файла, который не рассматривается в качестве фрагмента ADMX-документа, но является его необходимой частью и помещается в начале файла для того, чтобы указать на то, что это XML-документ;
  • policyDefinitions. Элемент, который содержит все остальные элементы ADMX-файла;
  • policyNamespaces. Этот элемент определяет уникальное пространство имён для данного ADMX-файла. Данный элемент также обеспечивает сопоставление с пространствами имен во внешних файлах, если ADMX-файл ссылается на элементы category, определенные в другом ADMX-файле;
  • resources. Определяет требования к ресурсам определенного языка и минимальную необходимую версию связанного ADML-файла;
  • supportedOn. Определяет ссылки на локализованные текстовые строки, определяющие ОС или приложения, на которые влияет определенный параметр политики;
  • categories. Содержит список категорий, в которых параметр политики текущего ADMX-файла будет отображаться в редакторе объектов групповой политики;
  • policies. Содержит определения отдельных параметров политики.
XML-объявление не считается частью документа ADMX. Однако рекомендуется начинать файл ADMX с объявления XML, чтобы указать, что это документ XML.
Синтаксис XML-объявления:
<?xml version="<версия>" encoding="<кодировка"?>
где:
  • version — версия XML, используемая в документе (обязательный атрибут). В настоящее время поддерживается только версия 1.0;
  • encoding — информация о кодировке символов, используемая анализаторами XML-документов. ADMX-файлы всегда имеют кодировку UTF-8.

Примечание

XML-объявление не должно предваряться комментариями, пробелами или другими инструкциями по обработке XML.
Элемент policyDefinitions — это элемент документа для ADMX-файла, который определяет набор параметров политики реестра. Элемент policyDefinitions также объявляет пространство имен по умолчанию для всех элементов в ADMX-файле.
Синтаксис элемента policyDefinitions:
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
revision="<MajorVerison.MinorVersion>" schemaVersion="<MajorVerison.MinorVersion>"
xmlns=" http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" >
  <policyNamespaces> … </policyNamespaces>
  <supersededAdm> … </supersededAdm>
  <resources> … </resources>
  <supportedOn> … </supportedOn>
  <categories> … </categories>
  <policies> … </policies>
</policyDefinitions>
Атрибуты элемента policyDefinitions описаны в таблице Атрибуты элемента policyDefinitions.

Таблица 35.1. Атрибуты элемента policyDefinitions

Атрибут
Обязательный
Описание
xmlns:xsd
Нет
Обозначение элементов и типов данных, используемых в схеме пространства имен
xmlns:xsi
Нет
Обозначение пространства имён экземпляра XML-схемы, предоставленной в самом пространстве
revision
Да
Версия ADMX-файла, которая в большинстве случаев предназначена для отслеживания внесенных изменений.
Синтаксис:
revision="<MajorVerison.MinorVersion>"
где MajorVersion и MinorVersion являются номерами версии, например, revision="1.0"
schemaVersion
Да
Указывает версию схемы, используемую средствами работы с ГП для определения того, поддерживается ли ими формат конкретных ADMX-файлов. Синтаксис этой команды идентичен синтаксису revision
xmlns
Нет
Пространство имен схемы ГП

Примечание

Инструменты ГП успешно используют ADMX-файлы, которые не содержат атрибутов xmlns. Но эти атрибуты должны входить в состав ADMX-файла, так как в противном случае он может не пройти проверку на правильность формата XML-файла.
Дочерние элементы policyDefinitions описаны в таблице Дочерние элементы policyDefinitions.

Таблица 35.2. Дочерние элементы policyDefinitions

Элемент
Обязательный
Описание
policyNamespaces
Да
Определяет уникальное имя пространства имен политики в файле ADMX, а также любых пространств имен, на которые оно ссылается в других файлах ADMX.
Синтаксис:
<policyNamespaces>
  <target> … </target>
  <using> … </using>
</policyNamespaces>
где:
  • target — определяет уникальное имя пространства имен политики в ADMX-файле (обязательный элемент);
  • using — ссылается на существующую категорию или имя supportOn из другого пространства имен политики
supersededAdm
Нет
Данный элемент ссылается на имя ADM-файла, заменяемого ADMX-файлом
resources
Да
Определяет требования для ресурсов определенного языка и минимальную необходимую версию связанного ADML-файла.
Синтаксис:
<resources minRequiredRevision="<MajorVerison.MinorVersion>"
fallbackCulture="<language name>"/>
где:
  • minRequiredRevision — минимальный уровень версии соответствующего ADML-файла;
  • fallbackCulture — язык, который будет использоваться, если ни в одном расположении не будет найден соответствующий ADML-файл. Если этот атрибут не указан будет использоваться английский язык
supportedOn
Нет
Определяет сопоставление ссылки на локализированные строки текста с ОС или приложениями, на которые влияют конкретные параметры политики.
Синтаксис:
<supportedOn>
  <definitions> … </definitions>
</supportedOn>
Элементы definitions содержат информацию о поддерживаемой версии
categories
Нет
Содержит список категорий, в которых параметр политики текущего ADMX-файла будет отображаться в редакторе управления групповыми политиками.
Синтаксис:
<categories>
  <category> … </category>
</categories>
Элемент category указывает имя уникальной категории, которая будет отображаться в редакторе объектов групповой политики
policies
Нет
Содержит список определений параметров политики.
Синтаксис:
<policies>
  <policy> … </policy>
</policies>
Дочерний элемент policy соответствует одному параметру ГП, отображаемому в редакторе объектов групповой политики. Элемент policy описывает всю информацию о параметре политики, но включает ссылку на определение параметра
Синтаксис элемента category:
<category name="<logical or friendly name>"
displayName="$(string.<category text>)"
explainText="$(string.<help text>)">
  <parentCategory> … </parentCategory>
  <seeAlso> … </seeAlso>
  <keywords> … </keywords>
</category>
Атрибуты элемента category описаны в таблице Атрибуты элемента category.

Таблица 35.3. Атрибуты элемента category

Атрибут
Обязательный
Описание
name
Да
Имя, которое будет использоваться для конкретного поддерживаемого приложения и версии
displayName
Да
Ссылка на текстовую строку категории, расположенную в таблице строк ADML-файла
explainText
Нет
Текст объяснения или справки, связанный с конкретной категорией
Дочерние элементы category описаны в таблице Дочерние элементы category.

Таблица 35.4. Дочерние элементы category

Элемент
Обязательный
Описание
parentCategory
Да
Ссылка на родительскую категорию
seeAlso
Нет
Ссылка на другой элемент, который может быть связан с этим. Этот элемент не поддерживается и будет игнорироваться текущей ГП
keywords
Нет
Содержит индексные слова, которые можно использовать для поиска элементов. Этот элемент не поддерживается и будет игнорироваться текущей ГП
Синтаксис элемента policy:
<policy name="<logical or friendly name>"
class="Machine|User|Both"
displayName="$(string.<category text>)"
explainText="$(string.<help text>)"
presentation="$(presentation.<parameter>)"
key="<registry key>"
valueName="<registry valuename>">
  <parentCategory> … </parentCategory>
  <supportedOn> … </supportedOn>
  <enabledValue> … </enabledValue>
  <disabledValue> … </disabledValue>
  <enabledList> … </enabledList>
  <disabledList> … </disabledList>
  <elements> … </elements>
</policy>
Атрибуты элемента policy описаны в таблице Атрибуты элемента policy.

Таблица 35.5. Атрибуты элемента policy

Атрибут
Обязательный
Описание
name
Да
Уникальное имя элемента политики (строка, желательно без пробелов и специальных символов)
class
Да
Определяет, в каком разделе редактора ГП будет размещён элемент политики: компьютере, пользователе или в обоих узлах. Может принимать значения: «User», «Machine» или «Both»
displayName
Да
Имя, отображаемое в GPUI или оснастке консоли управления ГП. Ссылка на строку, расположенную в ADML-файле
explainText
Нет
Текст объяснения или справки, связанный с элементом политики. Ссылка на строку, расположенную в ADML-файле
presentation
Нет
Подписи параметров политики. Ссылка на строки, расположенные в ADML-файле
key
Да
Местоположение ключа реестра, в котором будет создан параметр реестра
valueName
Нет
Значение реестра, которое будет настроено для этого конкретного элемента политики
Дочерние элементы policy описаны в таблице Дочерние элементы policy.

Таблица 35.6. Дочерние элементы policy

Элемент
Обязательный
Описание
parentCategory
Да
Ссылка на родительскую категорию (раздел, в котором будет отображаться политика)
supportedOn
Нет
Логическое имя supportOn, определенное в элементе supportOn для этого файла (ссылка на поддерживаемые продукты)
enabledValue
Нет
Значение, которое раздел реестра примет, если политика включена.
Синтаксис:
<enabledValue>
  <delete /> | <decimal> … </decimal> | <string> … </string>
</enabledValue>
где:
  • delete — удалить значение или ключ реестра;
  • decimal — десятичное беззнаковое число;
  • string — строка, ограниченая 255 символами
disabledValue
Нет
Значение, которое раздел реестра примет, если политика отключена. См. описание enabledValue
enabledList
Нет
Набор значений и ключей реестра, представляющих включенное состояние элемента политики.
Синтаксис:
<enabledList defaultKey="<registry subkey>">
  <item> … </item>
</enabledList>
где:
  • атрибут defaultKey — подраздел реестра по умолчанию для всех элементов;
  • item — подраздел реестра со связанным значением
disabledList
Нет
Набор значений и ключей реестра, представляющих отключенное состояние элемента политики. См. описание enabledList
elements
Нет
Один из пяти типов параметров (см.ниже), которые можно задать в настройке политики
Синтаксис элемента elements:
<elements>
  <boolean> … </boolean>
  <decimal> … </decimal>
  <text> … </text>
  <enum> … </enum>
  <list> … </list>
</elements>
Дочерние элементы elements описаны в таблице Дочерние элементы elements.

Таблица 35.7. Дочерние элементы elements

Элемент
Обязательный
Описание
boolean
Нет
Представляет логический элемент в политике.
Синтаксис:
<boolean id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>">
  <trueValue> … </trueValue>
  <falseValue> … </falseValue>
  <trueList> … </trueList>
  <falseList> … </falseList>
</boolean>
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • trueValue — устанавливает значение на основе истинного условия;
  • falseValue — устанавливает значение на основе ложного условия;
  • trueList — устанавливает значения на основе истинного состояния;
  • falseList — устанавливает значения на основе ложного состояния.
Пример:
<boolean id="OrgXfceThunar_blocker" key="Software\BaseALT\Policies\PolkitLocks" valueName="org.xfce.thunar">
  <trueValue>
    <decimal value="1" />
  </trueValue>
  <falseValue>
    <decimal value="0" />
  </falseValue>
</boolean>
Для элемента boolean в ADMX-файле требуется элемент checkBox с соответствующим идентификатором в ADML-файле
decimal
Нет
Представляет числовой/десятичный элемент в политике. Число может быть определено для хранения в виде числового или строкового репрезентативного значения
Синтаксис:
<decimal id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false"
  minValue="<MinValue>"
  maxValue="<MaxValue>"
  storeAsText="true|false"
  soft="true|false" />
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • атрибут minValue — минимально допустимое значение;
  • атрибут maxValue — максисмально допустимое значение;
  • атрибут soft — следует ли перезаписывать существующий подраздел;
  • атрибут storeAsText — если true, сохранить десятичное значение как значение реестра REG_SZ.
Пример:
<decimal id="OrgMateSessionIdleDelay_setter"
  valueName="org.mate.session.idle-delay"
  minValue="1"
  maxValue="2147483647" />
Для элемента decimal требуется элемент decimalTextBox с соответствующим идентификатором в ADML-файле
text
Нет
Представляет текстовый элемент в политике.
Синтаксис:
<text id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false"
  maxLength="<maxLength>"
  expandable="true|false"
  soft="true|false" />
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • атрибут maxLength — максисмально допустимое количество символов;
  • атрибут expandable — если true, значение подраздела реестра будет создано как расширяемый строковый тип (REG_EXPAND_SZ) вместо строкового типа (REG_SZ);
  • атрибут soft — следует ли перезаписывать существующий подраздел.
Пример:
<text id="OrgMateBackgroundSecondaryColor_setter"
  valueName="org.mate.background.secondary-color" />
Элемент text допускает строковые значения длиной до 1023 символов.
Для элемента text требуется соответствующий элемент textBox или comboBox с соответствующим идентификатором в ADML-файле
enum
Нет
Представляет элемент перечисления.
Синтаксис:
<enum id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false">
  <item> … </item>
</enum>
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • item — представляет набор отображаемых имен с одним значением или набор значений подразделов реестра. Синтаксис:
    <item displayName="$(string.<placeholder for text>)">
      <item> … </item>
    </item>
    
    где displayName — ссылка на отображаемую строку, расположенную в таблице строк ADML-файла.
Пример:
<enum id="OrgMateColorShadingType_setter" required="true" valueName="org.mate.background.color-shading-type">
  <item displayName="$(string.org-mate-background-color-shading-type-horizontal-gradient)">
    <value>
      <string>horizontal-gradient</string>
    </value>
  </item>
  <item displayName="$(string.org-mate-background-color-shading-type-vertical-gradient)">
    <value>
      <string>vertical-gradient</string>
    </value>
  </item>
  <item displayName="$(string.org-mate-background-color-shading-type-solid)">
    <value>
      <string>solid</string>
    </value>
  </item>
</enum>
Элемент enum обычно связан с элементом раскрывающегося списка в редакторе объектов групповой политики.
Для элемента enum требуется элемент dropdownList с соответствующим идентификатором в ADML-файле
list
Нет
Представляет элемент списка в политике.
Синтаксис:
<list id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valuePrefix="<Name>">
  additive="true|false"
  expandable="true|false"
  explicitValue="true|false" >
</ list>

где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valuePrefix — префикс, добавляемый к увеличенному целому числу, создает подраздел реестра, используемый при настройке значений политики (обязательный);
  • атрибут additive — если для этого параметра указано значение true, существующие подразделы не удаляются, а значения, установленные в списке, добавляются к существующим подразделам;
  • атрибут explicitValue — если для этого параметра указано значение true, пользователь должен указать значение подраздела реестра и имя подраздела реестра. В списке отображаются два столбца: один для имени и один для данных;
  • атрибут expandable — если true, значение подраздела реестра будет создано как расширяемый строковый тип (REG_EXPAND_SZ) вместо строкового типа (REG_SZ).
Пример:
<list id="InstallPackagesList"
key="Software\BaseALT\Policies\Packages\Install"
additive="true"/>
Для элемента list требуется элемент listBox с соответствующим идентификатором в ADML-файле

Примечание

Если элемент elements определен, он должен содержать хотя бы один дочерний элемент. Количество и тип элементов, определенных в ADMX-файле, должны соответствовать элементам presentation, определенным в соответствующем ADML-файле.

35.1.2. Структура ADML-файла

Структура ADML-файла
ADML-файл состоит из пяти разделов:
  • XML-объявление. XML-объявлением является заголовок файла, который не рассматривается в качестве фрагмента ADML-документа, но является его необходимой частью и помещается в начале файла для того, чтобы указать на то, что это XML-документ;
  • policyDefinitionResources. Cодержит объявление пространства имен по умолчанию для всех элементов ADML-файла. Данный элемент содержит все остальные элементы ADML-файла;
  • resources. Содержит элементы stringTable и presentationTable для указанного языка. Эти два элемента должны быть определены в ADML-файле в определенном порядке: элемент stringTable, за которым следует элемент presentationTable, как того требует схема ADMX;
  • stringTable. Используя этот элемент ADML-файла, можно указать заголовок параметра ГП, текст с описанием, текст со ссылкой на поддержку, названия категорий, а также подписи для параметров. Элемент stringTable нельзя объявлять более одного раза. Данный элемент включает в себя вложенные элементы string, позволяющие определить все указанные выше данные;
  • presentationTable. Представляет собой структуру дочерних элементов управления параметрами отдельных параметров ГП, включая всевозможные флажки, переключатели, подписи, подсказки и прочее. Дочерними элементами являются элементы presentation, которые представляют собой отображаемые сведения параметров для параметров политики.
Элемент policyDefinitionResources — это элемент документа для ADMX-файла, который определяет набор параметров политики реестра. Элемент policyDefinitions также объявляет пространство имен по умолчанию для всех элементов в ADMX-файле.
Синтаксис элемента policyDefinitionResources:
<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
revision="<MajorVerison.MinorVersion>" schemaVersion="<MajorVerison.MinorVersion>"
xmlns=" http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" >
  <displayName> … </displayName>
  <description> … </description>
  <annotation> … </annotation>
  <resources> … </resources>
</policyDefinitionResources>
Атрибуты элемента policyDefinitionResources описаны в таблице Атрибуты элемента policyDefinitionResources.

Таблица 35.8. Атрибуты элемента policyDefinitionResources

Атрибут
Обязательный
Описание
xmlns:xsd
Нет
Обозначение элементов и типов данных, используемых в схеме пространства имен
xmlns:xsi
Нет
Обозначение пространства имён экземпляра XML-схемы, предоставленной в самом пространстве
revision
Да
Версия ADMX-файла.
Синтаксис:
revision="<MajorVerison.MinorVersion>"
где MajorVersion и MinorVersion являются номерами версии, например, revision="1.0"
schemaVersion
Да
Указывает версию схемы, используемую средствами работы с ГП. Синтаксис этой команды идентичен синтаксису revision
xmlns
Нет
Пространство имен схемы ГП
Дочерние элементы policyDefinitionResources описаны в таблице Дочерние элементы policyDefinitionResources.

Таблица 35.9. Дочерние элементы policyDefinitionResources

Элемент
Обязательный
Описание
displayName
Да
Локализованное название политики, содержащееся в ADML-файле
description
Нет
Описание параметров политики, содержащееся в ADML-файле
annotation
Да
Локализованный комментарий
resources
Нет
Содержит элементы stringTable и presentationTable для указанного языка.
Синтаксис:
<resources>
  <stringTable> … </stringTable>
  <presentationTable> … </presentationTable>
</resources>
Дочерние элементы resources описаны в таблице Дочерние элементы resources.

Таблица 35.10. Дочерние элементы resources

Элемент
Обязательный
Описание
stringTable
Нет
Содержит отображаемые строки для следующих видов информации:
  • заголовок параметра групповой политики;
  • описание групповой политики;
  • определения поддерживаемых продуктов (SupportedOn);
  • названия категорий и описание категории;
  • подписи для параметров.
Синтаксис:
<stringTable>
  <string> … </string>
</stringTable>
Элемент stringTable нельзя объявлять более одного раза
presentationTable
Нет
Таблица элементов представления, представляющая структуру элементов управления параметрами для отдельных параметров групповой политики. Расположение элементов управления параметрами включает в себя: тип элемента ввода параметров (поле редактирования, ползунок, выпадающий список, флажки, переключатели); подписи и текст подсказки для ввода параметров; а также значения по умолчанию и диапазон возможных значений для каждого параметра.
Синтаксис:
<presentationTable>
  <presentation> … </presentation>
</presentationTable>
Если в ADML-файле нет элементов представления, элемент PresentationTable можно опустить. Если элемент PresentationTable включен в ADML-файл, необходимо определить хотя бы один элемент представления. Элемент PresentationTable определяется в ADML-файле не более одного раза
Синтаксис элемента presentation:
<presentation id="<logical or friendly name>">
  <text> … </text>
  <decimalTextBox> … </decimalTextBox>
  <textBox> … </textBox>
  <checkBox> … </checkBox>
  <comboBox> … </comboBox>
  <dropdownList> … </dropdownList>
  <listBox> … </listBox>
</presentation>
Атрибуты элемента presentation описаны в таблице Атрибуты элемента presentation.

Таблица 35.11. Атрибуты элемента presentation

Атрибут
Обязательный
Описание
id
Да
Указывает логическое имя при ссылке на информацию о представлении для определенного параметра политики
Дочерние элементы presentation описаны в таблице Дочерние элементы presentation.

Таблица 35.12. Дочерние элементы presentation

Элемент
Обязательный
Описание
text
Да
Локализованная строка. Используется для определения текста, расположенного выше и ниже поля ввода параметра.
Синтаксис:
<text>Локализованная строка</text>
decimalTextBox
Нет
Текстовое поле с элементом управления прокруткой или без него для ввода десятичных чисел в качестве параметра настройки политики. Должен быть связан с элементом decimal, определенным в элементе elements.
Синтаксис:
<decimalTextBox refId="Sample_NumericTextLabel">Метка:</decimalTextBox>
где:
  • атрибут refId — сопоставление с элементом.
Пример:
<decimalTextBox
  refId="OrgMateScreensaverLockDelay_setter"
  defaultValue="3">
  Скорость повтора
</decimalTextBox>
Пример элемента decimalTextBox
textBox
Нет
Текстовое поле. Этот элемент должен быть связан с элементом text, определенным в elements.
Синтаксис:
<textBox refId="<ID>">
  <label> … </label>
  <defaultValue> … </defaultValue>
</textBox>
где:
  • атрибут refId — сопоставление с элементом;
  • label — подпись для параметра текстового поля (обязательный);
  • defaultValue — строка, по умолчанию отображаемая в текстовом поле.
Пример:
<textBox refId="OrgMateFilename_setter">
  <label>Файл:</label>
</textBox>
Пример элемента textBox
checkBox
Нет
Элемент флажка. Должен быть связан с элементом boolean, определенным в элементе elements.
Синтаксис:
<checkBox refId="<ID>
  defaultChecked="true|false">
  Placeholder label:
</checkBox>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут defaultChecked — значение по умолчанию. Если не указано, атрибуту defaultChecked будет присвоено значение false.
Пример:
<checkBox refId="OrgXfceThunar_blocker">
  Блокировать
</checkBox>
Пример элемента checkBox
comboBox
Нет
Поле со списком со значениями по умолчанию или предлагаемыми записями. Должно быть связано с элементом text, определенным в элементе elements.
Синтаксис:
<comboBox refId="<ID>
  noSort="true|false">
  <label> … </label>
  <default> … </default>
  <suggestion> … </suggestion>
</comboBox>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут noSort — если true, отображать предлагаемые значения в определенном порядке элементов предложения; в противном случае отсортировать предлагаемые значения в алфавитном порядке. Если не указано, атрибуту noSort будет присвоено значение false;
  • label — подпись для параметра (обязательный);
  • defaul — строка, по умолчанию отображаемая в параметре;
  • suggestion — строка раскрывающегося списка.
Пример:
<comboBox refId="OrgMateFilename_setter">
  <label>Файл</label>
  <default>None</default>
  <suggestion>testA</suggestion>
  <suggestion>testB</suggestion>
  <suggestion>testC</suggestion>
</comboBox>
Пример элемента comboBox
dropdownList
Нет
Раскрывающийся список, с помощью которого пользователь может выбрать одну из отображаемых записей. Должен быть связан с элементом enum, определенным в элементе elements.
Синтаксис:
<dropdownList refId="<ID>"
  noSort="true|false">
  defaultItem="<NumericValue>">
  Placeholder label:
</dropdownList>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут noSort — если true, создать элемент spin; в противном случае создать текстовое поле для ввода чисел. Если не указано, атрибуту noSort будет присвоено значение true;
  • атрибут defaultItem — числовое значение, определяющее выбор из списка элементов по умолчанию. Список элементов нумеруется, начиная с 0.
Пример:
<dropdownList noSort="true" defaultItem="0" refId="OrgMateColorShadingType_setter">
  Тип градиента:
</dropdownList>
Пример элемента dropdownList
listBox
Нет
Представляет параметр списка с кнопками «Добавить» и «Удалить». Это единственный параметр, который можно использовать для управления несколькими значениями под одним ключом. Должен быть связан с элементом list, определенным в элементе elements.
Синтаксис:
<listBox refId="ID">Описание:</listBox>
где:
  • атрибут refId — сопоставление с элементом.
Пример:
<listBox refId="InstallPackagesList">
  Список пакетов для установки
</listBox>
Пример элемента listBox

Примечание

Дочерние элементы, указанные в элементе presentation, должны соответствовать элементам, определенным в элементе elements ADMX-файла.

35.1.3. Связывание информации из ADMX и ADML-файлов

В синтаксисе ADMX элементы, управляющие представлением или локализованным отображением параметра, определяются в ADML-файле. Информация же, определяющая тип данных и значение параметра, задается в ADMX-файле. Различные элементы из этих двух файлов используются для создания определений параметров для настроек политики.
Ниже рассмотрен пример использования двух параметров checkbox для настройки одной политики.
Фрагмент XML из файла example.admx с элементом policy, который содержит два элемента флажка (checkbox):
<policy name="Sample_Checkbox" class="User"
displayName="$(string.Sample_Checkbox)"
explainText="$(string.Sample_Checkbox_Help)"
presentation="$(presentation.Sample_Checkbox)"
key="Software\BaseALT\Policies\gsettings">
  <parentCategory ref="system:ALT_Background_Mate" />
  <supportedOn ref="system:SUPPORTED_AltP9" />
  <elements>
    <boolean id="Checkbox_1" valueName="ExampleCheckbox1">
      <trueValue>
        <decimal value="1" />
      </trueValue>
      <falseValue>
        <decimal value="0" />
      </falseValue>
    </boolean>

    <boolean id="Checkbox_2" valueName="ExampleCheckbox2">
      <trueValue>
        <decimal value="0" />
      </trueValue>
      <falseValue>
        <decimal value="1" />
      </falseValue>
    </boolean>
  </elements>
</policy>
Фрагмент XML из файла example.admx с элементом policy, который содержит два элемента флажка (checkbox):
<presentation id="Sample_Checkbox">
  <checkBox refId="Checkbox_1">Первый параметр</checkBox>
  <checkBox refId="Checkbox_2" defaultChecked="true">Второй параметр — отмечен по умолчанию</checkBox>
</presentation>

Примечание

Каждому ADMX-файлу должен соответсвовать ADML-файл с тем же именем. Редактор объектов групповой политики отобразит сообщение об ошибке, если не сможет найти соответствующий ADML-файл для каждого прочитанного ADMX-файла.
Есть две области координации между файлами ADMX и ADML:
  1. Ссылка верхнего уровня между установкой политики и отображением её параметров. Политика, определяемая с помощью элемента policy в ADMX-файле, ссылается на определенный элемент presentation в ADML-файле через атрибут presentation элемента policy. В данном примере атрибут presentation определен как presentation="$(presentation.Sample_Checkbox)". Текст presentation.Sample_Checkbox сообщает редактору объектов групповой политики ссылаться на элемент presentationTable ADML-файла, используя атрибут id, для которого установлено значение Sample_Checkbox.
    Количество типов данных, а также тип данных (boolean, decimal, text, enum, item и list), определенные в элементе elements в ADMX-файле, должны соответствовать количеству и типу параметров, определенных в ADML-файле в элементе presentation (checkBox , textBox, decimalTextBox, ComboBox, dropdownList и listBox).
  2. Ссылка между представлением типа данных в элементе elements и определением параметра в элементе presentation.
    В примере элемент elements содержит два элемента boolean:
    <elements>
      <boolean id="Checkbox_1" valueName="ExampleCheckbox1">
        …
      </boolean>
    
      <boolean id="Checkbox_2" valueName="ExampleCheckbox2">
        …
      </boolean>
    </elements>
    
    Элемент presentation содержит два элемента checkBox:
    <presentation id="Sample_Checkbox">
      <checkBox refId="Checkbox_1">…</checkBox>
      <checkBox refId="Checkbox_2" defaultChecked="true">…</checkBox>
    </presentation>
    
    Атрибут id элемента boolean используется для соответствия связанному элементу checkBox, на который ссылается атрибут refId.
В следующей таблице показано, как сопоставляется тип данных в ADMX-файле, с определением параметра в ADML-файле.

Таблица 35.13. Сопоставление

Тип данных в ADMX-файле
Определение параметра в ADML-файле
boolean
checkBox
text
textBox
decimal
decimalTextBox
text
comboBox
enum или item
dropdownList
list
listBox

35.1.4. Рекомендации для создания ADMX-файлов

При создании ADMX-файлов следует придерживаться следующих рекомендаций:
  1. Чтобы избежать отображения повторяющихся узлов в редакторе объектов групповой политики, не следует использовать название категории, которое было ранее определено в родительской категории. Например, создание двух ADMX-файлов с одинаковой категорией приведет к тому, что редактор объектов групповой политики создаст два узла с одинаковым именем. Вместо этого следует создать собственный базовый файл (см.ниже), на который будут ссылаться все разрабатываемые ADMX-файлы.
  2. Чтобы избежать циклических ссылок, один ADMX-файл не должен ссылаться на элементы категории другого ADMX-файла. Вместо этого базовую категорию компонента следует поместить в отдельный базовый файл.
  3. Каждое пространство имен политики для ADMX-файла должно быть уникальным. Пространство имен политики определяется в целевом элементе ADMX-файла.
Создание пользовательского базового файла:
  1. Создать ADMX-файл MyCompany.admx с определением категории MyCompany:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="mycompany" namespace="MyCompany.Policies.MyCompany" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <categories>
        <category name="MyCompany"
          displayName="$(string.MyCompany)"
          explainText="$(string.MyCompany_Help)" />
      </categories>
    </policyDefinitions>
    
  2. Создать ADML-файл ru-RU/MyCompany.adml, который будет содержать локализованное название категории:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <displayName>Определение базовой категории</displayName>
      <description>Этот файл содержит определение базовой категории организации.
      </description>
      <resources>
        <stringTable>
          <string id="MyCompany">Моя организация</string>
          <string id="MyCompany_Help">Содержит параметры конфигурации,
          специфичные для организации.</string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
Чтобы обратиться к базовому файлу MyCompany, следует включить атрибут using в элемент policyNamespaces. Атрибут пространства имен должен соответствовать пространству имен, определенному в пользовательском базовом файле (в примере MyCompany.Policies.MyCompany). Атрибутом префикса может быть любое имя, уникальное для ADMX-файла. Рекомендуется по возможности использовать строку атрибута префикса из пользовательского базового файла, чтобы избежать путаницы. Например, следующий фрагмент файла example.admx определяет пространство имен и ссылается на базовый файл MyCompany в элементе policyNamespaces:
<policyNamespaces>
  <target prefix="example" namespace="MyCompany.Policies.Example" />
  <using prefix="mycompany" namespace="MyCompany.Policies.MyCompany" />
</policyNamespaces>

35.2. Разработка новой политики

Программа gpupdate состоит из ряда механизмов, позволяющих обращаться к настройкам ОС «Альт». Механизмы обращаются к интерфейсам системы или отдельных приложений через API. Через систему механизмов gpupdate пользователю доступно создание собственных ГП так, чтобы не менять содержимое пакетов admx и gpupdate. В этом случае при очередном обновлении пакетов в системе не нарушится работа ГП — базовых и собственных. Появляется возможность создать свой набор политик, необходимый для внутреннего использования.
Механизмы применения параметров, которые позволяют создавать собственные политики:
  • Systemd. Управление запуском служб Systemd;
  • Polkit. Механизм Polkit отвечает за безопасность и управляет разрешениями при обращении к системным процессам;
  • Gsettings. Управление настройками системной базы реестра dconf;
  • Control. Механизм Control управляет состоянием конфигурационных файлов;
  • Скрипты загрузки системы и авторизации пользователя (logon/logoff/startup/shutdown).

Примечание

Скрипты загрузки системы и авторизации пользователя (Logon/logoff/startup/shutdown) не связаны с подготовкой ADMX-файлов и формируются через раздел настроек системы (работа со скриптами подробно описана на странице: Управление logon-скриптами).
Шаги создания новой политики:
  1. Подобрать механизм реализации политики — systemd, control, gsettings, polkit;
  2. Загрузить шаблоны ADMX-файлов для выбранного механизма;
  3. Описать в ADMX-файлах (admx + adml) структуру новой политики и её описание на русском или английском языке;
  4. Проверить корректность кода в ADMX-файлах, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows;
  5. Загрузить собственный набор административных шаблонов групповых политик (admx) на контроллер домена в каталог Sysvol.

35.2.1. Пример для механизма Systemd

Подсистема инициализации и управления службами Systemd в ГП «Альт» может запускать или останавливать службы. Systemd позволяет задавать расписание запуска служб, выполнять монтирование и многое другое. Через ГП «Альт» возможно управление самостоятельно созданной пользовательской службой.

Примечание

Просмотреть список загруженных служб можно, выполнив команду:
$ systemctl list-units --type service --all
Получить список всех установленных файлов модулей можно, выполнив команду:
$ systemctl list-unit-files
Пример создания новой политики для веб-сервера Apache (служба httpd2):
  1. Создать файл MySystemd.admx:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0"
    schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="systemdunits" namespace="BaseALT.Policies.MySystemdUnits" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
    <policy class="Machine" displayName="$(string.httpd2_service)"
    explainText="$(string.httpd2_service_help)" key="Software\BaseALT\Policies\SystemdUnits"
    valueName="httpd2.service" name="httpd2.service">
          <parentCategory ref="system:ALT_Systemd"/>
          <supportedOn ref="system:SUPPORTED_AltP9"/>
          <enabledValue>
            <decimal value="1"/>
          </enabledValue>
          <disabledValue>
            <decimal value="0"/>
          </disabledValue>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MySystemd.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Определения служб</displayName>
      <description>Этот файл содержит дополнительные определения systemd-служб</description>
      <resources>
        <stringTable>
          <string id="httpd2_service">Веб-сервер Apache</string>
          <string id="httpd2_service_help">Эта политика определяет, включен ли systemd юнит веб-сервера Apache.
          </string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MySystemd.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Services definitions</displayName>
      <description>This file contains the systemd services definitions</description>
      <resources>
        <stringTable>
          <string id="httpd2_service"e>Apache Web Server</string>
          <string id="httpd2_service_help"e>This policy determines whether the systemd unit of Apache Web Server is enabled.
          </string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MySystemd.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MySystemd.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MySystemd.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MySystemd.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MySystemd.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MySystemd.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Systemd в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).

35.2.2. Пример для механизма Control

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

Примечание

Просмотреть список опций Control можно, выполнив команду:
# control

Примечание

Ниже рассмотрен пример создания admx для Control osec-send (пакет osec-controls):
# control osec-send help
mail: Mail root
journal: Write to systemd journal
Пример создания новой политики для Control osec-send:
  1. Создать файл MyControl.admx:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="control" namespace="BaseALT.Policies.MyControl" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
        <policy class="Machine" displayName="$(string.osec-send)"
        explainText="$(string.osec-send_help)" key="Software\BaseALT\Policies\Control"
        name="osec-send" presentation="$(presentation.osec-send)">
          <parentCategory ref="system:ALT_Services"/>
          <supportedOn ref="system:SUPPORTED_AltP9"/>
          <elements>
            <enum id="osec-send_setter" required="true" valueName="osec-send">
              <item displayName="$(string.osec-send_mail)">
                <value>
                  <string>mail</string>
                </value>
              </item>
              <item displayName="$(string.osec-send_journal)">
                <value>
                  <string>journal</string>
                </value>
              </item>
            </enum>
          </elements>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MyControl.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Определения политик управления системными компонентами</displayName>
      <description>Этот файл содержит определения политик управления системными компонентами.</description>
      <resources>
        <stringTable>
          <string id="osec-send">Отчет подсистемы osec</string>
          <string id="osec-send_help">Политика позволяет определить куда отправлять ежедневный отчёт:
    
    Почта — отправлять отчёт на почтовый ящик пользователя root
    
    Журнал — записывать отчёт в системный журнал
          </string>
          <string id="osec-send_mail">Почта</string>
          <string id="osec-send_journal">Журнал</string>
        </stringTable>
        <presentationTable>
          <presentation id="osec-send">
            <dropdownList noSort="true" defaultItem="0" refId="osec-send_setter">Куда отправлять отчёт:
            </dropdownList>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MyControl.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Control installed facilities definitions</displayName>
      <description>This file contains the control installed facilities definitions.</description>
      <resources>
        <stringTable>
          <string id="osec-send">Osec Subsystem Report</string>
          <string id="osec-send_help">The policy allows you to determine where to send the daily report:
    
    Mail — Mail root
    
    Journal — Write to systemd journal
          </string>
          <string id="osec-send_mail">Mail</string>
          <string id="osec-send_journal">Journal</string>
        </stringTable>
        <presentationTable>
          <presentation id="osec-send">
            <dropdownList noSort="true" defaultItem="0" refId="osec-send_setter">Where to send the report:
            </dropdownList>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MyControl.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MyControl.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MyControl.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MyControl.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MyControl.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MyControl.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Control в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).

35.2.3. Пример для механизма Gsetting

Конфигурация DE Mate хранится в базе dconf, ключами которой управляет консольное приложение GSettings. Механизм gpupdate управляет ключами Gsettings и через них редактирует ключи dconf. На текущий день через ГП можно настраивать целый ряд параметров графической среды Mate — от фона рабочего стола до хранителя экрана. Можно также добавить новые политики для незадействованных ключей Gsettings.

Примечание

Посмотреть все доступные схемы Gsettings можно, выполнив команду:
$ gsettings list-schemas
Посмотреть все ключи Gsettings можно, выполнив команду:
$ gsettings list-recursively

Примечание

Ниже рассмотрен пример создания admx для ключа idle-delay схемы org.mate.session:
$ gsettings list-keys org.mate.session
gnome-compat-startup
show-hidden-apps
idle-delay
required-components-list
default-session
auto-save-session
logout-prompt
logout-timeout
session-start
$ gsettings get org.mate.session idle-delay
5
Ключ idle-delay позволяет управлять настройкой «Считать компьютер простаивающим через».
Пример создания новой политики для ключа idle-delay схемы org.mate.session:
  1. Создать файл MyGsettings.admx:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="gsettings" namespace="BaseALT.Policies.MyGsettings" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
        <policy name="OrgMateSessionIdleDelayUser" class="User"
         displayName="$(string.org-mate-session-idle-delay)"
         explainText="$(string.org-mate-session-idle-delay_help)"
         key="Software\BaseALT\Policies\gsettings"
         presentation="$(presentation.OrgMateSessionIdleDelayUser-pr)">
         <parentCategory ref="system:ALT_Screensaver_Mate" />
           <supportedOn ref="system:SUPPORTED_AltP9" />
             <elements>
               <decimal id="OrgMateSessionIdleDelay_setter" valueName="org.mate.session.idle-delay"
               minValue="1" maxValue="2147483647" />
             </elements>
        </policy>
        <policy name="OrgMateSessionIdleDelayMachine" class="Machine"
         displayName="$(string.org-mate-session-idle-delay)"
         explainText="$(string.org-mate-session-idle-delay_help)"
         key="Software\BaseALT\Policies\gsettings"
         presentation="$(presentation.OrgMateSessionIdleDelayMachine-pr)">
         <parentCategory ref="system:ALT_Screensaver_Mate" />
         <supportedOn ref="system:SUPPORTED_AltP9" />
           <elements>
             <decimal id="OrgMateSessionIdleDelay_setter" valueName="org.mate.session.idle-delay"
             minValue="1" maxValue="2147483647" />
             <boolean id="OrgMateSessionIdleDelay_setter_blocker" key="Software\BaseALT\Policies\GSettingsLocks"
             valueName="org.mate.session.idle-delay">
               <trueValue>
                 <decimal value="1" />
               </trueValue>
               <falseValue>
                 <decimal value="0" />
               </falseValue>
             </boolean>
           </elements>
         </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MyGsettings.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayNamee>Определения списка настроек рабочего окружения MATE</displayName>
        <description>Этот файл содержит определения настроек рабочего окружения MATE.</description>
        <resources>
          <stringTable>
            <string id="org-mate-session-idle-delay">Считать компьютер простаивающим через</string>
            <string id="org-mate-session-idle-delay_help">Устанавливает количество минут,
            по истечении которых компьютер будет считаться простаивающим.
    
    Опция «Блокировать» — (доступна только для машинной политики) запрещает изменение
    данной настройки пользователем. Блокировка политики делает её приоритетнее аналогичной политики для пользователя.
            </string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgMateSessionIdleDelayUser-pr">
            <text>Количество минут, по истечении которого компьютер будет считаться простаивающим</text>
            <decimalTextBox refId="OrgMateSessionIdleDelay_setter" defaultValue="1">Время в минутах</decimalTextBox>
          </presentation>
          <presentation id="OrgMateSessionIdleDelayMachine-pr">
            <text>Количество минут, по истечении которого компьютер будет считаться простаивающим</text>
            <decimalTextBox refId="OrgMateSessionIdleDelay_setter" defaultValue="1">Время в минутах:</decimalTextBox>
            <checkBox refId="OrgMateSessionIdleDelay_setter_blocker">Блокировать</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MyGsettings.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>MATE desktop configurations definitions</displayName>
        <description>This file contains the desktop MATE configurations definitions.</description>
        <resources>
          <stringTable>
            <string id="org-mate-session-idle-delay">Consider the computer idle after</string>
            <string id="org-mate-session-idle-delay_help">Sets the number of minutes after which the computer will be considered idle.
    
    The "Block" option — (available only for machine policy) prevents the user
    from changing this setting. Blocking a policy makes it a priority over a similar policy for the user.
            </string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgMateSessionIdleDelayUser-pr">
            <text>Number of minutes after which the computer will be considered idle</text>
            <decimalTextBox refId="OrgMateSessionIdleDelay_setter" defaultValue="1">Time in minutes</decimalTextBox>
          </presentation>
          <presentation id="OrgMateSessionIdleDelayMachine-pr">
            <text>Number of minutes after which the computer will be considered idle</text>
            <decimalTextBox refId="OrgMateSessionIdleDelay_setter" defaultValue="1">Time in minutes:</decimalTextBox>
            <checkBox refId="OrgMateSessionIdleDelay_setter_blocker">Блокировать</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MyGsettings.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MyGsettings.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MyGsettings.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MyGsettings.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MyGsettings.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MyGsettings.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Gsettings в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).

35.2.4. Пример для механизма Polkit

Библиотека Polkit выполняет в ОС роль ограничителя действий приложений, преимущественно работающих на шине D-Bus. Polkit позволяет установить степень ограничений для непривилегированного процесса при обращении к привилегированному. Например, ограничить доступ пользователя к настройкам сети или монтированию блочного устройства (USB-накопителя) только для тех пользователей, которые знают пароль суперпользователя. Действия приложений, для которых заложены Polkit-ограничения, называются «actions». На основе указанных действий «actions» возможно формирование правил «polkit-rules», согласно которым в ОС и определится степень ограничений для программ и пользователей. Механизм gpupdate умеет автоматически формировать polkit-правила. Благодаря этому возможно добавление новых групповых политик для polkit-правил.

Примечание

Все политики находятся в каталоге /usr/share/polkit-1/actions/ в формате *.policy Каждая политика представляет собой xml-файл, в котором описываются запросы к polkit.
Вывести список всех действий, определённых в /usr/share/polkit-1/actions/ можно, выполнив команду
$ pkaction
Пример создания admx для действия org.xfce.thunar (запуск thunar от суперпользователя):
  1. Создать файл MyPolkit.admx:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="xfce" namespace="BaseALT.Policies.MyPolkit" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
        <policy class="Machine" displayName="$(string.org-xfce-thunar)"
            explainText="$(string.org-xfce-thunar_help)"
            key="Software\BaseALT\Policies\Polkit"
            name="org.xfce.thunar"
            valuename="org.xfce.thunar"
            presentation="$(presentation.OrgXfceThunar-pr)">
          <parentCategory ref="system:ALT_Polkit" />
          <supportedOn ref="system:SUPPORTED_AltP10" />
          <elements>
            <enum id="OrgXfceThunar_setter" valueName="org.xfce.thunar" required="true">
              <item displayName="$(string.org-xfce-thunar-No)">
                <value>
                  <string>No</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Yes)">
                <value>
                  <string>Yes</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-self)">
                <value>
                  <string>Auth_self</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-admin)">
                <value>
                  <string>Auth_admin</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-self-keep)">
                <value>
                  <string>Auth_self_keep</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-admin-keep)">
                <value>
                  <string>Auth_admin_keep</string>
                </value>
              </item>
            </enum>
            <boolean id="OrgXfceThunar_blocker" key="Software\BaseALT\Policies\PolkitLocks" valueName="org.xfce.thunar">
              <trueValue>
                <decimal value="1" />
              </trueValue>
              <falseValue>
                <decimal value="0" />
              </falseValue>
            </boolean>
          </elements>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MyPolkit.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Определения политик Xfce</displayName>
      <description>Этот файл содержит определения политик для управления Xfce.</description>
      <resources>
        <stringTable>
          <string id="org-xfce-thunar">Ограничение возможности запуска Thunar от суперпользователя</string>
          <string id="org-xfce-thunar_help">Политика управляет ограничением возможности запуска Thunar от суперпользователя
    
    Отключено/Не сконфигурировано — ограничения определяются системными параметрами.
    
    Включено — ограничение с установленными правами;
    
    Возможные значения:
    
    «No» — установить ограничение с запретом действия (пользователю не разрешено выполнять действие);
    
    «Yes» — снять ограничение (пользователь может выполнять действие без какой-либо аутентификации);
    
    «Auth_self» — пользователь должен ввести свой пароль для аутентификации.
    Обратите внимание, этого уровня ограничения недостаточно для большинства
    применений в многопользовательских системах, обычно рекомендуется «Auth_admin»;
    
    «Auth_admin» — пользователь должен ввести пароль администратора при каждом запросе.
    Требуется аутентификация пользователя с правами администратора;
    
    «Auth_self_keep» — подобно «Auth_self», но авторизация сохраняется в течение
    короткого периода времени (например, пять минут). Обратите внимание, этого уровня
    ограничения недостаточно для большинства применений в многопользовательских системах, обычно рекомендуется «Auth_admin_keep»;
    
    «Auth_admin_keep» — аналогично «Auth_admin», но авторизация сохраняется в течение
    короткого периода времени (например, пять минут);
    
    Примечание: обладание административными правами в контексте PolicyKit определяются его правилами.
    По умолчанию в Альт запрашивается пароль пользователя, находящегося в группе «wheel».
    
    Опция «Блокировать» — запрещает изменение данной настройки пользователем.
    Блокировка политики делает её приоритетнее аналогичной политики для пользователя.
          </string>
          <string id="org-xfce-thunar-No">No</string>
          <string id="org-xfce-thunar-Yes">Yes</string>
          <string id="org-xfce-thunar-Auth-self">Auth_self</string>
          <string id="org-xfce-thunar-Auth-admin">Auth_admin</string>
          <string id="org-xfce-thunar-Auth-self-keep">Auth_self_keep</string>
          <string id="org-xfce-thunar-Auth-admin-keep">Auth_admin_keep</string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgXfceThunar-pr">
            <dropdownList noSort="true" defaultItem="1" refId="OrgXfceThunar_setter">Варианты ограничений
            на запуск Thunar от суперпользователя:</dropdownList>
            <checkBox refId="OrgXfceThunar_blocker">Блокировать настройку ограничений</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MyPolkit.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>ALT Xfce policies definitions</displayName>
      <description>This file contains the Xfce service policies definitions used by ALT operating system.</description>
      <resources>
        <stringTable>
          <string id="org-xfce-thunar">Run Thunar as root</string>
          <string id="org-xfce-thunar_help">This policy grants or restricts permissions to run Thunar as root
    
    Disabled/Not configured — Permissions are determined by system settings. Default is «Auth_admin»
    
    Enabled — permission to mount with set rights;
    
    Possible values:
    
    "No" — block permissions (the user is not allowed to perform the action);
    
    "Yes" — grant permissions (the user can perform the action without any authentication);
    
    "Auth_self" — The user must enter their password to authenticate.
    Note that this permission is not sufficient for most uses on multi-user systems,
    the "Auth_admin" permission is generally recommended;
    
    "Auth_admin" — The user must enter an administrator password on each request.
    Requires user authentication with administrator rights;
    
    "Auth_self_keep" — Similar to "Auth_self", but the authorization is kept for
    a short period of time (for example, five minutes). Note that this permission
    is not sufficient for most uses on multi-user systems, the "Auth_admin_keep" permission is generally recommended;
    
    "Auth_admin_keep" — similar to "Auth_admin", but the authorization
    is kept for a short period of time (for example, five minutes);
    
    Note: the possession of administrative rights in the context of PolicyKit
    is determined by its rules. By default, Alt asks for the password of the user in the "wheel" group.
    
    The "Block" option prevents the user from changing this setting.
    Blocking a policy makes it a priority over a similar policy for the user.
          </string>
          <string id="org-xfce-thunar-No">No</string>
          <string id="org-xfce-thunar-Yes">Yes</string>
          <string id="org-xfce-thunar-Auth-self">Auth_self</string>
          <string id="org-xfce-thunar-Auth-admin">Auth_admin</string>
          <string id="org-xfce-thunar-Auth-self-keep">Auth_self_keep</string>
          <string id="org-xfce-thunar-Auth-admin-keep">Auth_admin_keep</string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgXfceThunar-pr">
            <dropdownList noSort="true" defaultItem="1" refId="OrgXfceThunar_setter">Restriction options:</dropdownList>
            <checkBox refId="OrgXfceThunar_blocker">Block</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MyPolkit.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MyPolkit.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MyPolkit.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MyPolkit.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MyPolkit.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MyPolkit.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Polkit в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).

Глава 36. Решение проблем

Прежде чем разбираться, почему групповые политики (ГП) не применяются ожидаемым образом, необходимо убедиться, что инфраструктура Альт Домен работает штатно.
Работа ГП в домене зависит от корректной работы контроллеров домена и успешной репликации между ними.
Рекомендуется:
  • поддерживать простую и понятную структуру групповых политик;
  • избегать создания лишних политик без необходимости;
  • использовать единую схему именования политик. Имя политики должно однозначно отражать её назначение.
Если политика верная, но все равно не применяется через gpupdate, стоит проверить ACL на sysvol
[root@dc /]# samba-tool ntacl sysvolcheck
В случае ошибок, восстановить права:
[root@dc /]#  samba-tool ntacl sysvolreset

36.1. Область действия и статус групповой политики

Каждая групповая политика (GPO) состоит из двух независимых разделов:
  • Компьютер — параметры, применяемые к компьютеру;
  • Пользователь — параметры применяемые к пользователям.

Важно

  • Если политика настраивает компьютеры, она должна быть привязана к OU с компьютерами.
  • Если политика настраивает пользователей, её следует привязать к OU с пользователями.
  • Следует убедиться, что целевой объект (компьютер или пользователь) действительно находится в нужной OU.

Примечание

Чтобы применить пользовательские настройки к компьютерам, нужно включить политику замыкания (см. Замыкание групповой политики).
Если ГП настраивает только параметры пользователя или только параметры компьютера, неиспользуемый раздел можно отключить. Это сокращает трафик при обновлении политик и уменьшает время обработки на клиенте.
Если определенный параметр политики не применяются на клиенте, необходимо проверить область действия (на какую OU привязана политика) и статус политики (включена ли она).
Статус групповой политики, назначенной на подразделение, можно проверить в ADMC. Необходимо открыть свойства нужного подразделения и перейти на вкладку Групповая политика:
ADMC. Статус групповых политик
Здесь отображаются все GPO, привязанные к OU, и их текущий статус (включены/отключены).
Изменить статус групповой политики можно в ADMC в свойствах политики на вкладке Атрибуты:
ADMC. Атрибут flags в свойствах ГП
Состояние GPO указывается в значении flags:
  • 0 — политика включена: применяются настройки и для компьютера, и для пользователя;
  • 1 — отключена конфигурация пользователя;
  • 2 — отключена конфигурация компьютера;
  • 3 — политика полностью отключена: не применяется ни к компьютерам, ни к пользователям.

36.2. Наследование групповых политик

По умолчанию GPO, привязанные к вышестоящим контейнерам (домен, родительская OU), наследуются всеми дочерними объектами.
Увидеть, какие политики применяются к подразделению и откуда они наследуются (домен, родительская OU и т.д.) можно в ADMC. Для этого в разделе Объекты групповой политики необходимо выбрать нужное подразделение и перейти на вкладку Наследуемые политики:
ADMC. Политики подразделения без блокирования наследования
Наследуемые политики также можно увидеть в окне свойств подразделения на вкладке Групповая политика:
ADMC. Наследуемые политики в свойствах подразделения
Каждый объект групповой политики можно настроить на блокирование наследования политик более высокого уровня (см. Блокирование наследования). Таким образом, политики домена или родительской OU не будут применяться к объектам в этом подразделении.

Примечание

Блокирование наследования не влияет на политики, привязанные непосредственно к этому OU.
Администратор домена может запретить переопределение политик нижестоящими подразделениями с помощью опции Принудительно:
  • политика с включённой опцией Принудительно будет применяться даже при блокировании наследования;
  • такие политики имеют наивысший приоритет в своей ветви иерархии.
Например, если Default Domain Policy имеет флаг Принудительно, она будет применяться ко всем OU, даже если они заблокировали наследование.
Политики подразделения с блокированием наследования:
ADMC. Политики подразделения с блокированием наследования

36.3. Порядок применения групповых политик

Групповые политики обрабатываются в следующем порядке:
  • локальные политики (настройки самого компьютера);
  • политики домена (в рамках возможностей и ограничений поддержки леса доменов в Samba, как набора клиентских компонентов);
  • политики OU, начиная с самой верхней в иерархии и далее вниз по ветви, включая родительские и конечные OU.
Последняя обработанная политика имеет приоритет. Т.е. если параметр включен на уровне политики домена, но на целевом OU данный параметр отключается другой политикой — это означает, что нужный параметр в результате будет отключен на клиенте (выиграет ближайшая политика к объекту в иерархии домена).
Если к одной OU привязано несколько GPO, они обрабатываются в том порядке, в котором были назначены. Политики нумеруются от 1 (наивысший приоритет) до N. Политики обрабатываются в обратном порядке: сначала политика с номером N, последней — с номером 1:
ADMC. Порядок обработки групповых политик
При необходимости этот порядок можно изменить:
  • перетаскиванием мышью;
  • через контекстное меню: Переместить вверх или Переместить вниз:
    ADMC. Изменение порядка обработки групповых политик
Для любого GPO, привязанного к OU, можно временно отключить применение. Для этого нужно выбрать опцию Удалить связь в меню политики.

Примечание

Отключение связи не удаляет сам GPO, а только отключает привязку к OU (политика перестает применяться к клиентам). Связь можно восстановить в любой момент через Добавить связь.

36.4. Замыкание групповой политики

По умолчанию ГП применяются к пользователю или компьютеру в зависимости от расположения их объектов в домене:
  • компьютер получает политики, привязанные к своей OU;
  • пользователь — политики, привязанные к своей OU.
Однако в некоторых сценариях может потребоваться применять пользовательские политики в зависимости от компьютера, на котором выполняется вход (например, для серверов, рабочих станций, терминалов).
Стандартное поведение:
  • машинные политики применяются по порядку при загрузке компьютера;
  • пользовательские политики применяются при входе пользователя, независимо от того, на каком компьютере он авторизуется.
Если пользовательская учетная запись находится в OU, на которое распространяется действие пользовательской политики, то применяться эти настройки будут при входе пользователя в систему независимо от того, в какое OU входит компьютер. Такое поведение может быть нежелательным, например, вполне разумно иметь одни пользовательские настройки для сервера, другие — для локального компьютера.
Политика замыкания позволяет применять пользовательские политики в зависимости от того, на каком компьютере пользователь входит в систему.
Политика замыкания поддерживает два режима:
  • Слияние (Merge) — при входе пользователя в систему к компьютеру будут применяться политики, основанные на расположении пользователя, а затем политики, привязанные к компьютеру. При возникновении конфликтов между пользовательскими и машинными политиками, машинные политики будут иметь более высокий приоритет;
  • Замена (Replace) — к пользователю будут применяться только политики, назначенные на OU, в котором содержится компьютер, на который пользователь выполнил вход.
В качестве примера рассмотрим домен с двумя организационными подразделениями — OU1 и OU2. В первом находятся объекты учётных записей пользователей и их локальные компьютеры, во втором — объекты серверов.
Домен с двумя организационными подразделениями
Если пользователь осуществляет вход в систему на локальном компьютере, то он оказывается под действием политики GP1 локального компьютера (которая была применена при его включении) и политики GP2 пользователя (примененной при входе в систему). Если пользователь осуществляет вход на сервер, то будут действовать политики сервера GP3 и политики пользователя GP2.
Если же включить политику замыкания (см. раздел Политика замыкания), то при входе на сервер будут действовать политики сервера GP3 и политики пользователя GP2+GP4 (в режиме Слияние) или только GP4 (в режиме Замена). При возникновении любых конфликтов настроек между политиками OU пользователя и OU сервера в режиме Слияние политики в OU сервера будут иметь более высокий приоритет.

36.5. Диагностика применения GPO на стороне клиента

Для диагностики применения групповых политик на стороне клиента используются утилиты gpoa, gpresult (на машинах с ОС «Альт»), gpresult (на машинах Windows).
Для диагностики механизмов применения групповых политик на клиенте можно выполнить команды:
  • получить подробный отчёт о применённых GPO для текущего пользователя и компьютера:
    $ gpresult -v
    
  • получить и применить групповые политики для текущей машины:
    # gpoa --loglevel 0
    
  • получить и применить групповые политики для указанного пользователя:
    # gpoa --loglevel 0 <имя_пользователя>
    

36.5.1. Коды ошибок

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

Таблица 36.1. Коды ошибок

Код
Описание
Решение
E00001
Недостаточно прав для запуска программы gpupdate
Необходимо повысить уровень привилегий. Может помочь запуск программы от имени администратора
E00002
Программа gpupdate не будет запущена из-за предыдущих ошибок
E00003
Ошибка работы бэкэнда, которая привела к досрочному прекращению обработки групповых политик. Этот код характеризует серьёзные ошибки, которые обрабатываются на самом высоком уровне
Возможно, это ошибка в коде и необходимо создать отчет об ошибке, чтобы разработчики узнали о ней
E00004
Ошибка во время работы фронтенда
Высокоуровневая ошибка при инициализации фронтенда или во время работы appliers. С большой вероятностью может оказаться ошибкой в коде
E00005
Не получилось запустить appliers политик для обновления групповых политик компьютера
Необходимо проверить, что машина всё ещё в домене, демон oddjobd доступен через D-Bus и у пользователя достаточно прав для запуска ПО
E00006
Показать список доступных бэкэндов
Необходимо проверить, что машина всё ещё в домене, демон oddjobd доступен через D-Bus и у пользователя достаточно прав для запуска ПО
E00007
Невозможно инициализировать бэкэнд Samba в силу неполадок компонентов, связанных с Samba
Необходимо проверить инсталляцию Samba на машине, убедиться, что машина введена в домен и домен доступен
E00008
Невозможно инициализировать бэкэнд no-domain для выполнения процедуры бутстрапа групповых политик
Возможно, было произведено вмешательство в локальную политику или произошёл misconfiguration. Необходимо проверить целостность пакета local-policy и настройки домена в Alterator
E00009
Произошла ошибка при попытке запуска adp
Необходимо обратиться к руководству по устранению неполадок проекта ADP
E00010
Произошёл сбой при попытке получить имя домена Active Directory
Необходимо проверить работу доменной службы имён (DNS), а также доступность доменного LDAP. Для доступа к LDAP необходим работоспособный Kerberos, так что стоит проверить и его конфигурацию
E00011
Во время работы applier с пониженным уровнем привилегий произошла неполадка
Возможно, что в используемой групповой политике заданы параметры, для установки которых требуются права администратора. Это необходимо проверить и исправить объект групповой политики соответственно
E00012
Высокоуровневая ошибка инициализации бэкэнда
Необходимо проверить наличие условий для запуска бэкэнда. В случае с Samba — удостовериться, что машина введена в домен
E00013
У пользователя, запустившего программу, недостаточно прав для обновления настроек машины
Необходимо запустить программу с правами администратора
E00014
Не прошла проверка наличия билета Kerberos. Билет Kerberos нужен для доступа к сервисам домена
Необходимо проверить конфигурацию Kerberos в файле /etc/krb5.conf. Попытаться получить билет Kerberos вручную
E00015
Запрос на получение имени домена Active Directory через LDAP не прошёл
Необходимо проверить возможность получения Kerberos ticket для машины. Проверить работу DNS и возможность обратиться к доменному LDAP
E00016
Утилита wbinfo не отдаёт SID для пользователя, для которого выполняется обновление групповых политик
Необходимо проверить целостность программы wbinfo. Проверить, что машина введена в домен
E00017
Невозможно получить список групповых политик для репликации на используемое имя пользователя
Следует удостовериться, что пользователь для которого происходит попытка получить список групповых политик, существует в домене. Необходимо также удостовериться, что проблема не вызвана misconfiguration домена
E00018
Не получилось прочитать содержимое настройки XDG_DESKTOP_DIR
Необходимо удостовериться, что XDG в системе сконфигурирован корректно и пользователь, для которого вычитывается настройка, существует
E00019
Произошла ошибка во время работы applier для пользователя
Необходимо удостовериться, что это не misconfiguration в используемой GPO. Возможно это ошибка. В таком случае необходимо создать отчет об ошибке, чтобы разработчики узнали о ней
E00020
Произошла ошибка во время работы applier для пользователя с пониженными привилегиями
Необходимо удостовериться, что это не misconfiguration в используемой GPO. Возможно это ошибка. В таком случае необходимо создать отчет об ошибке, чтобы разработчики узнали о ней
E00021
Не был получен ответ от D-Bus при попытке запустить gpoa для текущего пользователя
Следует удостовериться, что D-Bus работает корректно и демон oddjobd запущен. Необходимо удостовериться, что у текущего пользователя достаточно прав для обращения к D-Bus
E00022
Не был получен ответ от D-Bus при попытке запустить gpoa для машины
Необходимо удостовериться, что D-Bus работает корректно и демон oddjobd запущен
E00023
Не был получен ответ от D-Bus при попытке запустить gpoa для пользователя
Следует удостовериться, что D-Bus работает корректно и демон oddjobd запущен. Необходимо удостовериться, что у текущего пользователя достаточно прав для обращения к D-Bus
E00024
Ошибка во время работы машинного applier
Необходимо проверить настройки applier вручную, чтобы убедиться, что соответствующая часть ОС не поломана
E00025
Ошибка во время инициализации пользовательского applier
Необходимо проверить, что машина является частью домена и контроллер домена доступен. Следует удостовериться, что пользователь существует и что соответствующая часть ОС не поломана
E00026
Ошибка слияния машинной групповой политики
Необходимо очистить кеш gpupdate
E00027
Ошибка слияния пользовательской групповой политики
Необходимо очистить кеш gpupdate
E00028
Ошибка слияния машинной части групповой политики
Необходимо очистить кеш gpupdate
E00029
Ошибка слияния пользовательской части групповой политики
Необходимо очистить кеш gpupdate
E00030
Ошибка при запуске процесса с пониженным уровнем привилегий в контексте пользователя
Необходимо проверить наличие домашнего каталога пользователя, для которого выполняется gpupdate
E00042
Не входит в возможные значения для control
Ошибка возникает в случае некорректного целочисленного типа данных, прописанного в шаблонах групповых политик (ADMX-файлах)
E00055
Ошибка при запуске pkcon_runner синхронно для компьютера
Необходимо проверить наличие в системе и корректность файла pkcon_runner
E00056
Ошибка запуска apt-get update
Необходимо проверить подключение к сети и корректность репозиториев, отсутствие подключённых дополнительных репозиториев
E00057
Ошибка установки пакета
Необходимо проверить наличие пакета в репозиториях, правильность имени пакета, наличие подключения к сети и наличие в системе пакета packagekit
E00058
Ошибка удаления пакета
Вероятно, пакет не установлен в систему или в системе отсутствует пакет packagekit
E00059
Не входит в возможные значения для control
Ошибка возникает в случае некорректного строкового типа данных, прописанного в шаблонах групповых политик (ADMX-файлах)
E00060
Ошибка при запуске pkcon_runner синхронно для пользователя
Необходимо проверить наличие в системе и корректность файла pkcon_runner
E00061
Ошибка при запуске pkcon_runner асинхронно для компьютера
Необходимо проверить наличие в системе и корректность файла pkcon_runner
E00062
Ошибка при запуске pkcon_runner асинхронно для пользователя
Необходимо проверить наличие в системе и корректность файла pkcon_runner
E00067
Ошибка создания переменных среды
Необходимо убедиться в наличии переменных окружения: XDG_DATA_DIRS, XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS, PATH
E00068
Ошибка выполнения команды kwriteconfig5
Необходимо убедиться, что установлен пакет kf5-kconfig

36.6. Диагностика проблем при работе с политикой скриптов

На контроллере домена:
  • проверить работоспособность загружаемого скрипта в дистрибутиве «Альт»;
  • убедиться, что кодировка файла со скриптом — UTF8, без BOM;
  • убедиться, что скрипт расположен в каталоге (GPT) применяемого объекта групповой политики (GPO);
  • убедиться, что включена групповая политика «Экспериментальные групповые политики» или политика «Управление logon-скриптами» (см. Включение экспериментальных групповых политик);
  • убедиться, что целевой компьютер входит в подразделение (OU), к которому привязан объект групповой политики GPO.
На компьютере пользователя:
  • проверить версию gpupdate (политики скриптов выполняются с релиза 0.9.11-alt1);
  • убедиться, что механизм применения политик (gpupdate) запущен:
    # gpupdate-setup status
    
  • убедиться, что служба скриптов запущена:
    # systemctl status gpupdate-scripts-run.service
    
  • проверить содержимое каталога и права для загруженных скриптов:
    # ls -Rl /var/cache/gpupdate_scripts_cache/
    
  • проверить состояние службы запуска скриптов пользователя (от пользователя):
    $ systemctl --user status gpupdate-scripts-run-user.service
    
  • вывести журнал применения политик:
    # gpoa --loglevel 0
    

36.7. Диагностика проблем при подключении сетевых ресурсов

В путях к сетевым ресурсам настоятельно рекомендуется использовать FQDN.
Формат пути до ресурсадолжен соответствовать Windows-стилю (\\server\share либо //server/share), нельзя использовать форму записи smb://server/share.

Часть VII. Доверительные отношения (Трасты)

Доверительные отношения (trusts) позволяют аутентифицироваться под пользователями не только текущего домена, но и доверенных.

Предупреждение

В связи с выпуском обновлений безопасности для Windows Server, в которых устранены уязвимости в реализации контроллера домена Active Directory, могут возникнуть проблемы совместимости с версиями Samba ниже 4.21.7.
В рамках обновлений, выпущенных 8 июля 2025 года, во всех поддерживаемых версиях Windows Server (включая Windows Server 2008) были внесены изменения в протокол Microsoft RPC Netlogon. Они связаны с введением дополнительных проверок доступа к определённым RPC-вызовам.
Ранее такие расширенные проверки применялись только в Windows Server 2025, но с указанной даты они активированы и в более ранних версиях.
Данные изменения нарушают совместимость с Samba и приводят к сбоям при выполнении запросов обнаружения контроллера домена (Netlogon DC Discovery) через сервис winbind.
В результате:
  • пользователи домена не смогут аутентифицироваться;
  • доступ к SMB-ресурсам, работающим на базе Samba с бэкендом idmap_ad (или winbind с ad), будет недоступен.
Проблема затрагивает Samba-серверы, настроенные как члены домена Windows Active Directory с использованием idmap backend = ad.
Предполагается, что данные обновления могут повлиять на работоспособность доверительных отношений между MS AD и Samba AD. Это может привести к нарушению междоменной аутентификации и доступа к ресурсам.
Для устранения проблемы выпущены обновлённые версии Samba:
  • Samba 4.22.3
  • Samba 4.21.7
Эти версии содержат исправления, обеспечивающие совместимость с обновлённым протоколом Netlogon.
Без установки этих обновлений Samba-серверы не смогут функционировать в доменах Windows Active Directory, если используется бэкенд ad для маппинга идентификаторов пользователей (idmap_ad).
Рекомендуется отложить установку обновлений Windows Server до тех пор, пока:
  • не будет выполнен переход на Альт Домен 11;
  • не будут установлены обновлённые версии Samba (4.21.7 или новее).
Это позволит избежать потери доступа к доменным ресурсам и сбоев аутентификации.

Содержание

37. Настройка доверия
37.1. Общие сведения
37.2. Особенности доверительных отношений в Samba
38. Настройка DNS
38.1. Два домена Samba
38.1.1. Настройка переадресации DNS на DC с BIND9_DLZ
38.1.2. Настройка переадресации DNS на DC с SAMBA_INTERNAL
38.1.3. Проверка конфигурации DNS
38.2. Samba DC и Windows Server с AD
38.2.1. Windows Server с AD
38.2.2. Samba DC с BIND9_DLZ
38.2.3. Samba DC с SAMBA_INTERNAL
38.2.4. Проверка конфигурации DNS
39. Создание доверительного отношения
39.1. Два домена Samba
39.2. Samba AD и Windows Server с AD
39.2.1. Настройка на стороне Windows
39.2.2. Настройка на стороне Samba AD
39.2.3. Проверка доверия
40. Управление пользователями и группами
40.1. Список пользователей и групп
40.2. Тестирование аутентификации
40.3. Просмотр доверия в Windows
41. Использование доверительных отношений на LINUX-клиентах
41.1. Настройка Winbind
41.2. Настройка SSSD
41.2.1. Особенности одностороннего доверия
41.2.2. Очистка кеша SSSD при возникновении проблем
41.3. Назначение ролей для пользователей трастового домена
42. Удаление доверия
42.1. На стороне Samba
42.2. На стороне Windows Server с AD

Глава 37. Настройка доверия

37.1. Общие сведения

Доверительные отношения реализуются в рамках механизма аутентификации. Суть доверительных отношений между двумя доменами сводится к тому, что доверяющий домен (trusting domain) доверяет процесс аутентификации доверенному домену (trusted domain). Пользователь, аутентифицированный доверенным доменом, может получить доступ к ресурсам в доверяющем домене.
Доверительные отношения
Отношения доверия обеспечивают доступ к ресурсам в одном или двух направлениях:
  • одностороннее доверие (one-way trust) — позволяет пользователям и группам из домена A получать доступ к ресурсам в домене Б, но не наоборот. Домен A доверяет домену Б, но домен Б не доверяет домену A. При создании такого доверия нужно указать направление (входящее или исходящее);
  • двустороннее доверие (two-way trust) — позволяет пользователям и группам из домена A получать доступ к ресурсам в домене Б и наоборот. Запросы проверки подлинности могут передаваться между двумя доменами в обоих направлениях. Домен А доверяет домену Б, а домен Б доверяет домену А.
Транзитивность определяет, можно ли расширить доверие за пределы двух доменов, для которых оно сформировано:
  • транзитивное доверие можно использовать для расширения отношений доверия на другие домены;
  • нетранзитивное доверие можно использовать для запрета отношений доверия с другими доменами.
Типы доверия:
  • доверие леса (Forest trust) — связывает леса и все их домены (это двухсторонние или односторонние отношения доверия между разными лесами, всегда являющиеся транзитивными);
  • внешнее доверие (External trust) — устанавливается между двумя доменами напрямую вне леса (для установки двухстороннего доверия нужно использовать два разнонаправленных доверия, которыми надо связать все требуемые пары доменов).

37.2. Особенности доверительных отношений в Samba

Поддерживается:
  • доверие леса (это доверие может быть установлено между двумя Samba-доменами или Samba-доменом и Windows-доменом);
  • внешние доверительные отношения (это доверие может быть установлено между двумя Samba-доменами или Samba-доменом и Windows-доменом);
  • добавление пользователей и групп доверенного домена в группы доверяющего домена (при этом необходимо использовать SID пользователей и групп, чтобы добавить их в свою группу, имя пользователя или имя группы использовать невозможно).
Особенности и ограничения:
  • не применяются правила фильтрации SID;
  • не поддерживается выборочная аутентификация (создание таких доверий возможно, но KDC и winbindd всё равно будут их игнорировать);
  • нельзя создать доверительные отношения между доменами в одном дереве с одним и тем же пространством имён верхнего уровня. NetBIOS имена доменов должны отличаться (домен MYDOMAIN.WIN и MYDOMAIN.NEW будут иметь одинаковое короткое имя — MYDOMAIN, это приведет к невозможности установки доверительных отношений);
  • в RSAT можно увидеть контейнер foreignSecurityPrincipal для всех добавленных пользователей и групп из доверенного домена. Таким образом Microsoft показывает, что пользователь или группа являются частью доверенного домена;
  • Winbind на клиентских машинах не распознаёт доверенные домены, что приводит к проблемам с обновлением паролей учетных записей доверенного домена после их истечения. Чтобы устранить эту проблему, необходимо в секцию [global] в файла smb.conf на Linux-клиентах, подключенных через Winbind, добавить опцию:
    winbind scan trusted domains = yes
    
    и перезапустить сервис winbind:
    # systemctl restart winbind.service
    
  • при использовании групповой политики (на контроллерах в Win-домене) «Сетевая безопасность: минимальная сеансовая безопасность для серверов на базе NTLM SSP (включая безопасный RPC)» с опцией «Требовать сеансовую безопасность NTLMv2» (расположение: «Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности») не удаётся установить доверительное отношение между Win-доменом и Samba-доменом. Если данная политика включается после установки доверия, доверительные отношения между доменами начинают работать некорректно:
    • не выполняется проверка доверия (samba-tool domain trust validate);
    • пользователи из доверенного домена не могут выполнять вход на машины, использующие winbind.

    Примечание

    После редактирования политики и ее применения в Win-домене необходимо перезапустить сервис samba.
Для управления доверием можно использовать инструмент командной строки samba-tool.

Таблица 37.1. Команды управления доверием

Команда
Описание
Примечание
domain trust create <домен>
Создать доверие домена или леса
Можно использовать следующие опции:
  • --type=TYPE — тип доверия (external, forest);
  • --direction=DIRECTION — направление доверия (incoming, outgoing, both);
  • --create-location=LOCATION — где создать объект доверенного домена (local, both);
  • --quarantined=yes|no — применять к доверию специальные правила фильтрации SID (при --type=external по умолчанию yes, при --type=forest по умолчанию no);
  • -U USERNAME — имя пользователя
domain trust modify <домен>
Изменить доверие домена или леса
domain trust delete <домен>
Удалить доверие домена или леса
Можно использовать следующие опции:
  • --delete-location=LOCATION — где удалить объект доверенного домена (local, both);
  • -U USERNAME — имя пользователя
domain trust list
Вывести список доверительных отношений домена
domain trust show <домен>
Показать сведения о доверенном домене
domain trust validate <домен>
Проверить доверие к домену
Можно использовать следующие опции:
  • --validate-location=LOCATION — где проверить объект доверенного домена (local, both);
  • -U USERNAME — имя пользователя

Глава 38. Настройка DNS

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

Примечание

Пересылка — это механизм, который позволяет серверу направлять запросы на разрешение доменных имён на другие DNS-серверы, если он сам не может их обработать.
Пересылка настраивается в конфигурации DNS-сервера в файле /etc/bind/options.conf:
options {
    forwarders { 8.8.8.8; };
};
При использовании доверительных отношений, системы в одном домене должны уметь находить ресурсы и аутентифицировать пользователей из другого домена. Для этого им нужно корректно определять IP-адреса ресурсов другого домена. Однако, если один DNS-сервер не знает, как разрешить запросы для другого домена, запросы просто не смогут обрабатываться. Решением является условная пересылка, которая перенаправляет запросы для второго домена на соответствующий DNS-сервер.
Условная пересылка (conditional forwarding) — метод, который позволяет направлять запросы на разные серверы в зависимости от домена.
Условная пересылка указывается в файле /etc/bind/options.conf:
zone "trust.dom" {
    type forward;
    forwarders { 10.64.224.10; };
};

38.1. Два домена Samba

Таблица 38.1. Исходные данные

Имя домена
Контроллер домена
IP-адрес
ОС контроллера домена
Версия Samba
Домен Linux
TEST.ALT
dc1.test.alt
192.168.0.132
ALT Server 11
4.21.7-alt4
Домен Linux
EXAMPLE.ALT
s1.example.alt
192.168.0.172
ALT Server 11
4.21.7-alt4
Выделенный DNS-сервер
192.168.0.150
ALT Server 11

38.1.1. Настройка переадресации DNS на DC с BIND9_DLZ

Если используется DNS бэкенд BIND9_DLZ, необходимо добавить информацию о зоне в конец файла /etc/bind/options.conf:
  • на контроллере домена dc1.test.alt добавить строки:
    zone "example.alt" {
          type forward;
          forwarders { 192.168.0.172; };
    };
    
  • на контроллере домена s1.example.alt:
    zone "test.alt" {
          type forward;
          forwarders { 192.168.0.132; };
    };
    
Перезапустить службу DNS:
# systemctl restart bind.service

Примечание

Если удалённый DNS-сервер не использует DNSSEC и включить проверку DNSSEC на удаленном DNS-сервере нельзя, можно отключить проверку DNSSEC на сервере AD. Для этого необходимо в файле /etc/bind/options.conf в секцию options добавить параметр:
dnssec-validation no;
И перезапустить службу DNS:
# systemctl restart bind.service

38.1.2. Настройка переадресации DNS на DC с SAMBA_INTERNAL

Если используется DC с DNS бэкенд SAMBA_INTERNAL, самый простой способ заставить работать разрешение имен — настроить DNS-прокси между двумя доменами. DNS-прокси будет перенаправлять запрос между доменами и внешним DNS-серверами. В примере, в качестве DNS-прокси используется отдельный сервер (IP-адрес 192.168.0.150) с настроенным bind9.
На каждом контроллере домена:
  1. Указать DNS-прокси, как сервер пересылки в файле /etc/samba/smb.conf (в параметре dns forwarder). Например:
    dns forwarder = 192.168.0.150 8.8.8.8
    
  2. Перезапустить службу samba:
    # systemctl restart samba
    
На сервере bind9 отредактировать файл /etc/bind/options.conf:
  • так как SAMBA_INTERNAL не имеет функционала расширения безопасности DNS, необходимо отключить проверку DNSSEC, для этого в секцию options добавить параметр:
    dnssec-validation no;
    
  • в конец файла /etc/bind/options.conf (или /etc/bind/ddns.conf) добавить информацию о зонах:
    zone "example.alt" {
          type forward;
          forwarders { 192.168.0.172; };
    };
    
    zone "test.alt" {
          type forward;
          forwarders { 192.168.0.132; };
    };
    
И перезапустить службу DNS:
# systemctl restart bind.service

38.1.3. Проверка конфигурации DNS

Для проверки настройки следует убедиться, что на обоих контроллерах домена разрешаются SRV-записи:
  • на контроллере домена dc1.test.alt:
    # host -t srv _kerberos._tcp.example.alt
    _kerberos._tcp.example.alt has SRV record 0 100 88 s1.example.alt.
    # host -t srv _kerberos._tcp.test.alt
    _kerberos._tcp.test.alt has SRV record 0 100 88 dc1.test.alt.
    
  • на контроллере домена s1.example.alt:
    # host -t srv _kerberos._tcp.example.alt
    _kerberos._tcp.example.alt has SRV record 0 100 88 s1.example.alt.
    # host -t srv _kerberos._tcp.test.alt
    _kerberos._tcp.test.alt has SRV record 0 100 88 dc1.test.alt.
    
Проверить возможность получения билета Kerberos:
  • на контроллере домена dc1.test.alt:
    # kinit administrator@EXAMPLE.ALT
    Password for administrator@EXAMPLE.ALT:
    # klist
    Ticket cache: KEYRING:persistent:0:krb_ccache_eFyZ8Tr
    Default principal: administrator@EXAMPLE.ALT
    
    Valid starting       Expires              Service principal
    16.06.2025 12:12:06  16.06.2025 22:12:06  krbtgt/EXAMPLE.ALT@EXAMPLE.ALT
        renew until 23.06.2025 12:12:02
    
  • на контроллере домена s1.example.alt:
    # kinit administrator@TEST.ALT
    Password for administrator@TEST.ALT:
    # klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: administrator@TEST.ALT
    
    Valid starting       Expires              Service principal
    16.06.2025 12:13:30  16.06.2025 22:13:30  krbtgt/TEST.ALT@TEST.ALT
        renew until 23.06.2025 12:13:26
    

Важно

realm должен быть записан заглавными буквами.

38.2. Samba DC и Windows Server с AD

Таблица 38.2. Исходные данные

Имя домена
Контроллер домена
IP-адрес
ОС
Уровень работы домена
Версия Samba
Домен Linux
TEST.ALT
dc1.test.alt
192.168.0.132
ALT Server 11
2012_R2
4.21.7-alt4
Домен Windows
WIN.ALT
DC1.win.alt
192.168.0.190
Windows Server 2012
2012R2
Выделенный DNS-сервер
192.168.0.150
ALT Server 11

38.2.1. Windows Server с AD

На AD сервере создать сервер условной пересылки для зоны Samba домена.
В графическом интерфейсе:
  1. Открыть Диспетчер DNS (DNS Manager).
  2. В разделе Серверы условной пересылки (Conditional Forwarders) добавить новый сервер пересылки, указав FQDN или IP-адрес сервера Samba:
    Диспетчер DNS
  3. Сохранить настройки.
В командной строке:
C:\> dnscmd 127.0.0.1 /ZoneAdd test.alt /Forwarder 192.168.0.132
DNS Server 127.0.0.1 created zone test.alt:

Command completed successfully
Или выполнить следующую команду в сеансе PowerShell для настройки пересылки DNS:
PS C:\Windows\system32> Add-DnsServerConditionalForwarderZone -Name test.alt -MasterServers 192.168.0.132 -ReplicationScope Forest

38.2.2. Samba DC с BIND9_DLZ

Если используется DNS бэкенд BIND9_DLZ, добавить в конец файла /etc/bind/options.conf (или /etc/bind/ddns.conf) строки:
zone "win.alt" {
      type forward;
      forwarders { 192.168.0.190; };
};
И перезапустить службу DNS:
# systemctl restart bind.service

Примечание

Если удалённый DNS-сервер не использует DNSSEC и включить проверку DNSSEC на удаленном DNS-сервере нельзя, можно отключить проверку DNSSEC на сервере AD. Для этого необходимо в файл /etc/bind/options.conf в секцию options добавить параметр:
dnssec-validation no;
И перезапустить службу DNS:
# systemctl restart bind.service

38.2.3. Samba DC с SAMBA_INTERNAL

Если используется DC с DNS бэкенд SAMBA_INTERNAL, самый простой способ заставить работать разрешение имен — настроить DNS-прокси между двумя доменами. DNS-прокси будет перенаправлять запрос между доменами и внешним DNS-серверами. В примере, в качестве DNS-прокси используется отдельный сервер (IP-адрес 192.168.0.150) с настроенным bind9.
На контроллере домена:
  • указать DNS-прокси, как сервер пересылки в файле /etc/samba/smb.conf (в параметре dns forwarder), например:
    dns forwarder = 192.168.0.150 8.8.8.8
    
  • перезапустить службу samba:
    # systemctl restart samba
    
На выделенном DNS-сервере:
  • отредактировать файл /etc/bind/options.conf:
    • так как SAMBA_INTERNAL не имеет функционала расширения безопасности DNS, необходимо отключить проверку DNSSEC, для этого в секцию options добавить параметр:
      dnssec-validation no;
    • в конец файла добавить информацию о зонах:
      zone "win.alt" {
            type forward;
            forwarders { 192.168.0.190; };
      };
      
  • перезапустить службу DNS:
    # systemctl restart bind.service
    

38.2.4. Проверка конфигурации DNS

Перед настройкой доверия необходимо убедиться, что серверы могут разрешать себя и друг друга.
На Samba DC:
  1. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
    # dig +short -t SRV _kerberos._udp.test.alt
    0 100 88 dc1.test.alt.
    # dig +short -t SRV _ldap._tcp.test.alt
    0 100 389 dc1.test.alt.
    
    В выводе команд должен быть отображен список всех серверов.
  2. Наличие записей для работы сервисов AD на DNS-сервере Samba:
    # dig +short -t SRV _kerberos._tcp.dc._msdcs.win.alt
    0 100 88 dc1.win.alt.
    # dig +short -t SRV _ldap._tcp.dc._msdcs.win.alt
    0 100 389 dc1.win.alt.
    
  3. Проверить возможность получения билета Kerberos:
    # kinit administrator@WIN.ALT
    Password for administrator@WIN.ALT:
    # klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: administrator@WIN.ALT
    
    Valid starting       Expires              Service principal
    17.06.2025 11:55:15 17.06.2025 21:55:15  krbtgt/WIN.ALT@WIN.ALT
        renew until 24.06.2025 11:55:08
    
Проверить наличие записей на DNS-сервере AD:
  1. Запустить утилиту nslookup.exe для поиска служебных записей:
    C:\> nslookup.exe
    > set type=SRV
    
  2. Ввести доменное имя для служебных записей Kerberos через UDP и LDAP через TCP:
    > _kerberos._udp.test.alt
    _kerberos._udp.test.alt       SRV service location:
        priority                = 0
        weight                  = 100
        port                    = 88
        svr hostname            = dc1.test.alt
    …
    test.alt
        primary name server = dc1.test.alt
        responsible mail addr = hostmaster.test.alt
        serial = 7
        refresh = 900 (15 mins)
        retry = 600 (10 mins)
        expire = 86400 (1 days)
        default TTL = 3600 (1 hours)
    > _ldap._tcp.test.alt
    _ldap._tcp.test.alt       SRV service location:
        priority                = 0
        weight                  = 100
        port                    = 389
        svr hostname            = dc1.test.alt
    …
    

Глава 39. Создание доверительного отношения

39.1. Два домена Samba

На стороне Samba AD для создания доверия используется команда:
# samba-tool domain trust create <домен> --type=<тип доверия>
--direction=<направление> --create-location=<место создания> -U <пользователь>
Где:
  • <домен> — имя удалённого домена, с которым создаётся доверие;
  • <тип доверия> — определяет тип доверия:
    • external — используется для внешнего доверия между доменами, не находящимися в одном лесу. Рекомендуется, если для Linux-клиентов используется SSSD;
    • forest — используется для создания доверия между лесами доменов, включая все их дочерние домены. Рекомендуется, если для Linux-клиентов используется Winbind;
  • --direction=<направление> — определяет направление доверия:
    • incoming — доверие только со стороны удалённого домена к текущему;
    • outgoing — доверие только от текущего домена к удалённому;
    • both — двустороннее доверие;
  • --create-location=<место создания> — указывает место создания доверительного отношения:
    • local — объект доверенного домена будет создан только в локальном домене, доверительные отношения будут зарегистрированы и настроены только со стороны текущего домена, без внесения изменений в конфигурацию удаленного домена;
    • both — объект доверенного домена будет создан в обоих доменах;
  • -U <пользователь> — имя пользователя с правами администратора для удалённого домена.
В данном примере на контроллере домена dc1.test.alt необходимо выполнить команду:
# samba-tool domain trust create EXAMPLE.ALT  --type=forest \
--direction=both --create-location=both -U administrator@EXAMPLE.ALT

LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-1455776928-3410124986-2843404052]
RemoteDC Netbios[S1] DNS[s1.example.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6]
Password for [administrator@EXAMPLE.ALT]:
RemoteDomain Netbios[EXAMPLE] DNS[example.alt] SID[S-1-5-21-3274802069-598906262-3677769431]
Creating remote TDO.
Remote TDO created.
Setting supported encryption types on remote TDO.
Creating local TDO.
Local TDO created
Setting supported encryption types on local TDO.
Setup local forest trust information...
Namespaces[2] TDO[example.alt]:
TLN: Status[Enabled]                  DNS[*.example.alt]
DOM: Status[Enabled]                  DNS[example.alt] Netbios[EXAMPLE] SID[S-1-5-21-3274802069-598906262-3677769431]
Setup remote forest trust information...
Namespaces[2] TDO[test.alt]:
TLN: Status[Enabled]                  DNS[*.test.alt]
DOM: Status[Enabled]                  DNS[test.alt] Netbios[TEST] SID[S-1-5-21-1455776928-3410124986-2843404052]
Validating outgoing trust...
OK: LocalValidation: DC[\\s1.example.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Validating incoming trust...
OK: RemoteValidation: DC[\\dc1.test.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Success

Важно

Для входа в доверенный домен через SSSD надо использовать тип связи external, а не forest.
Проверка доверия:
  • просмотр доверия с dc1.test.alt:
    [root@dc1 ~]# samba-tool domain trust show EXAMPLE.ALT
    LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-1455776928-3410124986-2843404052]
    TrustedDomain:
    
    NetbiosName:    EXAMPLE
    DnsName:        example.alt
    SID:            S-1-5-21-3274802069-598906262-3677769431
    Type:           0x2 (UPLEVEL)
    Direction:      0x3 (BOTH)
    Attributes:     0x8 (FOREST_TRANSITIVE)
    PosixOffset:    0x00000000 (0)
    kerb_EncTypes:  0x18 (AES128_CTS_HMAC_SHA1_96,AES256_CTS_HMAC_SHA1_96)
    Namespaces[2] TDO[example.alt]:
    TLN: Status[Enabled]                  DNS[*.example.alt]
    DOM: Status[Enabled]                  DNS[example.alt] Netbios[EXAMPLE] SID[S-1-5-21-3274802069-598906262-3677769431]
    
    
  • просмотр доверия с s1.example.alt:
    [root@s1 ~]# samba-tool domain trust show TEST.ALT
    LocalDomain Netbios[EXAMPLE] DNS[example.alt] SID[S-1-5-21-3274802069-598906262-3677769431]
    TrustedDomain:
    
    NetbiosName:    TEST
    DnsName:        test.alt
    SID:            S-1-5-21-1455776928-3410124986-2843404052
    Type:           0x2 (UPLEVEL)
    Direction:      0x3 (BOTH)
    Attributes:     0x8 (FOREST_TRANSITIVE)
    PosixOffset:    0x00000000 (0)
    kerb_EncTypes:  0x18 (AES128_CTS_HMAC_SHA1_96,AES256_CTS_HMAC_SHA1_96)
    Namespaces[2] TDO[test.alt]:
    TLN: Status[Enabled]                  DNS[*.test.alt]
    DOM: Status[Enabled]                  DNS[test.alt] Netbios[TEST] SID[S-1-5-21-1455776928-3410124986-2843404052]
    
  • список доверительных отношений:
    [root@dc1 ~]# samba-tool domain trust list
    Type[Forest]   Transitive[Yes] Direction[BOTH]     Name[example.alt]
    
Результаты могут отличаться в зависимости от домена и типа установленного доверия.
Если после настройки доверия возникают проблемы с доступом пользователей из доверенного домена, следует проверить корректность настройки доверия:
[root@dc1 ~]# samba-tool domain trust validate EXAMPLE.ALT -Uadministrator@EXAMPLE.ALT
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-1455776928-3410124986-2843404052]
LocalTDO Netbios[EXAMPLE] DNS[example.alt] SID[S-1-5-21-3274802069-598906262-3677769431]
OK: LocalValidation: DC[\\s1.example.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: LocalRediscover: DC[\\s1.example.alt] CONNECTION[WERR_OK]
RemoteDC Netbios[S1] DNS[s1.example.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6]
Password for [administrator@EXAMPLE.ALT]:
OK: RemoteValidation: DC[\\dc1.test.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: RemoteRediscover: DC[\\dc1.test.alt] CONNECTION[WERR_OK]

39.2. Samba AD и Windows Server с AD

Если создаётся двухстороннее доверие (например, с опцией --create-location=both в samba-tool), оно настраивается сразу на обеих сторонах. В этом случае достаточно выполнить настройку только на одной стороне.
В данном разделе приведены примеры настройки доверия:
  • на стороне Windows — с использованием оснастки Домены и доверие;
  • на стороне Альт Домен — с помощью команды samba-tool domain trust create.

39.2.1. Настройка на стороне Windows

Для создания доверия на стороне Windows необходимо:
  1. Открыть Диспетчер серверов, выбрать СредстваActive Directory — Домены и Доверие:
    Диспетчер серверов
  2. В открывшемся окне в контекстном меню домена выбрать пункт Свойства:
    Контекстное меню домена
  3. Откроется окно свойств домена. Необходимо перейти на вкладку Отношения доверия и нажать кнопку Создать отношение доверия…:
    Окно свойств домена
  4. Запустится Мастер создания отношения доверия. Для перехода ко второму шагу следует нажать кнопку Далее:
    Имя отношения доверия
  5. На втором шаге необходимо указать имя домена Samba AD (в примере TEST.ALT):
    Имя отношения доверия
  6. На следующем шаге следует выбрать тип доверия:
    Выбор типа доверия
  7. Далее выбирается направление доверия:
    Выбор направления доверия
  8. В открывшемся окне Стороны отношения доверия нужно выбрать, на каком из доменов применяется настройка. Если есть права администратора для обоих доменов, можно выбрать пункт Для данного и указанного домена:
    Стороны отношения доверия

    Примечание

    Если выбрать параметр Только для данного домена:
    Стороны отношения доверия
    Потребуется задать Пароль отношения доверия (Trust Secret Key), который в дальнейшем будет использоваться при создании доверительного отношения на стороне Samba AD:
    Пароль отношения доверия
  9. На следующем этапе мастер свяжется с удалённым доменом (если он доступен), и запросит имя и пароль пользователя с правами установки доверительных отношений в домене:
    Имя и пароль пользователя
  10. На шаге Уровень проверки подлинности исходящего доверия — Локальный лес следует выбрать Проверка подлинности в лесу:
    Уровень проверки подлинности исходящего доверия
  11. На шаге Уровень проверки подлинности исходящего доверия — Указанный лес также следует выбрать пункт Проверка подлинности в лесу.
  12. В окне Выбор доверия завершен мастер выдаст уведомление о том, что готов создать новое отношение доверия, и покажет краткую сводку с выбранными параметрами. После подтверждения появится уведомление об успешном создании доверия:
    Создание доверия завершено
  13. После нажатия кнопки Далее появится окно Подтверждение исходящего доверия, а после него Подтверждение входящего доверия. Здесь можно оставить выбранным пункт Нет, не подтверждаю это исходящее/входящее отношение доверие, так как на стороне Samba DC доверие ещё не создавалось:
    Подтверждение входящего доверия
  14. В результате будут установлены двухсторонние доверительные отношения между доменами:
    Двухсторонние доверительные отношения между доменами

39.2.2. Настройка на стороне Samba AD

Для создания доверия на стороне Samba AD необходимо выполнить команду:
# samba-tool domain trust create win.alt --type=forest \
--direction=both --create-location=both -Uadministrator@WIN
При появлении запроса необходимо ввести пароль администратора.

Важно

Для входа в доверенный домен через SSSD следует использовать тип связи external, а не forest.
Если все настроено верно, будет установлено доверие к домену AD:
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3848605173-1839566900-710408900]
RemoteDC Netbios[DC1] DNS[DC1.win.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6,ADS_WEB_SERVICE,DS_8,__unknown_00008000__]
Password for [administrator@WIN]:
RemoteDomain Netbios[WIN] DNS[win.alt] SID[S-1-5-21-212759798-1661061060-862600140]
Creating local TDO.
Local TDO created
Setting supported encryption types on local TDO.
Setup local forest trust information...
Namespaces[2] TDO[win.alt]:
TLN: Status[Enabled]                  DNS[*.win.alt]
DOM: Status[Enabled]                  DNS[win.alt] Netbios[WIN] SID[S-1-5-21-212759798-1661061060-862600140]
Validating outgoing trust...
OK: LocalValidation: DC[\\DC1.win.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Validating incoming trust…
OK: RemoteValidation: DC[\\dc1.test.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Success.
Если при настройке в Windows был задан Trust Secret Key, при создании доверия в Samba необходимо заменить параметр --create-location=both на --create-location=local. В этом случае Samba DC сначала запросит пароли доверия (Incoming и Outgoing Trust Password), созданные ранее в Windows:
# samba-tool domain trust create win.alt --type=forest \
--direction=both --create-location=local -Uadministrator@WIN

New Incoming Trust Password:
Retype Incoming Trust Password:
New Outgoing Trust Password:
Retype Outgoing Trust Password:
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3848605173-1839566900-710408900]
RemoteDC Netbios[DC1] DNS[DC1.win.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,…]
Password for [administrator@WIN]:
…

39.2.3. Проверка доверия

Проверка доверия с dc1.test.alt:
  • просмотр информации о доверии:
    # samba-tool domain trust show WIN.ALT
    LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3848605173-1839566900-710408900]
    TrustedDomain:
    
    NetbiosName:    WIN
    DnsName:        win.alt
    SID:            S-1-5-21-212759798-1661061060-862600140
    Type:           0x2 (UPLEVEL)
    Direction:      0x3 (BOTH)
    Attributes:     0x8 (FOREST_TRANSITIVE)
    PosixOffset:    0x00000000 (0)
    kerb_EncTypes:  0x18 (AES128_CTS_HMAC_SHA1_96,AES256_CTS_HMAC_SHA1_96)
    Namespaces[2] TDO[win.alt]:
    TLN: Status[Enabled]                  DNS[*.win.alt]
    DOM: Status[Enabled]                  DNS[win.alt] Netbios[WIN] SID[S-1-5-21-212759798-1661061060-862600140]
    
    
  • список доверительных отношений:
    # samba-tool domain trust list
    Type[Forest]   Transitive[Yes] Direction[BOTH]     Name[win.alt]
    
Результаты могут отличаться в зависимости от домена и типа установленного доверия.
Если после настройки доверия возникают проблемы с доступом пользователей из доверенного домена, следует проверить корректность настройки доверия:
# samba-tool domain trust validate win.alt -Uadministrator@WIN
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3848605173-1839566900-710408900]
LocalTDO Netbios[WIN] DNS[win.alt] SID[S-1-5-21-212759798-1661061060-862600140]
OK: LocalValidation: DC[\\DC1.win.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: LocalRediscover: DC[\\DC1.win.alt] CONNECTION[WERR_OK]
RemoteDC Netbios[DC1] DNS[DC1.win.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6,ADS_WEB_SERVICE,DS_8,__unknown_00008000__]
Password for [administrator@WIN]:
OK: RemoteValidation: DC[\\dc2.test.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: RemoteRediscover: DC[\\dc2.test.alt] CONNECTION[WERR_OK]

Глава 40. Управление пользователями и группами

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

Примечание

Предварительно необходимо создать несколько пользователей и групп в обоих доменах (см. Управление пользователями и группами).

40.1. Список пользователей и групп

C помощью команды wbinfo нельзя получить список пользователей и групп из доверяющего домена, можно получить список пользователей и групп только из своего домена. Пример получения списка пользователей:
  • команды выполняются на контроллере домена dc1.test.alt:
    # wbinfo -u --domain=EXAMPLE.ALT
    # wbinfo -u --domain=TEST.ALT
    TEST\administrator
    TEST\guest
    TEST\krbtgt
    TEST\dns-dc1
    TEST\ivanov
    
  • команды выполняются на контроллере домена s1.example.alt:
    # wbinfo -u --domain=EXAMPLE.ALT
    EXAMPLE\administrator
    EXAMPLE\guest
    EXAMPLE\krbtgt
    EXAMPLE\dns-s1
    EXAMPLE\kim
    # wbinfo -u --domain=TEST.ALT
    
Для получения списка всех пользователей можно выполнить LDAP-запрос с помощью команды samba-tool. Пример получения списка пользователей из обоих доменов на контроллере домена dc1.test.alt:
# samba-tool user list -H ldap://s1 -Uadministrator@EXAMPLE.ALT
Password for [administrator@EXAMPLE.ALT]:
dns-s1
krbtgt
Administrator
Guest
kim
# samba-tool user list -H ldap://dc1 -Uadministrator@TEST.ALT
Password for [administrator@TEST.ALT]:
dns-dc1
krbtgt
Guest
Administrator
ivanov
Получение дополнительной информации о доменах (в примерах команды выполняются на контроллере домена dc1.test.alt):
  • получение списка всех доменов:
    # wbinfo --all-domains
    BUILTIN
    TEST
    EXAMPLE
    
  • вывод основного домена (домен, к которому в данный момент подключена система):
    # wbinfo --own-domain
    TEST
    
  • вывод списка доменов, которые находятся в состоянии доверия с текущим доменом:
    # wbinfo --trusted-domains
    BUILTIN
    TEST
    EXAMPLE
    
  • отображение текущего состояния подключения Winbind к различным доменам:
    # wbinfo --online-status
    BUILTIN : active connection
    TEST : active connection
    EXAMPLE : active connection
    
Получение SID пользователей и групп (в примере команды выполняются на контроллере домена dc1.test.alt):
# wbinfo -n TEST\\ivanov
S-1-5-21-1455776928-3410124986-2843404052-1105 SID_USER (1)

# wbinfo -n EXAMPLE\\kim
S-1-5-21-3274802069-598906262-3677769431-1104 SID_USER (1)

# wbinfo -n TEST\\office
S-1-5-21-1455776928-3410124986-2843404052-1107 SID_DOM_GROUP (2)

# wbinfo -n EXAMPLE\\office2
S-1-5-21-3274802069-598906262-3677769431-1107 SID_DOM_GROUP (2)

# wbinfo -i TEST\\ivanov
TEST.ALT\ivanov:*:3000022:100::/home/TEST.ALT/ivanov:/bin/false

# wbinfo -i EXAMPLE\\kim
EXAMPLE\kim:*:3000020:3000021::/home/EXAMPLE/kim:/bin/false

40.2. Тестирование аутентификации

С помощью команды wbinfo можно протестировать процесс аутентификации разных пользователей из обоих доменов.
wbinfo попытается авторизовать пользователя. Первой проверкой будет аутентификация по паролю с открытым текстом. Этот тип аутентификации применяется, когда пользователь входит в систему локально (plaintext не означает, что пароль будет отправлен без шифрования, это просто название процесса входа в систему). Вторая проверка — аутентификация по паролю запрос/ответ. Этот тип аутентификации использует NTLM или Kerberos.
Проверка методов аутентификации (в примере команды выполняются на контроллере домена dc1.test.alt):
# wbinfo -a TEST\\ivanov
Enter TEST\ivanov's password:
plaintext password authentication succeeded
Enter TEST\ivanov's password:
challenge/response password authentication succeeded


# wbinfo -a EXAMPLE\\kim
Enter EXAMPLE\kim's password:
plaintext password authentication succeeded
Enter EXAMPLE\kim's password:
challenge/response password authentication succeeded
Посмотреть какие контроллеры домена отвечают за аутентификацию:
# wbinfo --ping-dc
checking the NETLOGON for domain[TEST] dc connection to "dc1.test.alt" succeeded

# wbinfo --ping-dc --domain=EXAMPLE.ALT
checking the NETLOGON for domain[EXAMPLE.ALT] dc connection to "s1.example.alt" succeeded
Назначение пользователей и групп из доверенных доменов в группу доверяющего домена:
# wbinfo -n EXAMPLE\\kim
S-1-5-21-3274802069-598906262-3677769431-1104 SID_USER (1)

# samba-tool group addmembers office S-1-5-21-3274802069-598906262-3677769431-1104
Added members to group office

# wbinfo -n EXAMPLE\\office2
S-1-5-21-3274802069-598906262-3677769431-1107 SID_DOM_GROUP (2)

# samba-tool group addmembers office S-1-5-21-3274802069-598906262-3677769431-1107
Added members to group office

# samba-tool group listmembers office
S-1-5-21-3274802069-598906262-3677769431-1104
ivanov
S-1-5-21-3274802069-598906262-3677769431-1107

40.3. Просмотр доверия в Windows

Модуль RSAT (см. Установка административных инструментов (машина Windows)) «Active Directory — домены и доверие» («Active Directory — Domain and Trusts») позволяет проверить состояние отношений доверия между доменами:
Модуль RSAT Active Directory — Домены и доверие
В модуле RSAT «Active Directory — пользователи и компьютеры» («Active Directory — Users and Computers») можно просмотреть список пользователей группы:
Модуль RSAT Active Directory — пользователи и компьютеры

Глава 41. Использование доверительных отношений на LINUX-клиентах

Если необходимо использовать пользователей из обоих доменов (установлены двухсторонние доверительные отношения с типом связи Лес), то рабочую станцию с ОС Альт следует вводить в домен через Winbind (см. Подключение к домену с использованием Winbind).

41.1. Настройка Winbind

Важно правильно спланировать диапазоны идентификаторов (UID и GID), назначаемых пользователям и группам (см. Планирование и настройка диапазонов идентификаторов UID и GID (Winbind/IDMapping)).
На машине, введённой в домен, необходимо в файле smb.conf установить ID-маппинг для обоих доменов (backend = rid/tdb).
Пример файла smb.conf на машине введённой в домен example.alt:
[global]
        security = ads
        realm = EXAMPLE.ALT
        workgroup = EXAMPLE
        netbios name = WORK1
        template shell = /bin/bash
        kerberos method = system keytab
        wins support = no
        winbind use default domain = yes
        winbind enum users = no
        winbind enum groups = no
        template homedir = /home/EXAMPLE.ALT/%U
        winbind refresh tickets = yes
        winbind offline logon = yes
        idmap config * : range = 3000-7999
        idmap config * : backend = tdb

        idmap config EXAMPLE : backend = rid
        idmap config EXAMPLE : range = 10000-999999
        idmap config TEST : backend = rid
        idmap config TEST : range = 1000000-9999999
После перезапуска smbd и winbind можно проверить, есть ли возможность просматривать пользователей из обоих доменов:
# net rpc trustdom list -Uadministrator
Password for [EXAMPLE\administrator]:
Trusted domains list:

TEST                S-1-5-21-1455776928-3410124986-2843404052

Trusting domains list:

TEST                S-1-5-21-1455776928-3410124986-2843404052
С помощью команды winbind можно получить информацию о пользователях из обоих доменов и проверить доступность доменов:
# wbinfo -n TEST\\ivanov
S-1-5-21-1455776928-3410124986-2843404052-1105 SID_USER (1)

# wbinfo -n EXAMPLE\\kim
S-1-5-21-3274802069-598906262-3677769431-1104 SID_USER (1)
Для проверки доступности пользователей и групп из доверенных доменов можно использовать getent:
# getent group TEST\\office
TEST\office:*:1001106:

# getent group EXAMPLE\\office2
office2:*:11107:

# getent passwd TEST\\ivanov
TEST\ivanov:*:1001105:1000513::/home/EXAMPLE.ALT/ivanov:/bin/bash

# getent passwd EXAMPLE\\kim
kim:*:11125:10001:Олег Ким:/home/EXAMPLE.ALT/kim:/bin/bash

Примечание

Для авторизации в доверенном домене следует вводить учётные данные пользователя в формате DOMAIN\user:
Ввод логина учетной записи пользователя доверенного домена
Проверка входа по SSH пользователями из обоих доменов:
$ ssh TEST\\ivanov@192.168.0.126
TEST\ivanov@192.168.0.126's password:
[TEST\ivanov@work1 ~]$ exit
выход
Connection to 192.168.0.126 closed.

$ ssh EXAMPLE\\kim@192.168.0.126
EXAMPLE\kim@192.168.0.126's password:
[kim@work1 ~]$ exit
выход
Connection to 192.168.0.126 closed.

41.2. Настройка SSSD

Особенности:
  • SSSD требует ручного указания настроек для каждого доверенного домена в клиентской конфигурации (файл /etc/sssd/sssd.conf);
  • без дополнительных настроек SSSD работает только с внешними (non-transitive) двусторонними доверительными отношениями. Пример вывода команды:
    # samba-tool domain trust list
    Type[External] Transitive[No]  Direction[BOTH]     Name[example.alt]
    
  • для односторонних доверительных отношений требуются дополнительные настройки. Подробнее см. раздел Особенности одностороннего доверия;
  • по умолчанию пул UID/GID для сопоставления SID в SSSD имеет ограниченный размер. В доменах с количеством пользователей более 200 тысяч этот пул необходимо расширять вручную.
    При стандартной конфигурации SSSD создаёт 10000 срезов, каждый из которых может содержать до 200000 идентификаторов, начиная от 200000 и до 2000200000.
    Общий диапазон UID/GID составляет около 2 млрд значений. На каждый домен выделяется один срез размером 200000 идентификаторов. Каждому домену может соответствовать только один единственный срез.
    Для увеличения размера среза в конфигурации SSSD используются следующие параметры:
    • ldap_idmap_range_min — нижняя граница диапазона идентификаторов (включительно);
    • ldap_idmap_range_max — верхняя граница диапазона идентификаторов (не включительно);
    • ldap_idmap_range_size — количество идентификаторов, доступных для каждого среза. Значение должно быть не меньше максимального RID пользователя, планируемого к использованию в домене AD.
    Эти параметры позволяют адаптировать пул UID/GID под требования домена. Однако при увеличении размера одного среза необходимо уменьшать общее количество срезов, что повышает вероятность коллизий (по умолчанию вероятность коллизии между двумя конкретными доменами составляет 1/10000).
На машине, присоединённой к домену, для использования коротких имён пользователей из доверенного домена EXAMPLE.ALT необходимо добавить в файл /etc/sssd/sssd.conf строки:
[domain/TEST.ALT/EXAMPLE.ALT]
use_fully_qualified_names = false
После внесения изменений перезапустить службу SSSD:
# systemctl restart sssd

Примечание

В конфигурации SSSD допускается указание секций вида [domain/ОСНОВНОЙ_ДОМЕН/ДОВЕРЕННЫЙ_ДОМЕН] для переопределения параметров конкретного доверенного домена. Такой формат поддерживается при наличии настроенного доверия между доменами.
В примере [domain/TEST.ALT/EXAMPLE.ALT]:
  • TEST.ALT — основной домен, к которому присоединён клиент;
  • EXAMPLE.ALT — доверенный домен (должен быть доступен через настроенное внешнее доверие).

Примечание

Параметр use_fully_qualified_names определяет формат имён, возвращаемых NSS:
  • TRUE — требуется указывать полное имя вида пользователь@домен;
  • FALSE — допускаются короткие имена (без указания домена).
При использовании коротких имён возможны конфликты, если пользователи с одинаковыми именами существуют в нескольких доменах.
После перезапуска sssd можно проверить возможность получения информации о пользователях из обоих доменов:
# getent passwd ivanov
ivanov:*:1855401105:1855400513:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash

# getent passwd kim
kim@example.alt:*:829801104:829801104:Виталий Ким:/home/example.alt/kim:/bin/bash
С помощью команды sssctl можно вывести список всех доменов, с которыми клиентская машина может взаимодействовать, а также их статусы:
# sssctl domain-list
 EXAMPLE.ALT
 TEST.ALT

# sssctl domain-status EXAMPLE.ALT
 Online status: Online

 Active servers:
 AD Global Catalog: s1.example.alt
 AD Domain Controller: s1.example.alt

 Discovered AD Global Catalog servers:
 - s1.example.alt

 Discovered AD Domain Controller servers:
 - s1.example.alt
В случае проблем с аутентификацией пользователем из доверенного домена, в /etc/sssd/sssd.conf в секцию основного домена можно вписать:
krb5_validate = false

Важно

Отключение проверки билетов Kerberos (krb5_validate = false) снижает безопасность и должно использоваться только для диагностики.

41.2.1. Особенности одностороннего доверия

SSSD корректно работает с внешними (non-transitive) доверительными отношениями без дополнительной настройки. Однако в случае одностороннего доверия, когда локальный домен доверяет удалённому, но обратного доверия нет, доступ к информации о пользователях доверенного домена становится ограниченным.
Для Windows-клиентов это обычно не представляет проблемы, поскольку они используют RPC-вызовы к контроллерам домена для получения всей необходимой информации. Однако SSSD работает иначе: он использует только LDAP и Kerberos. В такой конфигурации учётные данные локального домена не принимаются удалённым, поэтому SSSD не может автоматически получить информацию о пользователях и группах удалённого домена.
Чтобы обойти это ограничение, можно вручную настроить SSSD, используя учётную запись обычного пользователя без привилегий, с случайным паролем и неограниченным сроком действия, общую для всех клиентских машин.
Настройка на контроллере домена:
  1. Создать учётную запись с неограниченным сроком действия:
    # samba-tool user create --random-password sssd-trust
    # samba-tool user setexpiry sssd-trust --noexpiry
    
  2. Экспортировать таблицу ключей (keytab):
    # samba-tool domain exportkeytab /tmp/sssd-trust.keytab --principal=sssd-trust
    
  3. Безопасно распространить полученный файл keytab на клиентские машины, например, с помощью групповой политики Управление файлами.

    Важно

    Рекомендуется размещать файл keytab не на контроллере домена, а на выделенном файловом сервере или доменной клиентской машине, чтобы минимизировать риски.
На клиентах добавить в секцию доверенного домена в /etc/sssd/sssd.conf параметры:
ldap_sasl_authid = sssd-trust@REALM
ldap_krb5_keytab = /path/to/keytab
krb5_keytab = /path/to/keytab
Эти параметры можно также задать через групповую политику Управление INI-файлами.

Таблица 41.1. Исходные данные

Домен
Контроллер домена
Клиентская машина
TEST.ALT
dc1.test.alt
ws.test.alt
EXAMPLE.ALT
s1.example.alt
ws.example.alt
Пример настройки:
  1. Проверить доверие на dc1.test.alt:
    # samba-tool domain trust list
    Type[External] Transitive[No]  Direction[OUTGOING] Name[example.alt]
    
    Домен TEST.ALT доверяет домену EXAMPLE.ALT и пользователи из EXAMPLE.ALT должны иметь возможность проходить аутентификацию на клиентах, входящих в домен TEST.ALT.
  2. На s1.example.alt выполнить команды для создания учётной записи и keytab:
    # samba-tool user create --random-password sssd-trust
    # samba-tool user setexpiry sssd-trust --noexpiry
    # samba-tool domain exportkeytab /tmp/sssd-trust.keytab --principal=sssd-trust
    
  3. Перенести sssd-trust.keytab на машину ws.example.alt.
  4. Настроить политику Управление файлами для распространения файла sssd-trust.keytab с машины ws.example.alt на все клиентские машины домена TEST.ALT:
    Политика для распространения файла keytab

    Примечание

    При настройке общей папки на машине ws.example.alt необходимо, чтобы в секции [global] файла /etc/samba/smb.conf было указано:
    map to guest = Bad User
    Это позволит клиентам из TEST.ALT подключаться к общей папке без аутентификации.
  5. Настроить политику Управление INI-файлами для добавления в секцию доверенного домена в /etc/sssd/sssd.conf на всех клиентах TEST.ALT параметров:
    ldap_sasl_authid = sssd-trust@EXAMPLE.ALT
    ldap_krb5_keytab = /etc/sssd-trust.keytab
    krb5_keytab = /etc/sssd-trust.keytab
    
    Пример настройки параметра ldap_sasl_authid:
    Настройка параметра ldap_sasl_authid
  6. После применения групповых политик на машине ws.test.alt должен появиться файл sssd-trust.keytab и соответствующие параметры в /etc/sssd/sssd.conf.
  7. Перезапустить службу sssd и проверить доступность пользователей из домена EXAMPLE.ALT:
    # systemctl restart sssd.service
    # getent passwd EXAMPLE\\kim
    kim@example.alt:*:915401106:915401106:kim:/home/example.alt/kim:/bin/bash
    

41.2.2. Очистка кеша SSSD при возникновении проблем

При возникновении проблем, например, если в списке доменов отображаются записи от удалённых доверительных отношений, рекомендуется выполнить сброс кеша SSSD:
  1. Остановить службу sssd:
    # systemctl stop sssd.service
    
  2. Удалить все файлы кеша SSSD:
    # rm -f /var/lib/sss/db/*
    # rm -f /var/lib/sss/mc/*
    # rm -f /var/lib/sss/pubconf/krb5.include.d/*
    # rm -f /var/lib/sss/pubconf/*
    # rm -f /var/lib/sss/secrets/*
    
  3. Запустить службу sssd:
    # systemctl start sssd.service
    
  4. При необходимости пересоздать keytab:
    # net ads keytab create
    
  5. Перезапустить службу sssd для применения изменений:
    # systemctl restart sssd.service
    

41.3. Назначение ролей для пользователей трастового домена

При использовании трастовых отношений возможна ситуация, когда пользователь из доверенного домена состоит только в глобальной группе Domain Users и, в отличие от пользователей основного домена, не получает доступ к локальным устройствам и сервисам (сканирование, звук, монтирование файловых систем и т. п.). Это связано с тем, что такие пользователи не включены в локальную роль users.
Пример проблемы:
# id EXAMPLE\\kim
uid=1001103(EXAMPLE\kim) gid=1000513(EXAMPLE\domain users) группы=1000513(EXAMPLE\domain users),1001103(EXAMPLE\kim)
Пользователь не состоит в группе users, поэтому лишён доступа к периферийным устройствам.
Для решения этой проблемы необходимо явно сопоставить глобальные группы доверенного домена с локальными ролями (подробнее о ролях см. раздел Отображение глобальных групп на локальные).

Примечание

Если используется аутентификация через SSSD и трастовый домен на базе Samba AD, а также применяются стандартные группы domain users и domain admins, дополнительная настройка сопоставления может не потребоваться.
Сопоставление ролей для доверенного домена EXAMPLE.ALT:
# roleadd "EXAMPLE\\domain users" users
# roleadd "EXAMPLE\\domain admins" localadmins
Проверка:
# id EXAMPLE\\kim
uid=1001103(EXAMPLE\kim) gid=1000513(EXAMPLE\domain users) группы=1000513(EXAMPLE\domain users),1001103(EXAMPLE\kim),100(users),36(vmusers),948(usershares),80(cdwriter),22(cdrom),81(audio),995(video),19(proc),83(radio),970(camera),71(floppy),961(xgrp),962(scanner),14(uucp),974(fuse),959(vboxadd),958(vboxsf)
Теперь пользователь состоит в группе users и имеет доступ к устройствам.

Важно

В русскоязычных версиях MS Windows Server встроенные группы Domain Users и Domain Admins имеют локализованные имена Пользователи домена и Администраторы домена.
Следует убедиться, что в команде roleadd используется имя группы в том виде, в котором оно отображается в домене (учитывая локализацию, если необходимо).
Сопоставление ролей для доверенного домена WIN.ALT (локализованные имена):
  • для SSSD (без указания домена):
    # roleadd "пользователи домена" users
    # roleadd "администраторы домена" localadmins
    
    
  • для winbind (с указанием домена):
    # roleadd "WIN\\пользователи домена" users
    # roleadd "WIN\\администраторы домена" localadmins
    

Глава 42. Удаление доверия

42.1. На стороне Samba

Пример удаления доверия на контроллере домена dc1.test.alt:
# samba-tool domain trust delete EXAMPLE.ALT -U administrator@EXAMPLE.ALT
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-1455776928-3410124986-2843404052]
RemoteDC Netbios[S1] DNS[s1.example.alt] ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6]
Password for [administrator@EXAMPLE.ALT]:
RemoteDomain Netbios[EXAMPLE] DNS[example.alt] SID[S-1-5-21-3274802069-598906262-3677769431]
RemoteTDO deleted.
Проверка:
# samba-tool domain trust list

42.2. На стороне Windows Server с AD

Удаление доверия:
  1. Открыть Диспетчер серверов, выбрать СредстваActive Directory — Домены и Доверие:
    Диспетчер серверов
  2. В открывшемся окне в контекстном меню домена выбрать пункт Свойства:
    Контекстное меню домена
    Откроется окно свойств домена. Необходимо перейти на вкладку Отношения доверия и нажать кнопку Создать отношение доверия…:
    Окно свойств домена
  3. В группе Домены, которым доверяет этот домен (исх. отношения доверия) или группе Домены, которые доверяют этому домену (вх. отношения доверия) выбрать доверие, которое требуется удалить, а затем нажать кнопку Удалить.
  4. В открывшемся окне выбрать где нужно удалить доверие и нажать кнопку ОК.
    Удаление доверия
    При выборе параметра Нет, удалить отношение доверия только в локальном домене, рекомендуется повторить эту процедуру для домена второй стороны. При выборе параметра Да, удалить отношение доверия в локальном и другом доменах, необходимо будет ввести учетную запись и пароль администратора для домена второй стороны.

Часть VIII. Администрирование домена

Содержание

43. Управление пользователями и группами
43.1. В ADMC
43.2. С помощью утилиты samba-tool
44. Администрирование DNS
44.1. DNS-записи при вводе машины в домен
44.2. Утилита samba-tool
44.2.1. Работа с DNS-записями
44.2.2. Работа с DNS-зонами
44.2.3. Получение информации о DNS-серверах
44.3. Утилита nsupdate
44.4. Oснастка DNS в RSAT
44.4.1. Работа с DNS-записями
44.4.2. Работа с DNS-зонами
44.5. Динамическое обновление DNS-записей
44.5.1. На стороне клиента
44.6. Обновление IP-адресов вручную
44.7. Известные проблемы
44.7.1. Неверные права DNS-записей машины в домене
45. Администрирование сайтов и подсетей
45.1. Утилита samba-tool
46. Групповые управляемые учётные записи служб (gMSA)
46.1. Команды для работы с корневыми ключами gMSA (KDS)
46.2. Операции с учетными записями gMSA
46.3. Пример настройки
47. Управление парольными политиками
47.1. Глобальные парольные политики
47.2. Объекты настроек паролей (PSO)
47.2.1. В ADMC
47.2.2. С помощью samba-tool
48. Резервное копирование и восстановление домена
48.1. Резервное копирование и восстановление из резервной копии
48.1.1. Создание резервной копии в онлайн и офлайн режимах
48.1.2. Переименованная резервная копия
48.1.3. Рекомендуемая стратегия восстановления домена
48.1.4. Отладочная информация
48.2. Восстановление произвольного контроллера домена после фатального сбоя
49. Роли FSMO
49.1. Семь ролей FSMO
49.1.1. Эмулятор PDC
49.1.2. Хозяин RID
49.1.3. Хозяин схемы
49.1.4. Хозяин именования доменов
49.1.5. Хозяин инфраструктуры
49.1.6. Хозяин зоны DNS домена
49.1.7. Хозяин зоны DNS леса
49.2. Просмотр и передача ролей FSMO
49.2.1. ADMC
49.2.2. Инструмент samba-tool
50. Функциональные уровни и схема каталога
51. Настройка Samba для привязки к определённым интерфейсам
52. Создание keytab-файла
52.1. Назначение и формат SPN
52.2. Создание SPN и генерация keytab с помощью samba-tool
53. Настройка DHCP-сервера для обновления DNS-записей
53.1. Настройка DHCP-сервера
53.2. Настройка переключения DHCP
54. Настройка LDAP через SSL (LDAPS)
54.1. Параметры smb.conf для LDAPS
54.2. Ограничение шифров TLS
54.3. Использование автоматически сгенерированного самоподписанного сертификата Samba
54.4. Использование пользовательского самоподписанного сертификата
54.5. Использование доверенного сертификата
54.6. Проверка сертификата
55. Управление паролями локальных администраторов в инфраструктуре службы каталогов
55.1. Настройка
55.1.1. LAPS в домене на контроллерах ALT (Samba AD)
55.1.2. Настройка Windows LAPS
55.1.3. Настройка клиентских машин c ОС «Альт»
55.2. Проверка применения групповых политик
56. Аутентификация других сервисов в домене
56.1. Настройка аутентификации Kerberos для веб-сервера Apache
56.1.1. Создание keytab-файла
56.1.2. Настройка Apache2
56.1.3. Проверка аутентификации
56.2. Настройка аутентификации Kerberos для веб-сервера Nginx
56.2.1. Создание keytab-файла
56.2.2. Настройка Nginx
56.2.3. Проверка аутентификации
56.3. Настройка браузеров для SSO
56.3.1. Настройка Mozilla Firefox
56.3.2. Настройка Chromium
56.3.3. Настройка «Яндекс.Браузера»
57. FAST в Kerberos
57.1. Что такое FAST
57.2. Принцип работы FAST
57.3. Armoring (бронирование)
57.3.1. Источники брони (armor)
57.3.2. Источники TGT для брони
57.3.3. FAST Request
57.3.4. FAST Response
57.4. Конфигурация клиентских машин
57.4.1. Winbind
57.4.2. SSSD
57.4.3. Windows
58. Централизованная настройка политик Kerberos
59. Распределенная файловая система (DFS)
59.1. Пространство DFS-имен
59.2. Настройка DFS на сервере Samba
60. Настройка SSSD
60.1. Журналирование SSSD
60.1.1. Файлы журналов SSSD
60.1.2. Уровни журналирования SSSD
60.1.3. Настройка уровня журналирования для SSSD в файле sssd.conf
60.1.4. Настройка уровня журналирования для SSSD с помощью команды sssctl
60.2. Настройки SSSD в ЦУС
60.3. Включение автономной аутентификации
61. Samba в режиме файлового сервера
62. Пользовательские общие ресурсы в Samba (Usershares)
62.1. Управление настройками через control
62.2. Настройка общего доступа
62.2.1. В файловом менеджере
62.2.2. В консоли
62.3. Просмотр публичных ресурсов
62.3.1. В файловом менеджере
62.3.2. В консоли
63. Монтирование общих ресурсов samba
63.1. Подключение с использованием gio
63.2. Подключение с использованием pam_mount
63.3. Подключение с использованием Autofs
64. Журналирование в Samba
64.1. Настройка бэкендов
64.2. Настройка файлов журнала
64.3. Уровни журналирования
64.3.1. Установка уровня журналирования в файле smb.conf
64.3.2. Установка уровня журналирования при выполнении команд
64.4. Настройка ведения журнала аудита
64.4.1. Регистрация событий аутентификации и авторизации
64.4.2. Регистрация изменений в базе данных
64.5. Интерпретация журналов аудита JSON
64.5.1. Общие атрибуты
64.5.2. Атрибуты событий аутентификации (Authentication)
64.5.3. Атрибуты событий авторизации (Authorization)
64.5.4. Атрибуты событий, связанных с изменениями в базе данных (dsdbChange)
64.5.5. Атрибуты событий, связанных с транзакциями (dsdbTransaction)
64.5.6. Атрибуты событий, связанных с изменением пароля (passwordChange)
64.5.7. Атрибуты событий, связанных с изменением группы (groupChange)
65. Усиление безопасности DC
65.1. Возможность анонимного получения списка пользователей, групп
65.2. Отключение Netbios
65.3. Отключение роли сервера печати
65.4. Отключение NTLMv1
65.5. Генерация дополнительных хешей паролей
65.6. Защита DNS-записей wpad и isatap
65.7. Ограничение диапазона динамических портов
65.8. Аудит запросов к каталогам SYSVOL и NetLogon
65.9. Отправка логов аудита в rsyslog
65.9.1. Настройка rsyslog
65.9.2. rsyslog на том же узле
65.9.3. rsyslog на вышестоящем узле
66. Планирование и настройка диапазонов идентификаторов UID и GID (Winbind/IDMapping)
66.1. Планирование диапазонов идентификаторов
66.2. Домен * по умолчанию
66.3. Использование tdb
66.4. Использование ad
66.5. Использование rid
66.6. Использование autorid
67. Инструменты командной строки
67.1. samba-tool
67.2. wbinfo
67.3. net
67.4. adcli
67.5. ldapsearch
67.5.1. Фильтр
67.5.2. Формат вывода
67.5.3. Примеры
67.6. sssctl
67.7. testparm
68. Конфигурационные файлы
68.1. smb.conf
68.2. krb5.conf
68.3. sssd.conf
68.4. resolv.conf
68.5. Bind

Глава 43. Управление пользователями и группами

43.1. В ADMC

Для управления пользователями и группами в Альт Домен можно использовать модуль удалённого управления базой данных конфигурации (ADMC). Подробнее см. Модуль удаленного управления базой данных конфигурации (ADMC).

43.2. С помощью утилиты samba-tool

Для управления пользователями и группами в Альт Домен можно использовать группы подкоманд user и group утилиты samba-tool.

Примечание

Для выполнения команды на удаленном компьютере можно использовать опцию -H или --URL= с указанием URI LDAP-сервера. Например:
# samba-tool user add domainuser Qwerty1 -H ldap://<DC> -Uadministrator
По умолчанию в качестве значения опции -H передается текущий узел в формате ldap://<имя узла>.

Таблица 43.1. Команды samba-tool для управления пользователями домена

Команда
Описание
Примечание
user add <имя пользователя> [<пароль>] [опции]
Создать нового пользователя
Переданное в команде значение <имя пользователя> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Оно должно быть уникальным.
Некоторые опции:
  • --surname — фамилия пользователя;
  • --given-name — имя пользователя;
  • --initials — инициалы;
  • --must-change-at-next-login — пользователь должен изменить пароль при первом входе в домен;
  • --random-password — сформировать пароль случайным образом;
  • --smartcard-required — требовать наличие смарт-карты при входе в интерактивном режиме;
  • --use-username-as-cn — включить принудительное использование имени пользователя в качестве общего имени (CN);
  • --userou — имя (DN) альтернативного расположения (без domainDN), в котором будет создан пользователь (вместо используемого по умолчанию CN=Users);
  • --company — компания пользователя;
  • --department — подразделение, к которому относится пользователь;
  • --description — информация о пользователе;
  • --mail-address — адрес электронной почты пользователя;
  • --rfc2307-from-nss — включить копирования атрибутов пользователя Unix из диспетчера службы имен (NSS); значение параметра переопределяется в случае явного задания числового идентификатора пользователя (UID), числового идентификатора основной группы пользователя (GID), информации о пользователе (GECOS) или интерпретатора команд, который должен запускаться при входе пользователя в систему (shell);
  • --nis-domain — домен службы сетевой информации (NIS) для пользователя (Unix/RFC 2307);
  • --unix-home — домашний каталог пользователя (Unix/RFC 2307);
  • --uid — имя пользователя (Unix/RFC 2307);
  • --uid-number — уникальный числовой идентификатор пользователя (Unix/RFC 2307);
  • --gid-number — числовой идентификатор основной группы пользователя (Unix/RFC 2307);
  • --gecos — информация о пользователе в поле GECOS (Unix/RFC 2307);
  • --login-shell — оболочка (shell), которая должна запускаться при входе в систему пользователя (Unix/RFC 2307)
user create <имя пользователя> [<пароль>] [опции]
Создать нового пользователя
Команда доступна только в целях совместимости. Вместо этой команды рекомендуется использовать команду samba-tool user add
user delete <имя пользователя> [опции]
Удалить существующего пользователя
При удалении учетной записи также удаляются все связанные с нею разрешения, права и членства в группах
user disable (<имя пользователя>| --filter <фильтр>) [опции]
Отключить пользовательский аккаунт
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене
user edit <имя пользователя> [опции]
Редактировать объект пользовательского аккаунта
В опции --editor=<редактор> можно указать редактор (по умолчанию vi)
user enable (<имя пользователя>| --filter <фильтр>) [опции]
Включить пользовательский аккаунт
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене
user list [опции]
Вывести список пользователей
По умолчанию выводятся sAMAccountNames пользователей.
Можно использовать следующие опции:
  • --full-dn — показать различающиеся имена пользователей (CN) вместо sAMAccountNames;
  • -b BASE_DN|--base-dn=BASE_DN — вывести пользователей с указанным базовым DN;
  • --hide-expired — не выводить просроченные учётные записи пользователей;
  • --hide-disabled — не выводить отключенные учётные записи пользователей
user setprimarygroup <имя пользователя> <имя группы> [опции]
Установить основную группу для учётной записи пользователя
user getgroups <имя пользователя> [опции]
Вывести список групп, в которые входит учётная запись пользователя напрямую
Можно использовать следующие опции:
  • --full-dn — показать в списке вместо имен групп SAM (sAMAccountName) их полные уникальные имена (Distinguished Name, DN)
user show <имя пользователя> [опции]
Вывести атрибуты учетной записи
В опции --attributes=USER_ATTRS можно указать разделённый запятыми список атрибутов, значения которых требуется отобразить. Для вывода скрытых атрибутов, их необходимо явно указать в параметре --attributes
user move <имя пользователя> <контейнер> [опции]
Переместить учётную запись пользователя в указанную организационную единицу или контейнер
Имя пользователя указывается в команде в формате sAMAccountName.
Имя организационной единицы или контейнера можно указать как полное DN, так и без компонента domainDN
user password [опции]
Изменить пароль текущей учетной записи (пользователя, прошедшего аутентификацию)
Если пароль не передается в открытом виде в значении параметра --newpassword, пользователь получит запрос на ввод пароля в командной строке
user rename <имя пользователя> [опции]
Переименовать пользователя и изменить его атрибуты
По умолчанию выводятся sAMAccountNames пользователей.
Для удаления атрибута следует использовать пустое значение атрибута.
Имя пользователя указывается в команде в формате sAMAccountName.
Некоторые опции:
  • --surname — новая фамилия;
  • --given-name — новое имя;
  • --initials — новые инициалы;
  • --force-new-cn — новый CN (вместо использования комбинации имени, инициалов и фамилии);
  • --reset-cn — установить CN на комбинацию имени, инициалов и фамилии по умолчанию;
  • --display-name — новое отображаемое имя;
  • --mail-address — новая электронная почта;
  • --samaccountname=SAMACCOUNTNAME — новое имя для входа (sAMAccountName);
  • --upn — новое основное имя пользователя
user setexpiry (<имя пользователя>| --filter <фильтр>) [опции]
Установить срок действия для учётной записи пользователя
По истечении заданного периода учетная запись отключается; пользователь не может получать доступ к ресурсам домена. При этом сохраняются связанные с учетной записью разрешения, права и членства.
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене;
  • --days — продолжительность периода в днях;
  • --noexpiry — период действия неограничен
user setpassword (<имя пользователя>| --filter <фильтр>) [опции]
Установить или сбросить пароль учетной записи пользователя
Если пароль не передается в открытом виде в значении параметра --newpassword, пользователь получит запрос на ввод пароля в командной строке.
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене;
  • --newpassword — новый пароль;
  • --must-change-at-next-login — пользователь должен изменить пароль при первом входе в домен;
  • --random-password — сформировать пароль случайным образом;
  • --smartcard-required — требовать наличие смарт-карты при входе в интерактивном режиме
user unlock (<имя пользователя>| --filter <фильтр>) [опции]
Разблокировать учётную запись пользователя в домене
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене
user getpassword (<имя пользователя>| --filter <фильтр>) [опции]
Получить атрибуты пароля учётной записи пользователя
Параметры вызова:
  • --filter — LDAP-фильтр для поиска объектов в домене;
  • --attributes — атрибуты (через запятую), которые требуется вывести или передать скрипту, заданному в параметре --script. В параметре могут передаваться любые атрибуты, заданные в схеме каталога, а также следующие виртуальные атрибуты: virtualClearTextUTF16, virtualClearTextUTF8, virtualCryptSHA256, virtualCryptSHA512, virtualKerberosSalt, virtualSSHA, virtualSambaGPG, virtualDigest01..29;
  • --decrypt-samba-gpg — дешифровать пароль SambaGPG (должен быть установлен пакет python3-module-gpg)
user syncpasswords [--cache-ldb-initialize] [опции]
Синхронизировать пароли всех учётных записей пользователей с помощью дополнительного сценария
Эта команда должна выполняться только на одном контроллере домена (обычно на PDC).
В первый раз команда должна выполняться с параметром, обеспечивающим инициализацию кеша: --cache-ldb-initialize. Для корректной инициализации кеша требуется передать список атрибутов в параметре --attributes

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
# samba-tool user add --help
Примеры:
  • создать пользователя ivanov в подразделении KDE, пользователь должен изменить пароль при следующем входе в систему:
    # samba-tool user add ivanov --given-name='Иван' \
    --surname='Иванов' --mail-address='ivanov@test.alt' \
    --userou='OU=KDE' --must-change-at-next-login
    
    New Password:
    Retype Password:
    User 'ivanov' added successfully
    
  • создать пользователя kim со случайным паролем, с указанием удаленного LDAP-сервера, пользователь должен изменить пароль при следующем входе в систему:
    # samba-tool user add kim --given-name='Виталий' \
    --surname='Ким' --mail-address='kim@test.alt' \
    --must-change-at-next-login  --random-password \
    -H ldap://dc2.test.alt -U administrator
    
    Password for [TEST\administrator]:
    User 'kim' added successfully
    
  • установить, что срок действия пароля пользователя ivanov никогда не истекает:
    # samba-tool user setexpiry ivanov --noexpiry
    
    Expiry for user 'ivanov' disabled.
    
  • задать 20-дневный период действия (начиная с текущей даты) для учетной записи kim:
    # samba-tool user setexpiry kim --days=20
    
    Expiry for user 'kim' set to 20 days.
    
  • просмотреть список учётных записей пользователей:
    # samba-tool user list
    Guest
    ivanov
    Administrator
    krbtgt
    kim
    
  • отключить пользователя ivanov:
    # samba-tool user disable ivanov
    
  • включить всех пользователей, почтовый ящик которых начинается на k:
    # samba-tool user enable --filter=mail=k*
    Enabled user 'mail=k*'
    
  • изменить пароль пользователя ivanov:
    # samba-tool user setpassword ivanov
    
    New Password:
    Retype Password:
    Changed password OK
    
  • переместить пользователя kim в подразделение KDE:
    # samba-tool user move kim 'OU=KDE'
    
    Moved user "kim" into "OU=KDE,DC=test,DC=alt"
    
  • получить информацию о пароле пользователя ivanov:
    # samba-tool user getpassword ivanov \
    --attributes=pwdLastSet,virtualClearTextUTF8
    
    dn: CN=Иван Иванов,OU=TEST,DC=test,DC=alt
    pwdLastSet: 133628348830281440
    
    Got password OK
    
  • удалить пользователя ivanov:
    # samba-tool user delete ivanov
    
    Deleted user ivanov
    

Предупреждение

Не следует допускать одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). Если компьютер с таким именем заведён, удалить его можно командой: pdbedit -x -m имя

Примечание

При удалении учетной записи также удаляются все связанные с нею разрешения, права и членства в группах. Если в последствии в домен будет добавлена учетная запись с тем же именем, она не получит разрешения права или членства удаленной записи, так как ей будет присвоен новый идентификатор безопасности (SID).
Учетная запись может быть отключена, например, по следующим причинам:
  • достигнуто максимальное количество попыток входа, установленное для учетной записи политикой;
  • учетная запись отключена администратором;
  • истек период действия учетной записи.
Команда включения учетной записи может использоваться администратором как для восстановления доступа отключенной ранее учетной записи к ресурсам домена, так и для включения группы учетных записей, созданных с разрешениями по умолчанию.

Таблица 43.2. Команды samba-tool для управления группами

Команда
Описание
Примечание
group add <имя группы> [опции]
Создать новую группу
Переданное в команде значение <имя группы> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Оно должно быть уникальным.
Некоторые опции:
  • --groupou — имя (DN) альтернативного расположения (без domainDN), в котором будет создана группа (вместо используемого по умолчанию CN=Users);
  • --group-scope — область действия, возможные значения: Domain, Global, Universal;
  • --group-type — тип группы, возможные значения: Security, Distribution;
  • --description — описание группы;
  • --mail-address — адрес электронной почты группы;
  • --notes — дополнительная информация;
  • --gid-number — числовой идентификатор группы Unix/RFC 2307;
  • --nis-domain — домен службы сетевой информации (NIS);
  • --special — используется для создания группы безопасности с именем Protected Users
group create <имя группы> [опции]
Создать новую группу
Доступна только в целях совместимости. Рекомендуется вместо этой команды использовать команду samba-tool group add
group addmembers <имя группы> (<список участников>|--member-dn=<member-dn>) [опции]
Добавить участников в группу
Команда позволяет добавить в группу одного или нескольких участников (указанных через запятую). В качестве участника группы может выступать учетная запись пользователя, учетная запись компьютера или другая группа, существующая в домене.
Некоторые опции:
  • --member-dn — уникальное составное имя (DN) добавляемого в группу нового участника (значение опции --object-types игнорируется);
  • --object-types — список типов объектов (через запятую); указанные типы используются в качестве фильтра при выполнении поиска для указанных в команде участников; возможные значения: user, group, computer, serviceaccount, contact, all; значение по умолчанию — user,group,computer;
  • --member-base — базовое уникальное имя (DN) для поиска участников группы; значение по умолчанию — уникальное имя (DN) домена
group delete <имя группы> [опции]
Удалить группу
Операция удаления является необратимой.
При удалении группы также удаляются все связанные с нею разрешения и права, а также унаследованные от нее разрешения и права участников
group edit <имя группы> [опции]
Редактировать объект группы
В опции --editor=<редактор> можно указать редактор (по умолчанию vi)
group addunixattrs <имя группы> <gidnumber> [опции]
Добавить атрибуты Unix/RFC 2307 для группы
Для использования этих атрибутов для сопоставления UID/GID в конфигурации (smb.conf) должен быть задан параметр idmap_ldp:use rfc2307 = Yes
group list [опции]
Вывести список групп
По умолчанию выводится список имен учетных записей SAM (sAMAccountName).
Можно использовать следующие опции:
  • --full-dn — выводить уникальные имена (DN) вместо sAMAccountNames;
  • b BASE_DN|--base-dn=BASE_DN — выводить в списке только группы с указанным базовым уникальным именем (DN)
group listmembers <имя группы> [опции]
Вывести список участников данной группы
По умолчанию выводятся sAMAccountNames участников. Если sAMAccountName недоступен, будет использоваться CN.
Можно использовать следующие опции:
  • --full-dn — показать различающиеся имена участников (CN) вместо sAMAccountNames;
  • --hide-expired — не выводить членов группы с истекшим сроком действия;
  • --hide-disabled — не выводить отключённых членов группы
group move <имя группы> <контейнер> [опции]
Переместить группу в указанную организационную единицу или контейнер
Имя группы указывается в команде в формате sAMAccountName.
Имя организационной единицы или контейнера можно указать как полное DN или без компонента domainDN
group removemembers <имя группы> (<список участников>|--member-dn=<member-dn>) [опции]
Удалить участников из группы
Команда позволяет удалить из группы одного или нескольких участников (указанных через запятую).
При удалении из группы участник теряет все унаследованные от нее разрешения и права.
Некоторые опции:
  • --member-dn — уникальное составное имя (DN) удаляемого из группы участника (значение опции --object-types игнорируется);
  • --object-types — список типов объектов (через запятую); указанные типы используются в качестве фильтра при выполнении поиска для указанных в команде участников; возможные значения: user, group, computer, serviceaccount, contact, all; значение по умолчанию — user,group,computer;
  • --member-base — базовое уникальное имя (DN) для поиска участников группы; значение по умолчанию — уникальное имя (DN) домена
group show <имя группы> [опции]
Вывести группу и её атрибуты
В опции --attributes=USER_ATTRS можно указать список атрибутов (через запятую)
group stats [опции]
Показать статистику для общих групп и членства в группах
В результате выполнения команды выводятся следующие сведения:
  • общее количество групп;
  • общее количество участников (без учета вложенности);
  • среднее количество участников в группе;
  • максимальное количество участников в группе;
  • медианное количество участников в группе;
  • распределение участников по группам с точки зрения количественного состава
group rename <имя группы> [опции]
Переименовать группу и изменить её атрибуты
Для удаления атрибута следует использовать пустое значение атрибута.
Имя группы указывается в команде в формате sAMAccountName.
Можно использовать следующие опции:
  • --force-new-cn=NEW_CN — новый CN (вместо использования sAMAccountName);
  • --reset-cn — установить CN равным sAMAccountName;
  • --mail-address=MAIL_ADDRESS — новая электронная почта;
  • --samaccountname=SAMACCOUNTNAME — новое имя для входа (sAMAccountName)

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
# samba-tool group add --help
В группу могут входить учетные записи пользователей и компьютеров, а также другие группы. Такое объединение объектов в рамках одной сущности упрощает работу с ними, включая выполнение задач по управлению безопасностью и системному администрированию.
Группы также могут использоваться для создания списков рассылки (группы рассылки). Для этого при вызове команды создания группы должна быть передана опция --group-type=Distribution.
Группы располагаются в подразделениях (OU). Область действия (scope) группы определяет место группы в дереве доменов.
Примеры:
  • добавить группу безопасности:
    # samba-tool group add office --description='Simple group'
    Added group office
    
  • добавить новую группу рассылки с указанием удалёного LDAP-сервера:
    # samba-tool group add manager --group-type=Distribution \
     -H ldap://dc2.test.alt -U administrator
    
    Added group manager
    
  • добавить новую группу в соответствии с RFC 2307 в домен NIS samdom с GID 12345:
    # samba-tool group add mygroup --nis-domain=samdom --gid-number=12345
    Added group mygroup
    
  • удалить группу:
    # samba-tool group delete office
    Deleted group office
    
  • добавить пользователя ivanov в группу «Domain Users»:
    # samba-tool group addmembers "Domain Users" ivanov
    
  • добавить в группу mygroup пользователей kim, ivanov и группу manager:
    # samba-tool group addmembers mygroup manager,kim,ivanov
    
  • удалить пользователя ivanov из группы «Domain Users»:
    # samba-tool group removemembers "Domain Users" ivanov
    
  • переместить группу manager в подразделение OU:
    # samba-tool group move manager 'OU=OU'
    Moved group "manager" into "OU=OU,DC=test,DC=alt"
    
  • вывести список пользователей группы «Domain Users»:
    # samba-tool group listmembers "Domain Users"
    
  • получить определённые атрибуты группы manager:
    # samba-tool group show manager --attributes=member,objectGUID
    dn: CN=test2,CN=Users,DC=test,DC=alt
    objectGUID: 2f708ea2-f42c-4344-af22-bc243301c777
    member: CN=Иван Иванов,OU=KDE,DC=test,DC=alt
    
  • получить общую информацию о группах и их участниках:
    # samba-tool group stats
    
    Group membership statistics*
    -------------------------------------------------
    Total groups: 48
    Total memberships: 32
    Average members per group: 0.67
    Max members: 8 (Denied RODC Password Replication Group)
    Median members per group: 0.0
    
    Members        Number of Groups
    -------------------------------------------------
              0-1  42
              2-4  5
              5-9  1
    
    * Note this does not include nested group membership
    
В Альт Домен поддерживается работа с группой безопасности «Protected Users» («Защищенные пользователи»). В данную группу должны включаться только учетные записи пользователей. После добавления в группу в отношении учетной записи начинают действовать следующие ограничения:
  • недоступна аутентификация по протоколу NTLM;
  • пользователю не выдаются и от пользователя не принимаются билеты Kerberos с использованием алгоритма шифрования RC4 (используется алгоритм AES);
  • максимальный период действия билета — 4 часа;
  • недоступно неограниченное и ограниченное делегирование Kerberos.

Примечание

Группа «Защищенные пользователи» доступна только при функциональном уровне домена Windows Server 2012 R2.
Для создания группы безопасности «Защищенные пользователи» следует создать группу «Protected Users» с указанием опции --special:
# samba-tool group add 'Protected Users' --special

Глава 44. Администрирование DNS

Для связывания доменных имен с IP-адресами используются A-записи (для IPv4) и AAAA-записи (для IPv6), которые создаются при настройке DNS и содержат соответствующий IP-адрес узла. PTR-записи применяются для обратного разрешения, связывая IP-адреса с доменными именами в обеих версиях протокола, и создаются в зоне обратного DNS.
В процессе эксплуатации IP-адреса узла могут меняться (из-за перезагрузки устройства, изменений в конфигурации сети или обновления через DHCP). В таких случаях необходимо обновить соответствующие DNS-записи, чтобы сохранить корректное разрешение имен и обеспечить работу служб аутентификации, таких как Kerberos или LDAP, для успешной проверки подлинности пользователей. Это обновление может выполняться автоматически как со стороны DHCP-сервера, так и со стороны клиента домена. DHCP-сервер может обновлять записи в DNS при изменении IP-адресов, в то время как клиент домена может обновлять записи через такие службы, как Winbind и SSSD, а также через встроенные функции операционных систем (на Windows-клиенте). Возможно также ручное обновление записей администраторами.

44.1. DNS-записи при вводе машины в домен

При вводе машины в домен в DNS-записи на DNS-сервере прописывается текущий IP-адрес машины.
Например, если машина с именем work.test.alt вводится в домен и имеет IP-адрес 192.168.0.55 (независимо от того, получен ли он статически или через DHCP), то на DNS-сервере будет создана (или обновлена) запись:
work.test.alt. IN A 192.168.0.55
Эта запись будет храниться в DNS-зоне прямого просмотра домена и использоваться для разрешения имени work.test.alt в IP-адрес 192.168.0.55.
PTR DNS-запись автоматически не создается, даже если существует обратная зона в базе данных AD. Для её создания необходимо на клиенте включить необходимые настройки для обновления PTR DNS-записей (то есть в дальнейшем вместо обновления запись будет зарегистрирована). В противном случае запись нужно будет создать вручную:
$ samba-tool dns add dc1.test.alt 0.168.192.in-addr.arpa 55 PTR work.test.alt -U administrator
Password for [TEST\administrator]:
Record added successfully
При этом будет создана DNS-запись:
55.0.168.192.in-addr.arpa. 3600 IN PTR work.test.alt.
Проверить наличие записи можно, выполнив команду:
$ host -t PTR 192.168.0.55 dc1.test.alt
Using domain server:
Name: dc1.test.alt
Address: 192.168.0.132#53
Aliases:

55.0.168.192.in-addr.arpa domain name pointer work.test.alt.

Примечание

Обратная зона создается так:
$ samba-tool dns zonecreate dc1.test.alt 0.168.192.in-addr.arpa -U administrator
Password for [TEST\administrator]:
Zone 0.168.192.in-addr.arpa created successfully

44.2. Утилита samba-tool

Для администрирования службы доменных имен (DNS) в Альт Домен можно использовать подкоманду dns утилиты samba-tool.

44.2.1. Работа с DNS-записями

Таблица 44.1. Команды управления DNS-записями samba-tool

Команда
Описание
Примечание
dns add <сервер> <зона> <имя> <A|AAAA|PTR|CNAME|NS|MX|SRV|TXT> <данные>
Добавить новую запись
Параметры вызова:
  • сервер — IP-адрес или доменное имя DNS-сервера;
  • зона — зона DNS;
  • имя — имя DNS-записи;
  • тип добавляемой записи с данными
dns delete <сервер> <зона> <имя> <A|AAAA|PTR|CNAME|NS|MX|SRV|TXT> <данные>
Удалить DNS-запись
dns edit <сервер> <зона> <имя> <A|AAAA|PTR|CNAME|NS|MX|SOA|SRV|TXT> <текущие данные> <новые данные>
Изменить DNS-запись
Дополнительно для изменения доступен тип записи SOA (Start of Authority), являющейся начальной записью зоны, со следующими данными (порядок пунктов в списке ниже соответствует порядку следования параметров в строке):
  • nameserver — доменное имя DNS-сервера, на котором хранятся другие DNS-записи;
  • email — адрес электронной почты администратора зоны (вместо @ указывается точка, например для адреса user@test.alt указывается значение user.test.alt);
  • serial — серийный номер файла зоны, представляющий собой номер версии записи SOA; увеличивается при каждом изменении значения записи и служит сигналом другим DNS-серверам о том, что требуется обновить данные;
  • refresh — интервал для запроса изменений;
  • retry — интервал для повторных попыток запроса данных в случае неудачи;
  • expire — время, в течение которого обновленные данные могут быть применены на других DNS-серверах;
  • minimum-ttl — время хранения в кеше информации о зоне
dns cleanup <сервер> <имя узла> [опции]
Очистить DNS-записи указанного DNS-узла
Во многих случаях данная подкоманда только устанавливает значение true в атрибуте dNSTombstoned DNS-записей. После этого при запросе таких записей информация о них возвращаться не будет, но в базе данных могут оставаться соответствующие им записи-заполнители
dns query <сервер> <зона> <имя> <A|AAAA|PTR|CNAME|NS|MX|SOA|SRV|TXT|ALL> [опции]
Вывести информацию о DNS-записях
Можно использовать следующие опции:
  • --authority — поиск по записям полномочного DNS-сервера (значение по умолчанию);
  • --cache — поиск по записям в кеше;
  • --glue — поиск по связующим (glue) записям;
  • --root — поиск по корневым ссылкам DNS-сервера;
  • --additional — вывод списка дополнительных записей;
  • --no-children — исключение вывода дочерних записей;
  • --only-children — вывод только дочерних записей
Возможные типы записей и данные:
  • A <IPv4-адрес> — IPv4-адрес для связи с именем домена;
  • AAAA <IPv6-адрес> — IPv6-адрес для связи с именем домена;
  • PTR <FQDN> — полное доменное имя (FQDN) для связи с IP-адресом домена;
  • CNAME <FQDN> — полное доменное имя (FQDN) для создания псевдонима;
  • NS <FQDN> — полное доменное имя (FQDN) сервера, выполняющего роль сервера имен;
  • MX <FQDN> <приоритет> — полное доменное имя (FQDN) и приоритет почтового сервера;
  • SRV <FQDN> <порт> <приоритет> <вес> — полное доменное имя (FQDN) сервера, на котором доступна определенная служба, порт для доступа к службе, приоритет и относительный вес на случай, если существует несколько записей с одинаковым приоритетом;
  • TXT "'string1' 'string2' …" — информация о домене в текстовом формате (string).

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
$ samba-tool dns add --help

Примечание

При использовании команды samba-tool dns указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
Примеры:
  • добавить запись типа A:
    $ samba-tool dns add 192.168.0.132 test.alt \
    DC2 A 192.168.0.133 -Uadministrator
    
    Password for [TEST\administrator]:
    Record added successfully
    
  • добавить запись типа PTR для обратной зоны 192.168.0.0/24:
    $ samba-tool dns add dc1.test.alt 0.168.192.in-addr.arpa \
    55 PTR demo.test.alt -U administrator
    
    Password for [TEST\administrator]:
    Record added successfully
    
  • удалить запись типа A:
    $ samba-tool dns delete dc1.test.alt test.alt \
    DC2 A 192.168.0.133 -U administrator
    
    Password for [TEST\administrator]:
    Record deleted successfully
    
  • изменить запись типа A:
    $ samba-tool dns update dc1.test.alt test.alt DC2 \
    A 192.168.0.133 192.168.0.149 -U administrator
    
    Password for [TEST\administrator]:
    Record updated succefully
    
  • изменить адрес электронной почты администратора в записи типа SOA:
    $ samba-tool dns update dc1.test.alt test.alt @ SOA \
    "dc1.test.alt admin.test.alt 63 900 600 86400 3600" \
    "dc1.test.alt new.test.alt 64 900 600 86400 3600" \
    -U administrator
    
    Password for [TEST\administrator]:
    Record updated succefully
    
  • вывести все DNS-записи для указанной зоны:
    $ samba-tool dns query dc1.test.alt 0.168.192.in-addr.arpa \
    @ ALL -U administrator
    

44.2.2. Работа с DNS-зонами

Таблица 44.2. Команды samba-tool для управления зонами DNS

Команда
Описание
Примечание
dns zonecreate <сервер> <зона> [опции]
Создать зону DNS
Дополнительно с помощью параметра --client-version можно указать версию DNS-клиента. Возможные значения: w2k, dotnet, longhorn (по умолчанию)
dns zonedelete <сервер> <зона> [опции]
Удалить зону DNS
dns zoneinfo <сервер> <зона> [опции]
Вывести информацию о зоне DNS
dns zonelist <сервер> [опции]
Вывести список зон DNS
Можно использовать следующие опции:
  • --client-version — версия DNS-клиента. Возможные значения: w2k, dotnet, longhorn (по умолчанию);
  • --primary — получение списка первичных зон DNS (по умолчанию);
  • --secondary — получение списка вторичных зон DNS;
  • --cache — получение списка зон DNS из кеша;
  • --auto — получение списка автоматически созданных зон DNS;
  • --reverse — получение списка обратных зон DNS;
  • --ds — получение списка зон DNS, интегрированных с доменом;
  • --non-ds — получение списка зон DNS без интеграции с доменом
dns zoneoptions <сервер> <зона> [опции]
Изменить настройки очистки от устаревших записей для зоны DNS
Можно использовать следующие опции:
  • --client-version — версия DNS-клиента. Возможные значения: w2k, dotnet, longhorn (по умолчанию);
  • --mark-old-records-static=YYYY-MM-DD — записи старше указанной даты становятся статическими (их временные метки становятся нулевыми);
  • --mark-records-static-regex=REGEXP  — записи, соответствующие заданному регулярному выражению, становятся статическими;
  • -n|--dry-run — запуск в тестовом режиме для проверки корректности заданных параметров; фактически изменения не вносятся;
  • --aging — признак необходимости очистки от устаревших записей: 0 — очистка отключена (по умолчанию), 1 — очистка включена;
  • --norefreshinterval=[0-87600] — интервал блокировки для зоны с включенной очисткой в часах; если параметр равен нулю, используется значение по умолчанию (168 часов, одна неделя);
  • --refreshinterval=[0-87600] — интервал обновления для зоны с включенной очисткой в часах; если параметр равен нулю, используется значение по умолчанию (168 часов, одна неделя)

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
$ samba-tool dns zoneoptions --help

Примечание

При использовании команды samba-tool dns указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
Примеры:
  • создать обратную зону /24:
    $ samba-tool dns zonecreate 192.168.0.132 \
    0.168.192.in-addr.arpa -U administrator
    
  • вывести информацию об обратной зоне DNS:
    $ samba-tool dns zoneinfo dc1.test.alt \
    0.168.192.in-addr.arpa -U administrator
    
  • включить очистку с интервалом обновления 5 лет:
    $ samba-tool dns zoneoptions dc1.test.alt \
    test.alt --aging=1 --refreshinterval=43800 -U administrator
    

Примечание

Чтобы очистка работала, в файле smb.conf хотя бы на одном контроллере домена должен быть задан параметр dns zone scavenging = yes.

44.2.3. Получение информации о DNS-серверах

Таблица 44.3. Команды samba-tool для получения информации о DNS-серверах

Команда
Описание
Примечание
dns serverinfo <сервер> [опции]
Вывести информацию о DNS-сервере
Дополнительно с помощью параметра --client-version можно указать версию DNS-клиента. Возможные значения: w2k, dotnet, longhorn (по умолчанию)
dns roothints <сервер> [<имя>] [опции]
Вывести информацию о корневых серверах DNS

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
$ samba-tool dns roothints --help
Примеры:
  • вывести информацию о DNS-сервере:
    $ samba-tool dns serverinfo dc1.test.alt -U administrator
    
  • вывести информацию об обратной зоне DNS:
    $ samba-tool dns zoneinfo dc1.test.alt \
    0.168.192.in-addr.arpa -U administrator
    
    Данная команда возвращает структуру DNS_RPC_SERVER_INFO, содержащую информацию о состоянии и конфигурации DNS-сервера, в формате, соответствующем версии DNS-клиента.
  • вывести информацию о корневых серверах DNS:
    $ samba-tool dns roothints dc1.test.alt -U administrator
    

44.3. Утилита nsupdate

Утилита nsupdate используется для отправки запросов на обновление динамического DNS серверу имен в соответствии со стандартом RFC 2136. С ее помощью можно добавлять или удалять записи ресурсов из зоны без необходимости правки зонного файла вручную. Один запрос на обновление может содержать запросы на добавление или удаление нескольких записей ресурсов.
Синтаксис команды nsupdate:
nsupdate [-dDi] [-L level] [-l][-g | -o | -y keyname:secret | -k keyfile] [-v] [-V] [-P] [-T] [-4 | -6] [filename]

Таблица 44.4. Опции команды nsupdate

Ключ
Описание
-4
Использовать только IPv4
-6
Использовать только IPv6
-d
Включить режим отладки
-D
Включить дополнительный режим отладки
-i
Принудительно включить интерактивный режим, даже если стандартный ввод не является терминалом
-k keyfile
Позволяет указать файл, содержащий ключ аутентификации TSIG. Файлы могут быть в двух форматах: один файл, содержащий оператор ключа named.conf-format, который может быть автоматически сгенерирован ddns-confgen; или пара файлов, имена которых имеют формат K{name}.+157.+{random}.key и K{name}.+157.+{random}.private, которые могут быть сгенерированы dnssec-keygen. Параметр -k также может использоваться для указания ключа SIG(0), используемого для аутентификации запросов на обновление Dynamic DNS. В этом случае указанный ключ не является ключом HMAC-MD5
-l
Установить режим локального хоста. Адрес сервера будет установлен на localhost (отключая сервер, чтобы адрес сервера не мог быть переопределен). Подключения к локальному серверу используют ключ TSIG, найденный в /var/run/named/session.key, который автоматически генерируется named, если какая-либо локальная первичная зона установила update-policy на local. Расположение этого файла ключа можно переопределить с помощью опции -k
-L level
Установить уровень отладки ведения журнала. Если 0, ведение журнала отключено
-p port
Установить порт для подключения к серверу имен. Значение по умолчанию — 53
-P
Вывести список частных типов записей ресурсов BIND, формат которых понимает nsupdate
-r udpretries
Установить количество повторных попыток UDP. Значение по умолчанию — 3. Если 0, выполняется только один запрос на обновление
-t timeout
Установить максимальное время, которое может занять запрос на обновление, прежде чем он будет прерван. Значение по умолчанию — 300 секунд. Если 0, тайм-аут отключен
-T
Вывести список стандартных типов записей ресурсов IANA, формат которых понимает nsupdate. nsupdate завершает работу после вывода списков. Параметр -T можно комбинировать с параметром -P.
Другие типы можно ввести с помощью TYPEXXXXX, где XXXXX — это десятичное значение типа без начальных нулей. Rdata, если они присутствуют, анализируются с использованием формата UNKNOWN rdata (<обратная косая черта> <хеш> <пробел> <длина> <пробел> <шестнадцатеричная строка>)
-u udptimeout
Задать интервал повтора UDP. Значение по умолчанию — 3 секунды. Если равно 0, интервал вычисляется из интервала тайм-аута и количества повторов UDP
-v
Указывает, что TCP следует использовать даже для небольших запросов на обновление. По умолчанию nsupdate использует UDP для отправки запросов на обновление на сервер имен, если только они не слишком велики для того, чтобы поместиться в запрос UDP, в этом случае используется TCP. TCP может быть предпочтительнее, когда выполняется пакет запросов на обновление
-V
Вывести номер версии
-y [hmac:]keyname:secret
Задает буквальный ключ аутентификации TSIG. keyname — имя ключа, а secret — общий секрет в кодировке base64. hmac — имя алгоритма ключа; допустимые варианты: hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384 или hmac-sha512. Если hmac не указан, по умолчанию используется hmac-md5 или, если MD5 отключен, hmac-sha256.

Примечание

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

Таблица 44.5. Форматы команд и их значения

Команда
Описание
server servername port
Отправить все динамические запросы на обновление на сервер имен servername. Если не указано ни одного оператора сервера, nsupdate отправляет обновления на основной сервер правильной зоны. Поле MNAME записи SOA этой зоны определяет основной сервер для этой зоны. port — это номер порта на servername, куда отправляются динамические запросы на обновление. Если номер порта не указан, используется номер порта DNS по умолчанию 53.

Примечание

Эта команда не действует, если используется GSS-TSIG
local address port
Отправить все динамические запросы на обновление, используя локальный адрес. Если локальный оператор не указан, nsupdate отправляет обновления, используя адрес и порт, выбранные системой. port также может использоваться для принудительного поступления запросов с определенного порта. Если номер порта не указан, система назначает его
zone zonename
Указывает, что все обновления должны быть сделаны в зоне zonename. Если оператор zone не указан, nsupdate пытается определить правильную зону для обновления на основе остальной части ввода
class classname
Указывает класс по умолчанию. Если класс не указан, класс по умолчанию — IN
ttl seconds
Указывает время жизни по умолчанию в секундах для добавляемых записей. Значение none очищает TTL по умолчанию
key hmac:keyname secret
Указывает, что все обновления должны быть подписаны TSIG с использованием пары keyname-secret. Если указан hmac, он устанавливает используемый алгоритм подписи. Значение по умолчанию — hmac-md5; если MD5 отключен, то по умолчанию используется hmac-sha256. Команда key переопределяет любой ключ, указанный в командной строке с помощью -y или -k
gsstsig
Эта команда использует GSS-TSIG для подписи обновлений. Это эквивалентно указанию -g в командной строке
oldgsstsig
Эта команда использует версию GSS-TSIG для Windows 2000 для подписи обновлений. Это эквивалентно указанию -o в командной строке
realm [realm_name]
При использовании GSS-TSIG эта команда указывает использование realm_name вместо realm по умолчанию в krb5.conf. Если realm не указан, сохраненная realm очищается
check-names [yes_or_no]
Включить или выключить обработку check-names для добавляемых записей. Check-names не влияет на предварительные условия или удаляемые записи. По умолчанию обработка check-names включена. Если обработка check-names завершается неудачей, запись не добавляется в сообщение UPDATE
prereq nxdomain domain-name
Эта команда требует, чтобы не существовало ни одной записи ресурса любого типа с именем domain-name
prereq yxdomain domain-name
Эта команда требует, чтобы существовал domain-name (как минимум одна запись ресурса любого типа)
prereq nxrrset domain-name class type
Эта команда требует, чтобы не существовало ни одной записи ресурса указанного типа, класса и domain-name. Если class не указан, предполагается IN (Интернет)
prereq yxrrset domain-name class type
Для этой команды требуется, чтобы существовала запись ресурса указанного типа, класса и доменного имени. Если class не указан, предполагается IN (Интернет)
prereq yxrrset domain-name class type data
С помощью этой команды данные из каждого набора предварительных условий этой формы, имеющих общий тип, класс и доменное имя, объединяются для формирования набора RR. Этот набор RR должен точно соответствовать набору RR, существующих в зоне с указанным типом, классом и доменным именем. Данные записываются в стандартном текстовом представлении RDATA записи ресурса
update delete domain-name ttl class type data
Удалить все записи ресурсов с именем domain-name. Если указаны type и data, удаляются только соответствующие записи ресурсов. Если class не указан, предполагается класс Internet. TTL игнорируется и допускается только для совместимости
update add domain-name ttl class type data
Добавить новую запись ресурса с указанным ttl, class и data
show
Отобразить текущее сообщение, содержащее все предварительные условия и обновления, указанные с момента последней отправки
send
Отправить текущее сообщение (эквивалентно вводу пустой строки)
answer
Отобразить ответ
debug
Включить отладку
version
Вывести номер версии
help
Вывести список команд

Примечание

Строки, начинающиеся с точки с запятой (;), являются комментариями и игнорируются.
При использовании утилиты nsupdate для динамического обновления DNS-записей в доменных средах AD, необходимо использовать механизм аутентификации GSS-TSIG, который использует Kerberos-билет для аутентификации машины в домене. Kerberos-билет используется при обновлении DNS-записей с помощью nsupdate с флагом -g.
Перед выполнением команды nsupdate -g необходимо получить Kerberos-билет для машинного аккаунта с помощью команды:
# kinit -k 'MACHINENAME$'

Примечание

Имя машинного аккаунта можно узнать, используя команду hostname -s. В команде kinit имя машинного аккаунта нужно указывать в верхнем регистре со знаком $, например:
# hostname -s
comp01
# kinit -k 'COMP01$'
В следующих примерах показано использование команды nsupdate для добавления и удаления записей ресурсов из зоны test.alt.
  • удалить записи A для oldhost.test.alt и добавить запись A для newhost.test.alt с IP-адресом 192.168.0.195:
    # nsupdate -g
    > update delete oldhost.test.alt A
    > update add newhost.test.alt 86400 A 192.168.0.195
    > send
    > quit
    
    Новая запись будет имеет TTL 1 день (86400 секунд).
  • указать предварительное условие перед обновлением DNS-сервера:
    # nsupdate -g
    > prereq nxdomain nickname.test.alt
    > update add nickname.test.alt 86400 CNAME somehost.test.alt
    > send
    > quit
    
    Предварительное условие позволяет серверу имен проверить, нет ли записей о ресурсах любого типа для nickname.test.alt. Если в зоне есть записи ресурсов, запрос на обновление не выполняется. Если этого имени не существует, добавляется CNAME.

44.4. Oснастка DNS в RSAT

Оснастка DNS в RSAT позволяет администраторам Windows удаленно управлять DNS-записями через графический интерфейс. С его помощью можно добавлять, удалять и изменять DNS-записи.

Примечание

Для возможности администрирования DNS с клиента Windows должна быть установлена оснастка DNS MMC (см. Установка административных инструментов (машина Windows)).
Существуют следующие известные проблемы если используется внутренний сервер DNS:
  • очистка еще не реализована. Возвращается сообщение об ошибке «This function is not supported on this system»;
  • условные пересылки еще не реализованы. Возвращается то же сообщение об ошибке, что и выше;
  • пересылку DNS можно изменить только в smb.conf, а не через оснастку MMC;
  • создание статических записей. Когда создается статическая запись, она имеет временную метку и опцию «Delete this record when it becomes stale». В Windows AD статические записи имеют «статическую» временную метку и не могут быть случайно удалены.
Для подключения к своему DNS-серверу в оснастке DNS необходимо в контекстном меню DNS выбрать пункт Connect to DNS Server…:
Оснастка DNS в RSAT. Подключение к DNS-серверу
В открывшемся окне следует выбрать пункт The following computer, ввести в поле имя домена (также можно использовать IP-адрес или FQDN), установить отметку Connect to the special computer now и нажать кнопку ОК:
Оснастка MMC DNS. Адрес DNS-сервера

44.4.1. Работа с DNS-записями

Чтобы добавить новую запись необходимо:
  1. Перейти в зону, в которую нужно добавить новую запись.
  2. В контекстном меню зоны выбрать тип записи:
    Оснастка MMC DNS. Добавление новой DNS-записи
  3. Заполнить поля и сохранить запись, нажав кнопку Add Host:
    Оснастка MMC DNS. Добавление новой A-записи
Для обновления существующей записи необходимо:
  1. Перейти в зону, содержащую запись, которую нужно изменить.
  2. В контекстном меню записи выбрать пункт Properties:
    Оснастка MMC DNS. Изменение существующей DNS-записи
  3. Отредактировать запись и сохранить изменения, нажав кнопку Apply:
    Оснастка MMC DNS. Изменение параметров существующей DNS-записи
Для удаления записи необходимо:
  1. Перейти в зону, содержащую запись, которую нужно удалить.
  2. В контекстном меню записи выбрать пункт Delete:
    Оснастка MMC DNS. Удаление DNS-записи

44.4.2. Работа с DNS-зонами

В качестве примера рассмотрено добавление зоны обратного просмотра:
  1. В контекстном меню зоны обратного просмотра (Reverse Lookup Zones) выбрать пункт New Zone…:
    Оснастка MMC DNS. Добавление зоны обратного просмотра
  2. На втором шаге мастера создания новой зоны выбрать Primary zone и установить отметку в пункте Store the zone in Active Directory:
    Оснастка MMC DNS. Выбор типа зоны
  3. На следующем шаге мастера указать область репликации зоны:
    Оснастка MMC DNS. Область репликации зоны
  4. Указать имя зоны обратного просмотра:
    Оснастка MMC DNS. Имя зоны обратного просмотра
  5. Включить динамическое обновление:
    Оснастка MMC DNS. Динамическое обновление
  6. Завершить работу мастера.

Примечание

Новая зона будет активна сразу, без перезапуска Samba или BIND.
Для удаления зоны следует в контекстном меню зоны выбрать пункт Delete:
Оснастка MMC DNS. Удаление зоны

44.5. Динамическое обновление DNS-записей

Используются следующие механизмы обновления DNS-записей:
  • На стороне DHCP. Динамическое обновление DNS-записей часто осуществляется с помощью DHCP-серверов. В частности, такие системы как ISC DHCP и Kea DHCP могут автоматически обновлять записи на DNS-сервере при выдаче нового IP-адреса клиенту.
  • На стороне клиента. В доменных средах с использованием Linux-клиентов для взаимодействия с AD могут использоваться службы Winbind и SSSD для обновления DNS-записей. На Windows-клиентах обновление происходит через встроенные функции операционных систем. Кроме того, обновление записей может быть выполнено вручную администраторами.

44.5.1. На стороне клиента

44.5.1.1. SSSD

Включить обновление IP-адресов службой sssd можно несколькими способами:
  • отредактировав файл /etc/sssd/sssd.conf;
  • в модуле ЦУС Аутентификация;
  • применением control;
  • групповыми политиками.
44.5.1.1.1. Настройка через файл /etc/sssd/sssd.conf
В файл конфигурации службы SSSD (/etc/sssd/sssd.conf) в секцию с параметрами домена можно добавить опции, приведенные в табл. Параметры настройки автоматического обновления DNS. Например:
[domain/TEST.ALT]
.....
#Включить обновление прямых записей (A/AAAA записей)
dyndns_update = true

#Включить обновление обратных записей (PTR записей)
dyndns_update_ptr = true
#Задать интервал обновления в секундах.
#По умолчанию — 86400 (24 часа), обновление выполняется раз в сутки.
#Если интервал равен 0, то обновление выполняется только один раз при запуске службы SSSD.
#Если интервал менее 60 секунд, то обновление выполняется раз в 60 секунд.
#Если адрес после предыдущего обновления не изменялся — обновление не выполняется.
dyndns_refresh_interval = 60

Примечание

Чтобы загрузить новые параметры конфигурации необходимо перезапустить службу SSSD:
# systemctl restart sssd

Таблица 44.6. Параметры настройки автоматического обновления DNS

Параметр
Описание
Значение по умолчанию
dyndns_update
Позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) IP-адресом клиента через SSSD. Соответственно, администратору AD требуется только разрешить защищённые обновления для зоны DNS. Для обновления будет использован IP-адрес LDAP-соединения AD, если с помощью параметра «dyndns_iface» не указано иное
true
dyndns_ttl
Значение TTL, которое применяется при обновлении DNS-записи клиента. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром
3600 (секунд)
dyndns_iface
Позволяет указать интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение «*» подразумевает, что следует использовать IP-адреса всех интерфейсов. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта
IP-адреса интерфейса, который используется для подключения LDAP AD
dyndns_refresh_interval
Определяет как часто внутреннему серверу следует выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, выполняемому при переходе внутреннего сервера в сетевой режим. Этот параметр применим только в том случае, если для параметра dyndns_update установлено значение true.
Следует обратить внимание, что наименьшее допустимое значение составляет 60 секунд: если будет указано меньшее значение, параметр примет наименьшее допустимое значение (60 секунд)
86400 (24 часа)
dyndns_update_ptr
Определяет будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG) при обновлении DNS-записей клиента. Применимо, только если параметр dyndns_update имеет значение true.
Следует обратить внимание, что параметр dyndns_update_per_family не применяется для обновлений записей PTR. Эти обновления всегда отправляются отдельно
true
dyndns_force_tcp
Должна ли утилита nsupdate по умолчанию использовать TCP для обмена данными с сервером DNS
false (разрешить nsupdate выбрать протокол)
dyndns_auth
Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений сервера DNS. Незащищённые отправления можно отправлять, установив этот параметр в значение none
GSS-TSIG
dyndns_auth_ptr
Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений PTR сервера DNS. Незащищённые отправления можно отправлять, установив этот параметр в значение none
То же, что и dyndns_auth
dyndns_server
Сервер DNS, который следует использовать для выполнения обновления DNS. В большинстве конфигураций рекомендуется не устанавливать значение для этого параметра.
Установка этого параметра имеет смысл для сред, в которых сервер DNS отличается от сервера данных идентификации.
Следует обратить внимание, что этот параметр используется только для резервной попытки, которая выполняется если предыдущая попытка с использованием автоматически определённых параметров завершилась неудачей
none (разрешить nsupdate выбрать сервер)
dyndns_update_per_family
По умолчанию обновление DNS выполняется за два шага: обновление IPv4, а затем обновление IPv6. В некоторых случаях может быть желательно выполнить обновление IPv4 и IPv6 за один шаг
true
44.5.1.1.2. Настройка через ЦУС
Некоторые настройки автоматического обновления DNS для SSSD можно настроить в модуле ЦУС Аутентификация. Подробнее см. Настройки SSSD в ЦУС.
44.5.1.1.3. При помощи механизма control
Список всех возможных настроек автоматического обновления DNS для SSSD с помощью control можно получить, выполнив команду:
# control | grep sssd-dyndns
sssd-dyndns-refresh-interval unknown         (disabled INTERVAL)
sssd-dyndns-ttl unknown         (disabled TTL)
sssd-dyndns-update unknown         (disabled enabled default)
sssd-dyndns-update-ptr unknown         (disabled enabled default)

Таблица 44.7. control для настройки автоматического обновления DNS для SSSD

control
Опция в файле /etc/sssd/sssd.conf
Описание
sssd-dyndns-refresh-interval
dyndns_refresh_interval
Определяет как часто серверная часть должна выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, выполняемому при подключении серверной части к сети. Этот параметр применим только в том случае, если для параметра dyndns_update установлено значение true.
Доступные режимы:
  • INTERVAL — задать интервал;
  • disabled  — установить значение по умолчанию (86400);
  • unknown
sssd-dyndns-ttl
dyndns_ttl
Срок жизни, применяемый к DNS-записи клиента при ее обновлении. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта.
Доступные режимы:
  • TTL — задать TTL;
  • disabled — установить значение по умолчанию (3600);
  • unknown
sssd-dyndns-update
dyndns_update
Позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) с IP-адресом клиента через SSSD.
Доступные режимы:
  • enabled — автоматическое обновление DNS-записи клиента через SSSD включено;
  • disabled — автоматическое обновление DNS-записи клиента через SSSD отключено;
  • default — настройка автоматического обновления DNS-записи клиента через SSSD задана по умолчанию в пакете;
  • unknown
sssd-dyndns-update-ptr
dyndns_update_ptr
Определяет будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG) при обновлении DNS-записей клиента. Применимо, только если параметр dyndns_update имеет значение true.
Доступные режимы:
  • enabled — автоматическое обновление DNS-записи обратной зоны через SSSD включено;
  • disabled — автоматическое обновление DNS-записи обратной зоны через SSSD отключено;
  • default — настройка автоматического обновления DNS-записи обратной зоны задана по умолчанию в пакете;
  • unknown
Например, чтобы SSSD автоматически обновлял на сервере DNS AD IP-адрес клиента, необходимо включить control sssd-dyndns-update:
# control sssd-dyndns-update enabled
и перезапустить службу SSSD:
# systemctl restart sssd
Проверка:
# control sssd-dyndns-update
enabled
44.5.1.1.4. При помощи групповых политик
С помощью групповых политик в Альт Домен можно централизованно управлять настройками обновления DNS-записей на всех клиентах в сети. В настоящее время с помощью групповых политик можно сконфигурировать параметры dyndns_update и dyndns_update_ptr. Подробнее см. Групповые политики control (раздел SSSD опции).

44.5.1.2. Samba Winbind

Samba Winbind не поддерживает возможность динамического обновления DNS-записей. Для обхода этой проблемы был разработана утилита, реализующая динамическое обновление адресов на DNS-сервере при использовании Winbind в качестве клиента домена — winbind-dnsupdate.
Для возможности работы с программой необходимо установить пакет samba-winbind-dnsupdate:
# apt-get install samba-winbind-dnsupdate
И активировать и запустить таймер, который в свою очередь запускает сервис:
# systemctl enable --now winbind-dnsupdate.timer
Основным функционалом winbind-dnsupdate является обновление IPv4 (A), IPv6 (AAAA) и соответствующих PTR DNS-записей. Для обновления DNS-записей winbind-dnsupdate использует файл /etc/resolv.conf.
Синтаксис команды winbind-dnsupdate:
winbind-dnsupdate [опции]
При запуске без параметров скрипт обновляет A запись.

Таблица 44.8. Опции команды winbind-dnsupdate

Ключ
Описание
-h, --help
Вывести справку о команде
-v, --version
Вывести версию
-a, --all
Включить обновление всех записей (IPv4, IPv6, PTR)
-6, --update-ipv6
Включить обновление IPv6 (AAAA) записей
-d, --daemon
Отправлять логи в journald
-t, --ttl <time>
Задать TTL («время жизни», указывает, как долго настройки DNS должны храниться в кеше, прежде чем они будут автоматически обновлены)
--allow-ipv4-ptr-update
Включить обновление обратной DNS-записи IPv4 (A) PTR
--allow-ipv6-ptr-update
Включить обновление обратной DNS-записи IPv6 (AAAA) PTR
--enable-dconf
Включить чтение параметров из dconf
Пример запуска скрипта winbind-dnsupdate:
# winbind-dnsupdate -a
[INFO]: Hostname: comp01.test.alt.
[INFO]: Check winbind status.
[INFO]: Winbind is running. Continue.
[INFO]: Trying to get the site name.
[INFO]: Site: Default-First-Site-Name.
[INFO]: Get host credentials.
[INFO]: Retrieving host credentials successfully.
[INFO]: Trying to get a list of domain controllers in site.
[INFO]: Success.
[INFO]: Trying to find an available DNS server.
[INFO]: Checking the availability of DNS server on dc1.test.alt..
[INFO]: DNS server on dc1.test.alt. available.
[INFO]: Update IPv4.
[INFO]: Trying to get IPv4 address of a domain controller.
[INFO]: Successful. DC info:
[INFO]: Domain controller name: dc1.test.alt.
[INFO]: Domain controller IPv4: 192.168.0.132.
[INFO]: Trying parse connection interface name.
[INFO]: Successful. Intraface name: enp0s3.
[INFO]: Checking the existence of A record.
[INFO]: IPv4 record exists.
[INFO]: Checking whether the IPv4 records needs to be updated.
[INFO]: Current IPv4 address: 192.168.0.195.
[INFO]: IPv4 address in DNS server: 192.168.0.195.
[INFO]: The IPv4 address of interface enp0s3 has not been changed.
[INFO]: The update IPv4 was skipped.
[INFO]: IPv4 update was successful.
[INFO]: The update was successful.
[INFO]: Destroy host credential.
В пакете вместе со скриптом предоставляются systemd сервис и таймер. Таймер запускает systemd сервис для обновления DNS-записи через 5 минут после загрузки системы и затем каждый час. Просмотреть параметры таймера можно, выполнив команду:
# systemctl cat winbind-dnsupdate.timer
# /lib/systemd/system/winbind-dnsupdate.timer
[Unit]
Description=Update dns record Daily and on boot

[Timer]
OnBootSec=5min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target
Чтобы изменить частоту запуска systemd сервиса, необходимо отредактировать настройки таймера:
  1. Выполнить команду:
    # systemctl edit winbind-dnsupdate.timer
    
  2. Добавить следующие строки после строки Anything between here and the comment below will become the new contents of the file:
    [Timer]
    OnUnitActiveSec=
    OnUnitActiveSec=120min
    
    OnUnitActiveSec= очистит предыдущее определение (60min), а OnUnitActiveSec=120min установит новое значение (120min).
    Редактирование параметров таймера
  3. Сохранить внесённые изменения.
  4. Перезагрузить таймер для применения изменений:
    # systemctl daemon-reload
    

Примечание

Команда:
# systemctl edit winbind-dnsupdate.timer
открывает текстовый редактор с конфигурацией winbind-dnsupdate.timer, куда можно внести изменения. Этот подход позволяет создавать или изменять так называемые «дополнения» (overrides) для systemd сервиса, не изменяя оригинальный файл сервиса, который находится в /usr/lib/systemd/system/. Это важно, потому что оригинальные файлы могут быть перезаписаны при обновлении пакетов.
При выполнении этой команды создаётся каталог /etc/systemd/system/winbind-dnsupdate.timer.d/, в котором, после сохранения изменений, появляется файл override.conf. В этом файле можно задать новые параметры или изменить существующие параметры сервиса.
Параметрами winbind-dnsupdate можно управлять с помощью групповых политик (см. Опции Winbind DNSupdate).

44.5.1.3. Windows клиент

В Windows клиенты автоматически обновляют DNS-записи, такие как A и PTR, при изменении IP-адресов или имени компьютера. Этот процесс инициируется службой DHCP-клиента, которая отправляет обновления на DNS-сервер. Обновления происходят каждые 24 часа (по умолчанию) или могут быть инициированы вручную командой ipconfig /registerdns. Для DHCP-клиентов DHCP-сервер может выполнять эти обновления от имени клиента, что снижает необходимость ручного администрирования.

44.6. Обновление IP-адресов вручную

Для обновления IP-адресов вручную существует несколько способов:

44.7. Известные проблемы

44.7.1. Неверные права DNS-записей машины в домене

При вводе машины в домен вызывается утилита system-auth, которая в свою очередь использует команду net ads join. В рамках данной команды выполняется присоединение к домену с использованием Kerberos-аутентификации и не производится обновление DNS. После успешного присоединения машина регистрирует свою DNS-запись с помощью команды net ads dns register также используя Kerberos-аутентификацию.
Если машины уже введены в домен или используется старая версия alterator-auth (до версии 0.44.10-alt1), то у машин не будет прав на обновление своих DNS-записей. Это происходит потому, что во время создания DNS-записи в доменном DNS system-auth использует билет администратора, и в результате владельцем записи становится он, а не машина, что впоследствии не позволяет машине обновить свою DNS-запись.

Примечание

Имеются ввиду записи вида:
DC=host1,DC=test.alt,CN=MicrosoftDNS,DC=DomainDnsZones,DC=test,DC=alt
Исправление в пакете alterator-auth версии 0.44.10-alt1 работает только для машин, которые не были ранее введены в домен с текущим именем (то есть, если машинная учётная запись создаётся впервые). Если машина уже была добавлена в домен, но для неё используется новое имя, то будет создана новая учётная запись, и проблема с правами на обновление DNS-записей будет решена. Однако, если машина повторно вводится в домен с тем же именем, это не устранит проблему.

Примечание

При вводе машины в домен с новым именем необходимо убедиться, что очищены кеши SSSD и Winbind, а также удален старый keytab-файл.
В случае с уже введёнными в домен машинами можно воспользоваться скриптом https://altlinux.space/alt-domain/samba-allow-nsupdate на контроллере домена (предварительно получив билет администратора). Этот скрипт позволяет задать необходимые права как для всех машин в домене или OU, так и для произвольного списка машин в домене. Примеры:
  • разрешить самостоятельное обновление для машин, находящихся в контейнере «Computers»:
    # samba_allow_nsupdate --domain-dns="test.alt" --computers-base-dn="CN=Computers,DC=test,DC=alt"
    Domain: test.alt
    Domain DN: DC=test,DC=alt
    Computers search base DN: CN=Computers,DC=test,DC=alt
    Action: allow
    Selected computers list:
    DC1$
    WS2$
    WS$
    WS3$
    Allow self nsupdate for this computers list? (Y/n):
    DC1$			S-1-5-21-3099202228-3607437695-3279060739-1000	DONE
    WS2$			S-1-5-21-3099202228-3607437695-3279060739-1113	DONE
    WS$			S-1-5-21-3099202228-3607437695-3279060739-1107	DONE
    WS3$			S-1-5-21-3099202228-3607437695-3279060739-1127	DONE
    
  • разрешить самостоятельное обновление для произвольного списка машин в домене (в примере для WS, WS2):
    # samba_allow_nsupdate --action=allow WS$ WS2$ --computers-base-dn="DC=test,DC=alt" --domain-dns="test.alt"
    Domain: test.alt
    Domain DN: DC=test,DC=alt
    Computers search base DN: DC=test,DC=alt
    Action: allow
    Selected computers list:
    WS$
    WS2$
    Allow self nsupdate for this computers list? (Y/n):
    WS$			S-1-5-21-3099202228-3607437695-3279060739-1107	DONE
    WS2$			S-1-5-21-3099202228-3607437695-3279060739-1113	DONE
    
Другие решения:
  • воспользоваться RSAT оснасткой DNS на Windows машине и задать необходимые права вручную;
  • в той же оснастке DNS для всего DNS домена дать права на запись группе «Domain Computers» (не рекомендуется);
  • воспользоваться инструментом samba-tool dsacl.

Глава 45. Администрирование сайтов и подсетей

45.1. Утилита samba-tool

Для администрирования сайтов и подсетей в Альт Домен можно использовать подкоманду sites утилиты samba-tool.

Примечание

Для выполнения команды на удаленном компьютере можно использовать опцию -H или --URL= с указанием URI LDAP-сервера. Например:
# samba-tool sites list -H ldap://<DC> -Uadministrator
По умолчанию в качестве значения опции -H передается текущий узел в формате ldap://<имя узла>.

Таблица 45.1. Команды управления сайтами samba-tool

Команда
Описание
Примечание
sites create <сайт> [опции]
Добавить новый сайт
В качестве аргумента (сайт) ожидается общее имя (CN) сайта.
После создания сайта в него могут быть добавлены контроллеры домена, например, путём передачи имени сайта в параметре --site=SITE при выполнении операции присоединения (см. Присоединение к домену в роли контроллера домена)
sites list [опции]
Вывести список сайтов
Подкоманда поддерживает два формата представления информации о сайтах:
  • без дополнительных параметров — список общих имен (CN) сайтов;
  • с параметром --json — вывод подробной информации о каждом сайте в формате JSON
sites remove <сайт> [опции]
Удалить сайт
В качестве аргумента (сайт) ожидается общее имя (CN) сайта
sites subnet <подкоманда>
Подкоманды управления подсетью
sites view <сайт> [опции]
Вывести информацию об отдельном сайте
В качестве аргумента (сайт) ожидается общее имя (CN) сайта.
Подкоманда выводит тот же набор атрибутов сайта, что и подкоманда samba-tool sites list --json

Таблица 45.2. Команды управления подсетями samba-tool

Команда
Описание
Примечание
sites subnet create <подсеть> <сайт> [опции]
Создать новую подсеть
Параметры вызова:
  • подсеть — IP-адрес и маска подсети;
  • сайт — сайт, за которым будет закреплена подсеть
sites subnet list <сайт> [опции]
Вывести список подсетей сайта
В качестве аргумента (сайт) ожидается общее имя (CN) сайта.
Подкоманда поддерживает два формата представления информации о подсетях:
  • без дополнительных параметров — список общих имен (CN) подсетей;
  • с параметром --json — вывод подробной информации о каждой подсети в формате JSON
sites subnet remove <подсеть> [опции]
Удалить подсеть
В качестве аргумента (подсеть) ожидается общее имя (CN) существующей подсети
sites subnet set-site <подсеть> <сайт> [опции]
Закрепить подсеть за сайтом
Параметры вызова:
  • подсеть — IP-адрес и маска подсети;
  • сайт — сайт, за которым будет закреплена подсеть
sites subnet view <подсеть> [опции]
Просмотр сведений о подсети
В качестве аргумента (подсеть) ожидается общее имя (CN) существующей подсети.
Подкоманда выводит тот же набор атрибутов подсети, что и подкоманда samba-tool subnet list --json

Примечание

Полный список параметров каждой команды можно увидеть в справке, например:
$ samba-tool sites subnet view --help
Примеры:
  • получить список сайтов в формате JSON:
    # samba-tool sites list --json
    {
    "Default-First-Site-Name": {
    "cn": "Default-First-Site-Name",
    "distinguishedName": "CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt",
    "dn": "CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt",
    "instanceType": 4,
    "name": "Default-First-Site-Name",
    "objectCategory": "CN=Site,CN=Schema,CN=Configuration,DC=test,DC=alt",
    "objectClass": [
        "top",
        "site"
    ],
    "objectGUID": "4dbdb4a9-ebe9-4ff8-a047-40da60136056",
    "showInAdvancedViewOnly": true,
    "systemFlags": 1107296256
    }
    }
    
  • получить информацию о сайте:
    # samba-tool sites view Default-First-Site-Name
    
  • создать сайт:
    # samba-tool sites create newSite
    Site newSite created !
    
  • создать подсеть:
    # samba-tool sites subnet create 192.168.10.0/24 newSite
    Subnet 192.168.10.0/24 created !
    
  • получить список подсетей для сайта newSite с подробной информацией в JSON:
    # samba-tool sites subnet list newSite --json
    {
      "192.168.10.0/24": {
        "cn": "192.168.10.0/24",
        "distinguishedName": "CN=192.168.10.0/24,CN=Subnets,CN=Sites,CN=Configuration,DC=test,DC=alt",
        "dn": "CN=192.168.10.0/24,CN=Subnets,CN=Sites,CN=Configuration,DC=test,DC=alt",
        "instanceType": 4,
        "name": "192.168.10.0/24",
        "objectCategory": "CN=Subnet,CN=Schema,CN=Configuration,DC=test,DC=alt",
        "objectClass": [
          "top",
          "subnet"
        ],
        "objectGUID": "5ebde1f9-5369-4673-a10a-b9c10310d137",
        "showInAdvancedViewOnly": true,
        "siteObject": "CN=newSite,CN=Sites,CN=Configuration,DC=test,DC=alt",
        "systemFlags": 1073741824
      }
    }
    
  • закрепить подсеть 192.168.10.0/24 за сайтом newSite:
    # samba-tool sites subnet set-site 192.168.10.0/24 newSite
    Subnet 192.168.10.0/24 shifted to site newSite
    
  • удалить подсеть:
    # samba-tool sites subnet remove 192.168.10.0/24
    

Глава 46. Групповые управляемые учётные записи служб (gMSA)

В Samba начиная с версии 4.20 реализована возможность создания и управления групповыми управляемыми учётными записями служб (gMSA).
gMSA (Group Managed Service Account) — это специальный тип учётной записи службы в AD, предназначенный для автоматического управления паролями для служб, приложений и запланированных задач. Пароль gMSA полностью управляется контроллером домена и не хранится в открытом виде.
Основные проблемы, которые решает gMSA:
  1. Хранение учётных данных в открытом виде
    Многие службы (веб-серверы, файловые сервисы, базы данных) используют учётные записи для доступа к сетевым ресурсам. Пароли таких сервисных аккаунтов часто прописывают в конфигурации, что небезопасно.
  2. Регулярная смена паролей
    Политики безопасности требуют регулярной смены паролей. При хранении в файлах это приводит к трудоёмким операциям и простою служб.
Как gMSA решает эти проблемы:
  • Автоматическое управление паролями
    AD автоматически и регулярно (по умолчанию каждые 30 дней) меняет длинный и сложный пароль для gMSA. Администратору не нужно знать пароль и не нужно его менять вручную.
  • Привязка к хостам, а не знанию пароля
    gMSA можно привязать к одному или нескольким серверам (компьютерным учётным записям). Только эти серверы могут получать текущий пароль от контроллера домена.
  • Использование по имени
    Служба указывает только имя gMSA. ОС сама получает текущий пароль и выполняет аутентификацию.

Примечание

В Windows процесс получения пароля выполняется автоматически через MS-KDS.
В Linux-системах (например, файловых серверах на базе Samba) модуль winbind также может получать учётные данные gMSA, но это требует дополнительной настройки.
Samba предоставляет инструменты для клиентской работы с gMSA на Unix-хостах: получение текущего и предыдущего паролей, создание Kerberos-кеша и т.д.
Начиная с Samba 4.20, команды просмотра паролей (samba-tool user getpassword) расширены и поддерживают как gMSA (через LDAP), так и локальные учётные записи с совместимым форматом хранения пароля. Доступные команды:
  • samba-tool user getpassword — получение текущего и предыдущего паролей gMSA;
  • samba-tool user get-kerberos-ticket — создание Kerberos TGT в локальном кеше;
  • samba-tool domain exportkeytab — экспорт ключей в keytab-файл.

Примечание

Параметр --attributes в команде samba-tool user getpassword позволяет вывести дополнительные LDAP-атрибуты, связанные с объектом пользователя или gMSA-аккаунтом. Список атрибутов передаётся в виде строк, разделённых запятыми:
--attributes="attr1,attr2,attr3"
Если какой-либо атрибут недоступен для выбранного объекта, он будет проигнорирован.
Для атрибутов, содержащих значения времени (например, pwdLastSet), доступна дополнительная опция форматирования. Формат задаётся с помощью суффикса ;format=formatSpecifier:
--attributes="attributeName;format=formatSpecifier"
Доступны следующие спецификаторы формата:
  • GeneralizedTime (например, 20251125075541.0Z);
  • UnixTime (например, 1764057341);
  • TimeSpec (например, 1764057341.597531557).
Для получения предыдущего пароля необходимо добавить суффикс ;previous=1 к атрибутам, где это применимо.
Поскольку в имени атрибута используется символ ;, всю строку атрибутов необходимо заключать в кавычки, чтобы оболочка не интерпретировала точку с запятой как конец команды.
Примеры использования:
  • Получение NT-хеша (для NTLM):
    # samba-tool user getpassword -H ldap://dc1.test.alt \
        --machine-pass gMSAkey1$ --attributes=pwdLastSet,unicodePwd
    
    Пример вывода на машине, которая имеет право получать пароль:
    GENSEC backend 'gssapi_spnego' registered
    GENSEC backend 'gssapi_krb5' registered
    GENSEC backend 'gssapi_krb5_sasl' registered
    GENSEC backend 'spnego' registered
    GENSEC backend 'schannel' registered
    GENSEC backend 'ncalrpc_as_system' registered
    GENSEC backend 'sasl-EXTERNAL' registered
    GENSEC backend 'ntlmssp' registered
    GENSEC backend 'ntlmssp_resume_ccache' registered
    GENSEC backend 'http_basic' registered
    GENSEC backend 'http_ntlm' registered
    GENSEC backend 'http_negotiate' registered
    GENSEC backend 'krb5' registered
    GENSEC backend 'fake_gssapi_krb5' registered
    Starting GENSEC mechanism spnego
    Starting GENSEC submechanism gssapi_krb5
    dn: CN=gMSAkey2,CN=Managed Service Accounts,DC=test,DC=alt
    pwdLastSet: 134081379252274067
    unicodePwd:: kWVoPlfdFbDYYkAL9wppkg==
    
    Any available password returned OK
    
    Пример вывода на машине, которая не имеет доступ к паролю:
    dn: CN=gMSAkey2,CN=Managed Service Accounts,DC=test,DC=alt
    pwdLastSet: 134081379252274067
    
    Any available password returned OK
    

    Важно

    Использование простой LDAP-аутентификации с gMSA не рекомендуется. Предпочтителен Kerberos.
  • Получение предыдущего NT-хеша:
    # samba-tool user getpassword -H ldap://dc1.test.alt \
        --machine-pass gMSAkey1$ --attributes="unicodePwd;previous=1"
    
    …
    dn: CN=gMSAkey1,CN=Managed Service Accounts,DC=test,DC=alt
    unicodePwd;previous=1:: s1z7eCR7TpDOIijGqm0x7g==
    
  • Получение предыдущего пароля в UTF-8:
    # samba-tool user getpassword -H ldap://dc1.test.alt \
        --machine-pass gMSAkey1$ --attributes="pwdLastSet;format=GeneralizedTime,virtualClearTextUTF8;previous=1"
    …
    dn: CN=gMSAkey1,CN=Managed Service Accounts,DC=test,DC=alt
    virtualClearTextUTF8;previous=1:: 5bCR6a265bG846yi55ay5ayp5JGa74yL6KSS5I6A6Ye+
     5peA4aup7q+074q174aL56GD47ms7qq15Zmi6p2P7Yuu5YCC66Cg7YO+4bWq4Lqp7rK06LC04ZC04
     4eC45yK46OU4r2v4bi+6JyB5bGv7ZKC5ZSS6Zy75q226rWE5r+L6Z+i4YCG4qSn6qWg46e+5Zy047
     SM4KSk5ai35L2h6oms7pOC7pCJ4qid56Gt67+R5Zux54G044+i7pqJ4qWa5ra+7KaE5Imn6LOy5be
     q4ZaK7o626ZSZ4bCf5KaPzrfRsuKNseSelOmqp++ZvumupdSZyoDiqqHtiojvg4ThhJnnuYXntpvn
     gazuj77jvLDriYHqoaXohrnphK3uo7jlrLnujoTpvbDmvJPlkbzkmILhnKTho6njipPsh7LshrTlu
     4TrpqLPo+eJoOe/l+i2ieKwq+S7neO0t++/veOMtumpi+ant+OEo+WAjuSKlOqequiRvu61uuC8uw
     ==
    pwdLastSet;format=GeneralizedTime: 20251125075541.0Z
    
  • Получение Kerberos-билета:
    # samba-tool user get-kerberos-ticket -H ldap://dc1.test.alt \
        --machine-pass gMSAkey1$ --output-krb5-ccache=/tmp/krb5_ccache
    
    Проверка билета:
    # klist -c /tmp/krb5_ccache
    Ticket cache: FILE:/tmp/krb5_ccache
    Default principal: gMSAkey1$@TEST.ALT
    
    Valid starting       Expires              Service principal
    25.11.2025 14:05:36  25.11.2025 17:05:36  krbtgt/TEST.ALT@TEST.ALT
    	renew until 25.11.2025 20:05:36
    

Примечание

Инструменты Windows (PowerShell, ADWS) для настройки gMSA используют Active Directory Web Services (ADWS), который не поддерживается Samba 4.21.

46.1. Команды для работы с корневыми ключами gMSA (KDS)

Для использования gMSA в домене должен существовать корневой ключ KDS (Key Distribution Service Root Key). Он используется для генерации и шифрования паролей всех gMSA.
Управление ключами осуществляется через подкоманду domain kds root-key утилиты samba-tool.

Таблица 46.1. Команды управления корневыми ключами

Команда
Описание
Примечание
domain kds root-key create [опции]
Создать новый корневой ключ
При создании ключу присваивается уникальный идентификатор (GUID), который должен в дальнейшем использоваться для работы с ним.
Некоторые опции:
  • -H <URL> — URL сервера LDAP;
  • --json — вывод результатов в формате JSON;
  • --use-start-time=USE_START_TIME — начало использования корневого ключа
domain kds root-key list [опции]
Вывести список корневых ключей
Некоторые опции:
  • -H <URL> — URL сервера LDAP;
  • --json — вывод результатов в формате JSON;
  • --show-secrets — показать хеш корневого ключа.
По умолчанию в выводе команды указываются:
  • name — GUID ключа;
  • created — время создания ключа;
  • usable from — начало периода действия ключа;
  • dn — уникальное доменное имя ключа
domain kds root-key view <--latest | --name=NAME> [опции]
Вывод информации о корневом ключе
Некоторые опции:
  • -H <URL> — URL сервера LDAP;
  • --latest — показать последний ключ;
  • --name=NAME — показать ключ с указанным GUID;
  • --json — вывод результатов в формате JSON;
  • --show-secrets — показать хеш корневого ключа
domain kds root-key delete --name=NAME [опции]
Удалить корневой ключ

Примечание

При создании нового домена Samba автоматически создаёт корневой ключ.
Если домен был обновлён со старой версии Samba, и требуется использовать gMSA, корневой ключ нужно создать вручную.
Создание ключа можно запускать на любом работающем контроллере домена, но рекомендуется делать на контроллере с ролью PDC (Primary Domain Controller emulator), или на контроллере с FSMO-ролями Infrastructure Master, Schema Master.
Примеры:
  • Создать корневой ключ:
    # samba-tool domain kds root-key create
    created root key 40be934e-f719-c8ff-42cf-e4b8364f1d90, usable from 2025-11-20T14:45:39.898080+00:00 (about now)
    
  • Просмотреть информацию о созданном ключе:
    # samba-tool domain kds root-key view --name 40be934e-f719-c8ff-42cf-e4b8364f1d90
    name 40be934e-f719-c8ff-42cf-e4b8364f1d90
       created        2025-11-20T14:45:39.898080+00:00 (about 68 seconds ago)
       usable from    2025-11-20T14:45:39.898080+00:00 (about 68 seconds ago)
       dn             CN=40be934e-f719-c8ff-42cf-e4b8364f1d90,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=test,DC=alt
       cn             40be934e-f719-c8ff-42cf-e4b8364f1d90
       whenCreated    20251120144539.0Z
       whenChanged    20251120144539.0Z
       objectGUID     870705c2-ba6d-49ee-8ba8-250e29a471bc
       msKds-KDFAlgorithmID SP800_108_CTR_HMAC
       msKds-KDFParam 00000000010000000e000000000000005300480041003500310032000000
       msKds-SecretAgreementAlgorithmID DH
       msKds-PublicKeyLength 2048
       msKds-PrivateKeyLength 256
       msKds-Version  1
       msKds-DomainID CN=DC1,OU=Domain Controllers,DC=test,DC=alt
    
  • Получить список ключей:
    # samba-tool domain kds root-key list
    1 root key found.
    
    name 40be934e-f719-c8ff-42cf-e4b8364f1d90
       created        2025-11-20T14:45:39.898080+00:00 (about 108 seconds ago)
       usable from    2025-11-20T14:45:39.898080+00:00 (about 108 seconds ago)
       dn             CN=40be934e-f719-c8ff-42cf-e4b8364f1d90,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=test,DC=alt
    

Важно

После создания ключа нельзя сразу использовать gMSA. По умолчанию ключ становится активным через 10 часов — чтобы гарантировать репликацию на все DC.
В ситуациях, когда нужно создать ключ сразу готовый к использованию (к примеру, для тестовой среды), можно задать «эффективное» время, используя параметр --use-start-time. Например:
# samba-tool domain kds root-key create --use-start-time="$(date -d '10 hours ago' +"%Y-%m-%d %H:%M:%S")"
created root key 59f4665f-53e5-2c92-9564-5bc1762ffe4d, usable from 2025-11-20T05:25:58+00:00 (about 10 hours ago)

46.2. Операции с учетными записями gMSA

Управление gMSA осуществляется через подкоманды service-account утилиты samba-tool.

Таблица 46.2. Команды для работы с gMSA

Команда
Описание
Примечание
service-account create [опции]
Создать gMSA
Некоторые опции:
  • -H <URL> — URL сервера LDAP;
  • --name — имя учетной записи gMSA;
  • --dns-host-name — полное доменное имя учетной записи gMSA;
  • --group-msa-membership — SDDL для членства в группе MSA;
  • --managed-password-interval — интервал обновления управляемого пароля в днях (по умолчанию — 30 дней)
service-account list [опции]
Вывести список gMSA
Некоторые опции:
  • -H <URL> — URL сервера LDAP;
  • --json — вывод результатов в формате JSON
service-account view --name=NAME [опции]
Просмотреть информацию об учётной записи
По умолчанию подкоманды выводит список имен учетных записей gMSA в домене в формате sAMAccountName.
Некоторые опции:
  • --json — вывод результатов в формате JSON
service-account delete --name=NAME [опции]
Удалить gMSA
При вызове ожидается имя gMSA в параметре --name
service-account group-msa-membership <подкоманда>
Управление доступом к паролю
Доступные подкоманды:
  • add — выдача разрешения на использование (чтение пароля) gMSA;
  • remove — отзыв разрешения на использование (чтение пароля) gMSA;
  • show — просмотр списка разрешений на использование (чтение пароля) gMSA
service-account modify --name=NAME [опции]
Изменить gMSA
При вызове ожидается имя учетной записи gMSA в параметре --name.
Некоторые опции:
  • --dns-host-name — полное доменное имя учетной записи gMSA;
  • --group-msa-membership — SDDL для членства в группе MSA

Примечание

Значение интервала обновления управляемого пароля (атрибут msDS-ManagedPasswordInterval) нельзя изменить после создания записи нельзя. Данный атрибут доступен только для чтения.
Параметры gMSA в ADMC
Примеры:
  • Создать групповую управляемую служебную учётную запись (gMSA):
    # samba-tool service-account create --name=gMSAkey1 --dns-host-name=gMSAkey1.test.alt
    Created group managed service account: gMSAkey1
    
  • Просмотреть информацию о созданной gMSA:
    # samba-tool service-account view --name=gMSAkey1
    {
      "badPasswordTime": "1601-01-01T00:00:00+00:00",
      "badPwdCount": 0,
      "cn": "gMSAkey1",
      "codePage": 0,
      "countryCode": 0,
      "dNSHostName": "gMSAkey1.test.alt",
      "distinguishedName": "CN=gMSAkey1,CN=Managed Service Accounts,DC=test,DC=alt",
      "dn": "CN=gMSAkey1,CN=Managed Service Accounts,DC=test,DC=alt",
      "instanceType": 4,
      "lastLogoff": "1601-01-01T00:00:00+00:00",
      "lastLogon": "1601-01-01T00:00:00+00:00",
      "logonCount": 0,
      "msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-2531619480-2401423016-1263625386-500)",
      "msDS-ManagedPasswordInterval": 30,
      "name": "gMSAkey1",
      "objectCategory": "CN=ms-DS-Group-Managed-Service-Account,CN=Schema,CN=Configuration,DC=test,DC=alt",
      "objectClass": [
        "top",
        "person",
        "organizationalPerson",
        "user",
        "computer",
        "msDS-GroupManagedServiceAccount"
      ],
      "objectGUID": "5ed431c8-a225-471b-ae76-de922fe07982",
      "objectSid": "S-1-5-21-2531619480-2401423016-1263625386-1118",
      "primaryGroupID": 515,
      "pwdLastSet": "2025-11-20T16:18:30.088526+00:00",
      "sAMAccountName": "gMSAkey1$",
      "sAMAccountType": 805306369,
      "userAccountControl": 4130
    }
    
  • Получить список gMSA:
    # samba-tool service-account list
    gMSAkey1$
    
  • Просмотр разрешений на чтение пароля gMSA:
    # samba-tool service-account group-msa-membership show --name=gMSAkey1
    Account-DN: CN=gMSAkey1,CN=Managed Service Accounts,DC=test,DC=alt
    Accounts or groups that are able to retrieve this group managed service account password:
      CN=Administrator,CN=Users,DC=test,DC=alt
    
  • Добавить разрешение для учётной записи веб-сервера на чтение пароля gMSA:
    # samba-tool service-account group-msa-membership add \
        --name=gMSAkey1 --principal=web$
    
    Trustee 'web$' is now allowed to show managed passwords for: gMSAkey1$
    

Примечание

При создании gMSA через samba-tool учётная запись по умолчанию отключена (установлен флаг ACCOUNT_DISABLED в атрибуте userAccountControl).
Для возможности получения Kerberos-билета учётную запись необходимо включить:
# samba-tool user enable gMSAkey1$
Enabled user 'gMSAkey1$'
Альтернативно модно изменить значение userAccountControl вручную. Например, получить текущее значение:
# samba-tool service-account view --name gMSAkey1$ | grep userAccountControl
"userAccountControl": 4130
Расшифровка:
4130 = 4096 (NORMAL_ACCOUNT) + 32 (PASSWD_NOTREQD) + 2 (ACCOUNT_DISABLED)
Чтобы включить учётную запись, нужно снять флаг ACCOUNT_DISABLED (2), новое значение: 4128. Это можно сделать, например, в ADMC:
Изменение параметра userAccountControl в ADMC

46.3. Пример настройки

Пошаговая инструкция:
  1. Убедиться, что существует хотя бы один корневой ключ KDS:
    # samba-tool domain kds root-key list
    1 root key found.
    
    name 3ee3d658-99f8-79b6-3027-9f5146aa4748
    

    Примечание

    Если ключ отсутствует, его необходимо создать (см. раздел Команды для работы с корневыми ключами gMSA (KDS)).
  2. Создать gMSA:
    # samba-tool service-account create --name=gMSAkey1 --dns-host-name=gMSAkey1.test.alt
    Created group managed service account: gMSAkey1
    
  3. Создать группу компьютеров, которым разрешён доступ к gMSA:
    • создать группу:
      # samba-tool group add gMSA_group1
      Added group gMSA_group1
      
    • добавить в группу учётные записи компьютеров:
      # samba-tool group addmembers gMSA_group1 'WIN-TEST-02$','WIN-TEST-03$','WORK-01$'
      Added members to group gMSA_group1
      
    • привязать группу к gMSA:
      # samba-tool service-account group-msa-membership add  \
          --name=gMSAkey1 \
          --principal='CN=gMSA_group1,CN=Users,DC=test,DC=alt'
      
      Trustee 'CN=gMSA_group1,CN=Users,DC=test,DC=alt' is now allowed to show managed passwords for: gMSAkey1$
      
    Теперь указанные компьютеры могут получать пароль gMSA и использовать его для аутентификации.
Пример настройки gMSA для работы с Nginx (машина с Nginx должна быть присоединена к домену):
  1. Создать gMSA:
    # samba-tool service-account create  \
    --name=gMSAkeynginx --dns-host-name=gMSAkeynginx.test.alt
    
    Created group managed service account: gMSAkeynginx
    
  2. Создать группу компьютеров и добавить серверы Nginx:
    # samba-tool group add nginxservers
    Added group nginxservers
    # samba-tool group addmembers nginxservers 'web$'
    Added members to group nginxservers
    
  3. Привязать группу к gMSA:
    # samba-tool service-account group-msa-membership add  \
    --name=gMSAkeynginx \
    --principal='CN=nginxservers,CN=Users,DC=test,DC=alt'
    
    Trustee 'CN=nginxservers,CN=Users,DC=test,DC=alt' is now allowed to show managed passwords for: gMSAkeynginx$
    
  4. Привязать SPN к gMSA:
    # samba-tool spn add HTTP/web.test.alt gMSAkeynginx$
    
  5. Создать keytab из gMSA:
    # samba-tool domain exportkeytab /tmp/nginx.keytab --principal=HTTP/web.test.alt@TEST.ALT
    Export one principal to /tmp/nginx.keytab
    
  6. Выполнить настройку Nginx см. раздел Nginx.
Nginx не работает как gMSA-клиент. Он работает как обычный Kerberos-сервис, используя keytab.

Глава 47. Управление парольными политиками

В Альт Домен настройки пароля позволяют настроить:
  • минимальные требования к длине и сложности пароля;
  • длину истории паролей: предотвращает повторное использование пользователем предыдущего пароля;
  • минимальный и максимальный срок действия пароля: как часто пользователь может/должен менять свой пароль;
  • блокировку учетной записи: пороговое значение неудачных попыток входа в систему перед блокировкой учетной записи пользователя и продолжительность блокировки.
Для управления настройками паролей используется подкоманда passwordsettings утилиты samba-tool.
Управление политиками паролей домена производится на контроллере домена.

47.1. Глобальные парольные политики

Для просмотра текущих параметров политик паролей используется команда:
# samba-tool domain passwordsettings show
Например:
# samba-tool domain passwordsettings show
Password information for domain 'DC=test,DC=alt'

Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30
Команда изменения параметра политик паролей:
# samba-tool domain passwordsettings set <параметр>
Возможные параметры:
  • --complexity=on|off|default — должен ли пароль отвечать требованиям сложности (по умолчанию on);
  • --store-plaintext=on|off|default — хранить пароли используя обратимое шифрование (по умолчанию off);
  • --history-length=целое число|default — число хранимых предыдущих паролей пользователей (требование неповторяемости паролей) (по умолчанию 24);
  • --min-pwd-length=целое число|default — минимальное количество символов в пароле (по умолчанию 7);
  • --min-pwd-age=целое число|default — минимальный срок действия пароля (по умолчанию 1);
  • --max-pwd-age=целое число|default — максимальный срок действия пароля (по умолчанию 43);
  • --account-lockout-duration=целое число|default — интервал времени (в минутах), в течение которого возможность аутентификации для пользователя, превысившего количество попыток входа, будет заблокирована (по умолчанию 30);
  • --account-lockout-threshold=целое число|default — допустимое количество неудачных попыток ввода пароля перед блокировкой учетной записи (по умолчанию 0 — никогда не блокировать);
  • --reset-account-lockout=целое число|default — интервал времени (в минутах), по истечении которого записанное количество попыток начинается заново (по умолчанию 30).
Изменить минимальную длину пароля и количество неудачных попыток входа в систему:
# samba-tool domain passwordsettings set \
--min-pwd-length=7 --account-lockout-threshold=3

Minimum password length changed!
Account lockout threshold changed!
All changes applied successfully!

Примечание

Определить, была ли учётная запись пользователя заблокирована после нескольких неудачных попыток входа в систему можно, просмотрев параметры учётной записи. Если badPwdCount достиг своего порога и для пользователя существует параметр lockoutTime значит учётная запись была заблокирована после нескольких неудачных попыток входа в систему:
# samba-tool user show ivanov
…
badPwdCount: 3
badPasswordTime: 133560395216186060
lockoutTime: 133560395216186060
…
Чтобы разблокировать пользователя, необходимо отредактировать объект учётной записи пользователя, установив для атрибута lockoutTime значение 0:
# samba-tool user edit ivanov
Modified User 'ivanov' successfully

# samba-tool user show ivanov
…
badPasswordTime: 133560395216186060
lockoutTime: 0
…
Разблокировать пользователя также можно в модуле удалённого управления базой данных конфигурации (ADMC) (подробнее см. Модуль удаленного управления базой данных конфигурации (ADMC)):

47.2. Объекты настроек паролей (PSO)

Объекты настроек паролей (Password Settings Object, PSO) позволяют администраторам Альт Домен переопределять параметры политики паролей домена и настраивать более точные параметры паролей для конкретных пользователей или групп пользователей. Например, для определённых пользователей можно установить требование минимальной длины пароля, ослабить ограничения сложности для других пользователей и т.д. PSO могут применяться к группам или к отдельным пользователям.
При создании объект PSO сохраняется в LDAP по пути
CN=<имя парольной политики>,CN=Password Settings Container,CN=System,DC=<domain>.
К одному и тому же пользователю может применяться множество различных PSO (напрямую или через группы). Если несколько PSO применяются к одному и тому же пользователю, в основном вступает в силу PSO с наименьшим приоритетом. Однако PSO, которые применяются непосредственно к пользователю, всегда превосходят PSO, унаследованные через членство в группе.
Если для пользователя не создано правила, будет применяться правило по умолчанию.

Примечание

Необходимо одновременно настраивать политику паролей для всех остальных пользователей, иначе есть риск снижения производительности при настройке PSO и применении их к пользователям. Например:
# samba-tool domain passwordsettings pso create PwPolicyAdmins 1 --min-pwd-length=16
# samba-tool domain passwordsettings pso apply PwPolicyAdmins "domain admins"
# samba-tool domain passwordsettings pso create PwPolicyUsers 3 --min-pwd-length=8
# samba-tool domain passwordsettings pso apply PwPolicyUsers "domain admins"
# samba-tool domain passwordsettings pso create PwPolicyService 2 --min-pwd-length=24
# samba-tool domain passwordsettings pso apply PwPolicyService "domain admins"
Если объектов PSO вообще нет, производительность не снижается.
Расчет PSO включает в себя расчет членства пользователя в группах, что является довольно дорогостоящим расчетом. Если PSO применяется непосредственно к пользователю (а не к группе), то дорогостоящие групповые вычисления пропускаются. Однако применение PSO непосредственно к пользователям делает управление PSO более сложным по сравнению с применением PSO к группам.

47.2.1. В ADMC

Для управления объектами настроек паролей в Альт Домен можно использовать модуль удалённого управления базой данных конфигурации (ADMC). Подробнее см. Управление объектами парольных настроек.

47.2.2. С помощью samba-tool

Для работы с объектами PSO используется подкоманда pso утилиты samba-tool.
Команда изменения PSO:
# samba-tool domain passwordsettings pso <подкоманда>
Доступные подкоманды:
  • apply — применить политику паролей PSO к пользователю или группе;
  • create — создать новый объект настроек пароля (PSO);
  • delete — удалить объект настроек пароля (PSO);
  • list — вывести список всех объектов настроек пароля (PSO);
  • set — изменить объект настроек пароля (PSO);
  • show — показать детали объекта настроек пароля;
  • show-user — отобразить настройки пароля, которые применяются к пользователю;
  • unapply — обновить PSO, чтобы он больше не применялся к пользователю или группе.
Для создания нового объекта PSO используется команда:
# samba-tool domain passwordsettings pso create <pso-name> <precedence> [options]
Подкоманда создает новую парольную политику с указанным именем (<pso-name>). Имя должно быть уникальным на уровне домена.
При создании политики может быть задан ее приоритет (<precedence>), который будет учитываться в том случае, если к пользователю или группе пользователей применяются несколько политик. Чем меньше значение параметра precedence, тем выше приоритет.
В качестве аргументов передаются атрибуты парольной политики с требуемыми значениями.

Примечание

Для создания объекта PSO необходимо изменить хотя бы один параметр по сравнению с настройками по умолчанию
Для применения атрибутов, заданных в объекте PSO, к определенному пользователю или группе используется команда:
# samba-tool domain passwordsettings pso apply <pso-name> <user-or-group-name> [options]
Подкоманда обеспечивает применение атрибутов парольной политики (PSO) с указанным именем (<pso-name>) к указанному пользователю или группе пользователей (<user-or-group-name>).
Пример создания и назначения парольной политики:
  1. Создать парольную политику:
    # samba-tool domain passwordsettings pso create PwPolicyUser 1 --min-pwd-length=10
    Not all password policy options have been specified.
    For unspecified options, the current domain password settings will be used as the default values.
    PSO successfully created: CN=PwPolicyUser,CN=Password Settings Container,CN=System,DC=test,DC=alt
    Password information for PSO 'PwPolicyUser'
    
    Precedence (lowest is best): 1
    Password complexity: on
    Store plaintext passwords: off
    Password history length: 24
    Minimum password length: 10
    Minimum password age (days): 1
    Maximum password age (days): 42
    Account lockout duration (mins): 30
    Account lockout threshold (attempts): 0
    Reset account lockout after (mins): 30
    
  2. Назначить созданную политику пользователю ivanov:
    # samba-tool domain passwordsettings pso apply PwPolicyUser ivanov
    The following PSO settings apply to user 'ivanov'.
    
    Password information for PSO 'PwPolicyUser'
    
    Precedence (lowest is best): 1
    Password complexity: on
    Store plaintext passwords: off
    Password history length: 24
    Minimum password length: 10
    Minimum password age (days): 1
    Maximum password age (days): 42
    Account lockout duration (mins): 30
    Account lockout threshold (attempts): 0
    Reset account lockout after (mins): 30
    
    Note: PSO applies directly to user (any group PSOs are overridden)
    
Чтобы увидеть, какой PSO действует для данного пользователя, используется команда samba-tool pso show-user:
# samba-tool domain passwordsettings pso show-user kim
No PSO applies to user 'kim'. The default domain settings apply.
Refer to 'samba-tool domain passwordsettings show'.
Для получения списка всех объектов PSO в домене используется команда:
# samba-tool domain passwordsettings pso list [options]
Эта подкоманда выводит список всех парольных политик (PSO), доступных в домене, в виде таблицы со столбцами Precedence и PSO name.

Глава 48. Резервное копирование и восстановление домена

48.1. Резервное копирование и восстановление из резервной копии

Инструменты резервного копирования и восстановления позволяют воссоздать домен в случае критических сбоев, делающих его дальнейшую эксплуатацию невозможной.
Примером такой проблемы может служить случайное удаление или изменение объекта в базе службы каталогов (например, OU, групповая политика, DNS-запись), приводящее к неработоспособности одного из доменных сервисов. Поскольку изменение реплицируется на все контроллеры домена, для восстановления работоспособности такого сервиса недостаточно выполнить повторное присоединение к домену какого-либо отдельного контроллера, так как он получит копию базы данных с вызвавшим проблему изменением. Для решения проблемы нужно восстановить домен из резервной копии, сделанной до повреждения.
В процессе восстановления создается новый контроллер домена с базой данных из резервной копии. Существующие контроллеры домена должны быть остановлены и повторно присоединены к восстановленному DC.

Примечание

Механизм восстановления из резервной копии не предназначен для восстановления отдельного контроллера домена при локальной проблеме (например, сбой диска, ошибка конфигурации), не затрагивающей весь домен. В этом случае достаточно провести диагностику и устранить проблему на контроллере домена, а затем выполнить повторное присоединение к домену для получения актуальной копии базы данных службы каталогов (см. раздел Восстановление произвольного контроллера домена после фатального сбоя).
Если контроллер домена используется как файловый сервер (что не рекомендуется), данные в SysVol и общих папках также нужно резервировать отдельно.
Поддерживаются следующие типы резервного копирования:
  • Online (онлайн-режим) — клонирование работающей базы данных. Аналогично присоединению нового DC. Подходит для быстрого восстановления;
  • Offline (автономный режим) — создание резервной копии напрямую с диска. Включает локальные метаданные репликации, которые не включаются в резервные копии в онлайн-режиме. Такую резервную копию также можно создать, когда контроллер домена находится в автономном режиме (т.е. процесс samba фактически не запущен);
  • Rename (режим с переименованием) — резервная копия с переименованным доменом. Предназначена только для временной замены.
Для создания резервной копии можно использовать команду:
# samba-tool domain backup <подкоманда> <опции>
Будет создан файл резервной копии .tar.bz2, содержащий полную резервную копию домена (на основе текущего контроллера домена).
Для восстановления из резервной копии используется команда:
# samba-tool domain backup restore <опции>

Примечание

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

48.1.1. Создание резервной копии в онлайн и офлайн режимах

Online/Offline резервное копирование

48.1.1.1. Онлайн-режим

В онлайн-режиме (online) создается резервная копия актуальной базы данных, не привязанная к состоянию конкретного контроллера домена.
Данный вид резервного копирования подходит в том случае, если требуется оперативно получить работоспособную долгосрочную или постоянную замену вышедшему из строя домену без детального изучения причин возникновения проблем в работе службы каталогов.
Для создания резервной копии в онлайн-режиме используется команда:
# samba-tool domain backup online \
 --targetdir=<output-dir> \
 --server=<DC-server> \
 -UAdministrator
Эту команду можно запустить как локально на контроллере домена, так и удалённо на другом узле. При удалённом запуске рекомендуется указать параметр --configfile, чтобы включить в резервную копию корректный smb.conf (локальный файл smb.conf может отличаться или отсутствовать).

Примечание

Перед созданием резервной копии рекомендуется запустить команду проверку целостности (samba-tool dbcheck) и исправить все ошибки, о которых она сообщает.

Примечание

Резервная копия содержит всю секретную информацию домена (ключи Kerberos, хеши паролей и т.д.). Необходимо хранить её в безопасном месте.
Пример создания онлайн-резервной копии на контроллере домена:
# mkdir /var/samba-backup-online
# samba-tool domain backup online --targetdir=/var/samba-backup-online --server=dc1 -UAdministrator

Password for [TEST\Administrator]:
workgroup is TEST
realm is test.alt
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
A Kerberos configuration suitable for Samba AD has been generated at /var/samba-backup-online/tmpxqc6dwts/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
…
Creating backup file /var/samba-backup-online/samba-backup-test.alt-2025-06-17T14-01-36.253494.tar.bz2...

48.1.1.2. Автономный режим

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

Важно

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

Примечание

Отличия автономного резервного копирования от онлайн-режима:
  • резервную копию можно создать, даже если контроллер домена в данный момент не работает;
  • резервная копия включает нереплицированные атрибуты, которые не сохраняются в онлайн-резервной копии;
  • в копию попадают необработанные файлы базы данных, что может привести к тому, что какие-либо скрытые проблемы в БД сохранятся в резервной копии.
Команда создания автономной резервной копии:
# samba-tool domain backup offline --targetdir=<output-dir>

Примечание

Несмотря на то, что данный тип резервного копирования называется автономным, контроллер не обязан быть отключён от сети. Утилита samba-tool использует внутренние блокировки, чтобы безопасно скопировать базу, даже если процесс samba запущен.
Пример создания автономной резервной копии на контроллере домена:
# mkdir /var/samba-backup-offline
# samba-tool domain backup offline --targetdir=/var/samba-backup-offline

running backup on dirs: /var/lib/samba/private /var/lib/samba /etc/samba
Starting transaction on /var/lib/samba/private/secrets
Starting transaction on /var/lib/samba/private/sam.ldb
   backing up /var/lib/samba/private/sam.ldb

…
   adding misc file etc/lmhosts
   adding misc file etc/smb.conf
Backup succeeded.

48.1.1.3. Восстановление домена из резервной копии

Восстановление из резервной копии — это пересоздание домена на основе сохранённого состояния.
Этапы восстановления:
  1. Остановить службу samba на всех контроллерах домена (если используется переименованная резервная копия этот шаг можно пропустить).
  2. Выполнить восстановление на новом контроллере домена (samba-tool domain backup restore).
  3. Запустить samba на восстановленном контроллере.
  4. Повторно присоединить старые контроллеры домена, например, выполнив команду:
    # samba-tool domain join <dns-realm> DC --server=<restored-dc>
    
  5. Если используется переименованная резервная копия, также потребуется перенастроить сетевые устройства (DNS, маршрутизацию), чтобы трафик направлялся в восстановленный домен, а не в исходный домен.

Примечание

Из файла резервной копии восстанавливается весь домен, а не конкретный контроллера домена. Шаг с командой samba-tool domain backup restore выполняется только один раз, при этом домен воссоздается на одном контроллере домена. Затем все старые контроллеры домена должны быть повторно присоединены к восстановленному контроллеру домена.
Этап восстановления из файла резервной копии аналогичен разворачиванию домена, который выполнялся при первой настройке сети Samba, за исключением того, что резервная копия содержит в себе все объекты базы данных, которые были добавлены с момента создания домена. Как и при создании нового домена, при запуске команды восстановления домена потребуется указать новый контроллер домена. Новый контроллер домена не должен существовать в сети.
Команда восстановления домена из резервной копии:
# samba-tool domain backup restore \
 --backup-file=<tar-file> \
 --newservername=<DC-name> \
 --targetdir=<new-samba-dir>
где
  • tar-file — путь к файлу резервной копии (.tar.bz2);
  • DC-name — имя нового контроллера домена;
  • new-samba-dir — каталог, куда будут восстановлены все файлы службы каталогов (smb.conf, sam.ldb и т. п.).
Целевой каталог должен быть пустым или не должен существовать. Не рекомендуется восстанавливать базу данных домена в место установки по умолчанию (например, в каталог /var/lib/samba). Вместо этого рекомендуется восстановить базу данных домена в другой целевой каталог, а затем, при запуске samba, использовать параметр -s (или --configfile), например:
# samba -s <targetdir>/etc/smb.conf
Это гарантирует, что Samba будет использовать восстановленные файлы базы данных, а не системные.
Восстановленный контроллер домена будет добавлен в сайт Default-First-Site-Name. Если он не существует — будет создан автоматически. Указать альтернативный сайт можно с помощью параметра --site.
Перед запуском службы каталогов на восстановленном контроллере домена следует еще раз проверить корректность восстановленного файла smb.conf.
Пример восстановления данных из резервной копии:
# mkdir /var/lib/samba/new
# samba-tool domain backup restore \
 --backup-file=/home/user/samba-backup-test.alt-2025-06-17T14-01-36.253494.tar.bz2 \
 --newservername=newdc \
 --targetdir=/var/lib/samba/new

Adding new DC to site 'Default-First-Site-Name'
Updating basic smb.conf settings...
…
Backup file successfully restored to /var/lib/samba/new
Please check the smb.conf settings are correct before starting samba.

48.1.2. Переименованная резервная копия

Режим переименования (rename) позволяет создать клон домена с изменённым именем, который можно использовать как временный альтернативный домен.
Процедура создания резервной копии и восстановления из неё в режиме переименования:
Создание переименованной резервной копии
В режиме с переименованием (rename) формируется набор файлов с актуальными данными службы каталогов, не привязанными к состоянию конкретного контроллера домена, с переименованием домена.
Создание резервной копии в режиме переименования может применяться для:
  • запуска временного альтернативного домена на случай катастрофического отказа основного домена. На альтернативный/переименованный домен можно переключиться с минимальными усилиями. Затем можно запустить два домена одновременно, не мешая друг другу (переименованный/альтернативный домен будет предоставлять основные сетевые службы Samba, в это же время на исходных контроллерах домена можно устранять неполадки);
  • создания реалистичного лабораторного домена: домен переименовывается и удаляются конфиденциальные данные (на данный момент только самые важные), чтобы создать предпроизводственную среду для тестирования.

Примечание

Можно запустить два домена одновременно — исходный (для диагностики) и переименованный (для работы).
При клонировании базы данных выполняются следующие изменения:
  • смена DNS-имени домена (например, test.alt → newtest.alt);
  • смена NetBIOS-имени (например, TEST → NEWTEST);
  • обновление всех DN (Distinguished Names) объектов;
  • переименование объекта домена и его NetBIOS-имени;
  • обновление DNS-зон и атрибутов dnsRoot.

Примечание

Модифицируется только клонированный домен — исходный домен вообще не затрагивается.
Объекты, которые не меняются:
  • userPrincipalName (UPN) — остается в формате user@old-realm. Если при создании копии использовался параметр --keep-dns-realm, пользователи могут входить по user@old-realm. Иначе — по user@new-realm (при условии корректной настройки Kerberos);
  • групповые политики (GPO) — gPCFileSysPath и gPLink не обновляются. Файлы в sysvol сохраняют старое имя домена в путях (например, sysvol/test.alt/Policies). Каталог Policies в sysvol создаётся с новым именем (например, sysvol/newtest.alt/Policies).

Примечание

Обновление объектов групповой политики для обработки изменения имени домена — нетривиальный процесс. Лучший способ справиться с долгосрочным переименованием домена — вручную экспортировать файлы ГП, а затем повторно импортировать их. В краткосрочной перспективе переименованный домен сможет продолжать использовать объекты групповой политики, относящиеся к старой области.
Процесс переименования домена выполняется в два этапа:
  1. Создание переименованной резервной копии. Команда samba-tool domain backup rename клонирует базу и переименовывает домен.
  2. Восстановление из копии. Команда samba-tool domain backup restore создаёт новый контроллер домена на основе копии.

48.1.2.1. Создание переименованной резервной копии

Команда для создания переименованной резервной копии:
# samba-tool domain backup rename <new-netbios> <new-dns-realm> \
 --server=<dc-to-backup> \
 --targetdir=<output-dir> \
 --no-secrets \
 -UAdministrator
где
  • <new-netbios> — новое NETBIOS-имя домена (например, NEWTEST);
  • <new-dns-realm> — новое DNS-имя домена (например, newtest.alt);
  • --server — имя контроллера, с которого делается копия;
  • --targetdir — каталог, куда будет записан сгенерированный файл резервной копии;
  • --no-secrets — исключает хеши паролей (например, unicodePwd, lmPwdHistory);
  • -Uadministrator — учётная запись для доступа к контроллеру.

Предупреждение

Параметр --no-secrets исключает из резервной копии конфиденциальную информацию о паролях (например, такие атрибуты, как unicodePwd, lmPwdHistory и т. д.) для всех пользователей в домене. При этом, файл резервной копии по-прежнему содержит конфиденциальные данные (имена пользователей, структуру OU и т.д.).
Пример создания переименованной резервной копии на контроллере домена:
# mkdir /var/samba-backup-rename
# samba-tool domain backup rename NEWTEST newtest.alt \
 --server=dc1 \
 --targetdir=/var/samba-backup-rename \
 --no-secrets \
 -UAdministrator

New realm for backed up domain: newtest.alt
New base DN for backed up domain: DC=newtest,DC=alt
New domain NetBIOS name: NEWTEST
Password for [TEST\Administrator]:
Provisioning the new (renamed) domain...
…
Файл резервной копии сохраняется как /var/samba-backup-rename/samba-backup-newtest.alt-<timestamp>.tar.bz2.
В случае, если команда создания резервной копии запускается на узле, который будет использоваться в качестве нового контроллера домена (он должен быть подключён к рабочему домену), рекомендуется иметь файл smb.conf, максимально соответствующий производственному контроллеру домена, и передать его команде резервного копирования (с помощью параметра --configfile=smb.conf). Это гарантирует, что резервная копия будет содержать smb.conf, точно соответствующий домену.
Если команда создания резервной копии запускается на другом узле, (например, на рабочем контроллере домена), необходимо скопировать сгенерированный файл резервной копии на узел, который будет использоваться в качестве нового контроллера домена.

48.1.2.2. Восстановление из переименованной резервной копии

Файл резервной копии /var/samba-backup-rename/samba-backup-newtest.alt-<timestamp>.tar.bz2 может использоваться для восстановления клонированной и переименованной базы данных на диске. В восстановленном домене будет только один новый контроллер домена с именем, указанными с помощью опции --newservername. В последующем к нему могут быть присоединены другие контроллеры домена. Для указания нового каталога для размещения всех файлов службы каталогов (smb.conf, sam.ldb и т. п.) может использоваться опция --targetdir.
Команда восстановления домена из резервной копии:
# samba-tool domain backup restore \
 --backup-file=<tar-file> \
 --newservername=<DC-name> \
 --targetdir=<new-samba-dir>
где
  • --backup-file — файл резервной копии;
  • --newservername — имя нового контроллера домена;
  • --targetdir — каталог, куда будут восстановлены все файлы службы каталогов (smb.conf, sam.ldb и т. п.).
Пример восстановления:
# mkdir /var/lib/samba/newtest
# samba-tool domain backup restore \
 --targetdir=/var/lib/samba/newtest \
 --newservername=NEWDC1 \
 --backup-file=/home/user/samba-backup-test.alt-2025-06-17T14-01-36.253494.tar.bz2

Примечание

Целевой каталог должен быть пустым или не должен существовать. Не рекомендуется восстанавливать базу данных домена в место установки по умолчанию (например, в каталог /var/lib/samba/). Однако можно указать подкаталог (например, /var/lib/samba/newtest/).

Примечание

Имя нового контроллера не должно совпадать с именем существующего DC в исходной сети. Это предотвратит конфликты при одновременной работе двух доменов.

48.1.2.3. Сброс пароля после восстановления

При восстановлении домена из резервной копии пароль учётной записи администратора сбрасывается на случайно сгенерированный. Для его изменения можно просто обновить базу данных на локальном диске, выполнив команду:
# samba-tool user setpassword Administrator \
 --newpassword=<пароль> \
 -H /var/lib/samba/newtest/private/sam.ldb
Для тестирования аутентификации пользователей можно либо добавить дополнительные «тестовые» учётные записи (пользователей или машин), либо использовать учётные записи, скопированные из исходного домена.

Примечание

У скопированных учётных записей не установлены пароли. Их можно задать до или после запуска службы каталогов.
Пример сброса пароля для пользователя:
# samba-tool user setpassword ivanov \
 --newpassword=Pa$$word \
 -H /var/lib/samba/newtest/private/sam.ldb

48.1.2.4. Запуск службы Samba

Перед запуском службы каталогов на новом контроллере домена, рекомендуется проверить корректность настроек в восстановленном файле smb.conf (например, /var/lib/samba/newtest/etc/smb.conf) и в файле /etc/krb5.conf, и при необходимости вручную внести в них изменения.
При запуске службы каталогов необходимо указать восстановленный smb.conf. Например:
# samba -s /var/lib/samba/newtest/etc/smb.conf
Это гарантирует, что Samba использует восстановленные файлы базы данных, а не системные по умолчанию.
При первом запуске может появиться сообщение об ошибках DNS. Это нормально — Samba автоматически запускает samba_dnsupdate для регистрации DNS-записей нового домена. Ошибки исчезнут после завершения процесса инициализации.
После запуска samba можно проверить правильность работы нового контроллера домена, например, выполнив команду:
# ldbsearch -H ldap://NEWDC1 -UAdministrator
Успешный вывод означает, что:
  • Samba запущена;
  • LDAP-доступ работает;
  • учётная запись Administrator активна.

48.1.2.5. Обновление подсетей и сайтов

Восстановленный домен сохраняет все сайты и подсети исходного домена. Однако, поскольку новые контроллеры находятся в другой сети — подсети, привязанные к сайтам, могут быть некорректны.
Рекомендуемые действия:
  1. Получить список сайтов:
    # samba-tool sites list
    
  2. Проверить текущие подсети сайтов, например:
    # samba-tool sites subnet list Default-First-Site-Name
    
  3. Удалить или изменить нерелевантные подсети:
    # samba-tool sites subnet remove 192.168.0.0/24
    # samba-tool sites subnet create 10.0.0.0/24 "Default-First-Site-Name"
    
  4. При необходимости создать новые сайты:
    # samba-tool sites create TestSite
    
Это обеспечит корректную работу репликации, обнаружения служб и групповых политик.

48.1.3. Рекомендуемая стратегия восстановления домена

Восстановление из резервной копии сопряжено с двумя основными ограничениями:
  • необходимость использовать отдельный каталог для установки (--targetdir), а не /var/lib/samba по умолчанию;
  • имя нового контроллера (--newservername) не должно совпадать с именем существующего DC в сети.
Эти неудобства можно минимизировать, используя временный контроллер домена (например, виртуальную машину).
Процесс восстановления через временный DC:
  • выполнить восстановление из файла резервной копии на временный контроллер домена и запустить службу каталогов;
  • повторно присоединить существующие контроллеры домена к временному контроллеру домена (во время присоединения можно использовать исходные имена серверов и каталог по умолчанию /var/lib/samba);
  • удалить временный контроллер домена (например, с помощью команды samba-tool domain demote).
В результате сеть домена будет полностью идентична исходной.

Примечание

Пример разворачивания домена (SAMBA_INTERNAL) из резервной копии на ВМ:
  1. Подготовить узел:
    1. Установить пакет task-samba-dc, который установит все необходимое:
      # apt-get install task-samba-dc
      
      или компонент samba-dc
      # alteratorctl components install samba-dc
      
    2. Остановить конфликтующие службы krb5kdc и slapd, а также bind:
      # for service in smb nmb krb5kdc slapd bind; do \
       systemctl disable $service; \
       systemctl stop $service; \
       done
      
    3. Очистить базы и конфигурацию Samba:
      # rm -f /etc/samba/smb.conf
      # rm -rf /var/lib/samba
      # rm -rf /var/cache/samba
      # mkdir -p /var/lib/samba/sysvol
      
  2. Скопировать файл резервной копии на ВМ и выполнить восстановление домена из файла резервной копии:
    # samba-tool domain backup restore \
     --backup-file=/home/user/samba-backup-test.alt-2025-06-17T14-01-36.253494.tar.bz2 \
     --newservername=newdc  --targetdir=/var/lib/samba
    
    Adding new DC to site 'Default-First-Site-Name'
    Updating basic smb.conf settings...
    …
    Backup file successfully restored to /var/lib/samba
    Please check the smb.conf settings are correct before starting samba.
    
  3. Скопировать файл smb.conf из каталога /var/lib/samba/etc/ в /etc/samba/:
    # cp /var/lib/samba/etc/smb.conf /etc/samba/
    
  4. Запустить службу каталогов:
    # systemctl enable --now samba
    
  5. Заменить файл /etc/krb5.conf файлом из каталога /var/lib/samba/private/:
    # cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
    
  6. Проверить работоспособность домена (см. Проверка работоспособности домена):
    # samba-tool domain info 127.0.0.1
    Forest           : test.alt
    Domain           : test.alt
    Netbios domain   : TEST
    DC name          : newdc.test.alt
    DC netbios name  : NEWDC
    Server site      : Default-First-Site-Name
    Client site      : Default-First-Site-Name
    
    # smbclient -L localhost -Uadministrator
    Password for [TEST\administrator]:
    
    Sharename       Type      Comment
    ---------       ----      -------
    sysvol          Disk
    netlogon        Disk
    share           Disk      Commonplace
    Free            Disk
    IPC$            IPC       IPC Service (Samba 4.21.7-alt4)
    SMB1 disabled -- no workgroup available
    
    # host -t SRV _kerberos._udp.test.alt.
    _kerberos._udp.test.alt has SRV record 0 100 88 newdc.test.alt.
    

48.1.4. Отладочная информация

Если команда резервного копирования или восстановления завершилась с ошибкой, она может оставить временный каталог (указанный в параметре --targetdir). Анализ этого каталога может помочь понять, почему произошел сбой. Необходимо удалить этот каталог перед повторным запуском команды восстановления.
Создание резервной копии:
  • резервное копирование следует запускать от имени пользователя root. Хотя резервное копирование в онлайн-режиме может быть успешным и для пользователя без полномочий root, но при попытке восстановить данные из такой резервной копии могут возникнуть проблемы;
  • для резервных копий, выполненных в онлайн-режиме или в режиме переименования, следует проверить правильность используемых учётных данных и сведений о сервере, например:
    # ldbsearch -H ldap://<server> -UAdministrator
  • чтобы узнать больше информации о причине сбоя можно увеличить уровень журналирования. Например, добавить в команду параметр --debug=3;
  • работа команд, для выполнения резервного копирования в онлайн-режиме или в режиме переименования, очень похожа на присоединение к контроллеру домена. Если известно, что присоединение к контроллеру домена в вашей сети не удается, то эти команды также вероятно не будут работать. Сообщения «Committing SAM database» и «Cloned domain <domain>» указывают, что этап клонирования прошёл успешно;
  • инструменты резервного копирования не работают напрямую с контроллерами домена Windows, так как служба DFSR блокирует файлы sysvol. В смешанном домене следует создавать резервную копию с контроллера Samba. Если используется домен Windows, можно на время резервного копирования остановить службу DFSR «Репликация DFS».
Восстановление из резервной копии:
  • команда restore должна запускаться от root;
  • имя, указанное в параметре --newservername, не должно существовать в исходном домене. В противном случае будет получена ошибка:
    Adding CN=NEWDC,OU=Domain Controllers,DC=test,DC=alt
    ERROR(ldb): uncaught exception - Entry CN=NEWDC,OU=Domain Controllers,DC=test,DC=alt already exists
      File "/usr/lib64/samba-dc/python3.9/samba/netcmd/__init__.py", line 186, in _run
        return self.run(*args, **kwargs)
      File "/usr/lib64/samba-dc/python3.9/samba/netcmd/domain_backup.py", line 562, in run
        ctx.join_add_objects(specified_sid=dom_sid(str(sid)))
      File "/usr/lib64/samba-dc/python3.9/samba/join.py", line 674, in join_add_objects
        ctx.samdb.add(rec, controls=controls)
    
  • файл smb.conf в резервной копии может содержать некорректные настройки interfaces (IP-адреса, не соответствующие новому серверу). Избежать этой проблемы можно, указав аргумент --host-ip во время восстановления (имеет значение только на переименованных резервных копий).

48.2. Восстановление произвольного контроллера домена после фатального сбоя

Служба каталогов использует единую распределенную базу данных, в которой хранятся сведения обо всех сетевых ресурсах домена. Каждый контроллер домена работает с локальной копией этой базы. Синхронизацию изменений между такими локальными копиями обеспечивает механизм репликации. При выполнении на существующем контроллере домена команды samba-tool domain join DC локальная копия базы данных полностью перезаписывается актуальной копией распределенной базы данных (происходит процесс «повторного ввода» контроллера в домен).
Возможны ситуации, когда отдельный контроллер домена выходит из строя (например, из-за повреждения диска, сбоя в нереплицируемых данных или ошибки репликации), но остальная часть домена продолжает работать корректно. Поскольку ошибки не реплицируются на другие контроллеры и носят локальный характер, восстановление возможно путём удаления старого экземпляра и повторного присоединения под тем же именем.
Алгоритм восстановления контроллера домена:
  1. Вывести контроллер домена из эксплуатации, путём удаления всей информации о нём. Для этого на любом работающем контроллере домена выполнить команду:
    # samba-tool domain demote --remove-other-dead-server=dc2 -UAdministrator
    
    где dc2 — имя (hostname) вышедшего из строя контроллера.
  2. На узле, который будет заменой, выполнить:
    • в файле /etc/krb5.conf указать опции default_realm = TEST.ALT и dns_lookup_realm = false;
    • остановить конфликтующие службы:
      # for service in smb nmb krb5kdc slapd bind; do \
       systemctl disable $service; \
       systemctl stop $service; \
       done
      
    • очистить старую конфигурацию Samba:
      # rm -f /etc/samba/smb.conf
      # rm -rf /var/lib/samba
      # rm -rf /var/cache/samba
      # mkdir -p /var/lib/samba/sysvol
      
    • ввести узел в домен как дополнительный контроллер домена:
      # samba-tool domain join test.alt  DC \
       --dns-backend=SAMBA_INTERNAL \
       -Uadministrator \
       --realm=test.alt
      
      Контроллер получит полную копию базы данных и начнёт участвовать в репликации.
    • запустить службы и обновление DNS:
      # systemctl enable --now samba
      # samba_dnsupdate --use-samba-tool --verbose
      
      Это гарантирует, что все DNS-записи контроллера будут корректно зарегистрированы.

Важно

На других контроллерах домена в выводе команды samba-tool drs showrepl некоторое время может отображаться ошибка (WERR_GEN_FAILURE):
…
DC=DomainDnsZones,DC=test,DC=alt
  Default-First-Site-Name\DC2 via RPC
    DSA object GUID: b78f2c9d-5c62-4497-a5e1-4fc85aedf1cb
    Last attempt @ Wed Jul  9 13:15:47 2025 MSK failed, result 31 (WERR_GEN_FAILURE)
    28 consecutive failure(s).
    Last success @ NTTIME(0)

DC=ForestDnsZones,DC=test,DC=alt
  Default-First-Site-Name\DC2 via RPC
    DSA object GUID: b78f2c9d-5c62-4497-a5e1-4fc85aedf1cb
    Last attempt @ Wed Jul  9 13:15:47 2025 MSK failed, result 31 (WERR_GEN_FAILURE)
    28 consecutive failure(s).
    Last success @ NTTIME(0)
…
Ошибка означает, что другие контроллеры пытаются реплицировать данные с ещё не восстановленного DC. После успешного присоединения нового контроллера и завершения репликации сообщение исчезнет.

Глава 49. Роли FSMO

FSMO, или Flexible single-master operations (операции с одним исполнителем) — это операции, выполняемые контроллерами домена, которые требуют обязательной уникальности сервера для каждой операции. В зависимости от типа операции уникальность FSMO подразумевается в пределах одного домена или леса доменов. Различные типы FSMO могут выполняться как на одном, так и на нескольких контроллерах домена. Выполнение FSMO сервером называют ролью сервера, а сами сервера — хозяевами операций.
Альт Домен — это центральный репозиторий, в котором хранятся все объекты и соответствующие им атрибуты. Это иерархическая база данных с поддержкой нескольких источников. Большинство операций в Альт Домен можно выполнять на любом контроллере домена. Служба репликации Альт Домен скопирует изменения на остальные контроллеры домена, обеспечив идентичность базы Альт Домен на всех контроллерах одного домена. Один из способов разрешения конфликтов заключается в том, что сохраняются изменения, внесенные последними. Изменения, внесенные остальными контроллерами домена, игнорируются.
Однако существует несколько операций (например, изменение схемы Альт Домен), при которых конфликты недопустимы. В Альт Домен некоторые обновления выполняются на одном специальном контроллере домена, а затем реплицируются на все остальные. Альт Домен использует роли, назначенные контроллерам домена, для этих специальных задач. Так как роль не привязана к одному контроллеру домена, она называется ролью FSMO.
В настоящее время существует семь ролей FSMO с разными областями действия:
  • Эмулятор PDC/PDC Emulator (один на домен);
  • Хозяин RID/RID Master (один на домен);
  • Хозяин схемы/Schema Master (один на лес);
  • Хозяин именования доменов/Domain Naming Master (один на лес);
  • Хозяин инфраструктуры/Infrastructure Master (один на домен);
  • Хозяин зоны DNS домена/Domain DNS Zone Master role (один на домен);
  • Хозяин зоны DNS леса/Forest DNS Zone Master role (один на лес).

49.1. Семь ролей FSMO

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

49.1.1. Эмулятор PDC

Владелец роли эмулятора PDC отвечает за следующие задачи в домене:
  • является сервером точного времени для клиентов в домене. Для аутентификации Kerberos необходима точная синхронизация времени. Эмулятор PDC корневого домена в лесу является по умолчанию сервером точного времени для эмуляторов PDC в дочерних доменах;
  • изменения паролей, внесенные другими контроллерами домена в домене, реплицируются преимущественно в эмулятор PDC. В случае недоступности эмулятора PDC информация об изменении пароля всё равно распространится по домену, просто произойдет это несколько медленнее;
  • выполняет все функции, предоставляемые PDC в стиле NT4;
  • обрабатывает блокировки учетных записей. Сбои аутентификации на любом контроллере домена в домене, вызванные неправильным паролем, перенаправляются в эмулятор PDC до того, как сообщение о сбое из-за неправильного пароля будет передано пользователю. При успешной аутентификации учётной записи сразу после неудачной попытки, о ней уведомляется эмулятор PDC и сбрасывает счетчик неудачных попыток в ноль;
  • консоль управления групповыми политиками по умолчанию соединяется с эмулятором PDC, и изменения политик происходят на нем же. Если эмулятор PDC недоступен, то будет нужно указать редактору, к какому контроллеру домена подключиться;
  • в больших средах контроллер домена, которому принадлежит роль эмулятора PDC, может иметь высокую загрузку ЦП из-за сквозной аутентификации, смены пароля и синхронизации времени.
На каждый домен приходится один эмулятор PDC.
Этот контроллер домена должен, по возможности, быть доступен всегда, потому что для Kerberos требуется точное время на всех машинах в домене. Если клиенты настроены на использование другого источника времени и в сети нет клиентов до Windows 2000, временное отсутствие может быть менее критичным.
Для поиска эмулятора PDC можно использовать команду host:
# host -t SRV _ldap._tcp.pdc._msdcs.<домен>
Например:
# host -t SRV _ldap._tcp.pdc._msdcs.test.alt
_ldap._tcp.pdc._msdcs.test.alt has SRV record 0 100 389 dc1.test.alt.

49.1.2. Хозяин RID

Владелец роли FSMO хозяина RID отвечает за обработку запросов пула RID от всех DC в домене. Он также отвечает за перемещение объектов в другой домен и удаление их из домена.
Все объекты безопасности, например, учётные записи и группы пользователей/компьютеров имеют уникальный идентификатор безопасности (SID). SID объектов содержит идентификатор безопасности (SID) домена, одинаковый для всех объектов в домене, и относительный идентификатор (RID), уникальный для каждого идентификатора безопасности субъекта безопасности, созданного в домене.
Каждому контроллеру домена в домене выделяется пул относительных идентификаторов RID, которые разрешено назначать созданным субъектам безопасности. По умолчанию это диапазон из 500 уникальных RID для всего домена, назначаемых хозяином RID каждому контроллеру домена. Если объект безопасности создается на контроллере домена, то RID берется из этого пула, что гарантирует его уникальность в домене. Если выделенный пул RID контроллера домена оказывается ниже порогового значения (ниже 50 %), контроллер домена выполняет запрос дополнительных идентификаторов RID к хозяину RID в домене. Хозяин RID в домене отвечает на запрос, извлекая идентификаторы RID из невыделенного пула RID домена и назначая их пулу запрашивающего контроллера домена.
На каждый домен приходится один хозяин RID.
Этот контроллер домена должен быть активен, при создании нового контроллера домена в домене, чтобы назначить ему пул RID. Также хозяин RID должен быть доступен, когда существующие контроллеры домена обновляют свой резервный пул RID.
С другой стороны, если хозяин RID находится в автономном режиме, то на каждом контроллере домена можно создавать новые объекты безопасности, пока локальный пул RID не станет пустым. Если пулы RID на всех контроллерах домена опустеют, создание дополнительных объектов станет невозможно. Пока хозяин RID домена находится в автономном режиме невозможно присоединиться к дополнительным контроллерам домена.

49.1.3. Хозяин схемы

Контроллер домена, обладающий ролью хозяина схемы, является единственным в лесу AD, кому разрешено обновлять схему каталога. После завершения обновления изменения реплицируются на все другие контроллеры домена в лесу.
Схема каталога (контекст именования схемы) или LDAP://cn=schema,cn=configuration,dc=<домен> существует на всех контроллерах домена. Обновления выполняются только на хозяине схемы. После завершения обновления схема реплицируется из хозяина схемы во все остальные контроллеры домена каталога.
В каждом лесу есть один хозяин схемы.
Контроллер домена, обладающий ролью хозяина схемы, должен быть подключен к сети при выполнении обновлений схемы.

49.1.4. Хозяин именования доменов

Хозяин именования доменов отвечает за внесение изменений в пространство доменных имен в масштабах леса. Только этот контроллер домена может добавлять или удалять домены, доверительные отношения с внешними каталогами и разделами приложений в/из леса.
Информация об именах доменов хранится в разделе «Контекст именования конфигурации» в CN=Partitions,CN=Configuration,DC=<домен>. Этот раздел существует на всех контроллерах домена, но обновляется только на хозяине именования доменов.
На каждый лес приходится один хозяин именования доменов.
Контроллер домена, обладающий ролью хозяина именования доменов, должен быть подключен к сети, когда устанавливаются доверительные отношения с внешними каталогами и доменами, а разделы приложений добавляются или удаляются из леса.

49.1.5. Хозяин инфраструктуры

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

49.1.6. Хозяин зоны DNS домена

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

49.1.7. Хозяин зоны DNS леса

Контроллер домена, которому принадлежит роль хозяина зоны DNS леса, отвечает за координацию добавления или удаления записей всего леса на DNS-серверах, на которых размещена зона DNS верхнего уровня. Эти записи содержат имена серверов глобального каталога (GC).
На каждый домен приходится один хозяин зоны DNS леса.

49.2. Просмотр и передача ролей FSMO

По возможности следует передавать роли FSMO штатным образом и не использовать принудительную передачу (захват роли). Для штатной передачи роли требуется, чтобы контроллер домена, которому в данный момент принадлежит роль, работал и был подключен к сети. В этом случае при передаче роли старый контроллер домена узнает, что он больше не владеет ролью.
Если контроллер домена сломан (например, из-за аппаратного дефекта) и больше никогда не будет возвращён в сеть, можно использовать принудительную передачу (захватить роль на оставшемся контроллере домена). Если старый контроллер домена будет снова подключён к сети, это вызовет конфликты и приведет к неконсистентному AD (т.к. старый контроллер домена не заметит изменения и по-прежнему будет считать себя владельцем роли).
Роли FSMO можно передавать с помощью инструмента командной строки samba-tool или в модуле удалённого управления базой данных конфигурации (ADMC) (подробнее см. Модуль удаленного управления базой данных конфигурации (ADMC)).

49.2.2. Инструмент samba-tool

49.2.2.1. Просмотр текущих владельцев

Операция просмотра списка владельцев ролей FSMO доступна всем пользователям.
Просмотр текущего состояния (команда выполняется на контроллере домена):
# samba-tool fsmo show
SchemaMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt

49.2.2.2. Передача роли

Операция передачи роли FSMO доступна пользователям со следующими полномочиями:
  • передача ролей уровня леса — администраторы леса (члены группы Enterprise Admins);
  • передача ролей уровня домена — администраторы домена (члены группы Domain Admins);
  • передача роли владельца схемы каталога — администраторы схемы (члены группы Schema Admins).
Для штатной передачи роли необходимо на контроллере домена, который должен стать новым владельцем роли, выполнить команду:
# samba-tool fsmo transfer --role=<роль>
Список возможных ролей:
  • rid — хозяин RID (RidAllocationMasterRole);
  • pdc — эмулятор PDC (PdcEmulationMasterRole);
  • infrastructure — хозяин инфраструктуры (InfrastructureMasterRole);
  • schema — хозяин схемы (SchemaMasterRole);
  • naming — хозяин именования доменов (DomainNamingMasterRole);
  • domaindns — хозяин зоны DNS домена (DomainDnsZonesMasterRole);
  • forestdns — хозяин зоны DNS домена (ForestDnsZonesMasterRole);
  • all — все роли.
Пример штатной передачи роли (команда выполняется на DC2):
# samba-tool fsmo transfer --role=infrastructure
FSMO transfer of 'infrastructure' role successful
Проверка:
# samba-tool fsmo show
SchemaMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=alt

Примечание

При передаче ролей domaindns и forestdns необходимо предоставить аутентификацию. Например:
# samba-tool fsmo transfer --role=domaindns -UAdministrator
Password for [TEST\Administrator]:
FSMO transfer of 'domaindns' role successful

49.2.2.3. Захват роли FSMO

Операция захвата роли FSMO доступна пользователям со следующими полномочиями:
  • захват ролей уровня леса — администраторы леса (члены группы Enterprise Admins);
  • захват ролей уровня домена — администраторы домена (члены группы Domain Admins);
  • захват роли владельца схемы каталога — администраторы схемы (члены группы Schema Admins).
Для принудительной передачи роли (если контроллер домена вышел из строя) необходимо на контроллере домена, который должен стать новым владельцем роли, выполнить команду:
# samba-tool fsmo seize --role=<роль>
Список возможных ролей:
  • rid — хозяин RID (RidAllocationMasterRole);
  • pdc — эмулятор PDC (PdcEmulationMasterRole);
  • infrastructure — хозяин инфраструктуры (InfrastructureMasterRole);
  • schema — хозяин схемы (SchemaMasterRole);
  • naming — хозяин именования доменов (DomainNamingMasterRole);
  • domaindns — хозяин зоны DNS домена (DomainDnsZonesMasterRole);
  • forestdns — хозяин зоны DNS домена (ForestDnsZonesMasterRole);
  • all — все роли.
Пример захвата роли (команда выполняется на DC2):
# samba-tool fsmo seize --role=infrastructure
Attempting transfer...
Transfer unsuccessful, seizing...
Seizing domaindns FSMO role...
FSMO seize of 'infrastructure' role successful

Примечание

Команда samba-tool fsmo seize сначала пробует выполнить transfer роли FSMO у текущего держателя, поэтому если старый владелец роли доступен, при передаче ролей domaindns и forestdns потребуется аутентификация:
# samba-tool fsmo seize --role=domaindns -UAdministrator
Attempting transfer...
Password for [TEST\Administrator]:
FSMO transfer of 'domaindns' role successful
Transfer successful, not seizing role
Если же старый владелец роли недоступен, то команда выполнит seize без запроса пароля.

Примечание

В ранних версиях samba-tool была ошибка, не позволявшая захватить роль naming:
# samba-tool fsmo seize --role=naming
ERROR (ldb): uncaught exception — Failed FSMO transfer: WERR_BADFILE
В этом случае необходимо использовать «ещё более принудительную передачу»:
# samba-tool fsmo seize --force --role=naming

Важно

Если роль была передана принудительно, старый контроллер домена больше никогда не должен подключаться к сети!

Глава 50. Функциональные уровни и схема каталога

Функциональные уровни домена и леса определяют набор доступных возможностей в среде каталога. Каждому функциональному уровню соответствует определённая версия схемы каталога (schema version), которая, в свою очередь, связана с версией Windows Server.
Схема каталога — это фундаментальная часть каталога, содержащая определения классов и атрибутов, на основе которых создаются объекты (пользователи, группы, компьютеры и т.д.):
  • каждое расширение схемы добавляет новые возможности каталога;
  • схема едина для всего леса и реплицируется на все контроллеры домена;
  • версия схемы определяется значением атрибута objectVersion объекта CN=Schema,CN=Configuration.
Версия схемы, как правило, соответствует минимальной версии Windows Server, начиная с которой поддерживаются новые функции. Альт Домен использует те же версии схемы для совместимости с инфраструктурой Windows.

Таблица 50.1. Соответствие версии схемы, функционального уровня и Windows Server

Windows Server
Schema Version
Domain Function Level (DFL)
Forest Function Level (FFL)
Windows 2000
13
2000
2000
Windows Server 2003
30
2003 / 2003 R2
2003 / 2003 R2
Windows Server 2008
44
2008
2008
Windows Server 2008 R2
47
2008 R2
2008 R2
Windows Server 2012
56
2012
2012
Windows Server 2012 R2
69
2012 R2
2012 R2
Windows Server 2016
87
2016
2016
Windows Server 2019
88
2016
2016
Windows Server 2022
88
2016
2016

Примечание

Начиная с Windows Server 2016, Microsoft прекратила ввод новых функциональных уровней домена и леса. Новые функции теперь зависят от версии схемы, а не от повышения DFL/FFL.
Альт Домен поставляется со схемой версии 88, соответствующей Windows Server 2019/2022. Текущая версия схемы фиксируется в атрибуте objectVersion объекта CN=Schema,CN=Configuration.
Получить текущую версию схемы можно, выполнив на контроллере домена команду:
# ldbsearch -H /var/lib/samba/private/sam.ldb \
    -b "CN=Schema,CN=Configuration,DC=test,DC=alt" \
    -s base objectVersion
Пример вывода:
# record 1
dn: CN=Schema,CN=Configuration,DC=test,DC=alt
objectVersion: 88

# returned 1 records
# 1 entries
# 0 referrals
Просмотр функциональных уровней домена и леса:
# samba-tool domain level show

Domain and forest function level for domain 'DC=test,DC=alt'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
Команда показывает:
  • текущий функциональный уровень домена (DFL);
  • текущий функциональный уровень леса (FFL);
  • минимальный уровень, поддерживаемый всеми контроллерами домена.
Режимы работы домена и леса, а также версию схемы домена можно просмотреть в ADMC, выбрав корневой элемент в дереве консоли:
ADMC. Информация о домене
Для повышения уровня используется команда:
# samba-tool domain level raise --domain-level=<DOMAIN_LEVEL> --forest-level=<FOREST_LEVEL>
где:
  • FOREST_LEVEL — уровень работы леса (возможные значения: 2003, 2008, 2008_R2, 2012, 2012_R2, 2016);
  • DOMAIN_LEVEL — уровень работы домена (возможные значения: 2003, 2008, 2008_R2, 2012, 2012_R2, 2016).
Схема каталога должна быть одинаковой на всех контроллерах домена в лесу. При добавлении контроллера с более новой версией схемы — она автоматически обновляется на всех DC через репликацию.
Явное обновление схемы выполняется командой:
# samba-tool domain schemaupgrade --schema=<SCHEMA>
где SCHEMA — целевой уровень схемы (по умолчанию 2019).

Глава 51. Настройка Samba для привязки к определённым интерфейсам

Если на сервере настроено несколько сетевых интерфейсов, можно настроить Samba для привязки только к определенным интерфейсам.
Например, для того чтобы привязать все службы Samba к устройству enp1s0 и loopback (lo) необходимо добавить следующие параметры в раздел [global] файла smb.conf:
bind interfaces only = yes
interfaces = lo enp1s0
и перезапустить службу Samba:
# systemctl restart samba.service
В параметре interfaces вместо имён интерфейсов можно указывать IP-адреса.

Примечание

Некоторые утилиты подключаются к петлевому IP-адресу, если имя хоста не указано. Поэтому всегда нужно указывать Samba прослушивать петлевые (lo) устройства.

Глава 52. Создание keytab-файла

52.1. Назначение и формат SPN

SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса, даже не зная имени пользователя.
До того как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учётной записи, которая будет использоваться для входа. К учётной записи может быть привязано несколько SPN. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.
Можно иметь столько SPN, сколько необходимо. Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации. Если клиент не может найти правильный SPN, он не сможет запросить билет службы.
SPN состоит из двух обязательных элементов и двух дополнительных элементов:
<service class>/<host>:<port>/<service name>
Элементы SPN:
  • service class (обязательный элемент) — строка, указывающая на класс, к которому относится сервис (например: HTTP, www, ldap и т. п.);
  • host (обязательный элемент) — имя компьютера, на котором работает сервис; это может быть полное доменное имя (FQDN) или NetBIOS-имя;
  • port — номер порта; может использоваться в том случае, если несколько экземпляров сервиса одного класса работают на одном узле; не требуется указывать, если экземпляр сервиса один и работает на стандартном для своего класса порту;
  • service name — имя реплицируемого сервиса, которое позволяет идентифицировать предоставляемые сервисом данные или обслуживаемый сервисом домен; в качестве имени могут использоваться DN-имя или objectGUID объекта службы каталогов, DNS-имя домена (если сервис реализует определенную службу на уровне всего домена), DNS-имя записи SRV или MX.

Примечание

Если клиент не может найти правильный SPN, он не сможет запросить билет службы. Поэтому формирование SPN было глобально нормализовано:
  • для файлового сервера могут использоваться следующие SPN (их можно добавить столько, сколько нужно):
    • HOST/fileserver.test.alt
    • HOST/fileserver
    • HOST/fileserver@TEST.ALT
    • CIFS/fileserver.test.alt
  • для веб-сервера (подробнее см. Настройка аутентификации для веб-сервера):
    • HTTP/web.test.alt
  • для прокси-сервера:
    • HTTP/proxy.test.alt
  • на практике можно сопоставить SPN с IP-адресом, но это не рекомендуется:
    • HOST/192.168.0.129@TEST.ALT
Keytab-файл — это файл, содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.

Важно

Каждый кто имеет разрешения на чтения keytab-файла может воспользоваться любыми ключами в нем. Чтобы предотвратить нежелательное использование, необходимо ограничивать права доступа при создании keytab-файла.

52.2. Создание SPN и генерация keytab с помощью samba-tool

Добавить имена SPN для пользователя можно с помощью команды samba-tool spn add:
# samba-tool spn add host/fdqn@KerberosRealm <sAMAccount name>
После добавления SPN можно сгенерировать keytab, выполнив команду:
# samba-tool domain exportkeytab <имя>.keytab --principal=[<sAMAccount name> | <SPN>]
В результате выполнения этой команды будет создан keytab-файл <имя>.keytab, содержащий UPN или SPN, в зависимости от того, что было указано в параметре --principal.
Получить дополнительную информацию можно на справочной странице samba-tool(8) (man samba-tool).

Примечание

В команде нужно использовать или <sAMAccount name> или <SPN>, но не оба параметра сразу.
Пример:
  • привязать к пользователю SPN:
    # samba-tool spn add HTTP/test.alt webauth
    
  • создать keytab:
    # samba-tool domain exportkeytab /tmp/web.keytab --principal=HTTP/test.alt
    Export one principal to /tmp/keytab
    
  • проверка:
    # klist -ke /tmp/web.keytab
    Keytab name: FILE:/tmp/web.keytab
    KVNO Principal
    ---- ------------------------------------------------------------------------
       2 HTTP/test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
    
Можно также проверить авторизацию в домене по имени SPN с помощью keytab-файла. Для этого на контроллере домена получить билет Kerberos:
# kinit administrator@TEST.ALT
Password for administrator@TEST.ALT:
И выполнить команду:
# kinit -5 -V -k -t /tmp/web.keytab HTTP/test.alt
Using default cache: /tmp/krb5cc_0
Using principal: HTTP/test.alt@TEST.ALT
Using keytab: /tmp/web.keytab
Authenticated to Kerberos v5

Примечание

Если при проверке авторизации возникает ошибка:
kinit: Client not found in Kerberos database while getting initial credentials
Необходимо в ADMC (см. Модуль удаленного управления базой данных конфигурации (ADMC)) изменить для пользователя webauth значение параметра userPrincipalName на значение servicePrincipalName + REALM (в данном примере нужно поменять webauth на HTTP/test.alt@TEST.ALT):
ADMC. Изменение параметра userPrincipalName
И заново экспортировать keytab-файл.
Для получения списка идентификаторов SPN, привязанных к учетной записи, используется команда:
# samba-tool spn list <user> [options]
В качестве аргумента передается имя учетной записи SAM (значение атрибута sAMaccountName).
Команда удаления идентификатора SPN, привязанного к учетной записи пользователя:
# samba-tool spn delete <name> <user> [options]
В качестве аргументов передаются значение SPN (name) и имя учетной записи SAM (значение атрибута sAMaccountName).

Глава 53. Настройка DHCP-сервера для обновления DNS-записей

В этом разделе описана настройка DHCP-сервера для автоматического обновления DNS-записей Samba в домене.
Предварительные условия:
  • DHCP-сервер устанавливается на одном из контроллеров домена;
  • созданы все необходимые обратные зоны;
  • если используется Bind9, Bind9_dlz должен быть установлен и должен работать на контроллере домена, на котором выполняется данная настройка.
Описание имеющейся сети:
  • Realm: TEST.ALT
  • Подсеть: 192.168.0.0
  • Маска сети: 255.255.255.0
  • Широковещательный адрес: 192.168.0.255
  • Шлюз по умолчанию: 192.168.0.1
  • Имя домена: test.alt
  • DNS-сервера: 192.168.0.132, 192.168.0.133
  • Netbios-сервера: 192.168.0.132, 192.168.0.133
  • Ntp-сервера: 192.168.0.132, 192.168.0.133
  • Диапазон арендуемых IP-адресов: 192.168.0.150 192.168.0.200

53.1. Настройка DHCP-сервера

Все действия, указанные ниже, выполняются на узле dc1.test.alt (192.168.0.132), если не указано иное.
Создать пользователя (в примере dhcpduser), от имени которого будут производится обновления DNS-записей:
# samba-tool user create dhcpduser \
  --description="Пользователь для обновления TSIG-GSSAPI DNS через DHCP-сервер" \
  --random-password
User 'dhcpduser' added successfully
Установить срок действия пароля (бессрочный) для созданного пользователя и добавить его в группу DnsAdmins:
# samba-tool user setexpiry dhcpduser --noexpiry
Expiry for user 'dhcpduser' disabled.
# samba-tool group addmembers DnsAdmins dhcpduser
Added members to group DnsAdmins
Экспортировать файл keytab, чтобы пользователь мог аутентифицироваться через Kerberos:
# samba-tool domain exportkeytab --principal=dhcpduser@TEST.ALT /etc/dhcp/dhcpduser.keytab
Export one principal to /etc/dhcp/dhcpduser.keytab
# chown dhcpd:dhcp /etc/dhcp/dhcpduser.keytab
# chmod 400 /etc/dhcp/dhcpduser.keytab

Примечание

Параметр dhcpd:dhcp указывает пользователя и группу, от имени которых работает DHCP-сервер.
Создать скрипт, который будет выполнять обновления (файл /usr/local/bin/dhcp-dyndns.sh):
#!/bin/bash
#
# This script is for secure DDNS updates on Samba,
# it can also add the 'macAddress' to the Computers object.
#
# Version: 0.9.6
#

##########################################################################
#                                                                        #
#    You can optionally add the 'macAddress' to the Computers object.    #
#    Add 'dhcpduser' to the 'Domain Admins' group if used                #
#    Change the next line to 'yes' to make this happen                   #
Add_macAddress='no'
#                                                                        #
##########################################################################

keytab=/etc/dhcp/dhcpduser.keytab

usage()
{
	cat <<-EOF
	USAGE:
	  $(basename "$0") add ip-address dhcid|mac-address hostname
	  $(basename "$0") delete ip-address dhcid|mac-address
	EOF
}

_KERBEROS()
{
	# get current time as a number
	test=$(date +%d'-'%m'-'%y' '%H':'%M':'%S)
	# Note: there have been problems with this
	# check that 'date' returns something like

	# Check for valid kerberos ticket
	#logger "${test} [dyndns] : Running check for valid kerberos ticket"
	klist -c "${KRB5CCNAME}" -s
	ret="$?"
	if [ $ret -ne 0 ]
	then
		logger "${test} [dyndns] : Getting new ticket, old one has expired"
		kinit -F -k -t $keytab "${SETPRINCIPAL}"
		ret="$?"
		if [ $ret -ne 0 ]
		then
			logger "${test} [dyndns] : dhcpd kinit for dynamic DNS failed"
			exit 1
		fi
	fi
}

rev_zone_info()
{
	local RevZone="$1"
	local IP="$2"
	local rzoneip
	rzoneip="${RevZone%.in-addr.arpa}"
	local rzonenum
	rzonenum=$(echo "$rzoneip" |  tr '.' '\n')
	declare -a words
	for n in $rzonenum
	do
		words+=("$n")
	done
	local numwords="${#words[@]}"

	unset ZoneIP
	unset RZIP
	unset IP2add

	case "$numwords" in
		1)
			# single ip rev zone '192'
			ZoneIP=$(echo "${IP}" | awk -F '.' '{print $1}')
			RZIP="${rzoneip}"
			IP2add=$(echo "${IP}" | awk -F '.' '{print $4"."$3"."$2}')
			;;
		2)
			# double ip rev zone '168.192'
			ZoneIP=$(echo "${IP}" | awk -F '.' '{print $1"."$2}')
			RZIP=$(echo "${rzoneip}" | awk -F '.' '{print $2"."$1}')
			IP2add=$(echo "${IP}" | awk -F '.' '{print $4"."$3}')
			;;
		3)
			# triple ip rev zone '0.168.192'
			ZoneIP=$(echo "${IP}" | awk -F '.' '{print $1"."$2"."$3}')
			RZIP=$(echo "${rzoneip}" | awk -F '.' '{print $3"."$2"."$1}')
			IP2add=$(echo "${IP}" | awk -F '.' '{print $4}')
			;;
		*)
			# should never happen
			exit 1
			;;
	esac
}

BINDIR=$(samba -b | grep 'BINDIR' | grep -v 'SBINDIR' | awk '{print $NF}')
[[ -z $BINDIR ]] && printf "Cannot find the 'samba' binary, is it installed ?\\nOr is your path set correctly ?\\n"
WBINFO="$BINDIR/wbinfo"

SAMBATOOL=$(command -v samba-tool)
[[ -z $SAMBATOOL ]] && printf "Cannot find the 'samba-tool' binary, is it installed ?\\nOr is your path set correctly ?\\n"

MINVER=$($SAMBATOOL -V | grep -o '[0-9]*' | tr '\n' ' ' | awk '{print $2}')
if [ "$MINVER" -gt '14' ]
then
	KTYPE="--use-kerberos=required"
else
	KTYPE="-k yes"
fi

# DHCP Server hostname
Server=$(hostname -s)

# DNS domain
domain=$(hostname -d)
if [ -z "${domain}" ]
then
	logger "Cannot obtain domain name, is DNS set up correctly?"
	logger "Cannot continue... Exiting."
	exit 1
fi

# Samba realm
REALM="${domain^^}"

# krbcc ticket cache
export KRB5CCNAME="/tmp/dhcp-dyndns.cc"

# Kerberos principal
SETPRINCIPAL="dhcpduser@${REALM}"
# Kerberos keytab as above
# krbcc ticket cache : /tmp/dhcp-dyndns.cc
TESTUSER="$($WBINFO -u | grep 'dhcpduser')"
if [ -z "${TESTUSER}" ]
then
	logger "No AD dhcp user exists, need to create it first.. exiting."
	logger "you can do this by typing the following commands"
	logger "kinit Administrator@${REALM}"
	logger "$SAMBATOOL user create dhcpduser --random-password --description='Unprivileged user for DNS updates via ISC DHCP server'"
	logger "$SAMBATOOL user setexpiry dhcpduser --noexpiry"
	logger "$SAMBATOOL group addmembers DnsAdmins dhcpduser"
	exit 1
fi

# Check for Kerberos keytab
if [ ! -f "$keytab" ]
then
	logger "Required keytab $keytab not found, it needs to be created."
	logger "Use the following commands as root"
	logger "$SAMBATOOL domain exportkeytab --principal=${SETPRINCIPAL} $keytab"
	logger "chown XXXX:XXXX $keytab"
	logger "Replace 'XXXX:XXXX' with the user & group that dhcpd runs as on your distro"
	logger "chmod 400 $keytab"
	exit 1
fi

# Variables supplied by dhcpd.conf
action="$1"
ip="$2"
DHCID="$3"
name="${4%%.*}"

# Exit if no ip address
if [ -z "${ip}" ]
then
	usage
	exit 1
fi

# Exit if no computer name supplied, unless the action is 'delete'
if [ -z "${name}" ]
then
	if [ "${action}" = "delete" ]
	then
		name=$(host -t PTR "${ip}" | awk '{print $NF}' | awk -F '.' '{print $1}')
	else
		usage
		exit 1
	fi
fi

# exit if name contains a space
case ${name} in
	*\ * )
		logger "Invalid hostname '${name}' ...Exiting"
		exit
		;;
esac

# if you want computers with a hostname that starts with 'dhcp' in AD
# comment the following block of code.
if [[ $name == dhcp* ]]
then
	logger "not updating DNS record in AD, invalid name"
	exit 0
fi

## update ##
case "${action}" in
	add)
		_KERBEROS
		count=0
		# does host have an existing 'A' record ?
		mapfile -t A_REC < <($SAMBATOOL dns query "${Server}" "${domain}" "${name}" A "$KTYPE" 2>/dev/null | grep 'A:' | awk '{print $2}')
		if [ "${#A_REC[@]}" -eq 0 ]
		then
			# no A record to delete
			result1=0
			$SAMBATOOL dns add "${Server}" "${domain}" "${name}" A "${ip}" "$KTYPE"
			result2="$?"
		elif [ "${#A_REC[@]}" -gt 1 ]
		then
			for i in "${A_REC[@]}"
			do
				$SAMBATOOL dns delete "${Server}" "${domain}" "${name}" A "${i}" "$KTYPE"
			done
			# all A records deleted
			result1=0
			$SAMBATOOL dns add "${Server}" "${domain}" "${name}" A "${ip}" "$KTYPE"
			result2="$?"
		elif [ "${#A_REC[@]}" -eq 1 ]
		then
			# turn array into a variable
			VAR_A_REC="${A_REC[*]}"
			if [ "$VAR_A_REC" = "${ip}" ]
			then
				# Correct A record exists, do nothing
				logger "Correct 'A' record exists, not updating."
				result1=0
				result2=0
				count=$((count+1))
			elif [ "$VAR_A_REC" != "${ip}" ]
			then
				# Wrong A record exists
				logger "'A' record changed, updating record."
				$SAMBATOOL dns delete "${Server}" "${domain}" "${name}" A "${VAR_A_REC}" "$KTYPE"
				result1="$?"
				$SAMBATOOL dns add "${Server}" "${domain}" "${name}" A "${ip}" "$KTYPE"
				result2="$?"
			fi
		fi

		# get existing reverse zones (if any)
		ReverseZones=$($SAMBATOOL dns zonelist "${Server}" "$KTYPE" --reverse | grep 'pszZoneName' | awk '{print $NF}')
		if [ -z "$ReverseZones" ]; then
			logger "No reverse zone found, not updating"
			result3='0'
			result4='0'
			count=$((count+1))
		else
			for revzone in $ReverseZones
			do
				rev_zone_info "$revzone" "${ip}"
				if [[ ${ip} = $ZoneIP* ]] && [ "$ZoneIP" = "$RZIP" ]
				then
					# does host have an existing 'PTR' record ?
					PTR_REC=$($SAMBATOOL dns query "${Server}" "${revzone}" "${IP2add}" PTR "$KTYPE" 2>/dev/null | grep 'PTR:' | awk '{print $2}' | awk -F '.' '{print $1}')
					if [[ -z $PTR_REC ]]
					then
						# no PTR record to delete
						result3=0
						$SAMBATOOL dns add "${Server}" "${revzone}" "${IP2add}" PTR "${name}"."${domain}" "$KTYPE"
						result4="$?"
						break
					elif [ "$PTR_REC" = "${name}" ]
					then
						# Correct PTR record exists, do nothing
						logger "Correct 'PTR' record exists, not updating."
						result3=0
						result4=0
						count=$((count+1))
						break
					elif [ "$PTR_REC" != "${name}" ]
					then
						# Wrong PTR record exists
						# points to wrong host
						logger "'PTR' record changed, updating record."
						$SAMBATOOL dns delete "${Server}" "${revzone}" "${IP2add}" PTR "${PTR_REC}"."${domain}" "$KTYPE"
						result3="$?"
						$SAMBATOOL dns add "${Server}" "${revzone}" "${IP2add}" PTR "${name}"."${domain}" "$KTYPE"
						result4="$?"
						break
					fi
				else
					continue
				fi
			done
	        fi
		;;
	delete)
		_KERBEROS

		count=0
		$SAMBATOOL dns delete "${Server}" "${domain}" "${name}" A "${ip}" "$KTYPE"
		result1="$?"
		# get existing reverse zones (if any)
		ReverseZones=$($SAMBATOOL dns zonelist "${Server}" --reverse "$KTYPE" | grep 'pszZoneName' | awk '{print $NF}')
		if [ -z "$ReverseZones" ]
		then
			logger "No reverse zone found, not updating"
			result2='0'
			count=$((count+1))
		else
			for revzone in $ReverseZones
			do
				rev_zone_info "$revzone" "${ip}"
				if [[ ${ip} = $ZoneIP* ]] && [ "$ZoneIP" = "$RZIP" ]
				then
					host -t PTR "${ip}" > /dev/null 2>&1
					ret="$?"
					if [ $ret -eq 0 ]
					then
						$SAMBATOOL dns delete "${Server}" "${revzone}" "${IP2add}" PTR "${name}"."${domain}" "$KTYPE"
						result2="$?"
					else
						result2='0'
						count=$((count+1))
					fi
					break
				else
					continue
				fi
			done
		fi
		result3='0'
		result4='0'
		;;
	*)
		logger "Invalid action specified"
		exit 103
	;;
esac

result="${result1}:${result2}:${result3}:${result4}"

if [ "$count" -eq 0 ]
then
	if [ "${result}" != "0:0:0:0" ]
	then
		logger "DHCP-DNS $action failed: ${result}"
		exit 1
	else
		logger "DHCP-DNS $action succeeded"
	fi
fi

if [ "$Add_macAddress" != 'no' ]
then
	if [ -n "$DHCID" ]
	then
		Computer_Object=$(ldbsearch "$KTYPE" -H ldap://"$Server" "(&(objectclass=computer)(objectclass=ieee802Device)(cn=$name))" | grep -v '#' | grep -v 'ref:')
		if [ -z "$Computer_Object" ]
		then
			# Computer object not found with the 'ieee802Device' objectclass, does the computer actually exist, it should.
			Computer_Object=$(ldbsearch "$KTYPE" -H ldap://"$Server" "(&(objectclass=computer)(cn=$name))" | grep -v '#' | grep -v 'ref:')
			if [ -z "$Computer_Object" ]
			then
				logger "Computer '$name' not found. Exiting."
				exit 68
			else
				DN=$(echo "$Computer_Object" | grep 'dn:')
				objldif="$DN
changetype: modify
add: objectclass
objectclass: ieee802Device"

				attrldif="$DN
changetype: modify
add: macAddress
macAddress: $DHCID"

				# add the ldif
				echo "$objldif" | ldbmodify "$KTYPE" -H ldap://"$Server"
				ret="$?"
				if [ $ret -ne 0 ]
				then
					logger "Error modifying Computer objectclass $name in AD."
					exit "${ret}"
				fi
				sleep 2
				echo "$attrldif" | ldbmodify "$KTYPE" -H ldap://"$Server"
				ret="$?"
				if [ "$ret" -ne 0 ]; then
					logger "Error modifying Computer attribute $name in AD."
					exit "${ret}"
				fi
				unset objldif
				unset attrldif
				logger "Successfully modified Computer $name in AD"
			fi
	else
		DN=$(echo "$Computer_Object" | grep 'dn:')
		attrldif="$DN
changetype: modify
replace: macAddress
macAddress: $DHCID"

		echo "$attrldif" | ldbmodify "$KTYPE" -H ldap://"$Server"
		ret="$?"
		if [ "$ret" -ne 0 ]
		then
			logger "Error modifying Computer attribute $name in AD."
			exit "${ret}"
		fi
			unset attrldif
			logger "Successfully modified Computer $name in AD"
		fi
	fi
fi

exit 0

Примечание

Если нужно сохранять MAC-адреса узлов в AD, следует заменить строку:
Add_macAddress='no'
на:
Add_macAddress='yes'
Следует обратить внимание, что необходимо предоставить права администратора домена пользователю обновления DNS.
Установить права для скрипта:
# chmod 755 /usr/local/bin/dhcp-dyndns.sh
Создать резервную копию исходного файла конфигурации:
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
Внести изменения в файл конфигурации /etc/dhcp/dhcpd.conf:
authoritative;
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.0.255;
        option time-offset 0;
        option routers 192.168.0.1;
        option domain-name-servers 192.168.0.132, 192.168.0.133;
        option ntp-servers 192.168.0.132, 192.168.0.133;
        option domain-name "test.alt";
        default-lease-time 3600;
        pool {
             max-lease-time 1800; #30 минут
             range 192.168.0.150 192.168.0.200;
             }
}

on commit {
set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
set ClientDHCID = concat (
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
);
set ClientName = pick-first-value(option host-name, config-option host-name, client-name, noname);
log(concat("Commit: IP: ", ClientIP, " DHCID: ", ClientDHCID, " Name: ", ClientName));
execute("/usr/local/bin/dhcp-dyndns.sh", "add", ClientIP, ClientDHCID, ClientName);
}

on release {
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
set ClientDHCID = concat (
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
);
log(concat("Release: IP: ", ClientIP));
execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, ClientDHCID);
}

on expiry {
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
# cannot get a ClientMac here, apparently this only works when actually receiving a packet
log(concat("Expired: IP: ", ClientIP));
# cannot get a ClientName here, for some reason that always fails
# however the dhcp update script will obtain the short hostname.
execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, "", "0");
}
Отключить chroot для DHCP-сервера:
# control dhcpd-chroot disabled
Перезапустить DHCP-сервер:
# systemctl restart dhcpd
Теперь если на клиенте изменить сетевую конфигурацию со статического IP-адреса, на получение IP-адреса от DHCP-сервера, в журнале на сервере можно будет увидеть следующее:
dhcpd[7817]: DHCPDISCOVER from 08:00:27:99:a6:1f via enp1s0
dhcpd[7817]: DHCPOFFER on 192.168.0.150 to 08:00:27:99:a6:1f (host-199) via enp1s0
dhcpd[7817]: Commit: IP: 192.168.0.150 DHCID: 08:00:27:99:a6:1f Name: host-199
dhcpd[7817]: execute_statement argv[0] = /usr/local/bin/dhcp-dyndns.sh
dhcpd[7817]: execute_statement argv[1] = add
dhcpd[7817]: execute_statement argv[2] = 192.168.0.150
dhcpd[7817]: execute_statement argv[3] = 08:00:27:99:a6:1f
dhcpd[7817]: execute_statement argv[4] = host-199
dhcpd[8228]: 18-06-25 14:55:31 [dyndns] : Getting new ticket, old one has expired
dhcpd[8236]: 'A' record changed, updating record.
dhcpd[8237]: Record deleted successfully
dhcpd[8240]: Record added successfully
dhcpd[8268]: Record added successfully
dhcpd[8271]: DHCP-DNS add succeeded
dhcpd[7817]: DHCPREQUEST for 192.168.0.125 (192.168.0.132) from 08:00:27:99:a6:1f (host-199) via enp1s0
dhcpd[7817]: DHCPACK on 192.168.0.150 to 08:00:27:99:a6:1f (host-199) via enp1s0
Клиента можно найти как в прямой, так и в обратной зонах:
# host host-199
host-199.test.alt has address 192.168.0.150
host-199.test.alt has IPv6 address fd47:d11e:43c1:0:a00:27ff:fe99:a61f
# host 192.168.0.150
150.0.168.192.in-addr.arpa domain name pointer host-199.test.alt.

53.2. Настройка переключения DHCP

Для обеспечения отказоустойчивости, следует на втором контроллере домена также поднять DHCP-сервер.
Связь между двумя DHCP-серверами осуществляется через интерфейс прикладного программирования управления объектами (OMAPI). Этот API контролирует работу протокола переключения DHCP. Этот API будет настроен на следующих шагах.
На ведущем (master) DHCP-сервере необходимо сгенерировать случайный ключ OMAPI:
# tsig-keygen -a hmac-md5 omapi_key
key "omapi_key" {
    algorithm hmac-md5;
    secret "KKkAspinSr/nXYXhAv7CTQ==";
};
Как на ведущем, так и на ведомом устройстве должен быть настроен специальный раздел, путём добавления следующих строк в файл /etc/dhcp/dhcpd.conf:
omapi-port 7911;
omapi-key omapi_key;
key "omapi_key" {
    algorithm hmac-md5;
    secret "Секретный_ключ";
};
«Секретный_ключ» следует заменить на ключ, полученный на предыдущем шаге.
Для настройки аварийного переключения на первом сервере в файл /etc/dhcp/dhcpd.conf перед разделом subnet следует добавить строки:
omapi-port 7911;
omapi-key omapi_key;
key "omapi_key" {
    algorithm hmac-md5;
    secret "KKkAspinSr/nXYXhAv7CTQ==";
};

failover peer "dhcp-failover" {
  primary;
  address dc1.test.alt; # Полное DNS-имя основного DHCP-сервера
  port 847;
  peer address dc2.test.alt; # Полное DNS-имя имя резервного DHCP-сервера
  peer port 647;
  max-response-delay 60;
  max-unacked-updates 10;
  mclt 3600;
  split 128;
  load balance max seconds 3;
}
И добавить ссылку на подсеть/пул, которые будут выполнять аварийное переключение в раздел pool:
pool {
    failover peer "dhcp-failover"; # Add for failover
    max-lease-time 1800; #30 минут
    range 192.168.0.150 192.168.0.200;
    }
На втором DC выполнить следующие действия:
  1. Скопировать скрипт и keytab-файл с первого DC на второй:
    # scp dc1:/usr/local/bin/dhcp-dyndns.sh /usr/local/bin/
    # scp dc1:/etc/dhcp/dhcpduser.keytab /etc/dhcp/
    # chown dhcpd:dhcp /etc/dhcp/dhcpduser.keytab
    

    Примечание

    Для возможности копирования файлов должно быть настроено беспарольное взаимодействие между root'ами контроллеров домена (см. Настройка беспарольного доступа по SSH).
  2. Создать резервную копию исходного файла конфигурации DHCP-сервера и скопировать файл конфигурации с первого сервера:
    # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
    # scp dc1:/etc/dhcp/dhcpd.conf /etc/dhcp/
    
  3. В файле /etc/dhcp/dhcpd.conf внести изменения в раздел «failover peer "dhcp-failover"»:
    failover peer "dhcp-failover" {
      secondary;
      address dc2.test.alt; # Полное DNS-имя имя резервного DHCP-сервера
      port 647;
      peer address dc1.test.alt; # Полное DNS-имя основного DHCP-сервера
      peer port 847;
      max-response-delay 60;
      max-unacked-updates 10;
      load balance max seconds 3;
    }
    
  4. Отключить chroot для DHCP-сервера:
    # control dhcpd-chroot disabled
    

Примечание

Параметр split должен быть установлен только на ведущем DHCP-сервере. Этот параметр управляет балансировкой нагрузки двух серверов. Параметр может принимать значения от 0 до 255. Если установлено значение «255», основной сервер, если он не отключен (по какой-либо причине), будет отвечать на все запросы DHCP. Если установить значение «128», то оба DHCP-сервера будут использоваться одинаково. Подробности смотрите на man-странице dhcpd.conf.
Далее следует перезапустить оба DHCP-сервера:
# systemctl restart dhcpd
В системном журнале на обоих серверах должны появиться записи вида:
dhcpd[7879]: failover peer dhcp-failover: peer moves from recover-done to normal
dhcpd[7879]: failover peer dhcp-failover: Both servers normal
Если OMAPI работает правильно, можно проверить переход на другой ресурс, остановив основной сервер.

Глава 54. Настройка LDAP через SSL (LDAPS)

Альт Домен использует LDAP (Lightweight Directory Access Protocol) для доступа на чтение и запись. По умолчанию соединения LDAP не зашифрованы. Для защиты трафика LDAP можно использовать SSL/TLS. Ниже описано, как включить LDAPS, установив сертификат в Samba.
Ограничения:
  • закрытый ключ должен быть доступен без парольной фразы, т. е. он не должен быть зашифрован!
  • файлы, которые использует Samba, должны быть в формате PEM (DER с кодировкой Base64). Содержимое сертификата может быть заключено, например, между
    -----BEGIN CERTIFICATE-----
    и
    -----END CERTIFICATE-----
  • при использовании промежуточных сертификатов их следует добавлять в файл cert.pem после сертификата сервера.

54.1. Параметры smb.conf для LDAPS

LDAPS управляется параметрами tls* в файле smb.conf (подробнее см. man smb.conf).
Параметры tls* задаются в разделе [global] файла smb.conf. После внесения изменений в файл smb.conf необходимо перезапустить Samba.

54.2. Ограничение шифров TLS

Опция tls priority позволяет задать строку приоритета шифра GnuTLS и, таким образом, отключить устаревшие шифры.
GnuTLS управляет тем, какие шифры включены по умолчанию, но SSLv3 дополнительно отключен.
В данном примере предполагается, что библиотека отключает SSLv3, а также дополнительно отключает TLS 1.0 и 1.1:
tls priority = NORMAL:-VERS-TLS1.0:-VERS-TLS1.1

54.3. Использование автоматически сгенерированного самоподписанного сертификата Samba

При первом запуске Samba создает закрытый ключ, самоподписанный сертификат и сертификат CA:
/var/lib/samba/private/tls/ca.pem
/var/lib/samba/private/tls/cert.pem
/var/lib/samba/private/tls/key.pem
Сертификаты действительны в течение 700 дней после создания.
По умолчанию TLS включен (tls enabled = yes), используются указанные выше файлы, которые соответствуют следующим параметрам smb.conf:
tls enabled  = yes
tls keyfile  = tls/key.pem
tls certfile = tls/cert.pem
tls cafile   = tls/ca.pem

54.4. Использование пользовательского самоподписанного сертификата

Для создания пользовательского самоподписанного сертификата можно выполнить следующие действия:
  1. Перейти в каталог, в котором будет сохранен ключ и сертификат:
    # cd /var/lib/samba/private/tls/
    
  2. Создать закрытый ключ (2048 бит) и самоподписанный сертификат, действительный в течение 1 года. Важно при запросе Common Name ввести полное доменное имя контроллера домена, для которого создается сертификат:
    # openssl req -newkey rsa:2048 -keyout myKey.pem -nodes -x509 -days 365 -out myCert.pem
    .+.+...+...
    ........................+++++
    ...........+++++
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [RU]:
    State or Province Name (full name) []:
    Locality Name (eg, city) []:
    Organization Name (eg, company) []:
    Organizational Unit Name (eg, section) []:
    Common Name (e.g., your name or your server's hostname) []:dc1.test.alt
    Email Address []:
    
  3. Ограничить права на закрытый ключ:
    # chmod 600 myKey.pem
    
  4. В файле smb.conf указать следующие параметры:
    tls enabled = yes
    tls keyfile = tls/myKey.pem
    tls certfile = tls/myCert.pem
    tls cafile =
    
  5. Перезапустить Samba.

54.5. Использование доверенного сертификата

Если планируется использовать доверенный сертификат, следует выполнить следующие действия:
  1. Перейти в каталог, в котором будут созданы ключ и сертификат:
    # cd /var/lib/samba/private/tls/
    
  2. Создать ключ сервера:
    # openssl genrsa -out myKey.pem 2048
    
  3. Сгенерировать запрос на сертификат (CSR). Важно при запросе Common Name ввести полное доменное имя контроллера домена, для которого создается сертификат:
    # openssl req -new -key myKey.pem -out myCSR.pem
    
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [RU]:
    State or Province Name (full name) []:
    Locality Name (eg, city) []:
    Organization Name (eg, company) []:
    Organizational Unit Name (eg, section) []:
    Common Name (e.g., your name or your server's hostname) []:dc1.test.alt
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    
  4. Получить доверенный сертификат от CA, используя CSR (myCSR.pem).
  5. Сохранить доверенный сертификат (в примере myCert.pem) в каталоге с ключом сервера. Если CA требует промежуточные сертификаты, файл с промежуточными сертификатами следует также сохранить в том же каталоге, что и другие файлы (например, myIntermediate.pem).
  6. Добавить следующие параметры в файл smb.conf:
    tls enabled  = yes
    tls keyfile  = tls/myKey.pem
    tls certfile = tls/myCert.pem
    tls cafile   = tls/myIntermediate.pem
    
  7. Перезапустить Samba.

54.6. Проверка сертификата

Просмотреть данные сертификата можно, выполнив команду:
# openssl x509 -in /var/lib/samba/private/tls/myCert.pem -noout -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            32:9d:8f:2f:95:46:59:8d:9d:56:1c:da:14:b1:03:0c:82:ed:96:d0
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = RU, CN = dc1.test.alt
        Validity
            Not Before: Jun 19 10:48:49 2025 GMT
            Not After : Jun 19 10:48:49 2026 GMT
        Subject: C = RU, CN = dc1.test.alt
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                .....{.....}.....
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                45:2E:E1:87:EE:54:77:E1:88:86:C6:48:DB:99:E6:EA:36:CA:D5:79
            X509v3 Authority Key Identifier:
                keyid:45:2E:E1:87:EE:54:77:E1:88:86:C6:48:DB:99:E6:EA:36:CA:D5:79

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         .....{.....}.....
Локальная проверка самоподписанного сертификата:
# openssl verify -CAfile /var/lib/samba/private/tls/myCert.pem /var/lib/samba/private/tls/myCert.pem
/var/lib/samba/private/tls/myCert.pem: OK
Если в файле smb.conf указан файл CA, следует использовать следующую команду:
# openssl verify /var/lib/samba/private/tls/myCert.pem -CAfile /path/to/ca-file.pem
Проверка сертификата удаленно (через TCP):
# openssl s_client -showcerts -connect dc1.test.alt:636
CONNECTED(00000003)
depth=0 C = RU, CN = dc1.test.alt
verify error:num=18:self signed certificate
verify return:1
depth=0 C = RU, CN = dc1.test.alt
verify return:1
---
Certificate chain
 0 s:C = RU, CN = dc1.test.alt
   i:C = RU, CN = dc1.test.alt
-----BEGIN CERTIFICATE-----
.....{.....}.....
-----END CERTIFICATE-----
---
Server certificate
subject=C = RU, CN = dc1.test.alt

issuer=C = RU, CN = dc1.test.alt

---
No client certificate CA names sent
Requested Signature Algorithms: RSA+SHA256:RSA-PSS+SHA256:RSA-PSS+SHA256:ECDSA+SHA256:Ed25519:RSA+SHA384:RSA-PSS+SHA384:RSA-PSS+SHA384:ECDSA+SHA384:Ed448:RSA+SHA512:RSA-PSS+SHA512:RSA-PSS+SHA512:ECDSA+SHA512:RSA+SHA1:ECDSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA256:RSA-PSS+SHA256:RSA-PSS+SHA256:ECDSA+SHA256:Ed25519:RSA+SHA384:RSA-PSS+SHA384:RSA-PSS+SHA384:ECDSA+SHA384:Ed448:RSA+SHA512:RSA-PSS+SHA512:RSA-PSS+SHA512:ECDSA+SHA512
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1437 bytes and written 424 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
Выйти из s_client можно, нажав Ctrl+C.
Если в файле smb.conf указан файл CA, следует использовать следующую команду:
# openssl s_client -showcerts -connect localhost:636 -CAfile /path/to/ca-file.pem

Глава 55. Управление паролями локальных администраторов в инфраструктуре службы каталогов

LAPS (Local Administrator Password Solution) — технология, предназначенная для автоматизированного управления и регулярного изменения паролей учётных записей локальных администраторов на компьютерах, входящих в домен.
Основная цель LAPS — повышение безопасность инфраструктуры за счёт устранения двух распространённых уязвимостей:
  • использования одинаковых паролей локального администратора на множестве компьютеров;
  • долгосрочного использования неизменных паролей, что увеличивает риск их компрометации.
LAPS автоматически:
  • генерирует уникальный, сложный пароль для учётной записи локального администратора на каждом компьютере;
  • регулярно изменяет пароль в соответствии с заданной политикой;
  • безопасно хранит пароль в Active Directory в зашифрованном атрибуте объекта компьютера (msLAPS-EncryptedPassword);
  • предоставляет доступ к паролю только авторизованным пользователям или группам.
Таким образом, каждый компьютер имеет свой уникальный и регулярно обновляемый пароль, а доступ к нему контролируется на уровне домена.
Преимущества LAPS:
  • защита от атак типа pass-the-hash и горизонтального перемещения;
  • упрощение и повышение безопасности удалённой поддержки;
  • возможность восстановления доступа к недоступным устройствам;
  • гибкая модель безопасности с контролем доступа и опциональным шифрованием паролей.
В ОС «Альт» реализована поддержка LAPSv2, совместимая с Microsoft LAPS, в инструментах администрирования ADMC и механизме применения групповых политик — gpupdate.

Таблица 55.1. Поддержка LAPS в инфраструктуре ОС «Альт» и Windows

Контроллер домена
Клиент
Инструменты
ALT Linux
Samba AD — начиная с версии 4.21.8
  • p11;
  • sisyphus;
  • p10 (начиная с версии 0.13.0 gpupdate)
  • ADMC (начиная с версии 0.20.0);
  • admx-basealt (начиная с версии 0.4.0)
Windows
MS AD — Windows Server 2016 или новее.
Встроенная поддержка Windows LAPS была добавлена в следующих кумулятивных обновлениях, выпущенных в апреле 2023 года:
  • Windows Server 2022-KB5025230;
  • Windows Server 2019-KB5025229
Windows 10/11 (с установленными обновлениями)
  • Оснастка Active Directory Users and Computers (ADUC);
  • Консоль Group Policy Management Console (GPMC.msc)
LAPS. Основные компоненты
Основные компоненты:
  • Контроллер домена (Samba AD, Windows DC) — хранит пароли локальных администраторов в Active Directory, используя расширенный атрибут msLAPS-EncryptedPassword для хранения зашифрованных паролей;
  • Клиенты (ALT) — получают политики через групповые политики (ГП) и обновляют пароли локального администратора в соответствии с политиками LAPS;
  • Администратор — может просматривать пароли через интерфейсы управления, например, с помощью ADMC.
В ОС «Альт» поддержка механизма централизованного управления паролями локальных администраторов (LAPS) реализована в утилите gpupdate, начиная с версии 0.13.0. При настроенных политиках пароль локального администратора хранится в защищённых атрибутах объекта Computer в Active Directory, автоматически изменяется через заданные интервалы и может быть получен только пользователями, которым администратор явно предоставил соответствующие права (параметр политики Расшифрование паролей). Если этот параметр не настроен, доступ к расшифровке имеют члены группы Администраторы домена.
Политики LAPS можно настраивать:
  • с помощью ключей реестра из Windows-ADMX-шаблонов;
  • с помощью ключей реестра из пакета admx-basealt.
Если заданы оба типа ключей, приоритет отдаётся настройкам, определённым через пакет admx-basealt.
Для реализации групповых политик управления паролями локальных администраторов в пакет admx-basealt добавлены следующие атрибуты:
  • msLAPS-PasswordExpirationTime;
  • msLAPS-Password;
  • msLAPS-EncryptedPassword;
  • msLAPS-EncryptedPasswordHistory;
  • msLAPS-EncryptedDSRMPassword;
  • msLAPS-EncryptedDSRMPasswordHistory.
Эти атрибуты отображаются в свойствах учётной записи компьютера:
LAPS. Атрибуты учетной записи компьютера (ОС «Альт»)

55.1. Настройка

55.1.1. LAPS в домене на контроллерах ALT (Samba AD)

Поддержка LAPS в Samba доступна начиная с версии 4.21.8.
Для использования LAPS в Альт Домен необходимо выполнить расширение схемы Active Directory. Расширение схемы выполняется с помощью специального скрипта install-laps-v2-schema.py, предназначенного для обновления схемы LAPS в Samba.
Скрипт:
  • копирует файлы схемы из исходного расположения во временный каталог;
  • подставляет указанный пользователем домен;
  • применяет расширения схемы с использованием команд ldbadd и ldbmodify.
Скрипт принимает следующие параметры:
  • --domain — имя домена (например: dc=domain,dc=alt);
  • --samfile — путь к файлу базы данных Samba sam.ldb (по умолчанию: /var/lib/samba/private/sam.ldb).

Важно

Перед внесением изменений в схему рекомендуется создать резервную копию базы данных.
Возврат схемы в исходное состояние после её расширения невозможен.
Расширение схемы на контроллере домена:
  1. Установите пакет samba-extension-laps-v2-schema:
    # apt-get install samba-extension-laps-v2-schema
    
  2. Выполните скрипт расширения схемы:
    # install-laps-v2-schema.py \
       --domain "dc=test,dc=alt" \
       --samfile "/var/lib/samba/private/sam.ldb"
    
    Пример вывода:
    Added 1 records successfully
    Added 7 records successfully
    Modified 1 records successfully
    
  3. Убедиться в успешном выполнении расширения схемы можно в ADMC, открыв свойства объекта компьютер и перейдя на вкладку Атрибуты:
    ADMC. Атрибуты LAPS в свойствах компьютера
    Должны отображаться следующие атрибуты:
    • msLAPS-PasswordExpirationTime;
    • msLAPS-Password;
    • msLAPS-EncryptedPassword;
    • msLAPS-EncryptedPasswordHistory;
    • msLAPS-EncryptedDSRMPassword;
    • msLAPS-EncryptedDSRMPasswordHistory.

    Примечание

    Вкладка Атрибуты доступна при включённом расширенном режиме: НастройкиДополнительные возможности.
    Для просмотра атрибутов также можно использовать утилиту ldbsearch, например:
    # ldbsearch -H /var/lib/samba/private/sam.ldb \
       -b "CN=Schema,CN=Configuration,DC=test,DC=alt" \
       "(lDAPDisplayName=msLAPS-PasswordExpirationTime)"
    
    Пример вывода:
    # record 1
    dn: CN=ms-LAPS-PasswordExpirationTime,CN=Schema,CN=Configuration,DC=test,DC=alt
    objectClass: attributeSchema
    cn: ms-LAPS-PasswordExpirationTime
    …
    

55.1.2. Настройка Windows LAPS

Примечание

Обновления Windows LAPS интегрированы в Windows в рамках обновлений Windows от 11 апреля 2023 года. LAPS не является отдельным пакетом для загрузки и установки — это встроенная функция в поддерживаемых версиях Windows.
Для работы Windows LAPS необходимо расширить схему AD с помощью командлета Update-LapsADSchema:
PS C:\> Update-LapsADSchema
Далее необходимо предоставить управляемому устройству разрешение на обновление пароля. Чтобы устройство могло обновлять свой пароль через LAPS, ему необходимо предоставить соответствующие разрешения в AD. Это можно сделать, назначив наследуемые разрешения в организационной единице (OU), содержащей устройство, с помощью командлета Set-LapsADComputerSelfPermission:
PS C:\> Set-LapsADComputerSelfPermission -Identity "OU=test_laps,DC=test,DC=alt"
Name      DistinguishedName
----      -----------------
test_laps OU=test_laps,DC=test,DC=alt

Примечание

Чтобы задать разрешения на уровне корня домена, следует указать полный DN домена, например, -Identity "DC=test,DC=alt"
Пользователи и группы, которым нужно просматривать пароли, должны иметь соответствующие права на чтение атрибута в AD. Для предоставления разрешений используется командлет Set-LapsADReadPasswordPermission:
PS C:\> Set-LapsADReadPasswordPermission -Identity test_laps -AllowedPrincipals @("laps\LapsPasswordReadersGroup")

Примечание

Члены группы Администраторы домена имеют право на чтение паролей по умолчанию.

Примечание

Наличие права на чтение пароля не означает автоматического права на его расшифровку. Право на расшифровку зашифрованного пароля настраивается через параметр политики ADPasswordEncryptionPrincipal. По умолчанию в этот параметр включена группа Администраторы домена.

55.1.3. Настройка клиентских машин c ОС «Альт»

Для настройки групповых политик управления паролями локальных администраторов на клиентской машине c ОС «Альт» необходимо выполнить следующие действия:
  1. Установить утилиту gpupdate и включить групповые политики:
    # apt-get install gpupdate
    # gpupdate-setup enable
    
  2. Установить утилиты ADMC и GPUI:
    # apt-get install admc gpui admx-basealt
    
  3. Добавить компьютеры, на которых должна применяться политика LAPS, в соответствующую организационную единицу (OU).

    Примечание

  4. Создать новую групповую политику и связать её с OU, содержащей целевые компьютеры.
  5. Создать группу пользователей LapsAdmin и добавить в нее пользователей, которые смогут расшифровывать и просматривать пароль локального администратора.
  6. Открыть редактор групповой политики (GPUI) и настроить политики LAPS (подробнее см. Установка пароля для локального пользователя root (LAPS)).
    Обязательные параметры:
    • в политике Каталог резервного копирования паролей установить значение Active Directory;
    • включить шифрование пароля в политике Шифрование паролей;
    • в политике Имя учетной записи администратора указать имя пользователя root;
    • включить групповую политику Настройка LAPS (КомпьютерАдминистративные шаблоныСистема ALTГрупповые политикиМеханизмы GPUpdateНастройка LAPS);
  7. Применить настроенные групповые политики:
    $ gpupdate
    Apply group policies for computer.
    Apply group policies for user.
    

55.2. Проверка применения групповых политик

После применения политик соответствующие атрибуты на клиентском компьютере будут заполнены.
Информация о пароле локального администратора в ADMC (подробнее см. Использование LAPS для просмотра пароля администратора):
LAPS. Информация о пароле локального администратора в ADMC
Информация о пароле локального администратора в Active Directory — пользователи и компьютеры:
LAPS. Информация о пароле локального администратора ADUC
После истечения срока действия пароля, заданного групповой политикой, политика автоматически сгенерирует новый пароль и выполнит действия согласно политике Действия после проверки подлинности.

Глава 56. Аутентификация других сервисов в домене

В данном разделе показано, как обеспечить прозрачную авторизацию пользователей домена на веб-сайте. В качестве веб-сервера используется отдельный сервер (web.test.alt, IP-адрес 192.168.0.150), введенный в домен.

Примечание

Веб-сервер может быть присоединен или не присоединен к домену, это не имеет значения.
Для работы требуется наличие прямой и обратной записей DNS для веб-сервера.
Если в качестве веб-сервера используется не DC, следует добавить А-запись для веб-сервера:
$ samba-tool dns add dc1.test.alt test.alt web A 192.168.0.150 -Uadministrator
Password for [TEST\administrator]:
Record added successfully
где dc1.test.alt — имя контроллера домена.
Добавить зону обратного просмотра для подсети 192.168.0.0/24, в которой располагается веб-сервер:
$ samba-tool dns zonecreate dc1.test.alt 0.168.192.in-addr.arpa -Uadministrator
Password for [TEST\administrator]:
Zone 0.168.192.in-addr.arpa created successfully
Если требуется более одной обратной зоны (при использовании нескольких подсетей), следует запустить приведенную выше команду еще раз, но с данными для другой подсети.
Обратная зона работает напрямую без перезапуска Samba или BIND.
Добавить зону обратного просмотра для веб-сервера:
$ samba-tool dns add dc1.test.alt 0.168.192.in-addr.arpa 150 PTR web.test.alt
Record added successfully

56.1. Настройка аутентификации Kerberos для веб-сервера Apache

В этом разделе показано, как обеспечить прозрачную авторизацию пользователей домена на веб-сайте, размещенном на веб-сервере Apache2.

56.1.1. Создание keytab-файла

Нужно настроить SPN (имена участников-служб) для имени сервера, на которое разрешается любой веб-сайт (подробнее см. Создание keytab-файла). Если виртуальный хостинг не используется, веб-адрес и имя машины будут одинаковыми. Для создания SPN на контроллере домена выполнить команды:
# samba-tool user add --random-password webauth
# samba-tool user setexpiry webauth --noexpiry
# samba-tool spn add HTTP/web.test.alt webauth
Создать Kerberos keytab-файл для Apache2:
# samba-tool domain exportkeytab /tmp/httpd.keytab --principal=HTTP/web.test.alt@TEST.ALT
Export one principal to /tmp/httpd.keytab
Перенести полученный файл keytab на веб-сервер в каталог /etc/httpd2/conf/, установить права на него, так чтобы Apache мог читать, но не изменять keytab-файл:
# chown apache2:apache2 /etc/httpd2/conf/httpd.keytab
# chmod 0440 /etc/httpd2/conf/httpd.keytab

56.1.2. Настройка Apache2

На веб-сервере установить пакет apache2-mod_auth_gssapi и включить необходимые модули:
# apt-get install apache2-mod_auth_gssapi
# a2enmod auth_gssapi
# a2enmod authn_core
# a2enmod authz_user
# service httpd2 condreload
Добавить в конфигурацию Apache строки:
<Location "/login.html">
        AuthType GSSAPI
        AuthName "GSSAPI Login"
        #GssapiBasicAuth On
        GssapiCredStore keytab:/etc/httpd2/conf/httpd.keytab
        GssapiAllowedMech krb5
        Require valid-user
</Location>
Перезапустить Apache:
# systemctl restart httpd2

56.1.3. Проверка аутентификации

Тестовый сайт должен быть доступен по адресу http://<полное_доменное_имя_веб-сервера>.
На рабочей станции, введённой в домен, получить билет Kerberos:
$ kinit ivanov
Password for ivanov@TEST.ALT:
$ klist
Ticket cache: KEYRING:persistent:500:krb_ccache_5VitJSL
Default principal: ivanov@TEST.ALT

Valid starting       Expires              Service principal
19.06.2025 13:52:03  19.06.2025 23:52:03  krbtgt/TEST.ALT@TEST.ALT
    renew until 26.06.2025 13:51:58
Попытаться прочитать содержимое сайта, используя аутентификацию Kerberos:
$ curl --negotiate -u : http://web.test.alt/login.html
<html><body><h1>It works!</h1></body></html>
Получено содержимое страницы.
Удалить билеты Kerberos:
$ kdestroy
$ klist
Попытаться прочитать содержимое сайта, используя аутентификацию Kerberos:
$ curl --negotiate -u : http://web.test.alt/login.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Authentication required!</title>
</head>

<body>
<h1>Authentication required!</h1>
…
<h2>Error 401</h2>
<address>
  <a href="/">web.test.alt</a><br />
  <span>Apache/2.4.62 (Unix) mod_auth_gssapi/1.6.3 OpenSSL/1.1.1u</span>
</address>
</body>
</html>
Содержимое страницы не доступно.

56.2. Настройка аутентификации Kerberos для веб-сервера Nginx

В этом разделе показано, как обеспечить прозрачную авторизацию пользователей домена на веб-сайте, размещенном на веб-сервере Nginx.

56.2.1. Создание keytab-файла

Подробнее см. Создание keytab-файла.
Нужно настроить SPN (имена участников-служб) для имени сервера, на которое разрешается любой веб-сайт (таким образом, фактическое имя сервера, на которое указывает CNAME, является полным). Если виртуальный хостинг не используется, веб-адрес и имя машины будут одинаковыми. Для этого на контроллере домена:
# samba-tool user add --random-password nginxauth
# samba-tool user setexpiry nginxauth --noexpiry
# samba-tool spn add HTTP/web.test.alt nginxauth
Создать Kerberos keytab-файл для Nginx:
# samba-tool domain exportkeytab /tmp/nginx.keytab --principal=HTTP/web.test.alt@TEST.ALT
Export one principal to /tmp/nginx.keytab

56.2.2. Настройка Nginx

Для работы прозрачной доменной аутентификации (SSO) в Nginx необходимо установить пакеты nginx и nginx-spnego:
# apt-get install nginx nginx-spnego
Модуль SPNEGO для Nginx — это программный компонент для возможности прохождения аутентификации (Single Sign-On или SSO) через сервер LDAP.
Включить модуль http_auth_spnego:
# ln -s /etc/nginx/modules-available.d/http_auth_spnego.conf /etc/nginx/modules-enabled.d/
Перенести полученный на контроллере домене файл keytab на веб-сервер в каталог /etc/nginx. Установить права на файл keytab:
# chmod 644 /etc/nginx/nginx.keytab
Nginx должен иметь права на чтение keytab-файла, но не на его изменение.
Настроить аутентификацию в секции server файла конфигурации сайта:
server {
    …
    location /
    {
        root /var/www/html;
        auth_gss on;
        auth_gss_realm TEST.ALT; #имя Kerberos области
        auth_gss_keytab /etc/nginx/nginx.keytab; #путь к keytab-файлу
        auth_gss_service_name HTTP/web.test.alt; #имя используемого SPN
        auth_gss_allow_basic_fallback off;
    }
}
Описание опций:
  • auth_gss — включение/отключение аутентификации;
  • auth_gss_keytab — абсолютный путь к файлу keytab, содержащему учётные данные службы;
  • auth_gss_realm — имя области Kerberos;
  • auth_gss_service_name — имя субъекта-службы, используемое при получении учетных данных;
  • auth_gss_allow_basic_fallback — включить/отключить базовую аутентификацию. При включённой базовой аутентификации (по умолчанию), если SSO не проходит (машина не в домене) разрешает обычный ввод логина и пароля. Если используется SPNEGO без SSL, рекомендуется отключить базовую аутентификацию, так как в этом случае пароль будет отправлен в виде открытого текста.
Перезапустить nginx:
# systemctl restart nginx
Если нужно авторизовать только определенный набор пользователей, можно использовать параметр auth_gss_authorized_principal. Можно указывать несколько записей, по одной на строку:
auth_gss_authorized_principal <username>@<realm>
auth_gss_authorized_principal <username2>@<realm>
Список пользователей также можно указать с помощью шаблона регулярного выражения в параметре auth_gss_authorized_principal_regex. Этот параметр можно использовать вместе с параметром auth_gss_authorized_principal:
auth_gss_authorized_principal <username>@<realm>
auth_gss_authorized_principal_regex ^(<username>)/(<group>)@<realm>$

56.2.3. Проверка аутентификации

Тестовый сайт должен быть доступен по адресу http://<полное_доменное_имя_веб-сервера>.
На рабочей станции, введённой в домен, получить билет Kerberos:
$ kinit ivanov
Password for ivanov@TEST.ALT:
$ klist
Ticket cache: KEYRING:persistent:500:krb_ccache_5VitJSL
Default principal: ivanov@TEST.ALT

Valid starting       Expires              Service principal
19.06.2025 13:57:52  19.06.2025 23:57:52  krbtgt/TEST.ALT@TEST.ALT
    renew until 26.06.2025 13:57:47
Попытаться прочитать содержимое сайта, используя аутентификацию Kerberos:
$ curl --negotiate -u : http://web.test.alt
<html><body><h1>It works!</h1></body></html>
Получено содержимое страницы.
Удалить билеты Kerberos:
$ kdestroy
$ klist
Попытаться прочитать содержимое сайта, используя аутентификацию Kerberos:
$ curl --negotiate -u : http://web.test.alt
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.22.1</center>
</body>
</html>
Содержимое страницы не доступно.

56.3. Настройка браузеров для SSO

Предварительно необходимо ввести компьютер в домен (см. Подключение к домену) и убедиться, что доменный пользователь получает билет Kerberos.
Для работы SSO в браузерах необходимо произвести некоторые настройки.

56.3.1. Настройка Mozilla Firefox

Порядок действий:
  1. В адресной строке ввести about:config, чтобы отобразить список текущих параметров конфигурации (необходимо будет нажать кнопку Принять риск и продолжить).
  2. В поле Фильтр ввести negotiate, чтобы ограничить список параметров.
  3. Выбрать параметр network.negotiate-auth.trusted-uris.
  4. Указать в этом параметре имя Kerberos области (realm), включая предшествующую точку (.). Если нужно добавить несколько доменов, их необходимо указать через запятую.
Настройка Mozilla Firefox SSO
В ряде случаев может потребоваться отредактировать еще несколько параметров:
  • параметр network.automatic-ntlm-auth.trusted-uris выставить в Kerberos realm: .test.alt;
  • параметр network.negotiate-auth.delegation-uris выставить в Kerberos realm: .test.alt;
  • параметр network.automatic-ntlm-auth.allow-non-fqdn выставить в: true;
  • параметр network.negotiate-auth.allow-non-fqdn выставить в: true;
Вместо выставления этих параметров можно создать файл /usr/lib64/firefox/browser/defaults/preferences/prefs.js со следующим содержимым:
pref("network.negotiate-auth.trusted-uris",".test.alt");
pref("network.automatic-ntlm-auth.trusted-uris",".test.alt");
pref("network.automatic-ntlm-auth.allow-non-fqdn","true");
pref("network.negotiate-auth.allow-non-fqdn","true");
pref("network.negotiate-auth.delegation-uris",".test.alt");
Эти параметры могут быть распространены через групповые политики для Firefox:
  • параметр network.negotiate-auth.trusted-uris — политика SPNEGO;
  • параметр network.automatic-ntlm-auth.trusted-uris — политика NTLM;
  • параметр network.negotiate-auth.delegation-uris — политика Делегированная авторизация;
  • параметр network.automatic-ntlm-auth.allow-non-fqdn — политика Разрешить неполное доменное имя (Non FQDN);
  • параметр network.negotiate-auth.allow-non-fqdn — политика Разрешить неполное доменное имя (Non FQDN);
Подробнее см. Управление политиками браузера Firefox.

56.3.2. Настройка Chromium

В файл /etc/chromium/policies/managed/policies.json добавить строки:
{
    "AuthServerAllowlist": "*.test.alt",
    "AuthNegotiateDelegateAllowlist": "*.test.alt"
}
где .test.alt — имя Kerberos области (realm).
Для применения настроек необходимо перезапустить браузер. Результат применения параметров политики для Chromium можно проверить, указав в адресной строке URL: chrome://policy.
Настройка Chromium для SSO
Эти параметры могут быть распространены через групповые политики для Chromium: Список разрешенных серверов для аутентификации (Разрешить аутентификацию на серверах из списка) и Список разрешенных серверов для делегирования прав по протоколу Kerberos (Разрешить делегирование прав по протоколу Kerberos на серверах). Подробнее см. Управление политиками браузера Chromium.

Примечание

Для проверки работы аутентификации без изменения настроек браузера можно запустить браузер из командной строки, выполнив команду:
$ chromium-browser --auth-server-allowlist="*.test.alt"
или:
$ chromium --auth-server-allowlist="*.test.alt" 

56.3.3. Настройка «Яндекс.Браузера»

В файл /etc/opt/yandex/browser/policies/managed/policies.json добавить строки:
{
    "AuthServerAllowlist": "*.test.alt",
    "AuthNegotiateDelegateAllowlist": "*.test.alt"
}
где .test.alt — имя Kerberos области (realm).

Примечание

Если каталоги /etc/opt/yandex/browser/policies/managed/ отсутствуют, их необходимо создать заранее:
# mkdir -p /etc/opt/yandex/browser/policies/managed/
Для применения настроек необходимо перезапустить браузер. Результат применения параметров политики для «Яндекс.Браузера» можно проверить, указав в адресной строке URL: browser://policy.
Настройка Яндекс Браузера для SSO
Эти параметры могут быть распространены через групповые политики для «Яндекс.Браузера»: политики Разрешить аутентификацию на серверах из списка и Разрешить делегирование прав по протоколу Kerberos на серверах. Подробнее см. Управление политиками «Яндекс.Браузера».

Глава 57. FAST в Kerberos

Одной из уязвимостей протокола Kerberos является возможность офлайн-атак по словарю, особенно на этапе получения первого билета (AS-REQ/AS-REP). Злоумышленник может перехватить ответ KDC и попытаться подобрать пароль, расшифровав зашифрованную часть сообщения.
Хотя базовая защита (предварительная аутентификация с зашифрованной временной меткой, RFC 4120) усложняет атаку, она не всегда достаточна. Для повышения устойчивости к таким атакам был разработан механизм FAST (Flexible Authentication Secure Tunneling).

57.1. Что такое FAST

FAST — это механизм, добавляющий дополнительный уровень защиты в процесс аутентификации Kerberos. Он не заменяет стандартную предварительную аутентификацию, а защищает её, создавая зашифрованный туннель между клиентом и KDC.
Основные преимущества:
  • защищает данные предварительной аутентификации от перехвата и офлайн-подбора;
  • позволяет передавать дополнительные факторы аутентификации (например, OTP, зашифрованные вызовы);
  • устраняет проблемы, связанные с актуальностью и привязкой запроса/ответа.

57.2. Принцип работы FAST

FAST не выполняет аутентификацию клиента или KDC напрямую. Вместо этого он создаёт защищённый канал (armor), в котором передаются данные предварительной аутентификации (padata).
Основные компоненты:
  • FAST-фактор (FAST factor) — механизм предварительной аутентификации, передаваемый в защищённом канале (например, зашифрованная временная метка, OTP, Encrypted Challenge);
  • Armor key — ключ, защищающий обмен внутри FAST;
  • KrbFastReq / KrbFastRep — структуры запроса и ответа FAST.
Обмен происходит следующим образом:
  1. Устанавливается защитный ключ (armor key).
  2. Клиент шифрует padata и внутреннее AS-REQ этим ключом.
  3. KDC расшифровывает данные, проверяет FAST-фактор и возвращает зашифрованный FAST-ответ.

57.3. Armoring (бронирование)

Armoring — это процесс создания защитного ключа (armor key), используемого для шифрования обмена в рамках FAST.

57.3.1. Источники брони (armor)

Ключ вычисляется на основе существующего Kerberos-билета (TGT) и временного ключа, что гарантирует его привязку к конкретной сессии и аутентификации.
Структура защиты описывается типом KrbFastArmor, включающим:
  • armor-type — тип брони (например, FX_FAST_ARMOR_AP_REQUEST = 1);
  • armor-value — бинарные данные (AP-REQ, параметры).
В RFC 6113 определён только один тип брони:
  • FX_FAST_ARMOR_AP_REQUEST (1) — защита на основе Kerberos-билета (TGT), упакованного в AP-REQ со временным ключом (subkey), сгенерированным клиентом.
Формирование armor key происходит путём комбинирования двух ключей:
  • subkey — временный ключ, созданный клиентом и включенный в AP-REQ (обеспечивает уникальность и свежесть текущей сессии);
  • ticket_session_key — сессионный ключ из TGT.

Примечание

Важные примечания:
  • Для каждой сессии обмена сообщений FAST генерирует уникальный ключ защиты (armor key). Клиент и KDC считают, что любые сообщения, зашифрованные и защищённые с помощью этого ключа, принадлежат к текущей сессии.
  • Все KDC в одном realm должны поддерживать FAST, если хотя бы один из них его использует.
  • Если броня не аутентифицирует KDC, необходимо использовать FAST-фактор, который это делает.
  • При использовании доверительных отношений, FAST должен быть разрешен на всех контроллерах домена (или указан соответствующий функциональный уровень), иначе возможны сбои аутентификации.
  • Samba поддерживает FAST — включён по умолчанию, но не обязателен.

57.3.2. Источники TGT для брони

В качестве источника защиты используется Kerberos-билет (TGT), который служит основой для вычисления ключа защиты (armor key). Сам билет не является ключом напрямую, но его сессионный ключ участвует в создании armor key.
TGT может быть получен различными способами:
  • TGT, выданный на основе ключей хоста (Host-based TGT) — машина (например, рабочая станция) аутентифицируется в KDC с использованием собственного ключа (host key) и получает Kerberos-билет, который применяется в качестве защиты;
  • Анонимный TGT с проверкой KDC — клиент использует анонимный PKINIT, при этом проверяет подлинность KDC с помощью его криптографической подписи. Полученный TGT применяется как защита;
  • Анонимный TGT без проверки KDC — клиент получает TGT, не проверяя подлинность KDC. Такой билет тоже может быть использован в качестве защиты, но этот метод менее безопасен и может быть уязвим к MITM-атакам.

57.3.3. FAST Request

Клиент формирует запрос KrbFastReq, содержащий:
  • зашифрованный внутренний AS-REQ;
  • информацию о брони (armor type/value);
  • один или несколько FAST-факторов (механизмов предварительной аутентификации).
Запрос передаётся как padata с типом FX_FAST.

57.3.4. FAST Response

KDC возвращает KrbFastRep, включающий:
  • зашифрованный AS-REP;
  • результат проверки FAST-фактора;
  • дополнительную информацию об аутентификации.
Ответ защищён тем же armor key, что и запрос.

57.4. Конфигурация клиентских машин

57.4.1. Winbind

Winbind частично поддерживает FAST:
  • не используется для AS-REQ/AS-REP(аутентификация пользователя);
  • используется для TGS-REQ/TGS-REP (получение сервисных билетов).
Настроек FAST в Winbind нет — механизм включён по умолчанию, но при этом не обязателен:
  • если KDC поддерживает FAST — механизм будет использоваться;
  • если не поддерживает — запрос пройдёт без FAST, и это не вызовет ошибки.
Проверить использование FAST можно:
  • включив трассировку:
    KRB5_TRACE=/dev/stdout <команда>
    Например:
    $ KRB5_TRACE=/dev/stdout kinit user@TEST.ALT
  • проанализировав сетевой трафик.

Примечание

klist не показывает, использовался ли FAST.

57.4.2. SSSD

Для включения FAST в SSSD необходимо добавить в /etc/sssd/sssd.conf два параметра:
[domain/TEST.ALT]
...
	krb5_use_fast = try
	krb5_fast_principal = CLIENT1$@TEST.ALT
Где:
  • krb5_use_fast — режим использования FAST. Поддерживаются следующие значения:
    • never — не использовать FAST;
    • try — использовать FAST, если KDC поддерживает (если сервер не поддерживает FAST, проверка подлинности будет продолжена без него);
    • demand — требовать FAST (проверка подлинности будет неудачной, если сервер не поддерживает FAST).
    По умолчанию: не задано (FAST отключён).
  • krb5_fast_principal — учётная запись хоста, используемая для получения TGT.

Примечание

Для работы FAST необходима таблица ключей или поддержка анонимного PKINIT.

Примечание

SSSD поддерживает FAST только с MIT Kerberos версии 1.8 и выше. Если используется более раннея версия, добавление параметра krb5_use_fast приведёт к ошибке конфигурации.
Параметр krb5_fast_principal указывает учетную запись хоста, которую следует использовать для FAST.
Проверить использование FAST можно:
  • включив трассировку:
    KRB5_TRACE=/dev/stdout <команда>
    Например:
    $ KRB5_TRACE=/dev/stdout kinit user@TEST.ALT
  • проанализировав сетевой трафик.
  • изучив логи /var/log/sssd/krb5_child.log.

Примечание

klist не показывает, использовался ли FAST.

57.4.3. Windows

Клиенты Windows могут использовать FAST в связке с Samba при следующих условиях:
  • функциональный уровень домена — не ниже 2012;
  • настроены соответствующие групповые политики.
Включение поддержки FAST:
  1. Создать OU с контроллерами домена, на которых планируется работа FAST, назначить групповую политику и установить значение Supported для параметра KDC support for claims, compound authentication and Kerberos armoring (Конфигурация компьютераАдминистративные шаблоныСистемаKDC).
  2. Создать OU с клиентами, назначить групповую политику и установить значение Enabled для параметра Kerberos client support for claims, compound authentication and Kerberos armoring (Конфигурация компьютераАдминистративные шаблоныСистемаKerberos).
Обязательное использование FAST (действия выполняются на OU с контроллерами домена):
  1. Включить параметр Fail authentication requests when Kerberos armoring is not available (Конфигурация компьютераАдминистративные шаблоныСистемаKerberos), установив значение Enabled.
  2. Изменить значение параметра KDC support for claims, compound authentication and Kerberos armoring (Конфигурация компьютераАдминистративные шаблоныСистемаKDC), установив значение Fail unarmored authentication requests.
Проверка использования FAST на Windows:
  1. В выводе команды klist на хосте в поле Cache Flags появятся метки:
    Cache Flags: 0x41 -> PRIMARY FAST
    Cache Flags: 0x42 -> DELEGATION FAST
    Cache Flags: 0xc0 -> FAST COMPOUND
    
  2. Через анализ сетевого трафика.

Глава 58. Централизованная настройка политик Kerberos

В ALT Domain политики, регулирующие срок действия билетов Kerberos, можно настраивать централизованно на контроллере домена. Это позволяет обеспечить единые требования безопасности ко всем клиентам в домене без необходимости редактирования конфигурации на каждом устройстве.
Эти параметры определяются на стороне контроллера домена в файле /etc/samba/smb.conf в секции [global].
Значения, заданные на DC, являются максимально допустимыми. Клиентские системы могут усиливать требования в сторону уменьшения сроков действия билетов в своём локальном /etc/krb5.conf, но не могут превышать значения, заданные в конфигурации DC.
Для настройки сроков действия билетов Kerberos необходимо отредактировать файл /etc/samba/smb.conf на каждом DC в секции [global]:
[global]
    kdc:service ticket lifetime = 24
    kdc:user ticket lifetime    = 3
    kdc:renewal lifetime        = 120
где
  • kdc:service ticket lifetime — срок действия билета, выданного для доступа к конкретной службе (например, LDAP, SSH, HTTP);
  • kdc:user ticket lifetime — определяет, как долго действует первоначальный TGT (Ticket Granting Ticket), выдаваемый при аутентификации пользователя;
  • kdc:renewal lifetime — максимальное время, в течение которого пользователь может обновлять свой TGT без повторной аутентификации.
В приведенном выше примере билеты служб действительны в течение 24 часов, после чего Samba должна их перевыпустить. Пользовательские билеты TGT действительны в течение 3 часов, после чего их требуется продлить. Обновление возможно в течение 120 часов (5 дней) с момента выдачи.

Примечание

В /etc/samba/smb.conf время указывается только в часах и целым числом.

Примечание

На сервере MIT Kerberos нельзя задать отдельно срок жизни билета для службы.
После внесения изменений в /etc/samba/smb.conf необходимо перезапустить службу Samba:
# systemctl restart samba
Проверка работы Kerberos на клиенте:
  1. Получить билет:
    $ kinit administrator
    Password for Administrator@TEST.ALT:
    
  2. Просмотреть параметры билета:
    $ klist
    
    Пример вывода:
    Valid starting       Expires              Service principal
    19.11.2025 11:35:46  19.11.2025 14:35:46  krbtgt/TEST.ALT@TEST.ALT
    	renew until 24.11.2025 11:35:40
    
    Здесь видно, что:
    • TGT действителен 3 часа;
    • обновление доступно до 24.11.2025 (120 часов = 5 дней).
На клиенте можно ужесточить политики в файле в файле /etc/krb5.conf в разделе [libdefaults]:
[libdefaults]
    ticket_lifetime = 2h
    renew_lifetime = 1d
Эти значения будут применяться по умолчанию ко всем билетам, если при запросе не указано иное.

Примечание

В /etc/krb5.conf поддерживаются следующие единицы измерения: s — секунды, m — минуты, h — часы, d — дни (например: 30m, 2h, 7d).

Примечание

Если клиент запросит билет со сроком дольше, чем разрешено на сервере, сервер выдаст билет на свой максимальный срок. Например:
$ kinit -l 10h administrator
$ klist
…
Valid starting       Expires              Service principal
19.11.2025 12:16:16  19.11.2025 15:16:16  krbtgt/TEST.ALT@TEST.ALT
	renew until 24.11.2025 12:16:16
Билет будет действовать 3 часа, а не 10.

Глава 59. Распределенная файловая система (DFS)

Распределенная файловая система (Distributed File System, DFS) — серверная технология Microsoft, предназначенная для упрощения доступа к общим файловым ресурсам, распределенным по сети. С помощью DFS можно объединять в единую логическую структуру файловые ресурсы, физически находящиеся на различных серверах, а также производить между ними репликацию. Функционал DFS образуют две составляющих: пространство DFS-имен — DFS-N (DFS-Namespace) и механизм репликации — DFS-R (DFS-Replication).
Samba поддерживает DFS-N, но пока не поддерживает DFS-R.

59.1. Пространство DFS-имен

Пространство DFS-имен — это единый виртуальный каталог, содержащий ссылки на общие каталоги, расположенные на разных файловых серверах. Пространство имен состоит из корня (root), ссылок (folders) и целевых объектов (folder targets). Пространство имен DFS может быть двух типов: автономное (Stand-alone) и доменное (Domain-based).
Автономный вариант работает на одном сервере и приводит к тому, что имена DFS содержат имя этого сервера, они выглядят как общие ресурсы, предоставляемые этим сервером (можно создать распределенную файловую систему, не используя доменные службы).
При доменном варианте имена DFS содержат только имя домена, а не имя какого-либо конкретного сервера (имя сервера пространства имен скрыто от пользователей, проще замена сервера пространства имен или перенос пространства имен на другой сервер).
Общая схема работы DFS
Корень пространства имен (Namespace root) — это базовая точка, от которой начинается отсчёт пространства имён. В зависимости от типа корень доступен по адресу \\ServerName\RootName (Stand-alone) или \\DomainName\RootName (Domain-based).
Сервер пространства имен (Namespace server) — физический сервер, на котором содержится пространство имён DFS.
Каталог — ссылка в пространстве имен DFS, указывающая на целевой объект. Каталоги без конечных объектов (например, каталог Share) образуют структуру и иерархию в пространстве имен, а каталоги с целевыми объектами (например, каталог Share1) предоставляют пользователям доступ к фактическому содержимому.
Целевой объект (Folder targets) — ссылка на общий файловый ресурс, находящийся на определенном файловом сервере. Одна ссылка может указывать как на один, так и на несколько целевых объектов.

59.2. Настройка DFS на сервере Samba

Прежде чем перейти к добавлению пространства имен, необходимо создать хотя бы один сетевой каталог на любом из серверов, добавленных в домен.
Сервер Samba можно сделать сервером DFS, задав логический параметр host msdfs в файле /etc/samba/smb.conf. Корень DFS назначается с помощью логического параметра root msdfs. Если для этого параметра установлено значение yes, Samba будет воспринимать открытый для общего доступа ресурс как корневой DFS. Ссылки DFS, указываемые в открытом для доступа каталоге, имеют вид: msdfs:serverA\shareA,serverB\shareB и т.д. Корневой каталог DFS в Samba содержит ссылки DFS в виде символических ссылок,
Для создания нового пространства имён необходимо выполнить следующие действия:
  • создать каталог, в котором будут настроены ссылки DFS на другие серверы в сети (в примере /media/dfsroot):
    # mkdir /media/dfsroot
    
  • в файл /etc/samba/smb.conf в секцию [global] добавить параметр:
    host msdfs = yes
    
    и добавить секцию [dfs], с указанием корня:
    [dfs]
            path = /media/dfsroot
            msdfs root = yes
    
  • в каталоге /media/dfsroot настроить ссылки DFS на общие ресурсы в сети:
    # cd /media/dfsroot
    # ln -s msdfs:dc1.test.alt\\free linka
    # ln -s msdfs:web.test.alt\\tests linkb
    
  • Перезапустить samba:
    # systemctl restart samba
    
  • дерево DFS теперь доступно по адресу //test.alt/dfs/. При доступе к ссылкам linka или linkb (которые отображаются для клиента как каталоги) пользователи напрямую переходят к соответствующим общим ресурсам в сети. Проверка:
    $ smbclient //test.alt/dfs/linka -U 'ivanov'
    Password for [TEST\ivanov]:
    Try "help" to get a list of possible commands.
    smb: \> ls
      .                                   D        0  Wed Jun 18 14:13:28 2025
      ..                                  D        0  Wed Jun 18 14:13:06 2025
      dc.txt                              N        5  Wed Jun 18 19:57:14 2025
    
            48254668 blocks of size 1024. 40859796 blocks available
    smb: \> exit
    

Примечание

Для доступа к ресурсам DFS по имени домена с использованием аутентификации Kerberos необходимо добавить к имени сервера псевдоним — имя домена. Это можно сделать, выполнив на контроллере домена команду:
# samba-tool spn add cifs/cifs/<имя_домена> <имя_сервера>$
Например:
# samba-tool spn add cifs/test.alt dc1$
Подключиться к данному пространству можно, набрав в адресной строке следующий адрес: smb://<имя_домена>/<имя_пространства_имен>:
Дерево DFS в файловом менеджере

Глава 60. Настройка SSSD

60.1. Журналирование SSSD

60.1.1. Файлы журналов SSSD

Каждая служба SSSD записывает логи в свой собственный файл журнала в каталоге /var/log/sssd/. Например, для машины в домене test.alt файлы журналов SSSD могут выглядеть следующим образом:
# ls -l /var/log/sssd/
итого 1660
-rw------- 1 _sssd _sssd       0 мая 18 12:55 gpo_child.log
-rw------- 1 _sssd _sssd       0 мая 18 12:55 krb5_child.log
-rw------- 1 _sssd _sssd       0 мая 18 12:54 ldap_child.log
-rw------- 1 root  root      261 июн 19 10:10 sssd_ifp.log
-rw------- 1 root  root     3955 июн 19 09:34 sssd.log
-rw------- 1 _sssd _sssd 1677605 июн 19 11:18 sssd_nss.log
-rw------- 1 _sssd _sssd    1134 июн 19 09:34 sssd_pac.log
-rw------- 1 _sssd _sssd    3067 июн 19 09:34 sssd_pam.log
-rw------- 1 _sssd _sssd       0 мая 18 12:54 sssd_TEST.ALT.log
krb5_child.log
Файл журнала для недолговечного вспомогательного процесса, участвующего в аутентификации Kerberos.
ldap_child.log
Файл журнала для недолговечного вспомогательного процесса, участвующего в получении билета Kerberos для связи с сервером LDAP.
sssd_<domain.name>.log
Для каждого раздела [domain] в файле sssd.conf служба SSSD записывает информацию о взаимодействии с LDAP-сервером в отдельный файл журнала.
sssd.log
Файл журнала для мониторинга SSSD и связи его с ответчиком и внутренними процессами.
sssd_ifp.log
Файл журнала для ответчика InfoPipe, который предоставляет общедоступный интерфейс D-Bus, доступный через системную шину.
sssd_nss.log
Файл журнала для ответчика Name Services Switch (NSS), который извлекает информацию о пользователях и группах.
sssd_pac.log
Файл журнала для ответчика Microsoft Privilege Attribute Certificate (PAC), который собирает PAC из билетов AD Kerberos и извлекает информацию о пользователях AD из PAC, что позволяет избежать её запроса непосредственно из AD.
sssd_pam.log
Файл журнала для ответчика Pluggable Authentication Module (PAM).
sssd_ssh.log
Файл журнала для процесса ответчика SSH.

60.1.2. Уровни журналирования SSSD

Таблица 60.1. Уровни журналирования SSSD

Уровень
Описание
0, 0x0010
Фатальные ошибки. Ошибки, которые не позволяют запустить службу SSSD или вызывает завершение работы сервиса
1, 0x0020
Критические ошибки. Ошибки, которые не завершают работу службы SSSD, но как минимум одна из основных функций не работает должным образом
2, 0x0040
Серьёзные ошибки. Ошибки, сообщающие о том, что определенный запрос или операция завершились неудачно. Это уровень журналирования по умолчанию
3, 0x0080
Незначительные ошибки. Ошибки, которые могут стать причиной ошибок второго уровня (ошибок при выполнении действий)
4, 0x0100
Настройки конфигурации
5, 0x0200
Данные функций
6, 0x0400
Сообщения трассировки для функций действий
7, 0x1000
Сообщения трассировки для функций внутреннего управления
8, 0x2000
Содержимое переменных внутренних функций
9, 0x4000
Информация трассировки крайне низкого уровня
9, 0x20000
Быстродействие и статистические данные. Из-за способа обработки запросов на внутреннем уровне, записанное в журнал время выполнения запроса может быть больше, чем оно было на самом деле
10, 0x10000
Информация трассировки libldb ещё более низкого уровня. Практически никогда не требуется
Установка уровня журнала также включает все уровни ниже него. Например, установка уровня журнала на 6 также включает уровни с 0 по 5.
Чтобы вести журнал для необходимых уровней журналирования, указанных в представлении битовых масок, следует просто сложить их номера. Например, чтобы вести журнал для фатальных, критических, серьёзных ошибок и для данных функций следует использовать значение 0x0270.

60.1.3. Настройка уровня журналирования для SSSD в файле sssd.conf

Чтобы включить подробное журналирование, сохраняющееся при перезапуске службы SSSD, следует добавить опцию debug_level=<целое_число> в каждую секцию файла /etc/sssd/sssd.conf. Где значение <целое_число> — число от 0 до 10. Уровни до 3 регистрируют крупные сбои, а уровни, начиная с 8 и выше, предоставляют большое количество подробных сообщений журнала. Уровень 6 является хорошей отправной точкой для отладки проблем.
Пример настройки уровня журналирования в файле /etc/sssd/sssd.conf:
[sssd]
debug_level = 6
config_file_version = 2
services = nss, pam

[domain/TEST.ALT]
debug_level = 6
id_provider = ad
…

[nss]
debug_level = 6

[pam]
debug_level = 6
Чтобы загрузить новые параметры конфигурации необходимо перезапустить службу SSSD:
# systemctl restart sssd

60.1.4. Настройка уровня журналирования для SSSD с помощью команды sssctl

Изменить уровень журналирования службы SSSD можно с помощью команды sssctl debug-level <целое_число>. Где значение <целое_число> — число от 0 до 10. Уровни до 3 регистрируют крупные сбои, а уровни, начиная с 8 и выше, предоставляют большое количество подробных сообщений журнала. Уровень 6 является хорошей отправной точкой для отладки проблем.
Просмотр текущего уровня журналирования:
# sssctl debug-level
sssd                      0x0070
nss                       0x0070
pam                       0x0070
pac                       0x0070
domain/TEST.ALT           0x0070
Установка нового уровня журналирования:
# sssctl debug-level 6
# sssctl debug-level
sssd                      0x07f0
nss                       0x07f0
pam                       0x07f0
pac                       0x07f0
domain/TEST.ALT           0x07f0

Примечание

Уровень журналирования, заданный с помощью команды sssctl debug-level, будет действовать до перезапуска службы sssd.

60.2. Настройки SSSD в ЦУС

Некоторые параметры SSSD можно установить в модуле ЦУС Аутентификация. В окне модуля Аутентификация следует нажать кнопку Настройка SSSD… откроется окно настроек SSSD:
Настройки SSSD в Alterator

Таблица 60.2. Настройки SSSD в Alterator

Настройка
Опция в файле /etc/sssd/sssd.conf
Описание
Правила применения групповых политик
ad_gpo_access_control
Определяет, в каком режиме будет осуществляться контроль доступа в SSSD, основанный на групповых политиках Active Directory (GPO).
Доступные режимы:
  • enforced (принудительный режим) — правила управления доступом в SSSD, основанные на GPO, выполняются, ведётся логирование;
  • permissived (разрешающий режим) — правила управления доступом в SSSD, основанные на GPO, не выполняются, ведётся только логирование. Такой режим необходим администратору, чтобы оценить, как срабатывают новые правила;
  • disabled (отключить) — правила управления доступом в SSSD, основанные на GPO, не логируются и не выполняются;
  • default (по умолчанию) — настройка контроля доступом в SSSD, основанная на GPO, сброшена на значение по умолчанию в пакете
Игнорировать, если групповые политики не читаются
ad_gpo_ignore_unreadable
Определяет, будут ли проигнорированы правила управления доступом в SSSD, основанные на групповых политиках, если недоступен какой-либо шаблон (GPT) объекта групповой политики (GPO).
Доступные режимы:
  • enabled (включить) — игнорировать правила управления доступом через групповые политики, если шаблоны групповых политик не доступны для SSSD;
  • disabled (отключить) — запретить доступ пользователям SSSD AD, которым назначены групповые политики, если шаблоны групповых политик не доступны;
  • default (по умолчанию) — настройка игнорирования политик, при недоступности шаблонов групповых политик сброшена на значение по умолчанию в пакете
Кешировать учётные данные
cache-credentials
Определяет, будут ли учётные данные удалённых пользователей сохраняться в локальном кеше SSSD.
Доступные режимы:
  • enabled (включить) — сохранение в локальном кеше SSSD учётных данных пользователей включено;
  • disabled (отключить) — сохранение в локальном кеше SSSD учётных данных пользователей отключено;
  • default (по умолчанию) — настройка сохранения в локальном кеше SSSD учётных данных пользователей сброшена на значение по умолчанию в пакете
Привилегии запуска SSSD
sssd-drop-privileges
Позволяет сбросить права службы SSSD, чтобы избежать работы от имени суперпользователя (root).
Доступные режимы:
  • privileged (привилегированный) — служба SSSD запущена от имени привилегированного суперпользователя (root);
  • unprivileged (непривилегированный) — служба SSSD запущена от имени непривилегированного пользователя (_sssd);
  • default (по умолчанию) — режим привилегий службы SSSD задан по умолчанию в пакете
Интервал обновления записей DNS
dyndns_refresh_interval
Определяет, как часто серверная часть должна выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, выполняемому при подключении серверной части к сети. Этот параметр применим только в том случае, если для параметра dyndns_update установлено значение true.
Доступные режимы:
  • enabled (включить) — задать интервал;
  • disabled (отключить) — установить значение по умолчанию (86400);
  • unknown
TTL для клиентской записи DNS
dyndns_ttl
Срок жизни, применяемый к DNS-записи клиента при ее обновлении. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта.
Доступные режимы:
  • enabled (включить) — задать TTL;
  • disabled (отключить) — установить значение по умолчанию (3600);
  • unknown
Обновлять IP-адрес машины в DNS
dyndns_update
Позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) с IP-адресом клиента через SSSD.
Доступные режимы:
  • enabled (включить) — автоматическое обновление DNS-записи клиента через SSSD включено;
  • disabled (отключить) — автоматическое обновление DNS-записи клиента через SSSD отключено;
  • default (по умолчанию) — настройка автоматического обновления DNS-записи клиента через SSSD задана по умолчанию в пакете;
  • unknown
Обновлять PTR-запись машины в DNS-записей
dyndns_update_ptr
Определяет, будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG) при обновлении DNS-записей клиента. Применимо, только если параметр dyndns_update имеет значение true.
Доступные режимы:
  • enabled (включить) — автоматическое обновление DNS-записи обратной зоны через SSSD включено;
  • disabled (отключить) — автоматическое обновление DNS-записи обратной зоны через SSSD отключено;
  • default (по умолчанию) — настройка автоматического обновления DNS-записи обратной зоны задана по умолчанию в пакете;
  • unknown

60.3. Включение автономной аутентификации

По умолчанию SSSD не кеширует учетные данные пользователей. При обработке запросов на аутентификацию SSSD всегда обращается к поставщику идентификационных данных. Если провайдер недоступен, аутентификация пользователя не проходит.
Чтобы пользователи могли пройти аутентификацию, даже когда провайдер идентификации недоступен, можно включить кеширование учетных данных, установив параметр cache_credentials в значение true в разделе домена (в файле /etc/sssd/sssd.conf).
Дополнительно можно использовать параметр offline_credentials_expiration в разделе [pam], чтобы установить ограничение по времени (в днях), в течение которого пользователи смогут аутентифицироваться в автономном режиме с момента последнего успешного входа.
Пример настройки возможности автономной аутентификации пользователей в течение 5 дней с момента последнего успешного входа:
[pam]
offline_credentials_expiration = 5
[domain/TEST.ALT]
cache_credentials = true
Для включения/отключения кеширования учетных данных можно использовать control sssd-cache-credentials. Например:
  • просмотреть текущее значение:
    # control sssd-cache-credentials
    default
    
  • включить кеширование учетных данных:
    # control sssd-cache-credentials enabled
    
  • отключить кеширование учетных данных:
    # control sssd-cache-credentials disabled
    

Примечание

Данные настройки можно применить с помощью механизма групповых политик control. Подробнее см. Групповые политики control.

Глава 61. Samba в режиме файлового сервера

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

Примечание

Не рекомендуется размещать файловый сервер на контроллере домена. Файловый сервер должен быть присоединён к домену, но не являться DC.
Каждый раздел в файле конфигурации (кроме раздела [global]) описывает общий ресурс. Название раздела — это имя общего ресурса. Параметры в разделе определяют свойства общего ресурса.
Общий ресурс состоит из каталога, к которому предоставляется доступ, а также описания прав доступа, которые предоставляются пользователю.
Разделы — это либо общие файловые ресурсы, либо службы печати. Разделам может быть назначен гостевой доступ, в этом случае для доступа к ним не требуется пароль (для определения прав доступа используется специальная гостевая учетная запись). Для доступа к разделам, к которым запрещен гостевой доступ, потребуется пароль.

Примечание

Вне домена Samba использует отдельную от системной базу данных пользователей. Для добавления в нее служит отдельная утилита smbpasswd. Для работы в доменной среде необходимости добавлять пользователей в эту базу нет. Достаточно ввести ПК в домен, используя winbind или sssd.
В файле конфигурации есть три специальных раздела: [global], [homes] и [printers]:
Раздел [global]
Параметры в этом разделе применяются к серверу в целом или задаются как значения по умолчанию для других разделов. Эти значения могут быть переопределены в разделах, описывающих общие ресурсы (например, в [homes], [printers] или пользовательских секциях).
Раздел [homes]
Используется для подключения домашних каталогов пользователей. При каждом обращении Samba сначала ищет имя запрошенного ресурса в списке общих ресурсов и, если имя не найдено, проверяет наличие в конфигурации секции [homes]. Если такая секция есть, то имя трактуется как имя пользователя (макрос %S).
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
#можно переназначить путь до домашнего каталога, указав path
#path = /opt/smbhome/%S
Раздел [printers]
Если в файле конфигурации имеется раздел [printers], пользователи могут подключаться к любому принтеру, указанному в файле /etc/printcap локального хоста. Как правило, в файле /etc/printcap содержатся те принтеры, что настроены в CUPS.

Примечание

Флаг browseable для домашних каталогов будет унаследован от глобального флага browseable, а не флага browseable раздела [homes]. Таким образом, установка browseable = no в разделе [homes] скроет общий ресурс [homes], но сделает видимыми все автоматические домашние каталоги.
Описание некоторых параметров:
  • browseable — определяет, отображается ли этот общий ресурс в списке доступных общих ресурсов в сетевом окружении и в списке просмотра (по умолчанию: browseable = yes);
  • path — указывает каталог, к которому должен быть предоставлен доступ;
  • read only — если для этого параметра задано значение «yes», то пользователи службы не могут создавать или изменять файлы в каталоге (по умолчанию: read only = yes);
  • writable — инвертированный синоним для read only (по умолчанию: writeable = no);
  • write list — список пользователей, которым будет предоставлен доступ для чтения и записи. Если пользователь находится в этом списке, ему будет предоставлен доступ для записи, независимо от того, какой параметр установлен для параметра read only. Список может включать имена групп с использованием синтаксиса @group;

    Примечание

    Особенности написания имен групп:
    • в случае если в названии группы есть пробел, необходимо использовать кавычки, например, @"Domain users";
    • в случае если работа происходит в мультидоменной среде, следует принудительно указывать домен, например, @"TEST\Domain users";
    • несколько значений разделяются запятой, например, write list = @"TEST\Domain users", @it, @NEW\buh
  • read list — список пользователей, которым будет предоставлен доступ только для чтения. Если пользователь находится в этом списке, ему не будет предоставлен доступ для записи, независимо от того, какой параметр установлен для параметра read only. Список может включать имена групп;
  • guest ok — если этот параметр имеет значение «yes», то для подключения к ресурсу не требуется пароль (по умолчанию: guest ok = no);
  • guest only — разрешить только гостевые соединения к общему ресурсу (по умолчанию: guest only = no);
  • printable — если этот параметр имеет значение «yes», то клиенты могут открывать, писать и ставить задания в очередь печати (по умолчанию: printable = no);
  • valid users — список пользователей (групп), которым разрешен доступ к сервису;
  • force group — принудительное изменение группы на создаваемые файлы/каталоги;
  • force create mode — принудительная установка указанных атрибутов на файлы;
  • force directory mode — принудительная установка указанных атрибутов на каталоги.

Примечание

После редактирования файла /etc/samba/smb.conf, следует запустить команду testparm для проверки файла на синтаксические ошибки:
# testparm /etc/samba/smb.conf
И, в случае отсутствия ошибок, перезапустить службы smb и nmb, чтобы изменения вступили в силу:
# systemctl restart smb
# systemctl restart nmb
Пример настройки:
[Sales]
comment = Sales documents
path = /opt/sales
writable = yes
read list = @sales, @sales-ro
write list = @sales
force group = sales
force create mode = 666
force directory mode = 775

Примечание

Пример создания каталога для ресурса общего доступа:
# mkdir /opt/sales
# chown -R root:"TEST.ALT\\Domain Users" /opt/sales
# chmod -R 2775 /opt/sales
Если нужно скрыть общие ресурсы или файлы, недоступные пользователю в связи отсутствием прав, можно воспользоваться следующими параметрами:
  • access based share enum = yes — включает фильтрацию списка общих ресурсов (верхний уровень) в зависимости от прав пользователя. Пользователь будет только те ресурсы, к которым у него есть хотя бы минимальный доступ;
  • hide unreadable = yes — скрывает файлы/каталоги внутри общего ресурса, если у пользователя нет прав на их чтение;
  • hide unwriteable files = yes — скрывает файлы/каталоги общего ресурса, в которые у пользователя нет прав на запись.

Примечание

Эти опции не заменяют настройку прав, а только управляют видимостью.
Просмотр ресурсов, доступных доменному пользователю ivanov, с использованием активного Kerberos билета:
  1. Получить билет, если он еще не получен:
    $ kinit ivanov
    Password for ivanov@TEST.ALT:
    
  2. Сделать запрос на получение списка ресурсов, используя «прозрачную» аутентификацию:
    $ smbclient -k -L //fs-server.test.alt/
    WARNING: The option -k|--kerberos is deprecated!
    
    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    free            Disk
    Sales           Disk      Sales documents
    IPC$            IPC       IPC Service (Samba 4.21.7-alt4)
    ivanov          Disk      Home Directories
    SMB1 disabled -- no workgroup available
    
    или:
    $ smbclient --use-kerberos=required --use-krb5-ccache=CCACHE -L //fs-server.test.alt/
    
    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    free            Disk
    Sales           Disk      Sales documents
    IPC$            IPC       IPC Service (Samba 4.21.7-alt4)
    ivanov          Disk      Home Directories
    SMB1 disabled -- no workgroup available
    

Примечание

Для ознакомления с прочими возможностями, читайте руководство по smb.conf. Для этого используйте команду man smb.conf.

Глава 62. Пользовательские общие ресурсы в Samba (Usershares)

Usershares — возможность непривилегированным пользователям (non-root) создавать, модифицировать и удалять свои собственные ресурсы для публикации их в сети.

Примечание

Пакет samba-usershares предоставляет:
  • конфигурационный файл;
  • системную группу usershares;
  • каталоги для хранения описаний пользовательских общих ресурсов.
Условия для создания общего ресурса пользователем:
  1. Установлен пакет samba-usershares:
    # apt-get install samba-usershares
  2. В секции [global] файла /etc/samba/smb.conf подключён файл настроек:
    [global]
        include = /etc/samba/usershares.conf
    
  3. В файле /etc/samba/usershares.conf заданы параметры:
    [global]
        usershare path = /var/lib/samba/usershares
        usershare max shares = 100
        usershare allow guests = yes
        usershare owner only = yes
        usershare prefix deny list = /etc /dev /sys /proc
        usershare prefix allow list = /home /srv /mnt /media /var
    
    где:
    • usershare path — каталог для хранения описаний общих ресурсов (по умолчанию /var/lib/samba/usershares);
    • usershare max shares — максимальное количество ресурсов, которое может создать один пользователь. Если значение равно 0 или параметр закомментирован, создание ресурсов запрещено. При превышении лимита будет выдано сообщение:
      net usershare add: maximum number of allowed usershares reached.
    • usershare allow guests — разрешает гостевой доступ. Если значение no или параметр закомментирован — гостевой доступ запрещён;
    • usershare owner only — разрешает расшаривать только собственные каталоги пользователя. Попытка предоставить общий доступ к чужому каталогу вызовет ошибку:
      net usershare add: cannot share path ... as we are restricted to only sharing directories we own.
    • usershare prefix deny list — список запрещённых путей. Определяет каталоги в корневом каталоге (/), в которых пользователю запрещено создавать общие каталоги. Если абсолютный путь к каталогу начинается с одного из перечисленных, доступ к нему будет запрещен. Таким образом, параметр ограничивает области, где пользователи могут публиковать ресурсы. По умолчанию в параметре usershare prefix deny list указаны каталоги: /etc, /dev, /sys, /proc. Попытка расшарить подкаталог из этого списка вызовет ошибку:
      Path is denied
    • usershare prefix allow list — список разрешённых путей. Определяет каталоги в корневом каталоге (/), в которых пользователю разрешено создавать общие каталоги. Если абсолютный путь к каталогу не начинается с одного из указанных каталогов, доступ к нему будет запрещен. По умолчанию в параметре usershare prefix allow list указаны каталоги: /home, /srv, /mnt, /media, /var. Попытка расшарить каталог вне этого списка вызовет ошибку:
      Path not allowed
    Если заданы оба списка — usershare prefix deny list и usershare prefix allow list, сначала обрабатывается список запрета, а затем список разрешений.
  4. Пользователь должен состоять в группе usershares:
    $ groups
    user wheel ... usershares ...
    

62.1. Управление настройками через control

Для настройки /etc/samba/usershares.conf можно использовать подсистему control.

Таблица 62.1. Доступные настройки

Настройка Параметр в файле /etc/samba/usershares.conf Описание и возможные значения
smb-conf-usershare-allow-guests
usershare allow guests
Управляет возможностью предоставления гостевого доступа к общему ресурсу:
  • enabled — разрешить гостевой доступ (usershare allow guests = yes);
  • disabled — запретить гостевой доступ (usershare allow guests = no);
  • default — гостевой доступ запрещён (параметр закомментирован)
smb-conf-usershare-owner-only
usershare owner only
Определяет, может ли пользователь предоставлять общий доступ к каталогу, если он не является его владельцем:
  • enabled — запретить предоставление общего доступа не владельцу (usershare owner only = yes);
  • disabled — разрешить предоставление общего доступа не владельцу (usershare owner only = no);
  • default — запретить предоставление общего доступа не владельцу (параметр закомментирован)
smb-conf-usershare-deny-list
usershare prefix deny list
Управляет запретом на создание общих ресурсов в системных каталогах:
  • enabled — включить список запрещённых путей;
  • disabled — отключить список запрещённых путей (параметр закомментирован)
smb-conf-usershare-allow-list
usershare prefix allow list
Управляет разрешением на создание общих ресурсов в определённых каталогах:
  • enabled — включить список разрешённых путей;
  • disabled — отключить список разрешённых путей (параметр закомментирован)
smb-conf-usershare
usershare max shares
Определяет возможность создания пользовательских общих каталогов:
  • enabled — разрешить создание общих ресурсов (usershare max shares = 100);
  • disabled — запретить создание общих ресурсов (usershare max shares = 0);
  • default — запретить создание общих ресурсов (параметр закомментирован)
Примеры использования:
  • Запретить гостевой доступ:
    # control smb-conf-usershare-allow-guests disabled
    
  • Отключить список разрешённых путей (закомментировать параметр):
    # control smb-conf-usershare-allow-list disabled
    
  • Получить текущее значение параметра:
    # control smb-conf-usershare-allow-list
    disabled
    
  • Получить справку о настройке:
    # control smb-conf-usershare-allow-list help
    enabled: Enable list of permitted directories to be shared by samba usershares
    disabled: Disable list of permitted directories to be shared by samba usershares
    

62.2. Настройка общего доступа

62.2.1. В файловом менеджере

Примечание

Если при создании ресурса общего доступа возникает ошибка:
net usershare: usershares are currently disabled
Файлы:
Ошибка: usershares are currently disabled
Dolphin:
Ошибка: usershares are currently disabled в Dolphin
необходимо убедиться, что пользователи действительно могут создавать общие ресурсы.
Может потребоваться добавить строку
include = /etc/samba/usershares.conf
в секцию [global] файла /etc/samba/smb.conf и перезапустить службу:
# systemctl restart smb

62.2.1.1. Файловый менеджер для рабочего стола GNOME (Файлы)

Настройка общего доступа в Файлы:
  1. В контекстном меню папки выбрать пункт Настроить общий доступ.
  2. В открывшемся окне отметить пункт Открыть общий доступ к папке и настроить параметры публикации:
    Создание ресурса общего доступа в GNOME
  3. Нажать кнопку Создать ресурс.
При выборе пункта Разрешить создание и удаление файлов по сети появится запрос на изменение прав доступа к папке:
Добавление прав на запись в каталог
После нажатия на кнопку Установить права автоматически права на папку будут расширены для группы и других пользователей (go+w).

62.2.1.2. Файловый менеджер Dolphin

Настройка общего доступа в Dolphin:
  1. В контекстном меню папки выбрать пункт Свойства.
  2. На вкладке Публикация отметить пункт Открыть общий доступ к этой папке для компьютеров локальной сети и настроить параметры публикации:
    Создание ресурса общего доступа в Dolphin
  3. Нажать кнопку ОК.

Примечание

Если на вкладке Публикация отображается кнопка Создать пароль Samba:
Запрос на создание пароля Samba
Необходимо добавить пользователя с UID 1000 в базу Samba:
# smbpasswd -a user

Примечание

При первом предоставлении общего доступа к папке может потребоваться задать дополнительные права для домашнего каталога текущего пользователя. Для этого необходимо нажать кнопку Исправить права доступа:
Исправить права доступа
И затем кнопку Изменить права доступа:
Добавление прав доступа

62.2.2. В консоли

Примечание

Все действия выполняются с правами пользователя.
Для управления общими ресурсами Samba можно использовать утилиту net usershare, которая позволяет создавать, просматривать и удалять пользовательские общие каталоги (usershares) без прав суперпользователя.
Основные команды net usershare:
$ net usershare add <имя_ресурса> <путь> [комментарий] [пользователь:{R|D|F}] [guest_ok={y|n}]
$ net usershare delete <имя_ресурса>
$ net usershare list
$ net usershare info [<имя_ресурса>]
  • net usershare add — создаёт (публикует) общий ресурс.
    Параметры:
    • <имя_ресурса> — имя публикуемого ресурса (как оно будет отображаться в сети);
    • <путь> — абсолютный путь к каталогу, предоставляемому для общего доступа;
    • [комментарий] — произвольное описание (можно оставить пустым);
    • [пользователь:{R|D|F}] — список пользователей и уровни их доступа:
      • R — только чтение (read);
      • D — удаление (delete);
      • F — полный доступ (full);
    • [guest_ok={y|n}] — разрешить (y) или запретить (n) гостевой доступ.
  • net usershare delete — удаляет (отменяет публикацию) ранее созданный общий ресурс.
  • net usershare list — выводит список всех опубликованных ресурсов текущего пользователя.
  • net usershare info — показывает подробную информацию обо всех или указанном ресурсе.
Примеры:
  1. Настроить общий доступ к каталогу Приказы:
    $ net usershare add Приказы /home/TEST.ALT/mun/Приказы "" "Everyone:R" "guest_ok=y"
    
    где:
    • Приказы — имя ресурса, под которым каталог будет виден в сети;
    • /home/TEST.ALT/mun/Приказы — путь к публикуемому каталогу;
    • "" — пустой комментарий;
    • "Everyone:R" — разрешён доступ на чтение всем пользователям;
    • "guest_ok=y" — разрешено подключение без аутентификации.
  2. Просмотреть список опубликованных ресурсов:
    $ net usershare list
    Приказы
    For_doc
    
  3. Просмотреть подробную информацию о всех опубликованных ресурсах:
    $ net usershare info
    [Приказы]
    path=/home/TEST.ALT/mun/Приказы
    comment=
    usershare_acl=Everyone:R,TEST\mun:F,
    guest_ok=y
    
    [For_doc]
    path=/home/TEST.ALT/mun/For_doc
    comment=
    usershare_acl=Everyone:F,
    guest_ok=y
    
  4. Отменить публикацию каталога For_doc:
    $ net usershare delete For_doc
    

62.3. Просмотр публичных ресурсов

62.3.1. В файловом менеджере

Для подключения к общему ресурсу можно:
  1. Выбрать закладку Сеть в файловом менеджере:
    Сеть
    и затем нужный компьютер:
    Ресурсы с общим доступом (подключение по имени)
  2. Ввести в адресной строке файлового менеджера путь в формате smb://<имя_сервера>/<имя_ресурса> или smb://<IP_сервера>/<имя_ресурса> и нажать Enter:
    Ресурсы с общим доступом (подключение по IP)
При подключении к расшаренным ресурсам Samba поведение клиента может отличаться в зависимости от того, используется ли IP-адрес или имя хоста:
  • При подключении по IP (smb://<IP_сервера>) клиент SMB не использует имя NetBIOS или DNS для идентификации сервера и не может сопоставить IP-адрес с машиной в домене. Аутентификация выполняется без учётных данных пользователя, что приводит к созданию гостевой сессии.
    Для получения доступа к домашней папке пользователя необходимо указать в адресной строке smb://<IP_сервера>/<имя_пользователя>. В этом случае для доступа потребуется указать аутентификационные данные:
    Подключение к домашнему каталогу пользователя
  • При подключении по имени (smb://<имя_сервера>/) клиент способен определить сервер как участника домена или рабочей группы. В этом случае выполняется аутентификация через Kerberos или NTLM от имени текущего пользователя.
    В результате домашний каталог текущего пользователя будет доступен без ввода пароля.
При запросе ресурса Samba сначала ищет его в списке явно объявленных общих папок. Если ресурс не найден и в /etc/samba/smb.conf присутствует секция [homes], имя трактуется как имя пользователя. В этом случае Samba проверяет существование пользователя в своей базе и, при успехе, предоставляет доступ к его домашнему каталогу.

62.3.2. В консоли

Для просмотра списка общих ресурсов, опубликованных на сервере, используется команда:
$ smbclient -L <имя_сервера> -U%
Примеры:
$ smbclient -L 192.168.0.159 -U%
$ smbclient -L newhost.local -U%

Глава 63. Монтирование общих ресурсов samba

Рассматриваемые ниже способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).

63.1. Подключение с использованием gio

Примечание

Способ актуален для дистрибутивов, использующих gio (например, Simply Linux, Альт Рабочая станция).
Недостаток подключения общих ресурсов с использованием gio — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен.
Процедура монтирования общих ресурсов с использованием gio:
  • установить необходимые пакеты:
    # apt-get install fuse-gvfs gvfs-backend-smb libgio
    
  • включить пользователя в группу fuse:
    # gpasswd -a <пользователь> fuse
    
  • разрешить для всех доступ к fuse:
    # control fusermount public
    
  • войти под доменным пользователем;
  • открыть ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс будет смонтирован по пути /var/run/<uid_пользователя>/gvfs или /var/run/user/<uid_пользователя>/gvfs/smb-share:server=сервер,share=ресурс;
  • другой вариант (полезно для скриптов в автозапуске):
    gio mount smb://server/sysvol/
    

Примечание

Если необходимо открывать что-то с ресурса в WINE, в winecfg следует добавить диск с путём /var/run/uid_пользователя/gvfs.

63.2. Подключение с использованием pam_mount

При подключении общих ресурсов с использованием pam_mount сетевой ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
Процедура монтирования общих ресурсов с использованием pam_mount:
  • установить пакеты pam_mount и cifs-utils:
    # apt-get install pam_mount cifs-utils
    

    Важно

    Для того чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, следует установить пакет systemd-settings-enable-kill-user-processes и перезагрузить систему:
    # apt-get install systemd-settings-enable-kill-user-processes
    
  • прописать pam_mount в схему аутентификации по умолчанию. Для этого в конец файла /etc/pam.d/system-auth добавить строки:
    session         [success=1 default=ignore] pam_succeed_if.so  service = systemd-user quiet
    session         optional        pam_mount.so disable_interactive
    
  • установить правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом <cifsmount>):
    <volume uid="10000-2000200000" fstype="cifs" server="dc1.test.alt" path="sysvol" mountpoint="~/share"
    options="sec=krb5i,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
    
    где
    • uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит для Winbind и для SSSD);
    • server="dc1.test.alt" — имя сервера с ресурсом;
    • path="sysvol" — имя файлового ресурса;
    • mountpoint="~/share" — путь монтирования в домашней папке пользователя.
    Опционально можно добавить:
    • sgrp="group_name" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Параметр sec=krb5i более безопасный, но требует больше вычислительных ресурсов. Вместо него можно указать sec=krb5.

Предупреждение

В параметре server необходимо указывать настоящее имя сервера, а не имя домена.

Предупреждение

По умолчанию для монтирования используется smb версии 1.0, если он отключен, то необходимо указать в параметрах версию 2 или 3:
<volume uid="10000-2000200000" fstype="cifs" server="dc1.test.alt" path="sysvol" mountpoint="~/share"
options="sec=krb5i,vers=2.0,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
Для проверки можно попробовать смонтировать ресурс в сессии:
# mount.cifs //dc1.test.alt/sysvol /mnt/ -o vers=2.0,user=ivanov
Доступность ресурса можно также проверить с помощью команды smbclient, например:
# smbclient -L dc1.test.alt -U ivanov -m SMB2

63.3. Подключение с использованием Autofs

При подключении общих ресурсов с использованием AutoFS заданный ресурс подключается автоматически при каждом обращении пользователя и отключается после определенного времени бездействия (определяется конфигурацией AutoFS).
Принцип работы:
  • задаётся каталог, в котором будет происходить подключение, например, /mnt/auto/;
  • при необходимости обратиться к сетевой файловой системе, следует обратиться к каталогу с именем этой ФС в этом каталоге, например, /mnt/auto/server/share/;
  • при обращении будет произведена попытка смонтировать соответствующий сетевой ресурс;
  • при отсутствии обращения после заданного тайм-аута сетевой ресурс будет отмонтирован.
AutoFS использует для конфигурирования шаблоны /etc/auto*. Основной шаблон называется auto.master, он может указывать на один или несколько других шаблонов для конкретных типов носителей. Пример содержимого файла /etc/auto.master:
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
/mnt/auto       /etc/auto.tab   -t 5
/mnt/net        /etc/auto.avahi -t 120
Первое значение в каждой строке определяет базовый каталог, в который носители будут монтироваться, второе значение — файл конфигурации или скрипт, который будет использован.

Примечание

Параметр -t (--timeout) устанавливает количество секунд, после истечения которых каталоги будут размонтированы. Значение 0 отключает тайм-аут. Значения параметра по умолчанию задаются в файле /etc/autofs.conf.
Базовый каталог будет создан, если он не существует. Он станет точкой монтирования, отображающей в себе динамически подключаемые носители, что означает, что существующее содержимое базового каталога будет недоступно пока autofs работает.
Пример настройки автоматического подключения сетевых файловых ресурсов Windows (Samba) при входе пользователя:
  1. Добавить в /etc/auto.master строку:
    /mnt/samba /etc/auto.smb -t 120
    
    Здесь /mnt/samba — каталог, в котором будут подключаться сетевые файловые системы, /etc/auto.smb — стандартный скрипт, входящий в состав пакета autofs, 120 — тайм-аут подключения при отсутствии обращения.
  2. Включить и запустить сервис autofs:
    # systemctl enable --now autofs
    
  3. Для автоматического подключения ресурсов достаточно обратиться к ресурсу по имени хоста, например:
    $ ls /mnt/samba/<имя_хоста>
    
    или в диспетчере файлов:
    Подключаемый ресурс
Пример настройки автоматического подключения сетевых файловых ресурсов Windows (Samba) при входе пользователя в систему для дистрибутивов с KDE (Альт Рабочая станция К, Альт Образование):
  1. Установить пакет kde5-autofs-shares:
    # apt-get install kde5-autofs-shares
    
  2. Добавить в /etc/auto.master строку:
    /mnt/samba /etc/auto.smb -t 120
    
    Здесь /mnt/samba — каталог, в котором будут подключаться сетевые файловые системы, /etc/auto.smb — скрипт, входящий в состав пакета autofs, 120 — тайм-аут подключения при отсутствии обращения.
  3. Включить и запустить сервис autofs:
    # systemctl enable --now autofs
    
  4. В диспетчере файлов Dolphin по адресу smb://test.alt (СетьОбщие папки Samba) найти нужный ресурс Windows (Samba).
  5. В контекстном меню подключаемого ресурса выбрать пункт Подключение:
    Контекстное меню подключаемого ресурса
    Данный ресурс будет подключаться автоматически при входе в систему:
    Автоматически подключаемый ресурс

    Примечание

    Список ресурсов для подключения хранится в файле ~/.autofs.shares.

Важно

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

Глава 64. Журналирование в Samba

Сервер Samba позволяет гибко настраивать журналирование для выявления возможных проблем в работе службы каталогов, а также мониторинга событий, связанных с аутентификацией, авторизацией и внесением изменений в базу данных службы.
Файлы журналов службы Samba по умолчанию находятся в каталоге /var/log/samba/.

64.1. Настройка бэкендов

На сервере Samba одновременно может вестись журналирование с использованием нескольких бэкендов. При этом для каждого из них может быть задан свой уровень журналирования.
Установить бэкенд для Samba можно, используя параметр log file, который задается в разделе [global] файла /etc/samba/smb.conf. Параметр представляет собой список бэкэндов, разделенных пробелом, в формате:
logging = backend1[:option][@loglevel] backendN[:option][@loglevel]
Где:
  • backend — один из доступных бэкендов:
    • syslog — запись в системный журнал;
    • file — запись в файл, указанный в параметре log file, либо в стандартные файлы журналов Samba в каталоге /var/log/samba/;
    • systemd — запись в журнал systemd;
    • lttng — трассировка с использованием инструментов фреймворка LTTng;
    • gpfs — аудит файлов в кластерной файловой системе GPFS;
    • ringbuf — запись в кольцевой буфер (ring buffer). Для задания размера буфера поддерживается необязательный аргумент size в формате:
      logging = ringbuf:size=NBYTES
      (значение по умолчанию — 1 МБ).
      Данный вариант логирования может быть полезен при анализе ошибок, которые связаны с временными эффектами и не могут быть воспроизведены при записи логов в файлы с указанием высоких уровней отладки;
  • [:option] — дополнительные опции, специфичные для указанного бэкенда;
  • [@loglevel] — уровень журналирования. Если для бэкенда данный параметр не установлен, в бэкенд отправляются все сообщения. Параметр log level определяет общие уровни журнала, а указанные здесь уровни определяют, что отправляется на отдельные бэкенды.

Примечание

Если параметр logging задан, то его значение переопределяет значения параметров syslog и syslog only.
По умолчанию параметр logging не задан.
Пример задания параметра logging:
logging = syslog@1 file

64.2. Настройка файлов журнала

Параметр log file в разделе [global] файла /etc/samba/smb.conf позволяет переопределить файл журнала Samba.
Параметр log file использует стандартные подстановки, что позволят иметь отдельные файлы журналов для различных сущностей и объектов, обслуживаемых Samba.
Примеры подстановок:
  • %m — NetBIOS-имя клиентской машины. Этот параметр недоступен, когда Samba прослушивает порт 445, поскольку клиенты больше не отправляют эту информацию. Для возможности использования этой подстановки следует установить в разделе [global] параметр:
    smbports = 139
  • %M — интернет-имя клиентской машины;
  • %I — IP-адрес клиентской машины;
  • %i — локальный IP-адрес, с которым установил соединение клиент;
  • %T — текущие дата и время;
  • %U — имя пользователя сессии.

Примечание

Получить полный список подстановок можно в разделе VARIABLE SUBSTITUTIONS на справочной странице smb.conf(5) (man smb.conf).
Например, для создания отдельного файла журнала для каждого подключенного узла с именем в формате <NetBIOS_name>.log в каталоге /var/log/samba/ следует задать параметр следующим образом:
log file = /var/log/samba/%m.log
Параметр max log size в разделе [global] файла /etc/samba/smb.conf определяет максимальный размер файла журнала. Значение параметра задается в килобайтах. Samba периодически проверяет размер файла журнала и, если он превышен, переименовывает файл, добавляя расширение .old, и создает новый файл.
Указание значения 0 для параметра max log size означает отсутствие ограничений. Значение по умолчанию 5000.
Пример установки ограничения максимального размера файла журнала в 1 МБ:
max log size = 1000

Примечание

В процессе ротации Samba перезаписывает архивированный ранее файл.

64.3. Уровни журналирования

Установить уровень журналирования для Samba можно, используя параметр log level файла /etc/samba/smb.conf. Для разных классов отладки можно указывать разные уровни журналирования и отдельные файлы журналов.
Уровень журналирования задается в виде целого числа в диапазоне от 0 до 10, где 0 соответствует отключению вывода отладочной информации, а 10 — обеспечивает вывод полной отладочной информации об ошибках и проблемах, которые могут возникать в процессе работы Samba. Оптимальным для получения отладочной информации является уровень 3. Уровни выше 3 предназначены преимущественно для выявления внутренних ошибок Samba. Их использование может привести к существенному снижению производительности сервера.
В таблице Классы отладки приведено описание доступных классов отладки.

Таблица 64.1. Классы отладки

Класс отладки
Описание
all
Включает все сообщения отладки и подходит для общего мониторинга системы
tdb
Отвечает за отладку работы с TDB (Trivial Database). TDB — это простая встраиваемая база данных, используемая Samba для хранения различных данных, таких как сессии, аутентификационные данные, метаданные файлов и другие внутренние структуры
printdrivers
Используется для отладки драйверов печати. Этот класс полезен для отладки и анализа работы с принтерами, включая загрузку, установку и настройку драйверов
lanman
Предназначен для отладки протоколов LAN Manager, что может быть полезно при работе с устаревшими системами или приложениями
smb
Предназначен для регистрации вызовов по протоколу SMB
rpc_parse
Включает информацию об обработке RPC-сообщений. Может использоваться при анализе репликации
rpc_srv
Включает информацию о регистрации конечных точек RPC
rpc_cli
Предназначен для регистрации информации, связанной с работой RPC-клиента (Remote Procedure Call). Используется для отладки взаимодействия между клиентом и сервером в контексте RPC-вызовов, которые используются для выполнения различных операций в Samba, таких как управление доменными службами, доступ к общим ресурсам и другие действия, связанные с протоколами SMB/CIFS
passdb
Предназначен для регистрации доступа к хранилищу данных паролей
sam
Предназначен для регистрации событий, связанных с управлением учетными записями пользователей и групп в AD (SAM — Security Accounts Manager)
auth
Предназначен для регистрации событий аутентификации пользователей. Включает процессы проверки учетных данных (логин/пароль), использование Kerberos, NTLM и других механизмов аутентификации
winbind
Предназначен для регистрации сообщений при присоединении клиентов к Samba для проведения различных операций. Позволяет анализировать работу сервиса Winbind
vfs
Предназначен для журналирования проблем с правами доступа и некорректным поведением бэкенда, абстрагируемого VFS
idmap
Предназначен для регистрации событий установки соответствия между SID и группами в Linux (Identity Mapping)
quota
Предназначен для регистрации информации, связанной с управлением квотами (quotas) на файловых системах. Квоты используются для ограничения объема дискового пространства, которое может использовать пользователь или группа
acls
Предназначен для регистрации событий проверки и изменения прав доступа на основе списков управления доступом (Access Control Lists)
locking
Предназначен для регистрации событий блокировок файлов базы данных каталога и конкретных записей при одновременном доступе к ним разных клиентов
msdfs
Предназначен для регистрации событий, связанных с поддержкой DFS (Distributed File System) в Samba. DFS позволяет объединять несколько общих ресурсов в одну виртуальную иерархию
dmapi
Предназначен для регистрации событий, связанных с использованием DMAPI (Data Management API) в Samba
registry
Предназначен для регистрации взаимодействия с данными реестра Windows, которые используются в службе каталогов
scavenger
Предназначен для регистрации событий «сборки мусора» (garbage collection) в Samba. Этот процесс используется для очистки устаревших или неиспользуемых данных, таких как открытые файлы, сессии, аутентификации и другие ресурсы, которые больше не нужны
dns
Предназначен для регистрации запросов на поиск и изменение записей DNS
ldb
Предназначен для регистрации подключений к базе данных LDAP
tevent
Предназначен для регистрации сообщений библиотеки управления памятью talloc
auth_audit, auth_json_audit
Предназначены для регистрации событий аутентификации и авторизации учетных записей (успешных и неуспешных попытках входа в систему, изменениях паролей и изменениях статусов учетных записей). Могут использоваться, например, для отслеживания попыток несанкционированного входа
kerberos
Предназначен для регистрации событий взаимодействия по протоколу Kerberos
drs_repl
Предназначен для регистрации событий входящей и исходящей репликации на контроллере домена
smb2
Предназначен для регистрации вызовов по протоколу SMB (SMB2 и SMB3)
smb2_credits
Предназначен для регистрации запросов передачи данных по протоколу SMB. Записи содержат информацию о количестве переданных запросов и количестве запросов, которые осталось выполнить для завершения передачи файлов
dsdb_audit, dsdb_json_audit
Предназначены для регистрации изменений в базе данных контроллера домена Samba (sam.ldb) (изменения пользователей, групп, разрешений, структуры каталога и т. д.)
dsdb_password_audit, dsdb_password_json_audit
Предназначены для регистрации событий изменения и сброса паролей
dsdb_transaction_audit, dsdb_transaction_json_audit
Предназначены для регистрации транзакций (фиксация, откат) в базе данных каталога. Могут использоваться для контроля целостности данных
dsdb_group_audit, dsdb_group_json_audit
Предназначены для регистрации изменений в составе групп
Некоторые модули при первом использовании регистрируют динамические классы отладки, например:
  • catia
  • dfs_samba4
  • extd_audit
  • fileid
  • fruit
  • full_audit
  • media_harmony
  • preopen
  • recycle
  • shadow_copy
  • unityed_media
  • virusfilter
Чтобы настроить ведение журналов для определенных классов так, чтобы они писались в другой файл, а не в общий файл журнала, можно добавить @PATH к классу.
Получить дополнительную информацию и список классов отладки можно на справочной странице smb.conf(5) (man smb.conf).

64.3.1. Установка уровня журналирования в файле smb.conf

Примеры использования параметра log level для настройки уровня журналирования:
  • установить уровень журнала 3 для всех классов отладки:
    log level = 3
  • установить общий уровень журнала 3, а для классов passdb и auth — 5:
    log level = 3 passdb:5 auth:5
  • установить общий уровень журнала 3, а для класса winbind — 1 и писать логи в файл /var/log/winbind.log:
    log level = 3 winbind:1@/var/log/winbind.log

64.3.2. Установка уровня журналирования при выполнении команд

Команды Samba используют уровень журналирования, установленный в параметре log level в файле /etc/samba/smb.conf. Для всех команд Samba это значение можно переопределить, используя следующую опцию:
-d DEBUGLEVEL, --debuglevel=DEBUGLEVEL
Например:
$ net usershare add Share2 /tmp/share2 -d 5
# samba-tool group add testgroup12 -d dsdb_audit:3

64.4. Настройка ведения журнала аудита

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

Примечание

Samba генерирует некоторые журналы на узле в конфигурации файлового сервера и члена домена, но полная поддержка доступна только на контроллере домена.
Журнал аудита Samba поддерживает стандартный формат и формат JSON. Можно включить каждый формат по отдельности или оба вместе, используя разные классы отладки журнала (например, auth_audit для ведения записи в стандартном формате и auth_json_audit для ведения записи в формате JSON).
В зависимости от уровня журналирования Samba регистрирует разные события. Чтобы ограничить количество записей в журнале, можно увеличить уровень журналирования только для классов отладки, связанных с аудитом.

64.4.1. Регистрация событий аутентификации и авторизации

Samba поддерживает протоколирование успешных и неуспешных событий аутентификации, а также успешных событий авторизации.

Примечание

Аутентификация
Аутентификация происходит, когда Samba проверяет комбинацию имени пользователя и пароля.
Авторизация
Авторизация происходит при запуске сеанса.
Следующие примеры показывают, в каких случаях Samba регистрирует события аутентификации и авторизации:
  1. При входе пользователя в домен центр распространения ключей Kerberos (KDC), работающий на DC, фиксирует событие аутентификации. Если в домене работают несколько контроллеров, запрос аутентификации регистрируется только на контроллере, который обслуживает данный запрос.
  2. При подключении к общему ресурсу на участнике домена:
    • участник домена регистрирует событие авторизации;
    • при использовании аутентификации Kerberos центр распространения ключей (KDC) на контроллере домена Samba фиксирует событие аутентификации. В случае использования аутентификации Kerberos за нее отвечает KDC. Поэтому Samba на участнике домена не может регистрировать такое событие аутентификации;
      при использовании аутентификации через NT LAN Manager (NTLM) участник домена регистрирует событие аутентификации.

Примечание

При использовании NTLM всегда регистрируется пара событий — событие аутентификации и событие авторизации. Однако при использовании Kerberos регистрируется только одно событие на контроллере домена в момент выдачи билета TGT (Ticket Granting Ticket). После этого каждый раз при получении доступа к какой-либо службе регистрируется событие авторизации.
Для регистрации событий аутентификации и авторизации используются следующие классы отладки:
  • auth_audit — регистрация в стандартном формате;
  • auth_json_audit — регистрация в формате JSON.
Для классов auth_audit и auth_json_audit доступны следующие уровни журналирования (каждый последующий уровень включает все предшествующие ему):
  • 2 — неуспешные события аутентификации;
  • 3 — успешные события аутентификации;
  • 4 — успешные события авторизации;
  • 5 — успешные анонимные события аутентификации и авторизации.
Пример включения ведения журнала аудита аутентификации (установить уровень журнала по умолчанию — 1, включить регистрацию неудачных и успешных запросов аутентификации — 3):
  1. Установить в секции [global] файла /etc/samba/smb.conf:
    log level = 1 auth_audit:3 auth_json_audit:3
  2. Перезапустить службу Samba.
Пример записей о неуспешной и успешной попытках аутентификации пользователя с использованием стандартного формата журнала:
[2025/06/19 14:45:32.324530, 2] ../../auth/auth_log.c:858(log_authentication_event_human_readable)
Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[ivanov\\@TEST@TEST.ALT] at [Thu, 19 Jun 2025 14:45:32.324504 MSK] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.135:51947] mapped to [TEST]\[ivanov]. local host [NULL]

[2025/06/19 14:45:52.478619,  3] ../../auth/auth_log.c:858(log_authentication_event_human_readable)
Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[ivanov\\@TEST@TEST.ALT] at [Thu, 19 Jun 2025 14:45:52.478593 MSK] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.135:55134] became [TEST]\[ivanov] [S-1-5-21-578923263-1107570656-1287136478-1103]. local host [NULL]
Пример записей о неуспешной и успешной попытках аутентификации пользователя с использованием формата JSON:
{"timestamp": "2025-06-19T14:45:52.435663+0300", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 3}, "eventId": 4625, "logonId": "5bd240f7cc4de1b5", "logonType": 3, "status": "NT_STATUS_WRONG_PASSWORD", "localAddress": null, "remoteAddress": "ipv4:192.168.0.135:51947", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "ivanov\\@TEST@TEST.ALT", "workstation": null, "becameAccount": "ivanov", "becameDomain": "TEST", "becameSid": "S-1-5-21-578923263-1107570656-1287136478-1103", "mappedAccount": "ivanov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null, "duration": 3129}}

{"timestamp": "2025-06-19T14:45:52.478681+0300", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 3}, "eventId": 4624, "logonId": "11424f6685e647f9", "logonType": 3, "status": "NT_STATUS_OK", "localAddress": null, "remoteAddress": "ipv4:192.168.0.135:55134", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "ivanov\\@TEST@TEST.ALT", "workstation": null, "becameAccount": "ivanov", "becameDomain": "TEST", "becameSid": "S-1-5-21-578923263-1107570656-1287136478-1103", "mappedAccount": "ivanov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null, "duration": 5421}}

64.4.2. Регистрация изменений в базе данных

Для регистрации изменений в базе данных контроллера домена Samba (sam.ldb) используются следующие классы отладки:
  • dsdb_audit — регистрация в стандартном формате;
  • dsdb_json_audit — регистрация в формате JSON.
Для регистрации изменений в составе групп используются следующие классы отладки:
  • dsdb_group_audit — регистрация в стандартном формате;
  • dsdb_group_json_audit — регистрация в формате JSON.
Для классов dsdb_audit, dsdb_json_audit, dsdb_group_audit и dsdb_group_json_audit доступны следующие уровни журналирования:
  • 5 — внесение изменений в базу данных;
  • 5 — регистрация изменений, полученных через механизм репликации с другого контроллера домена.
События изменения и сброса паролей регистрируются в рамках следующих классов отладки:
  • dsdb_password_audit — регистрация в стандартном формате;
  • dsdb_password_json_audit — регистрация в формате JSON.

Примечание

Каждое изменение пароля также регистрируется как событие аутентификации через классы отладки auth_audit и auth_audit_json.
Для классов dsdb_password_audit и dsdb_password_json_audit доступны следующие уровни журналирования:
  • 5 — успешные события изменения и сброса пароля.
Для регистрации неуспешных транзакций, завершающихся откатом, и событий подготовки фиксации данных (prepare commit) используются следующие классы отладки:
  • dsdb_transaction_audit — регистрация в стандартном формате;
  • dsdb_transaction_json_audit — регистрация в формате JSON.
Для классов dsdb_transaction_audit и dsdb_transaction_json_audit доступны следующие уровни журналирования:
  • 5 — неуспешная транзакция (откат);
  • 10 — успешная транзакция (фиксация).
В Samba возможны откаты транзакций. Они редко отражают что-либо помимо неуспешного завершения отдельной операции (например, в результате попытки создания записи, которая конфликтует с существующими). Записи о транзакции формируются и фиксируются в системных журналах до ее завершения. Такое журналирование информации о транзакциях позволяет выявлять операции с паролями и операции по внесению изменении в sam.ldb, которые закончились откатом и фактически не были выполнены.
Пример включения ведения журнала аудита базы данных DC (установить уровень журнала по умолчанию — 1, включить ведение журнала изменений базы данных в формате JSON):
  1. Установить в секции [global] файла /etc/samba/smb.conf:
    log level = 1 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5 dsdb_transaction_json_audit:5
    
  2. Перезапустить службу Samba.

64.5. Интерпретация журналов аудита JSON

Если включено ведение журнала аудита в формате JSON, сведения о различных событиях регистрируются в формате JSON. Каждое событие описывается определенным набором атрибутов, соответствующим его типу. Внешний слой атрибутов состоит из трёх элементов: метки времени, типа события и объекта данных (в примере добавлены переносы на новую строку и отступы; реальные записи всегда форматируются в виде одной строки):
{
"timestamp": 2025-06-19T14:45:52.478681+0300,
"type": одно из значений "Authentication", "Authorization", "dsdbChange",
        "dsdbTransaction", "passwordChange", "replicatedUpdate",
        "groupChange",
type: { data }
}

Примечание

Некоторые атрибуты могут присутствовать в записях, даже если они неприменимы. Например, если NETLOGON не используется (согласно serviceDescription), для параметра netlogonComputer будет установлено значение «null», для параметра netlogonNegotiateFlags будет установлено значение «0x00000000», другие параметры, оносящиеся к NETLOGON, будут иметь аналогичные пустые значения.

64.5.1. Общие атрибуты

В таблице Общие атрибуты приведен набор атрибутов, которые присутствуют при регистрации любого события.

Таблица 64.2. Общие атрибуты

Атрибут
Значение
version
Номер версии формата JSON. Состоит из двух частей:
  • «major» — увеличивается, если поля меняют значение;
  • «minor» — увеличивается, если добавляется новое поле.
Изменения в перечне возможных значений обычно не приводят к изменению версии. Это распространяется на все данные, предоставляемые клиентами. Также это относится, например, к атрибуту passwordType, набор поддерживаемых форматов которого может меняться с течением времени без изменения версии в JSON

64.5.2. Атрибуты событий аутентификации (Authentication)

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

Таблица 64.3. Атрибуты событий аутентификации

Атрибут
Значение
authDescription
Тип аутентификации:
  • «simple bind/TLS», «simple bind» — простая привязка LDAP с каналом TLS или без него;
  • «guest» — анонимный запрос SMB1;
  • «bare-NTLM» — запрос SMB, использующий протокол NT1;
  • «plaintext» — запрос SMB, в виде обычного текста;
  • «interactive» — аналог физического входа на конкретной рабочей станции;
  • «network» — проверка подлинности запроса/ответа по сети;
  • «Unknown Auth Description», «Unknown Pre-authentication» — события KDC;
  • «ServerAuthenticate» — запрос/ответ компьютера при входе в систему с использованием NETLOGON;
  • «LDAP Modify» — смена пароля (не событие аутентификации, но регистрируется здесь, чтобы администратор не пропустил его)
becameAccount
Имя учетной записи, под которой выполнен вход (может не совпадать со значением, предоставленным клиентом)
becameDomain
Имя домена, в который произведён вход
becameSid
Идентификатор безопасности (SID) аутентифицированной учетной записи
clientAccount
Имя учётной записи, предоставленное клиентом
clientDomain
Имя домена, предоставленное клиентом
duration
Время (в микросекундах), в течение которого выполнялась аутентификация
eventId
Идентификатор события Windows, указывающий в общих чертах, что произошло:
  • 4624 соответствует успешной попытке аутентификации;
  • 4625 соответствует неуспешной попытке аутентификации
localAddress
Адрес сервера и используемый порт
logonId
Случайный 64-битный идентификатор, помогающий отслеживать события входа в систему на разных этапах
logonType
Тип входа в Windows. Для Samba один из:
  • 2 — интерактивный, то есть вход выполняется на текущем компьютере;
  • 3 — сетевой, то есть вход выполняется по сети;
  • 8 — сетевой с использованием нехешированных паролей, то есть вход выполняется по сети, при этом пароль передается в пакет подтверждения подлинности в нехешированной форме (NetworkCleartext)
mappedAccount
Имя учетной записи клиента, преобразованное в имя учетной записи Альт Домен
mappedDomain
Имя домена клиента, преобразованное в доменное имя Альт Домен
netlogonComputer
Имя компьютера, заявленное при аутентификации через NETLOGON RPC
netlogonNegotiateFlags
Флаги NETLOGON, согласуемые в процессе взаимодействия клиента и сервера
netlogonSecureChannelType
Тип безопасного канала, используемого для входа по протоколу NETLOGON
netlogonTrustAccount
Учетная запись, используемая для аутентификации по протоколу NETLOGON
netlogonTrustAccountSid
Идентификатор безопасности (SID) учётной записи, используемый для аутентификации по протоколу NETLOGON
passwordType
Алгоритм/протокол пароля (например, «HMAC-SHA256», «NTLMv2», «arcfour-hmac-md5»)
remoteAddress
Заявленный адрес (и порт) удаленного клиента
serviceDescription
Тип службы (например, «LDAP», «SMB2», «NETLOGON», «Kerberos KDC»)
status
Сообщение NT STATUS. Для успешной аутентификации это будет «NT_STATUS_OK». Неудачная аутентификация может иметь значение «NT_STATUS_OK», если аутентификация не удалась после регистрации этого сообщения, но обычно имеет код ошибки.
Некоторые типы сообщений при неудачной аутентификации:
  • NT_STATUS_ACCESS_DENIED — доступ запрещен по неустановленным причинам (наиболее вероятная причина — неправильные учетные данные);
  • NT_STATUS_WRONG_PASSWORD — неверный пароль;
  • NT_STATUS_NO_SUCH_USER — пользователь не существует;
  • NT_STATUS_NO_SUCH_DOMAIN — домен не существует;
  • NT_STATUS_ACCOUNT_RESTRICTION — учетная запись защищена или иным образом ограничена;
  • NT_STATUS_DOWNGRADE_DETECTED — клиент, возможно, предпринимает какие-либо действия для использования некорректных способов аутентификации;
  • NT_STATUS_INVALID_SERVER_STATE — сервер, возможно, используется не по назначению;
  • NT_STATUS_INVALID_INFO_CLASS — сервер, возможно, используется не по назначению;
  • NT_STATUS_INVALID_PARAMETER — клиент получил некорректные данные;
  • NT_STATUS_NETWORK_CREDENTIAL_CONFLICT — в процессе входа произошли изменения (возможно, имеет место гонка в рамках изменения учетных данных, либо при согласовании данных шифрования возникла ошибка);
  • NT_STATUS_NOT_IMPLEMENTED — тип аутентификации не реализован в Samba;
  • NT_STATUS_NOT_SUPPORTED — тип аутентификации, либо способ его использования со стороны клиента не поддерживается Samba;
  • NT_STATUS_INVALID_SYSTEM_SERVICE — выбранная служба аутентификации недоступна;
  • NT_STATUS_INTERNAL_ERROR — сервер не может завершить выполнение аутентификации по причине внутренней ошибки;
  • NT_STATUS_NO_MEMORY — сервер не может завершить аутентификацию по причине нехватки памяти
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 3}
workstation
Заявленное имя клиентской рабочей станции
Пример записи об успешной попытке аутентификации:
{"timestamp": "2025-06-19T14:45:52.478681+0300", "type": "Authentication",
"Authentication": {"version": {"major": 1, "minor": 3}, "eventId": 4624, "logonId": "11424f6685e647f9",
"logonType": 3, "status": "NT_STATUS_OK", "localAddress": null, "remoteAddress": "ipv4:192.168.0.135:55134",
"serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication",
"clientDomain": null, "clientAccount": "ivanov\\@TEST@TEST.ALT", "workstation": null,
"becameAccount": "ivanov", "becameDomain": "TEST", "becameSid": "S-1-5-21-578923263-1107570656-1287136478-1103",
"mappedAccount": "ivanov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null,
"netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null,
"passwordType": "aes256-cts-hmac-sha1-96", "clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null, "duration": 5421}}

64.5.3. Атрибуты событий авторизации (Authorization)

В таблице Успешные события авторизации приведен набор атрибутов, который используется для регистрации успешных событий авторизации.

Таблица 64.4. Успешные события авторизации

Атрибут
Значение
account
Имя авторизуемой учетной записи
accountFlags
Битовое поле атрибутов учетной записи
authType
Строка, описывающая тип авторизации (например, «krb5», «NTLMSSP», «simple bind»)
domain
Имя домена
localAddress
Адрес сервера и используемый порт
logonServer
Сервер, на котором выполнена аутентификация
remoteAddress
Видимый адрес клиента
serviceDescription
Тип службы (например, «LDAP», «SMB2», «DCE/RPC»)
sessionId
Уникальный идентификатор сессии (GUID)
sid
Идентификатор безопасности (SID) авторизуемой учетной записи
transportProtection
Тип защиты, используемой в канале (например, «SMB», «TLS», «SEAL», «NONE»)
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 2}
Пример записи об успешной попытке авторизации:
{"timestamp": "2025-06-19T14:45:52.478681+0300", "type": "Authorization",
"Authorization": {"version": {"major": 1, "minor": 2}, "localAddress": "ipv4:127.0.0.1:389",
"remoteAddress": "ipv4:127.0.0.1:43350", "serviceDescription": "LDAP",
"authType": "simple bind", "domain": "NT AUTHORITY", "account": "ANONYMOUS LOGON",
"sid": "S-1-5-7", "sessionId": "5accdd86-4c6e-4bd2-8ab1-7e95f641ecf2",
"logonServer": "DC1", "transportProtection": "NONE", "accountFlags": "0x00000010",
"clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null}}

64.5.4. Атрибуты событий, связанных с изменениями в базе данных (dsdbChange)

События dsdbChange регистрируются, когда клиент вызывает существенные изменения в базе данных домена (известной как DSDB внутри Samba). Некоторые конкретные изменения, а именно изменения пароля, группы и изменения репликации, регистрируются отдельно как события «passwordChange», «groupChange» и «replicationUpdate».
В таблице События dsdbChange приведен набор атрибутов, который используется для регистрации событий, связанных с внесением значимых изменений в базу данных службы каталогов.

Таблица 64.5. События dsdbChange

Атрибут
Значение
attributes
Список изменяемых атрибутов
dn
Уникальное составное имя (DN) изменяемого объекта
operation
Операция LDAP, соответствующая выполняемому действию по изменению данных:
  • «Modify»;
  • «Add»;
  • «Delete»
performedAsSystem
Признак системного или пользовательского действия:
  • «true» — действие выполняется Samba с использованием системной учетной записи;
  • «false» — действие выполняется от имени пользователя
remoteAddress
Удаленный адрес пользователя, инициировавшего операцию
sessionId
Уникальный идентификатор (GUID) сессии аутентификации
status
Строка, указывающая на успешное завершение действия или невозможность его выполнения по той или иной причине; выводимая информация соответствует кодам ответа LDAP, которые фиксируются в атрибуте statusCode.
Примеры значений:
  • «Success»;
  • «Operations error»;
  • «Protocol error»;
  • «Time limit exceeded»;
  • «Size limit exceeded»;
  • «Unsupported critical extension»;
  • «No such attribute»;
  • «Undefined attribute type»;
  • «Constraint violation»;
  • «Attribute or value exists»;
  • «Invalid attribute syntax»;
  • «No such object»;
  • «Alias problem»;
  • «Invalid DN syntax»;
  • «Insufficient access rights»;
  • «Unwilling to perform»;
  • «Naming violation»;
  • «Object class violation»;
  • «Not allowed on non-leaf»;
  • «Not allowed on RDN»;
  • «Entry already exists»
Числовой код, соответствующий статусу в атрибуте status
В общем случае в качестве значения атрибута приводится код ответа LDAP в соответствии с RFC 4511
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 2}
Значение поля attributes может рассматриваться в качестве аналога описания изменения в формате LDIF.
Например, следующий JSON:
"dsdbChange": {
"operation": "Modify",
"dn": "@SAMBA_DSDB",
"attributes": {
"backupDate": {"actions": [
{"action": "add",
    "values": [
    {"value": "2025-06-19T14:45:32.328363+0300"}
    ]
  }
 ]
}}}
описывает изменение, выполненное этим LDIF:
dn: @SAMBA_DSDB
changetype: modify
add: backupDate
backupDate:  2025-06-19T14:45:32.328363+0300
Для секретных атрибутов вместо каких-либо значений указывается тег redacted: true.
Если значение очень длинное (> 1024 байт), оно будет усечено с добавлением «…» и флагом truncated: true, например:
"values": [
    {truncated: true,
                "value": "It was the best of times, it was the worst of times, it was the age…"
    }
]
Пример записи о внесении изменений в базу данных:
{"timestamp": "2025-06-19T14:45:52.437380+0300", "type": "dsdbChange",
"dsdbChange": {"version": {"major": 1, "minor": 0}, "statusCode": 0,
"status": "Success", "operation": "Modify",
"remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:38500", "performedAsSystem": false,
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"dn": "CN=Марков Кирилл,CN=Users,DC=test,DC=alt", "transactionId": "ce759566-8bf9-46ce-95a1-0d632232a220",
"sessionId": "48c760f6-6cdc-4fba-b16d-1689f2cfad33",
"attributes": {"unicodePwd": {"actions": [{"action": "replace", "redacted": true}]}}}}

64.5.5. Атрибуты событий, связанных с транзакциями (dsdbTransaction)

Транзакция связывает вместе несколько операций базы данных; либо все они происходят атомарно, либо ни одна из них не происходит. Если все операции в транзакции завершаются успешно, она фиксируется, а изменения остаются постоянными, но если одна из операций завершается неудачей, все предыдущие операции откатываются, даже если они завершились успешно и были зарегистрированы как события dsdbChange.
Каждая транзакция имеет идентифицирующий GUID; другие операции DSDB, являющиеся частью транзакции, будут включать этот GUID в атрибут transactionId.
В таблице Атрибуты событий, связанных с транзакциями приведен набор атрибутов, связанных с транзакциями (dsdbTransaction).

Таблица 64.6. Атрибуты событий, связанных с транзакциями

Атрибут
Значение
action
Текущий этап транзакции:
  • «begin»;
  • «commit»;
  • «rollback»
duration
Продолжительность транзакции в микросекундах (до момента записи этого поля)
transactionId
Уникальный идентификатор (GUID) транзакции
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 0}
Пример регистрации событий, связанных с транзакциями:
{"timestamp": "2025-06-19T14:45:52.516877+0300", "type": "dsdbTransaction",
"dsdbTransaction": {"version": {"major": 1, "minor": 0}, "action": "commit",
"transactionId": "a89149be-5c19-42c2-bf08-94ddc5b0eb78", "duration": 8819}}

{"timestamp": "2025-06-19T14:45:52.521639+0300", "type": "dsdbTransaction",
"dsdbTransaction": {"version": {"major": 1, "minor": 0}, "action": "commit",
"transactionId": "92a8db3a-94d4-4ac5-b929-b1e4344b12e3", "duration": 5697}}

64.5.6. Атрибуты событий, связанных с изменением пароля (passwordChange)

PasswordChange — это особый вид dsdbChange.
В таблице Атрибуты событий, связанных с изменением пароля приведен набор атрибутов, который используется для регистрации событий, связанных с изменением пароля (passwordChange).

Таблица 64.7. Атрибуты событий, связанных с изменением пароля

Атрибут
Значение
action
Тип операции:
  • «Change» — смена пароля;
  • «Reset» — сброс пароля
dn
Уникальное составное имя (DN) пользователя, пароль которого изменяется или сбрасывается
eventId
Идентификатор события Windows:
  • 4723 соответствует событию смены пароля (Change);
  • 4724 соответствует событию сброса пароля (Reset)
remoteAddress
Удаленный адрес пользователя, выполняющего операцию
sessionId
Идентификатор сессии DSDB
status
Текст ошибки
statusCode
Код ошибки
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 1}
Пример регистрации события сброса пароля пользователя:
{"timestamp": "2025-06-19T14:45:52.523989+0300", "type": "passwordChange",
"passwordChange": {"version": {"major": 1, "minor": 1}, "eventId": 4724,
"statusCode": 0, "status": "Success", "remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:35534",
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"dn": "CN=Орлов Игорь,CN=Users,DC=test,DC=alt", "action": "Reset",
"transactionId": "d7456cd1-6f32-4575-b530-dc22a34bdc6a", "sessionId": "ce6866f6-43ea-4665-a896-0d10bd3194e1"}}

64.5.7. Атрибуты событий, связанных с изменением группы (groupChange)

Событие groupChange указывает на изменение DSDB, которое добавляет или удаляет пользователя из группы.
В таблице Атрибуты событий, связанных с изменением группы приведен набор атрибутов, который используется для регистрации событий, связанных с изменением группы (groupChange).

Таблица 64.8. Атрибуты событий, связанных с изменением группы

Атрибут
Значение
action
Тип операции:
  • «Removed» — удаление пользователя из группы;
  • «Added» — добавление пользователя в группу;
  • «PrimaryGroup» — смена основной группы
eventId
Идентификатор события Windows:
  • 4728 пользователь добавлен в глобальную группу безопасности;
  • 4729 пользователь удален из глобальной группы безопасности;
  • 4732 пользователь добавлен в локальную группу безопасности;
  • 4733 пользователь удален из локальной группы безопасности;
  • 4746 пользователь добавлен в локальную группу;
  • 4747 пользователь удален из локальной группы;
  • 4751 пользователь добавлен в глобальную группу;
  • 4752 пользователь удален из глобальной группы;
  • 4756 пользователь добавлен в универсальную группу безопасности;
  • 4757 пользователь удален из универсальной группы безопасности;
  • 4761 пользователь добавлен в универсальную группу;
  • 4762 пользователь удален из универсальной группы
group
Уникальное составное имя (DN) группы
remoteAddress
Удаленный адрес пользователя, выполняющего операцию
sessionId
Идентификатор сессии DSDB
status
Текст ошибки
Числовой код, соответствующий статусу в атрибуте status
В общем случае в качестве значения атрибута приводится код ответа LDAP в соответствии с RFC 4511
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
user
Уникальное составное имя (DN) пользователя, членство в группе которого изменяется в рамках операции
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты.
Текущая версия:
{"major": 1, "minor": 1}
Пример регистрации события добавления пользователя в группу:
{"timestamp": "2025-06-19T14:45:52.522371+0300", "type": "groupChange",
"groupChange": {"version": {"major": 1, "minor": 1}, "eventId": 4728,
"statusCode": 0, "status": "Success", "action": "Added",
"remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:59778",
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"group": "CN=testgroup,CN=Users,DC=test,DC=alt", "transactionId": "28372270-093c-4bca-af45-ae3e93b71eda",
"sessionId": "9518687d-8ad1-4c2c-810c-8cc18c2943f7", "user": "CN=Марков Кирилл,CN=Users,DC=test,DC=alt"}}

Глава 65. Усиление безопасности DC

65.1. Возможность анонимного получения списка пользователей, групп

Samba наследует поведение домена NT4, которое больше не требуется в режиме Альт Домен. Например, следующая команда возвращает всех пользователей домена:
# rpcclient -U "" -c enumdomusers dc1.test.alt
Для отключения такого поведения следует внести изменения в файл /etc/samba/smb.conf:
[global]
restrict anonymous = 2
Может также потребоваться работа с полем dSHeuristics:
# samba-tool forest directory_service dsheuristics 0000000

65.2. Отключение Netbios

Если конфигурация DNS выполнена правильно, старые протоколы NetBIOS, которые больше не нужны, могут быть отключены. Для этого следует внести изменения в секцию global файла /etc/samba/smb.conf:
[global]
disable netbios = yes
smb ports = 445

65.3. Отключение роли сервера печати

Контроллер домена не следует настраивать с ролью сервера печати. Сервер Samba, настроенный как файловый сервер, лучше подходит для этой функции.
Для отключения роли сервера печати следует внести изменения в секцию global файла /etc/samba/smb.conf:
[global]
printcap name = /dev/null
load printers = no
disable spoolss = yes
printing = bsd

65.4. Отключение NTLMv1

Протокол аутентификации NTLMv1 появился в начале 1990-х годов и был быстро заменен на NTLMv2 из-за недостатков безопасности. Он больше не полезен в современных сетях, за исключением случаев использования MS-CHAP-v2, который является протоколом по умолчанию для аутентификации 802.1x на рабочих станциях Windows (например, аутентификация Radius для подключений Wi-Fi). В случае MS-CHAP-v2 использование NTLMv1 можно до некоторой степени допустить, поскольку он инкапсулирован в другой, более надежный протокол.
В Samba есть возможность глобально отключить NTLMv1, если он не используется для аутентификации MS-CHAP-v2. Рекомендуется добавить следующий параметр в секцию global файла /etc/samba/smb.conf:
[global]
ntlm auth = mschapv2-and-ntlmv2-only

65.5. Генерация дополнительных хешей паролей

Чтобы разрешить передачу хешей в другую базу аутентификации, можно указать Samba генерировать дополнительные хеши, когда пользователь меняет свой пароль. Для этого следует добавить в секцию global файла /etc/samba/smb.conf строку:
[global]
password hash userPassword schemes = CryptSHA256 CryptSHA512

65.6. Защита DNS-записей wpad и isatap

Серверы Windows AD имеют глобальный черный список запросов DNS с двумя записями:
  • wpad
  • isatap
В разделе реестра GlobalQueryBlockList перечислены эти две записи DNS для предотвращения создания таких записей и перенаправления сетевого трафика неавторизованным объектом, действующим в локальной сети. Протокол автоматического обнаружения веб-прокси (WPAD) по умолчанию настроен в браузерах WPAD, в частности, в браузерах Internet Explorer.
Даже если конфигурации wpad и isatap не используются, всё равно важно создать эти две записи, чтобы предотвратить их использование обходным путем, поскольку в Альт Домен нет способа заблокировать создание записей, так как это можно сделать в Microsoft AD.
Создание записей wpad и isatap в Альт Домен:
# samba-tool dns add `hostname -s` `hostname -d` wpad A 127.0.0.1 -P
# samba-tool dns add `hostname -s` `hostname -d` isatap A 127.0.0.1 -P

65.7. Ограничение диапазона динамических портов

По умолчанию Альт Домен использует очень широкий динамический диапазон для вызовов MS-RPC. Рекомендуется ограничить этот диапазон. Для этого следует добавить в секцию global файла /etc/samba/smb.conf строку:
[global]
rpc server dynamic port range = 50000-55000

Примечание

Если используется фаервол, то его нужно будет перенастроить.

65.8. Аудит запросов к каталогам SYSVOL и NetLogon

Для возможности аудита запросов к каталогам SYSVOL и NetLogon следует добавить в файл /etc/samba/smb.conf строки:
[global]
...
full_audit:failure = none
full_audit:success = pwrite write renameat
full_audit:prefix = IP=%I|USER=%u|MACHINE=%m|VOLUME=%S
full_audit:facility = local7
full_audit:priority = NOTICE
...
[sysvol]
...
vfs objects = dfs_samba4, acl_xattr, full_audit
...
[netlogon]
...
vfs objects = dfs_samba4, acl_xattr, full_audit

65.9. Отправка логов аудита в rsyslog

65.9.1. Настройка rsyslog

На стороне приёмника сообщений (сервера):
  1. Установить пакет rsyslog-classic:
    # apt-get install rsyslog-classic
    
  2. В файле /etc/rsyslog.d/00_common.conf раскомментировать строки:
    # Для UDP
    module(load="imudp")
    input(type="imudp" port="514")
    # Для TCP
    module(load="imtcp")
    input(type="imtcp" port="514")
    
  3. Создать шаблон для логов /etc/rsyslog.d/myrules.conf:
    $template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
    *.* action(type="omfile" dynaFile="remote-incoming-logs" dirCreateMode="0755" fileCreateMode="0644")
    

    Примечание

    Согласно данному шаблону все сообщения от любых источников (facility) с любым уровнем важности (priority) будут сохраняться на сервере в файлы /var/log/<имя_узла-отправителя_лога>/<приложение-отправитель_лога>.log.
  4. Перезапустить службу rsyslog:
    # systemctl restart rsyslog
    
На стороне отправителя сообщений (клиента):
  1. Установить пакет rsyslog-classic:
    # apt-get install rsyslog-classic
    
  2. Создать файл /etc/rsyslog.d/all.conf, в котором прописать протокол (@@ — TCP, @ — UDP) и адрес доставки сообщений:
    *.* @@192.168.0.111:514 # Отправка логов на сервер (TCP), где 192.168.0.111 — IP-адрес сервера
    
  3. Перезапустить службу rsyslog:
    # systemctl restart rsyslog
    
При корректной настройке на сервере в каталоге /var/log/ должен появиться каталог с именем узла, который отправляет лог-файлы:
# ls -l /var/log/node02/
итого 12
-rw------- 1 root adm  810 июн  19 15:30 crond.log
-rw------- 1 root adm 1194 июн  19 15:30 login.log
-rw------- 1 root adm 2509 апр  19 15:30 rsyslogd.log

65.9.2. rsyslog на том же узле

В секцию global файла /etc/samba/smb.conf добавить строку:
[global]
log level = 1 auth_json_audit:3@/var/log/samba/samba_audit.log
Создать файл /etc/rsyslog.d/send_samba.conf:
module(load="imfile" PollingInterval="10") #needs to be done just once
input(type="imfile"
     File="/var/log/samba/samba_audit.log"
     Tag="samba_auth"
     Severity="info"
     Facility="auth")
if ($syslogtag == "samba_auth") then {
   action(type="omfwd" target="dc1.test.alt" port="514" protocol="tcp"
          action.resumeRetryCount="100"
          queue.type="linkedList" queue.size="10000")
}

65.9.3. rsyslog на вышестоящем узле

В секцию global файла /etc/samba/smb.conf добавить строку:
[global]
log level = 1 auth_json_audit:3@/var/log/samba/samba_audit.log
Создать файл /etc/rsyslog.d/recv_samba.conf:
$ModLoad imtcp
$InputTCPServerRun 514
if ($syslogtag == "samba_auth")  then /var/log/samba/audit_auth.log

Глава 66. Планирование и настройка диапазонов идентификаторов UID и GID (Winbind/IDMapping)

Домены Windows различают пользователей и группы по уникальным идентификаторам безопасности (SID). Однако в Linux для каждого пользователя и группы требуются уникальные идентификаторы UID и GID. Служба winbindd отвечает за предоставление информации о пользователях и группах домена.
Чтобы служба winbindd могла предоставлять уникальные идентификаторы для пользователей и групп в Linux, необходимо на клиенте домена настроить сопоставление идентификаторов в файле smb.conf для:
  • локальной база данных (домен * по умолчанию);
  • домена AD;
  • каждого доверенного домена, пользователи которого должны иметь доступ к ресурсам.
Samba предоставляет различные модули сопоставления идентификаторов для конкретных конфигураций. Наиболее часто используемыми модулями являются:
  • tdb — в доменах * по умолчанию;
  • ad — в AD доменах;
  • rid — в AD доменах;
  • autorid — в AD доменах и доменах * по умолчанию.

66.1. Планирование диапазонов идентификаторов

Независимо от того, хранятся ли UID и GID Linux в AD (если в AD включены расширения схемы RFC2307) или настроена их автоматическая генерация, для каждой конфигурации домена требуется уникальный диапазон идентификаторов. Этот диапазон не должен пересекаться с диапазонами других доменов.

Примечание

При пересечении диапазонов идентификаторов работа системы не будет корректной.
Пример непересекающихся диапазонов сопоставления идентификаторов для доменов по умолчанию (*), AD-DOM и TRUST-DOM:
[global]
...
idmap config * : backend = tdb
idmap config * : range = 10000-999999

idmap config AD-DOM:backend = rid
idmap config AD-DOM:range = 2000000-2999999

idmap config TRUST-DOM:backend = rid
idmap config TRUST-DOM:range = 4000000-4999999

Примечание

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

Важно

Максимальное значение uid/gid:
2^31 - 1 = 2147483647
При планировании диапазонов необходимо также учитывать, что в Linux есть специальные UID, которые нельзя использовать:
  • 0 — root (суперпользователь);
  • 65534 — nobody UID (UID «переполнения» или аналогичный) используется в системах Linux для обозначения пользователя, который не имеет прав доступа к системным ресурсам;
  • 65535, он же «16-разрядный (uid_t) -1uid_t». До того, как ядро Linux 2.4 было 16-разрядным, и программы, скомпилированные для этого, следовательно, предполагали, что (uid_t)-1 равно 65535. Таким образом, этот UID непригоден для использования.

66.2. Домен * по умолчанию

В доменной среде должна быть добавлена одна конфигурация сопоставления идентификаторов для каждого из следующих параметров:
  • домен, членом которого является клиент, на котором производится настройка;
  • каждый доверенный домен.
Для всех остальных объектов присваиваются идентификаторы из домена по умолчанию. Сюда входят:
  • локальные пользователи и группы;
  • встроенные учетные записи и группы, такие как BUILTIN\Administrators.
Бэкенд домена по умолчанию должен быть доступен для записи, чтобы назначенные идентификаторы постоянно сохранялись.
Для домена по умолчанию можно использовать один из следующих бэкендов:
tdb
В данном случае необходимо задать достаточно большой диапазон идентификаторов, чтобы включать объекты, которые будут созданы в будущем и которые не являются частью определенной конфигурации сопоставления идентификаторов домена.
Например, в разделе [global] в файле smb.conf можно задать:
idmap config * : backend = tdb
idmap config * : range = 10000-999999
Для получения более подробной информации см. Использование tdb
autorid
При использовании бэкенда autorid при настройке домена * по умолчанию необязательно добавлять дополнительные конфигурации сопоставления идентификаторов для доменов.
Например, в разделе [global] в файле smb.conf можно задать:
idmap config * : backend = autorid
idmap config * : range = 10000-999999
Для получения более подробной информации см. Использование autorid

66.3. Использование tdb

Служба winbindd по умолчанию использует доступный для записи бэкенд tdb для хранения таблиц сопоставления идентификаторов безопасности (SID), UID и GID. Это относится к локальным и встроенным пользователям и группам.
Этот бэкенд следует использовать только для домена * по умолчанию.

66.4. Использование ad

Можно настроить пользователя Samba AD на использование бэкенда ad.
Бэкенд ad реализует API, доступный только для чтения, для чтения информации об учетной записи и группе из AD. Это обеспечивает следующие преимущества:
  • все настройки пользователей и групп хранятся централизованно в AD;
  • идентификаторы пользователей и групп совпадают на всех клиентах;
  • идентификаторы не хранятся в локальной базе данных, которая может быть повреждена, и, следовательно, права на файлы не могут быть потеряны.

Примечание

Бэкенд ad не поддерживает домены AD с односторонними доверительными отношениями. Если настраивается участник домена в AD с односторонними доверительными отношениями, следует вместо этого использовать одну из следующих серверных частей сопоставления идентификаторов: tdb, rid или autorid.

Таблица 66.1. Атрибуты из AD, которые считывает бэкенд ad

Имя атрибута AD
Тип объекта
Сопоставление
sAMAccountName
Пользователь и группа
Имя пользователя или группы в зависимости от объекта
uidNumber
Пользователь
Идентификатор пользователя (UID)
gidNumber
Группа
Идентификатор группы (GID)
loginShell
Пользователь
Путь к командной строке пользователя
Предварительные требования:
  • и пользователи, и группы должны иметь уникальные идентификаторы, заданные в AD. Идентификаторы должны находиться в диапазоне, настроенном в файле smb.conf. Объекты, идентификаторы которых находятся за пределами диапазона, не будут доступны на клиенте;
  • у пользователей и групп должны быть заданы все необходимые атрибуты в AD;
  • настроено сопоставление идентификаторов в файле smb.conf.
Пример:
idmap config * : backend = tdb
idmap config * : range = 3000-7999

idmap config TEST : backend = ad
idmap config TEST : range = 10000-999999
idmap config TEST : schema_mode = rfc2307
Чтобы разрешить клиенту домена считывать командную строку входа в систему и путь к домашнему каталогу пользователей из соответствующего атрибута AD, необходимо установить:
idmap config DOMAIN : unix_nss_info = yes
В качестве альтернативы можно установить единый путь к домашнему каталогу для всего домена и командную строку входа, которые будут применяться ко всем пользователям. Например:
template shell = /bin/bash
template homedir = /home/%U

66.5. Использование rid

Можно настроить клиента домена для использования бэкенда rid.
В AD SID состоит из нескольких частей, где каждая часть кодирует информацию, связанную с доменом или самой учетной записью. SID выглядит примерно так:
S-1-5-21-XXXXXXXXXX-YYYYYYYYYY-ZZZZZZZZZZ-RID
Где:
  • S-1-5-21 — префикс SID, общая часть для идентификаторов безопасности Windows;
  • XXXXXXXXXX-YYYYYYYYYY-ZZZZZZZZZZ — уникальная часть домена;
  • RID — число, уникальное для каждой учетной записи в домене (например, пользователя или группы).
Для настройки idmap rid в Samba, RID берётся из последней части SID и используется для определения UID/GID на основе заранее заданного диапазона.
Если задаётся конфигурацию idmap rid, например:
idmap config DOMAIN : backend = rid
idmap config DOMAIN : range = 10000-999999
Samba берёт RID из SID и добавляет его к началу диапазона range. Например, для пользователя с SID S-1-5-21-XXXXXXXXXX-YYYYYYYYYY-ZZZZZZZZZZ-1000, UID будет вычислен как 10000 + 1000 = 11000.
Бэкенд rid реализует доступный только для чтения API для вычисления информации об учетной записи и группе на основе алгоритмической схемы сопоставления для доменов. При настройке необходимо задать наименьшее и наибольшее значения идентификаторов в параметре idmap config DOMAIN : range. Samba не будет сопоставлять пользователей или группы с более низким или более высоким RID, чем указано в этом параметре.

Примечание

Для бэкенда rid нельзя назначать новые идентификаторы, например, для BUILTIN групп. Поэтому не следует использовать этот бэкенд для домена * по умолчанию.

Важно

Необходимо планировать интервал с запасом, в соответствии с прогнозированием увеличения количества объектов, так как максимальное значение RID равно 2147483647.
Пример:
idmap config * : backend = tdb
idmap config * : range = 10000-999999

idmap config DOMAIN : backend = rid
idmap config DOMAIN : range = 2000000-2999999

Примечание

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

66.6. Использование autorid

Бэкенд autorid работает аналогично бэкенду для сопоставления идентификаторов rid, но может автоматически назначать идентификаторы для разных доменов. Это позволяет использовать autorid в следующих ситуациях:
  • только для домена * по умолчанию;
  • для домена * по умолчанию и дополнительных доменов, без необходимости создавать конфигурации сопоставления идентификаторов для каждого из дополнительных доменов (любые домены, кроме основного). Они могут быть доверенными доменами в инфраструктуре AD. Для таких доменов можно не указывать подробную конфигурацию в smb.conf.
  • только для определенных доменов (те домены, для которых вручную заданы конкретные параметры сопоставления идентификаторов).
Пример:
idmap config * : backend = autorid
idmap config * : range = 100000-9999999

Примечание

По умолчанию значение rangesize равно 100000.
При необходимости можно задать другой размер диапазона:
idmap config * : rangesize = 200000

Примечание

После того как был задан диапазон и клиент домена начал его использовать, можно будет увеличить только верхний предел диапазона. Любое другое изменение диапазона (range) или размера диапазона (rangesize) может привести к нарушению сопоставления идентификаторов.
Клиент присваивает это количество непрерывных идентификаторов каждому объекту домена до тех пор, пока не будут взяты все идентификаторы из диапазона, заданного в параметре idmap config * : range.

Примечание

Диапазон (range) должен быть кратен размеру диапазона (rangesize).

Глава 67. Инструменты командной строки

Таблица 67.1. Основные инструменты командной строки

Утилита
Описание
Основная утилита управления Samba
Позволяет получить информацию от демона winbindd
net
Инструмент администрирования Samba и удаленных серверов CIFS
Инструмент для выполнения действий в домене Active Directory
Утилита для поиска информации в LDAP
Проверка корректности содержимого основного файла конфигурации Samba — /etc/samba/smb.conf

67.1. samba-tool

Для управления Samba AD DC в состав пакета Samba входит инструмент командной строки samba-tool.

Таблица 67.2. Основные команды samba-tool

Команда
Описание
computer
Управление учетными записями компьютеров
contact
Управление контактами
dbcheck
Проверка локальной базы данных домена на наличие ошибок
delegation
Управление делегированием
dns
Управление параметрами доменной службы DNS
domain
Управление параметрами домена
drs
Управление службой репликации каталогов (Directory Replication Services, DRS)
dsacl
Управление списками контроля доступа DS
forest
Управление конфигурацией леса
fsmo
Управление ролями (Flexible Single Master Operations, FSMO)
gpo
Управление групповыми политиками
group
Управление группами
ldapcmp
Сравнение двух баз данных ldap
ntacl
Управление списками контроля доступа ACL
processes
Вывод списка процессов
ou
Управление организационными подразделениями (OU)
rodc
Управление контроллером домена (Read-Only Domain Controller, RODC)
schema
Управление и запрос схемы
sites
Управление сайтами
spn
Управление службой принципалов (Service Principal Name, SPN)
testparm
Проверка конфигурационного файла на корректность синтаксиса
time
Получение показаний текущего времени сервера
user
Управление пользователями
visualize
Графическое представление состояния сети Samba
Получить дополнительную информацию можно на справочной странице samba-tool(8) (man samba-tool).
Пример получения дополнительной информации о подкоманде:
$ samba-tool fsmo --help
Примеры:
  • вывести список групповых политик:
    # samba-tool gpo listall
    GPO          : {31B2F340-016D-11D2-945F-00C04FB984F9}
    display name : Default Domain Policy
    path         : \\test.alt\sysvol\test.alt\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}
    dn           : CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=test,DC=alt
    version      : 0
    flags        : NONE
    
    GPO          : {FE6268E4-FDEB-4DCA-94E8-BB1170C66F45}
    display name : scripts
    path         : \\test.alt\sysvol\test.alt\Policies\{FE6268E4-FDEB-4DCA-94E8-BB1170C66F45}
    dn           : CN={FE6268E4-FDEB-4DCA-94E8-BB1170C66F45},CN=Policies,CN=System,DC=test,DC=alt
    version      : 65536
    flags        : NONE
    
    GPO          : {6AC1786C-016F-11D2-945F-00C04FB984F9}
    display name : Default Domain Controllers Policy
    path         : \\test.alt\sysvol\test.alt\Policies\{6AC1786C-016F-11D2-945F-00C04FB984F9}
    dn           : CN={6AC1786C-016F-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=test,DC=alt
    version      : 0
    flags        : NONE
    
    GPO          : {44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573}
    display name : Общие каталоги
    path         : \\test.alt\sysvol\test.alt\Policies\{44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573}
    dn           : CN={44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573},CN=Policies,CN=System,DC=test,DC=alt
    version      : 0
    flags        : NONE
    
  • вывести все связанные контейнеры для объекта групповой политики:
    # samba-tool gpo listcontainers {44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573}
    Container(s) using GPO {44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573}
        DN: OU=OU,DC=test,DC=alt
        DN: OU=KDE,DC=test,DC=alt
    
  • вывести список групповых политик, связанных с контейнером:
    # samba-tool gpo getlink OU=OU,DC=test,DC=alt
    GPO(s) linked to DN OU=OU,DC=test,DC=alt
        GPO     : {96D5897A-CEFB-4A1B-90AF-5D83707130C4}
        Name    : Файлы
        Options : NONE
    
        GPO     : {A12547D7-2FFA-4E37-9382-D6767489E3DF}
        Name    : kde
        Options : NONE
    
        GPO     : {75E65DF7-56A7-48E1-A393-F5FFAA1010FD}
        Name    : Control_ping
        Options : NONE
    
        GPO     : {FE6268E4-FDEB-4DCA-94E8-BB1170C66F45}
        Name    : scripts
        Options : NONE
    
        GPO     : {44F1A3E9-BD0D-44D7-AC1D-CEEF2817C573}
        Name    : Общие каталоги
        Options : NONE
    
        GPO     : {0CCFA74C-57F5-42B5-98E2-007D4A59C4C4}
        Name    : firefox
        Options : NONE
    
        GPO     : {2CF4EB19-343E-448A-BBBC-A9EC2F7C22E9}
        Name    : Установка пакетов
        Options : NONE
    

67.2. wbinfo

Команда wbinfo создает запросы и возвращает информацию к (от) демона winbindd(8).

Таблица 67.3. Параметры команды wbinfo

Параметр
Описание
Пример
-a|--authenticate username%password
Попытаться аутентифицировать пользователя через winbindd(8).
Проверяет два метода аутентификации: plaintext password (применяется при входе пользователя в систему локально), challenge/response password (использует NTLM или Kerberos)
$ wbinfo -a TEST\\ivanov
Enter TEST\ivanov's password:
plaintext password authentication succeeded
Enter TEST\ivanov's password:
challenge/response password authentication succeeded
--allocate-gid
Получить новый GID из idmap
--allocate-uid
Получить новый UID из idmap
--all-domains
Вывести список всех доменов (доверенных и собственный)
$ wbinfo --all-domains
BUILTIN
TEST
EXAMPLE
-c|--change-secret
Изменить пароль доверительной учетной записи. Может использоваться вместе с доменом для изменения паролей учетных записей междоменного доверия
--ccache-save <имя_пользователя>%<пароль>
Сохранить имя пользователя и пароль для ccache
--change-user-password <имя_пользователя>
Изменить пароль пользователя (будет запрошен старый и новый пароль)
# wbinfo --change-user-password ivanov
Enter ivanov's old password:
Enter ivanov's new password:
Password change for user ivanov succeeded
--dc-info <домен>
Вывести текущий контроллер домена для домена
$ wbinfo --dc-info TEST
dc1.test.alt (192.168.0.132)
--domain <домен>
Определяет домен, в котором будут выполняться любые указанные операции
-D|--domain-info <домен>
Показать информацию об указанном домене
$ wbinfo -D TEST
Name              : TEST
Alt_Name          : test.alt
SID               : S-1-5-21-578923263-1107570656-1287136478
Active Directory  : Yes
Native            : Yes
Primary           : Yes
--dsgetdcname <домен>
Найти DC для домена
$ wbinfo --dsgetdcname TEST
\\dc1.test.alt
\\192.168.0.132
1
d75c7b83-9472-4646-adb2-52b3d6968eb6
test.alt
test.alt
0xe00013fd
Default-First-Site-Name
Default-First-Site-Name
--gid-info <gid>
Получить информацию о группе по gid
$ wbinfo --gid-info 10000
domain admins:*:10000:
--group-info <группа>
Получить информацию о группе по имени группы
$ wbinfo --group-info "TEST\\domain admins"
domain admins:*:10000:
-g|--domain-groups
Вывести список доменных групп
$ wbinfo -g
…
TEST\domain admins
TEST\domain users
TEST\domain guests
TEST\domain computers
…
--get-auth-user
Эта функция была перенесена в утилиту net (см. net help getauthuser)
--getdcname <домен>
Вывести имя контроллера домена для указанного домена
$ wbinfo --getdcname TEST
DC1
-G|--gid-to-sid <gid>
Преобразовать идентификатор группы UNIX в SID Windows NT. Если указанный gid не относится к диапазону gid idmap, операция завершится ошибкой
$ wbinfo -G 10000
S-1-5-21-578923263-1107570656-1287136478-512
-i|--user-info <имя_пользователя>
Вывести информацию о пользователе
$ wbinfo -i TEST\\ivanov
ivanov:*:10000:10001:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash
-I|--WINS-by-ip ip
Вывести NetBIOS-имя, связанное с IP-адресом
$ wbinfo -I 192.168.0.135
192.168.0.135	WORK135
-K|--krb5auth <имя_пользователя>%<пароль>
Попытаться аутентифицировать пользователя через Kerberos
$ wbinfo -K TEST\\ivanov
Enter TEST\ivanov's password:
plaintext kerberos password authentication for [TEST\ivanov] succeeded (requesting cctype: FILE)
--krb5ccname KRB5CCNAME
Запросить определенный тип кеша учетных данных Kerberos, используемый для аутентификации
--lanman
Использовать криптографию Lanman для аутентификации пользователей
--logoff
Выйти из системы
--logoff-uid UID
Определяет идентификатор пользователя, используемый во время запроса на выход из системы
--logoff-user <имя_пользователя>
Определяет имя пользователя, используемое во время запроса на выход из системы
--lookup-sids SID1,SID2...
Поиск SID
$ wbinfo --lookup-sids S-1-5-21-578923263-1107570656-1287136478-512
S-1-5-21-578923263-1107570656-1287136478-512 -> <none>\Domain Admins 2
-m|--trusted-domains
Вывести список доверенных доменов
$ wbinfo --trusted-domains
BUILTIN
TEST
EXAMPLE
-n|--name-to-sid <имя>
Вывести SID, связанный с указанным именем. Если домен не указан, используется домен, указанный в параметре workgroup smb.conf
$ wbinfo -n TEST\\ivanov
S-1-5-21-578923263-1107570656-1287136478-1103 SID_USER (1)
-N|--WINS-by-name <name>
Вывести IP-адрес, связанный с именем NetBIOS, указанным в параметре name
$ wbinfo -N WORK135
192.168.0.135	WORK135
--ntlmv1
Использовать криптографию NTLMv1 для аутентификации пользователей
--ntlmv2
Использовать криптографию NTLMv2 для аутентификации пользователей
--online-status <домен>
Показать, поддерживает ли winbind в настоящее время активное соединение или нет. Если домен не указан, будет выведен статус текущего домена
$ wbinfo --online-status
BUILTIN : active connection
TEST : active connection
--own-domain
Вывести собственный домен
$ wbinfo --own-domain
TEST
--pam-logon <имя_пользователя>%<пароль>
Попытаться аутентифицировать пользователя так же, как это сделал бы pam_winbind
$ wbinfo --pam-logon ivanov
Enter ivanov's password:
plaintext password authentication succeeded
-p|--ping
Проверяет запущен ли winbindd(8)
$ wbinfo -p
Ping to winbindd succeeded
-P|--ping-dc
Проверить безопасное соединение с контроллером домена
$ wbinfo -P
checking the NETLOGON for domain[TEST] dc connection to "dc1.test.alt" succeeded
-r|--user-groups <имя_пользователя>
Получить список идентификаторов групп, к которым принадлежит пользователь. Доступно только при наличии пользователя на контроллере домена
$ wbinfo -r ivanov
10001
10003
-R|--lookup-rids rid1, rid2, rid3..
Преобразовать RID в имена
--remove-gid-mapping GID,SID
Удалить существующее сопоставление GID и SID из базы данных
--remove-uid-mapping UID,SID
Удалить существующее сопоставление UID и SID из базы данных
-s|--sid-to-name sid
Преобразовать SID в имя
$ wbinfo -s S-1-5-21-578923263-1107570656-1287136478-1103
TEST\ivanov 1
--separator
Вывести активный разделитель winbind
$ wbinfo --separator
\
--sequence
Команда устарела, вместо неё следует использовать параметр --online-status
--set-auth-user <имя_пользователя>%<пароль>
Эта функция была перенесена в утилиту net (см. net help setauthuser)
--set-gid-mapping GID,SID
Создать сопоставление GID и SID в базе данных
--set-uid-mapping UID,SID
Создать сопоставление UID и SID в базе данных
-S|--sid-to-uid sid
Преобразовать SID в идентификатор пользователя
$ wbinfo -S S-1-5-21-578923263-1107570656-1287136478-1103
10000
--sid-aliases sid
Получить псевдонимы SID для заданного SID
--sid-to-fullname sid
Преобразовать SID в полное имя пользователя (ДОМЕН\имя пользователя)
$ wbinfo --sid-to-fullname S-1-5-21-578923263-1107570656-1287136478-1103
TEST\Иван Иванов 1
--sids-to-unix-ids sid1,sid2,sid3...
Преобразовать SID в Unix ID
$ wbinfo --sids-to-unix-ids S-1-5-21-578923263-1107570656-1287136478-1103
S-1-5-21-578923263-1107570656-1287136478-1103 -> uid 10000
-t|--check-secret
Проверить, что доверительная учетная запись рабочей станции, созданная при добавлении сервера Samba в домен Windows NT, работает. Может использоваться вместе с доменом для проверки учетных записей междоменного доверия
-u|--domain-users
Вывести список доменных пользователей
$ wbinfo -u
administrator
krbtgt
ivanov
guest
--uid-info uid
Получить информацию о пользователе по идентификатору
$ wbinfo --uid-info 10000
ivanov:*:10000:10001:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash
--usage
Вывести краткую справку о программе
--user-domgroups sid
Вывести группы пользователей домена
$ wbinfo --user-domgroups S-1-5-21-578923263-1107570656-1287136478-1103
S-1-5-21-578923263-1107570656-1287136478-1103
S-1-5-21-578923263-1107570656-1287136478-513
--user-sidinfo sid
Получить информацию о пользователе по sid
$ wbinfo --user-sidinfo S-1-5-21-578923263-1107570656-1287136478-1103
ivanov:*:10000:10001:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash
--user-sids sid
Получить SID групп пользователя
$ wbinfo --user-sids S-1-5-21-578923263-1107570656-1287136478-1103
S-1-5-21-578923263-1107570656-1287136478-1103
S-1-5-21-578923263-1107570656-1287136478-513
S-1-5-32-545
-U|--uid-to-sid uid
Преобразовать идентификатор пользователя UNIX в SID
$ wbinfo -U 10000
S-1-5-21-578923263-1107570656-1287136478-1103
-Y|--sid-to-gid sid
Преобразовать SID в идентификатор группы UNIX
$ wbinfo -Y S-1-5-21-578923263-1107570656-1287136478-513
10001

67.3. net

net — инструмент администрирования Samba и удаленных серверов CIFS. Синтаксис:
net <протокол> <функция> <дополнительные_параметры> <параметры_цели>
где <протокол> — протокол, используемый при выполнении команды. Возможные значения: ads (Active Directory), rap (Win9x/NT3) или rpc (WindowsNT4/2000/2003/2008/2012). Если протокол не указан, net пытается определить его автоматически.

Таблица 67.4. Основные команды net ads

Команда
Описание
info
Вывод информации о домене
join
Присоединение машины к домену
testjoin
Проверка, действителен ли пароль учетной записи компьютера
leave
Удалить локальную машину из домена AD
status
Вывод информации об учетной записи компьютера
user
Список/изменение пользователей
group
Список/изменение групп
dns
Выполнить динамическое обновление DNS
password
Изменить пароль пользователей
changetrustpw
Изменить пароль доверительной учетной записи
printer
Список/изменение записей принтера
search
Выполнить поиск LDAP с использованием фильтра
dn
Выполнить поиск LDAP по DN
sid
Выполнить поиск LDAP по SID
workgroup
Показать имя рабочей группы
lookup
Найти контроллер домена AD с помощью поиска CLDAP
keytab
Управление локальным файлом keytab
spnset
Управление именами участников-служб (SPN)
gpo
Управление объектами групповой политики
kerberos
Управление keytab Kerberos
enctypes
Список/изменение enctypes
Получить дополнительную информацию можно на справочной странице net(8) (man net).
Пример получения дополнительной информации о подкоманде:
# net time --help
Получение информации о домене:
# net ads info
LDAP server: 192.168.0.132
LDAP server name: dc1.test.alt
Realm: TEST.ALT
Bind Path: dc=TEST,dc=ALT
LDAP port: 389
Server time: Чт, 19 июн 2025 15:46:02 MSK
KDC server: 192.168.0.132
Server time offset: 2
Last machine account password change: Ср, 04 июн 2025 15:35:56 MSK
Получение информации об учетной записи компьютера:
# net ads status -U administrator

67.4. adcli

adcli — инструмент для выполнения действий в домене Active Directory.

Таблица 67.5. Основные команды adcli

Команда
Описание
info домен
Вывести информацию о домене
join домен
Присоединить данную машину к домену (создает учетную запись компьютера в домене и настраивает keytab для этой машины. Не настраивает службу аутентификации, например, sssd)
update
Обновляет пароль учетной записи компьютера на контроллере домена для локальной машины, записывает новые ключи в keytab и удаляет старые ключи
testjoin
Проверить, действителен ли пароль учетной записи компьютера
create-user [--domain=домен] пользователь
Создать учетную запись пользователя
delete-user [--domain=домен] пользователь
Удалить учетную запись пользователя
passwd-user [--domain=домен] пользователь
Установить (повторно) пароль пользователя
create-group [--domain=домен] группа
Создать группу
delete-group [--domain=домен] группа
Удалить группу
add-member [--domain=домен] группа пользователь или компьютер…
Добавить пользователей в группу
remove-member [--domain=домен] группа пользователь…
Удалить пользователей из группы
preset-computer [--domain=домен] компьютер…
Предустановить учетные записи компьютеров (предварительно создает одну или несколько учетных записей компьютеров в домене, чтобы позже компьютеры могли использовать их при присоединении к домену. При этом, машины могут присоединяться с помощью одноразового пароля или автоматически без пароля)
reset-computer [--domain=домен] компьютер
Сбросить учетную запись компьютера (если соответствующая машина присоединена к домену, её членство будет нарушено)
delete-computer [--domain=домен] компьютер
Удалить учетную запись компьютера
show-computer [--domain=домен] компьютер
Показать атрибуты учетной записи компьютера, хранящиеся в AD
create-msa [--domain=домен]
Создать управляемую учетную запись службы (MSA) в заданном домене AD (это бывает нужно, если компьютер не должен присоединяться к домену Active Directory, но к нему необходим LDAP доступ)
Получить дополнительную информацию можно на справочной странице adcli(8) (man adcli).
Пример получения дополнительной информации о подкоманде:
# adcli testjoin --help
Получение информации о домене:
# adcli info test.alt
[domain]
domain-name = test.alt
domain-short = TEST
domain-forest = test.alt
domain-controller = dc1.test.alt
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = dc1.test.alt dc2.test.alt
[computer]
computer-site = Default-First-Site-Name
Показать атрибуты учетной записи компьютера:
# adcli show-computer -D test.alt win2012
Password for Administrator@TEST.ALT:
sAMAccountName:
 WIN2012$
userPrincipalName:
 - not set -
msDS-KeyVersionNumber:
 1
msDS-supportedEncryptionTypes:
 28
dNSHostName:
 win2012.test.alt
servicePrincipalName:
 HOST/win2012.test.alt
 RestrictedKrbHost/win2012.test.alt
 HOST/WIN2012
 RestrictedKrbHost/WIN2012
 Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/win2012.test.alt
operatingSystem:
 Windows Server 2012 R2 Standard
operatingSystemVersion:
 6.3 (9600)
operatingSystemServicePack:
 - not set -
pwdLastSet:
 133294743593838200
userAccountControl:
 4096
description:
 - not set -
Создать группу testldap в подразделении OU:
# adcli create-group -D test.alt -O OU=OU,dc=test,dc=alt testldap
Password for Administrator@TEST.ALT:

67.5. ldapsearch

ldapsearch — утилита для поиска информации в LDAP. Синтаксис:
ldapsearch <параметры> <фильтр> <атрибуты>
ldapsearch открывает соединение с сервером LDAP, подключается к нему и выполняет поиск с помощью фильтра.
Если утилита ldapsearch найдет одну или несколько записей, то значения указанных атрибутов этих записей будут переданы в стандартный поток вывода. Если в этом списке указан знак *, возвращаются все пользовательские атрибуты. Если в этом списке указан знак +, возвращаются все операционные атрибуты. Если атрибуты не указаны, то возвращаются все пользовательские атрибуты.
Результаты поиска отображаются в виде расширенной версии LDIF. Формат вывода контролируется с помощью параметра -L.

Таблица 67.6. Параметры команды ldapsearch

Параметр
Описание
Параметры поиска
-a {never|always|search|find}
Задает способ преобразования псевдонимов. Может принимать значения: never (по умолчанию), always, search или find, указывающие, соответственно, что псевдонимы не преобразуются, преобразуются всегда, преобразуются при поиске, либо преобразуются только при определении базового объекта для поиска
-A
Получить только атрибуты (без значений)
-b basedn
Позволяет переопределить заданную по умолчанию начальную точку поиска
-c
Режим продолжения операции (не останавливать поиск при ошибках)
-E [!]ext[=extparam]
Указывает расширения поиска. Знак '!' обозначает критичность расширения.
Общие расширения:
  • [!]domainScope (диапазон домена)
  • !dontUseCopy
  • [!]mv=<filter> (RFC 3876 фильтр совпавших значений)
  • [!]pr=<size>[/prompt|noprompt] (RFC 2696 постраничный вывод результатов/запрос вывода)
  • [!]sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...] (RFC 2891 сортировка на стороне сервера)
  • [!]subentries[=true|false] (RFC 3672 подзаписи)
  • [!]sync=ro[/<cookie>] (RFC 4533 LDAP Sync refreshOnly)
    [!]sync=rp[/<cookie>][/<slimit>] (LDAP Sync refreshAndPersist)
  • [!]vlv=<before>/<after>(/<offset>/<count>|:<value>) (ldapv3-vlv-09 вид виртуального списка)
  • [!]deref=derefAttr:attr[,...][;derefAttr:attr[,...][;...]]
  • [!]<oid>[=:<b64value>] (общий контроль; нет обработки ответа)
-f file
Считать серию строк из файла file и выполнить по одному поиску LDAP для каждой строки. В этом случае заданный в командной строке фильтр filter интерпретируется как шаблон, в котором первое и только первое вхождение %s заменяется строкой из файла file. Любые другие вхождения символа % в шаблоне будут рассматриваться как ошибка. Если требуется, чтобы в поисковом фильтре присутствовал символ %, он должен быть закодирован как \25 (смотрите RFC 4515). Если в качестве значения file указан символ «-», то строки считываются со стандартного ввода
-F prefix
URL-префикс для временных файлов (по умолчанию: file://path, где path либо /tmp/.private/<user>, либо значение, указанное в параметре -T)
-l limit
Ограничение на время поиска (в секундах). Значение 0 (ноль) или none означает, что ограничений нет. Значение max означает максимальное допустимое протоколом значение (целое число)
-L[LL]
Управление выводом результатов поиска в формате обмена данными LDAP (LDAP Data Interchange Format): -L — вывести ответы в формате LDIFv1, -LL — отключить вывод комментариев, -LLL — отключить вывод версии LDIF
-M[M]
Включить элемент управления Manage DSA IT. -MM делает этот элемент управления критичным
-P {2|3}
Версия протокола LDAP (по умолчанию 3)
-s {base|one|sub|children}
Задает область поиска. Может принимать одно из следующих значений: base, one, sub (по умолчанию) или children, что означает поиск только по базовому объекту, на одном уровне, по всему поддереву и по дочерним записям соответственно
-S attr
Отсортировать возвращаемые записи по атрибуту attr. По умолчанию возвращаемые записи не сортируются. Если в качестве attr задана строка нулевой длины (""), записи сортируются по компонентам их уникального имени Distinguished Name. По умолчанию ldapsearch выводит записи по мере их получения. При использовании параметра -S все данные сначала получаются, потом сортируются, потом выводятся
-t[t]
При указании одного -t полученные непечатаемые значения записываются в набор временных файлов (полезно при работе со значениями, содержащими несимвольные данные, такими как jpegPhoto или audio). При указании второго -t все полученные значения записываются в файлы
-T path
Временные файлы записываются в указанный в path каталог (по умолчанию /tmp/.private/<user>)
-u
Включить в вывод форму удобного для пользователя имени (User Friendly Name, UFN) уникального имени (Distinguished Name, DN)
-z limit
Ограничить количество возвращаемых в результате поиска записей значением limit. Значение 0 (ноль) или none означает, что ограничений нет. Значение max означает максимальное допустимое протоколом значение (целое число)
Общие параметры
-d debuglevel
Установить уровень отладки LDAP
-D binddn
Использовать указанное в binddn уникальное имя Distinguished Name при подсоединении к каталогу LDAP. При SASL-подсоединениях сервер будет игнорировать это значение
-e [!]ext[=extparam]
Указывает общие расширения. Знак '!' обозначает критичность расширения.
Общие расширения:
  • [!]assert=<filter> (RFC 4528; фильтр RFC 4515)
  • [!]authzid=<authzid> (RFC 4370; "dn:<dn>" или "u:<user>")
  • [!]chaining[=<resolveBehavior>[/<continuationBehavior>]]
  • [!]manageDSAit (RFC 3296)
  • [!]noop
  • ppolicy
  • [!]postread[=<attrs>] (RFC 4527; разделённый запятыми список атрибутов)
  • [!]preread[=<attrs>] (RFC 4527; разделённый запятыми список атрибутов)
  • [!]relax
  • [!]sessiontracking
  • abandon, cancel, ignore (сигнал SIGINT посылает abandon/cancel, либо в ответ на него посылается ignore; если расширение помечено как критичное, сигнал SIGINT не принимается; ненастоящие элементы управления
-h host
Сервер LDAP
-H URI
Указывает URI (возможно, несколько), ссылающийся на LDAP-сервер (серверы). В URI допускаются поля: протокол/хост/порт
-I
Использовать интерактивный режим SASL
-n
Демонстрируется, что будет сделано, но реальный поиск не выполняется. Используется для отладки совместно с параметром -v
-N
Не использовать обратное разрешение DNS для получения канонического имени хоста SASL
-O props
Параметры безопасности SASL
-o opt[=optparam]
Указывает опции общего назначения.
Возможные опции:
  • nettimeout=<timeout> (в секундах, либо «none» или «max»)
  • ldif-wrap=<width> (в символах, либо «no» для предотвращения переноса строк)
-p порт
Порт, на котором сервер LDAP принимает запросы. Номер порта по умолчанию — 389. Если номер порта не задан, и указан параметр -Z, то применяется номер порта LDAP SSL по умолчанию, равный 636
-Q
Использовать тихий режим SASL. Запросы не выводятся никогда
-R realm
Задаёт realm аутентификационного идентификатора для SASL. Форма realm зависит от того, какой механизм аутентификации в действительности используется
-U authcid
Идентификатор аутентификации SASL. Форма идентификатора зависит от того, какой механизм аутентификации в действительности используется
-v
Запустить в подробном режиме (диагностические сообщения посылаются в стандартный вывод)
-V[V]
Вывести информацию о версии. При указании -VV, после вывода информации о версии осуществляется выход. При указании -V, после вывода информации о версии выполняется поиск согласно заданным критериям
-w passwd
Использовать указанное значение passwd в качестве пароля для простой аутентификации
-W
Запрашивать ввод пароля для простой аутентификации (используется для того, чтобы не указывать пароль в командной строке)
-x
Использовать простую аутентификацию
-X authzid
Идентификатор авторизации SASL ("dn:<dn>" или "u:<user>")
-y file
Считать пароль из файла file.
В качестве пароля используется всё содержимое файла. Поэтому файл не должен содержать символа переноса строки
-Y mech
Задаёт механизм SASL, который будет использоваться для аутентификации. Если параметр не указан, программа выберет лучший из известных серверу механизмов
-Z[Z]
Запустить запрос TLS (-ZZ для запроса успешного ответа)

67.5.1. Фильтр

Фильтр должен быть указан в строковом формате фильтров LDAP (см. RFC 4515). Если фильтр не указан, используется фильтр по умолчанию (objectClass=*)
Синтаксис LDAP-фильтра имеет вид:
<Атрибут><оператор сравнения><значение>
Вместо имени атрибута можно использовать его идентификатор (Attribute-Id). Тело фильтра должно быть заключено в скобки

Таблица 67.7. Примеры LDAP-фильтров

Запрос
LDAP фильтр
Все пользователи:
(sAMAccountType=805306368)
Отключенные (Disabled) пользователи:
(&(sAMAccountType=805306368)(useraccountcontrol:1.2.840.113556.1.4.803:=2))
Заблокированные (Locked) пользователи:
(&(sAMAccountType=805306368)(badPwdCount>=4))
Пользователи, у которых в настройках указано «Пароль никогда не истекает»
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536))
Пользователи которые не меняли пароль с 5 мая 2023 года (см. https://www.epochconverter.com/ldap для преобразования даты во временную метку Windows)
(&(objectCategory=person)(pwdLastSet<=133278047990000000))
Пользователи с незаполненным полем mail
(&(objectCategory=group)(!(mail=*)))
Пользователи, которые должны сменить пароль при следующем входе в систему
(&(sAMAccountType=805306368)(pwdLastSet=0))
Пользователи с ограниченным сроком действия учетной записи
(&(sAMAccountType=805306368)(accountExpires>=1)(accountExpires<=9223372036854775806))
Пользователи, созданные за определенный период (формат даты: YYYY MM DD HH mm ss.s Z)
(&(sAMAccountType=805306368)(whenCreated>=20230401000000.0Z<=20230701000000.0Z))
Все компьютеры
(objectCategory=computer)
Все контроллеры домена
(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))
Контроллеры домена, доступные только для чтения
(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=67108864))
Группы, в которых нет пользователей
(&(objectCategory=group)(!(member=*)))
Группы, с ключевым словом admin в имени
(&(objectCategory=group)(samaccountname=*admin*))
Все группы безопасности (Security)
(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648))
Все члены группы Sales (без учёта вложенности)
(memberOf=CN=Sales,CN=Users,DC=test,DC=alt)
Все члены группы Sales (с учётом вложенности)
(memberOf:1.2.840.113556.1.4.1941:=CN=Sales,CN=Users,DC=test,DC=alt)
Все группы, в которые входит пользователь testldap
(&(objectCategory=group)(member=CN=testldap,CN=Users,DC=test,DC=alt)))
Все подразделения (OU)
(objectCategory=organizationalUnit)
Все объекты групповой политики
(objectCategory=groupPolicyContainer)
Все отношения доверия
(objectClass=trustedDomain)
Объекты связанные с ролями FSMO
(fsMORoleOwner=*)
PDC Emulator
(&(objectClass=domainDNS)(fSMORoleOwner=*))
RID Master
(&(objectClass=rIDManager)(fSMORoleOwner=*))
Объект AD с определенным SID
(objectSID=S-1-5-21-1723588197-2340999690-1379671080-1105)

67.5.2. Формат вывода

Если найдена одна или несколько записей, то каждая запись передается в поток вывода в следующем формате:
Отличительное имя (DN)
имя_атрибута: значение
имя_атрибута: значение
имя_атрибута: значение
…
Записи разделяются пустыми строками.
Если задан параметр -t вместо реальных значений атрибутов будут выводиться URI временных файлов, в которые эти значения помещаются. Если задан параметр -A будут выводиться только имена атрибутов.

Примечание

Значение атрибута записывается в 7-битной кодировке ASCII и отделяется от его имени символом «:». Значения, не подходящие под эту кодировку, записываются в кодировке base64 и отделяются от имени атрибута символами «::»:
имя_атрибута:: base64_значение_атрибута
Например:
dn:: Q0490JfQsNC50YbQtdCy0LAg0J7Qu9GM0LPQsCxDTj1Vc2VycyxEQz10ZXN0LERDPWFsdA==
cn:: 0JfQsNC50YbQtdCy0LAg0J7Qu9GM0LPQsA==

…
$  echo "0JfQsNC50YbQtdCy0LAg0J7Qu9GM0LPQsA==" | base64 -d 
Зайцева Ольга

Чтобы отобразить строки в кодировке base64 можно использовать следующую команду:
$ ldapsearch -LLL -D testldap@test.alt -x -W | perl -MMIME::Base64 -MEncode=decode -n -00 -e 's/\n
+//g;s/(?<=:: )(\S+)/decode("UTF-8",decode_base64($1))/eg;print'

67.5.3. Примеры

Вывести всех пользователей, фамилия которых начинается с буквы «К»:
$ ldapsearch -LLL -H ldap://192.168.0.132:389 \
-D testldap@test.alt -b "dc=test,dc=alt" \
-x -W "(&(sAMAccountName=*)(sn=К*))" cn sn
где:
  • -H ldap://192.168.0.132:389 — сервер LDAP;
  • -D testldap@test.alt — пользователь с правом чтения в каталоге LDAP;
  • -b "dc=test,dc=alt" — контейнер AD, в котором будет выполняться поиск;
  • -x — использовать простую аутентификацию;
  • -W — спросить пароль;
  • "(&(sAMAccountName=*)(sn=К*))" — выражение, по которому будут отфильтрованы результаты;
  • cn sn — поля, которые необходимо вывести.
Параметры по умолчанию можно задать в файле /etc/openldap/ldap.conf, например:
BASE    dc=test,dc=alt
URI     ldap://dc1.test.alt
Команда с использованием базы поиска и URI по умолчанию:
$ ldapsearch -LLL -D testldap@test.alt \
-x -W "(&(sAMAccountName=*)(sn=К*))" cn sn
Вывести фамилию и электронную почту всех пользователей, из подразделения OU, у которых непустое поле mail:
$ ldapsearch -LLL -H ldap://192.168.0.132:389 \
-D testldap@test.alt -b "ou=OU,dc=test,dc=alt" -s one \
-x -W "(&(sAMAccountName=*)(mail=К*))" sn mail
В данном примере не будут выведены записи только из подразделения OU, но не из его дочерних подразделений.
Считать последовательность строк из файла new.filter и выполнить функцию поиска LDAP для каждой строки:
$ ldapsearch -H ldap://192.168.0.132:389 \ -D testldap@test.alt -b "dc=test,dc=alt" -x -W -f new.filter "(samaccountname=%s)" cn
Содержимое файла new.filter:
z*
ivanov
k*
*k
Команда выполняет поиск по поддереву для каждого фильтра, начиная с samaccountname=z*. Когда этот поиск завершается, начинается поиск для фильтра cn=ivanov и т.д. Пример вывода вышеуказанной команды с параметром -n:
 LDAPv3
# base <dc=test,dc=alt> with scope subtree
# filter pattern: (samaccountname=%s)
# requesting: dn
#

#
# filter: (samaccountname=z*)
#

#
# filter: (samaccountname=ivanov)
#

#
# filter: (samaccountname=k*)
#

#
# filter: (samaccountname=*k)
#

67.6. sssctl

sssctl — это инструмент командной строки, который предоставляет унифицированный способ получения информации о состоянии Security System Services Daemon (SSSD).
Утилиту sssctl можно использовать для сбора следующей информации:
  • состоянии домена;
  • аутентификации пользователя;
  • доступа пользователей к клиентам определенного домена;
  • кешированном содержимом.
С помощью утилиты sssctl можно:
  • управлять кешем SSSD;
  • управлять журналами;
  • проверить конфигурационные файлы.

Таблица 67.8. Основные команды sssctl

Команда
Описание
Статус SSSD
domain-list
Вывести список доступных доменов
domain-status домен
Вывести информацию о домене
user-checks пользователь
Вывести информацию о пользователе и проверить аутентификацию
access-report домен
Создать отчёт о правилах управления доступом, которые применяются к клиентскому компьютеру (работает только для домена FreeIPA)
Информация о кешированном содержимом
user-show пользователь
Информация о кеше пользователя
group-show группа
Информация о кеше группы
netgroup-show группа
Информация о кеше сетевой группы
Инструменты для работы с локальными данными
client-data-backup
Резервное копирование локальных данных
client-data-restore
Восстановление локальных данных из резервной копии
cache-remove
Резервное копирование локальных данных и удаление кешированного содержимого
cache-upgrade
Выполнить обновление кеша
cache-expire
Сделать недействительными кешированные объекты
cache-index действие
Управление индексами кеша
Инструменты для управления журналированием
logs-remove
Удалить существующие файлы журналов SSSD
logs-fetch файл
Архивировать файлы журналов SSSD в tarball
debug-level [уровень]
Изменить или вывести уровень журналирования SSSD
analyze
Анализ зарегистрированных данных
Инструменты для проверки файлов конфигурации
config-check
Выполнить статический анализ конфигурации SSSD
Инструменты, связанные с сертификатом
cert-show сертификат
Вывести информацию о сертификате
cert-map сертификат
Показать пользователей, привязанных к сертификату
Получить дополнительную информацию можно на справочной странице sssctl(8) (man sssctl).
Пример получения дополнительной информации о подкоманде:
# sssctl user-show --usage
или:
# sssctl user-show --help
Получение информации о домене:
# sssctl domain-status TEST.ALT
Online status: Online

Active servers:
AD Global Catalog: dc1.test.alt
AD Domain Controller: dc1.test.alt

Discovered AD Global Catalog servers:
- dc1.test.alt

Discovered AD Domain Controller servers:
- dc1.test.alt
Показать информацию о кеше пользователя:
# sssctl user-show kim
Name: kim
Cache entry creation date: 06/18/25 10:37:38
Cache entry last update time: 06/18/25 10:37:41
Cache entry expiration time: 06/18/25 12:07:41
Initgroups expiration time: 06/18/25 12:07:41
Cached in InfoPipe: N
Показать данные авторизации пользователя:
# sssctl user-checks kim
user: kim
action: acct
service: system-auth

SSSD nss user lookup result:
 - user name: kim
 - user id: 1939201105
 - group id: 1939200513
 - gecos: Виталий Ким
 - home directory: /home/TEST.ALT/kim
 - shell: /bin/bash

SSSD InfoPipe user lookup result:
 - name: kim
 - uidNumber: 1939201105
 - gidNumber: 1939200513
 - gecos: Олег Ким
 - homeDirectory: not set
 - loginShell: not set

testing pam_acct_mgmt

pam_acct_mgmt: Success

PAM Environment:
 - no env -

67.7. testparm

С помощью команды testparm можно проверить содержимое файла конфигурации /etc/samba/smb.conf.
Пример проверки настройки Samba:
$ testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed

Server role: ROLE_ACTIVE_DIRECTORY_DC

Press enter to see a dump of your service definitions

# Global parameters
[global]
    dns forwarder = 8.8.8.8
    ldap server require strong auth = No
    passdb backend = samba_dsdb
    realm = TEST.ALT
    server role = active directory domain controller
    workgroup = TEST
    rpc_server:tcpip = no
    rpc_daemon:spoolssd = embedded
    rpc_server:spoolss = embedded
    rpc_server:winreg = embedded
    rpc_server:ntsvcs = embedded
    rpc_server:eventlog = embedded
    rpc_server:srvsvc = embedded
    rpc_server:svcctl = embedded
    rpc_server:default = external
    winbindd:use external pipes = true
    idmap_ldb:use rfc2307 = yes
    idmap config * : backend = tdb
    map archive = No
    vfs objects = dfs_samba4 acl_xattr

[dfs]
    msdfs root = Yes
    path = /media/dfsroot

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

[netlogon]
    path = /var/lib/samba/sysvol/test.alt/scripts
    read only = No

[free]
    guest ok = Yes
    path = /mnt/win/free
    read only = N

Глава 68. Конфигурационные файлы

68.1. smb.conf

/etc/samba/smb.conf — файл конфигурации Samba.

68.2. krb5.conf

/etc/krb5.conf — файл конфигурации Kerberos.

68.3. sssd.conf

/etc/sssd/sssd.conf — файл конфигурации SSSD.
Для работы с Active Directory в SSSD имеется специальный AD-провайдер sssd-ad.
Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad:
[sssd]
config_file_version = 2
services = nss, pam

# Managed by system facility command:
## control sssd-drop-privileges unprivileged|privileged|default
user = _sssd

# SSSD will not start if you do not configure any domains.

domains = TEST.ALT
[nss]

[pam]
[domain/TEST.ALT]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
debug_level = 0
;cache_credentials = true
ad_gpo_ignore_unreadable = true
ad_gpo_access_control = permissive
ad_update_samba_machine_account_password = true
Получить подробную информацию можно на справочной странице sssd.conf(5) (man sssd.conf).

68.4. resolv.conf

/etc/resolv.conf — файл конфигурации ресолвера (механизма преобразования имен хостов в IP-адреса).
Файл содержит информацию, которую считывают функции разрешения имён при первом обращении к ним процессом. Он имеет удобочитаемый формат и включает список ключевых слов со значениями, которые предоставляют различные сведения для работы этих функций. Этот файл считается надёжным источником информации DNS (например, значение бита AD из DNSSEC будет возвращаться без изменений именно из этого источника).
Если файл отсутствует, будет использоваться только служба имён на локальной машине: доменное имя будет определено из имени хоста, а список поиска будет содержать это доменное имя.
Обычно в /etc/resolv.conf указан как минимум один сервер имен, на который перенаправляются все DNS-запросы:
# Generated by resolvconf
# Do not edit manually, use
# /etc/net/ifaces/<interface>/resolv.conf instead.
nameserver 192.168.197.241

Важно

Файл /etc/resolv.conf не следует редактировать вручную — он автоматически генерируется службой resolvconf. Для ручной настройки следует использовать файл /etc/net/ifaces/<interface>/resolv.conf.
Поддерживаемые параметры:
nameserver IP-адрес
IP-адрес сервера имён, на который перенаправляются все DNS-запросы. Может быть указан адрес IPv4 (в точечной нотации) или IPv6 (в шестнадцатеричной форме с двоеточиями, как в RFC 2373). Допускается указание до MAXNS (в настоящее время — 3) серверов, причём для каждого требуется отдельная строка nameserver. Если указано несколько серверов, библиотека распознавателя запрашивает их в указанном порядке. Если в файле нет строк nameserver, по умолчанию используется сервер имён на локальном компьютере. Используемый алгоритм заключается в том, чтобы попробовать обратиться к первому указанному серверу имён и, если время ожидания запроса истекло, попробовать обратиться к следующему серверу и т.д. пока не будет исчерпан список серверов, а затем повторять попытки, пока не будет сделано максимальное количество повторных попыток.
options параметр [параметр ...]
Позволяет задавать дополнительные параметры разрешения имён. Поддерживаемые параметры:
attempts:n
Число попыток, предпринимаемых перед возвратом ошибки. По умолчанию используется RES_DFLRETRY (в настоящее время равно 2). Значение этого параметра скрыто ограничено числом 5.
debug
Включает отладку, если glibc собрана с поддержкой отладки (см. resolver(3)).
edns0 (начиная с glibc 2.6)
Задаёт значение RES_USE_EDNSO в _res.options. Включает поддержку расширений DNS, описанных в RFC 2671.
inet6
Задаёт значение RES_USE_INET6 в _res.options. Это приводит к выполнению запроса AAAA перед запросом A внутри функции gethostbyname(3), и отображению ответов IPv4 в «туннелированной форме» IPv6, если записи AAAA не были найдены, но существует набор записей A. Начиная с glibc 2.25, эта опция устарела; приложения должны использовать getaddrinfo(3), а не gethostbyname(3).
ip6-bytestring (с glibc 2.3.4 до glibc 2.24)
Задаёт значение RES_USE_BSTRING в _res.options. Это приводит к поиску обратной записи IPv6 с использованием формата значимых битов, описанного в RFC 2673; если этот параметр не установлен (по умолчанию), то используется формат полубайта. Эта опция была удалена в glibc 2.25, так как она полагалась на несовместимое с предыдущими версиями расширение DNS.
ip6-dotint/no-ip6-dotint (с glibc 2.3.4 до glibc 2.24)
Устанавливает/сбрасывает значение RES_NOIP6DOTINT в _res.options. Если указан сброс (ip6-dotint), то выполняется поиск обратной записи IPv6 в зоне ip6.int; если задана установка (no-ip6-dotint), то по умолчанию выполняется поиск обратной записи IPv6 в зоне ip6.arpa. Эти параметры доступны в версиях glibc до 2.24, где по умолчанию используется no-ip6-dotint. Поскольку ip6-dotint перестала поддерживаться, эти опции были удалены в glibc 2.25.
ndots:n
Задаёт минимальное количество точек, которые должны обязательно присутствовать в имени, переданном функции res_query(3) (см. resolver(3)), прежде чем будет сделан первоначальный абсолютный запрос. По умолчанию n равно 1, поэтому если в имени есть точки, сначала имя пытаются разрешить как абсолютное, прежде чем добавлять к нему элементы из списка поиска. Значение этой опции скрыто ограничено числом 15.
no-check-names
Задаёт значение RES_NOCHECKNAME в _res.options, что приводит к отключению в современном BIND проверки в поступающих именах узлов и почтовых именах недопустимых символов, таких как символы подчёркивания (_), не-ASCII или управляющие символы.
no-reload (начиная с glibc 2.26)
Задаёт значение RES_NORELOAD в _res.options. Эта опция отключает автоматическую перезагрузку измененного файла конфигурации.
no-tld-query (начиная с glibc 2.14)
Задаёт значение RES_NOTLDQUERY в _res.options. Этот параметр указывает res_nsearch() не пытаться разрешить неполное имя, как если бы оно было доменом верхнего уровня. Данный параметр может привести к проблемам, если в качестве TLD указано «localhost», а не localhost в одном или более элементах списка поиска. Данный параметр не действует, если не установлен RES_DEFNAMES или RES_DNSRCH.
rotate
Задаёт значение RES_ROTATE в _res.options, что приводит к циклическому выбору указанных серверов имён. Без этой опции распознаватель всегда будет запрашивать первый сервер имён в списке и использовать последующий сервер имён только в случае сбоя первого. Эта опция позволяет распределить нагрузку между разными серверами имён.
single-request-reopen (начиная с glibc 2.9)
Задаёт RES_SNGLKUPREOP в _res.options. Для разрешения имён используется единый сокет для запросов A и AAAA. Некоторое оборудование ошибочно возвращает только один ответ. Когда это происходит, клиент продолжает ждать второго ответа.
Указание этого параметра изменяет это поведение так, что если два запроса с одного порта не обрабатываются правильно, то сокет будет закрыт и открыт новый перед посылкой второго запроса.
single-request (начиная с glibc 2.10)
Задаёт значение RES_SNGLKUP в _res.options. По умолчанию glibc начиная с версии 2.9 выполняет поиск по IPv4 и IPv6 параллельно.
Некоторые приложения DNS-серверов не могут обработать такие запросы должным образом и делают паузу между ответами на запрос. Этот параметр отключает данное поведение, что заставляет glibc делать запросы IPv6 и IPv4 последовательно (за счет некоторого замедления процесса разрешения имени).
timeout:n
Задаёт промежуток времени, который функции определения имён будут ждать ответа от удалённого сервера имён, перед тем как повторить запрос другому серверу имён. Это время может не совпадать с общим временем, затраченным на любой вызов API-интерфейса преобразователя, и нет гарантии, что один вызов API-интерфейса преобразователя соответствует одному тайм-ауту. Измеряется в секундах, значение по умолчанию — RES_TIMEOUT (в настоящее время равно 5). Значение этой опции скрыто ограничено числом 30.
trust-ad (начиная с glibc 2.31)
Задаёт значение RES_TRUSTAD в _res.options. Этот параметр управляет поведением бита AD распознавателя-заглушки. Если проверяющий преобразователь устанавливает в ответе бит AD, это означает, что данные в ответе были проверены в соответствии с протоколом DNSSEC. Чтобы полагаться на бит AD, локальная система должна доверять как распознавателю, проверяющему DNSSEC, так и сетевому пути к нему, поэтому требуется явное согласие. Если активна опция trust-ad, тупиковый распознаватель устанавливает бит AD в исходящих DNS-запросах (чтобы включить поддержку бита AD) и сохраняет бит AD в ответах. Без этой опции бит AD в запросах не устанавливается и всегда удаляется из ответов, прежде чем они будут возвращены приложению. Это означает, что приложения могут доверять биту AD в ответах, если параметр trust-ad установлен правильно.
В glibc версии 2.30 и более ранних AD не устанавливается автоматически в запросах и без изменений передается приложениям в ответах.
use-vc (начиная с glibc 2.14)
Задаёт значение RES_USEVC в _res.options. Данный параметр включает принудительное использование TCP для запросов DNS.
search <домен1> [домен2 ...]
Задаёт список доменов поиска. По умолчанию список содержит только локальный домен, определяемый по имени хоста (возвращаемому функцией gethostname(2)). Локальным доменным именем считается всё, что следует после первого знака «.». Если имя хоста не содержит «.», предполагается, что корневой домен является именем локального домена.
Это поведение можно изменить, перечислив имена доменов, в которых нужно вести поиск, после ключевого слова search через пробел или символ табуляции. При разрешении запросов имён, в которых меньше точек, чем указано в ndots (по умолчанию 1), будет использован каждый компонент пути поиска, пока не будет найдено соответствующее имя. Для сред с несколькими субдоменами см. параметры ndots:n, чтобы избежать атак типа «человек посередине» и ненужного трафика для корневых DNS-серверов. Обратите внимание, что этот процесс может быть медленным и будет генерировать много сетевого трафика, если серверы для перечисленных доменов не являются локальными, и что время ожидания запросов истечет, если сервер для одного из доменов недоступен.
При наличии нескольких директив search используется только список поиска из последнего экземпляра.
Список поиска может содержать не более шести доменов и не может быть длиннее 256 символов. В glibc 2.25 и более ранних версиях список поиска мог содержать не более шести доменов и не мог быть длиннее 256 символов. Начиная с glibc 2.26, список поиска не ограничен.
Директива domain — это устаревшая форма директивы search, которая обрабатывает только одну запись в списке поиска.
sortlist
Определяет приоритет адресов, возвращаемых gethostbyname(3). Список сортировки задается в виде пар IP-адрес/сетевая маска. Маску сети указывать не обязательно, по умолчанию используется естественная маска сети. IP-адрес и маска сети разделяются косой чертой. В списке можно указывать до 10 пар. Пример:
sortlist 130.155.160.0/255.255.240.0 130.155.0.0
Ключевое слово search системного файла resolv.conf можно переопределить для каждого процесса, задав для переменной среды LOCALDOMAIN список доменов поиска, разделенных пробелами.
Ключевое слово options системного файла resolv.conf можно переопределить для каждого процесса, задав для переменной среды RES_OPTIONS список параметров преобразователя, разделенных пробелами.
Любые изменения, внесенные вручную в файл /etc/resolv.conf, будут перезаписаны при изменении сетевых настроек или перезагрузке.
Ключевое слово и его значение должны находиться в одной строке, и, кроме того, строка должна начинаться с ключевого слова (например, nameserver). Значение следует за ключевым словом, разделенным пробелом.
Строки, начинающиеся с точки с запятой (;) или решетки (#), считаются комментариями.
resolvconf — это служба для централизованного обновления информации о DNS-серверах. Она действует как посредник между источниками информации (например, DHCP-клиентами) и потребителями (например, библиотеками разрешения имён).
Обновление /etc/resolv.conf через resolvconf:
# resolvconf -u
Пример файла /etc/resolv.conf:
search test.alt example.test
nameserver 192.168.0.132
nameserver 8.8.8.8
Запись search позволяет использовать только короткое имя хоста (например, work) для обращения к полному имени в домене test.alt, то есть work.test.alt. Если разрешение не удалось, преобразователь пробует следующий домен (example.test) и формирует, например, work.example.test.
Если задано доменное имя с точкой, например, work.ru, сначала делается попытка разрешения имени как абсолютного. Если не удаётся — только тогда имя будет дополнено из списка поиска (например, work.ru.test.alt).
Решение о том, выполняется ли первый запрос как абсолютное доменное имя или нет, зависит от количества точек, присутствующих в доменном имени. По умолчанию доменное имя, содержащее по крайней мере одну точку, заставит преобразователь запрашивать его дословно, не объединяя его с какими-либо поисковыми доменами. Количество точек для первого запроса абсолютного доменного имени настраивается в значении параметра ndots (см. описание параметров выше).

68.5. Bind

Основные файлы настройки DNS:
  • /etc/named.conf — основной файл конфигурации, содержит ссылки на остальные конфигурационные файлы;
  • /etc/bind/options.conf — файл глобальных настроек службы;
  • /etc/bind/rndc.conf — параметры удалённого управления службой DNS с помощью rndc;
  • /etc/bind/local.conf — файл настроек локальных DNS-зон;
  • /var/lib/samba/bind-dns/named.conf — инструмент для динамического обновления записей DNS при интеграции с Samba.
Конфигурационный файл BIND 9 состоит из разделов, операторов и комментариев. Правила синтаксиса файла named.conf:
  • список IP должен быть разделен символом «;», можно указывать подсеть в формате 192.168.0.1/24 или 192.168.0.1/255.255.255.0 (для исключения IP-адреса перед ним нужно поставить знак !);
  • строки начинающиеся с символа «#», «//» и заключенные в «/*» и «*/» считаются комментариями;
  • в файлах описания зон символ @ является переменной, хранящей имя зоны, указанной в конфигурационном файле named.conf или в директиве @ $ORIGIN текущего описания зоны;
  • каждая завершенная строка параметров должна завершаться символом «;».
В таблице Разделы конфигурационного файла bind приведены некоторые разделы файла конфигурации.

Таблица 68.1. Разделы конфигурационного файла bind

Раздел
Описание
acl
Позволяет задать именованный список сетей. Формат раздела: acl имя_сети {ip; ip; ip; }
controls
Объявляет каналы управления, которые будут использоваться утилитой rndc
dnssec-policy
Описывает ключ DNSSEC и политику подписи для зон
key
Указывает ключевую информацию для использования при аутентификации и авторизации с использованием TSIG
:any:key-store
Описывает хранилище ключей DNSSEC
logging
Указывает, какую информацию регистрирует сервер и куда отправляются сообщения журнала
options
Задает глобальные параметры конфигурационного файла, управляющие всеми зонами
parental-agents
Определяет именованный список серверов для включения в списки родительских агентов основной и дополнительной зон
primaries
Определяет именованный список серверов для включения в основные и дополнительные зоны или списки уведомлений
server
Устанавливает определенные параметры конфигурации для каждого сервера
tls
Указывает информацию о конфигурации для соединения TLS
http
Указывает информацию о конфигурации для HTTP-соединения
trust-anchors
Определяет якоря доверия DNSSEC: при использовании с ключевым словом Initial-key или Initial-ds якоря доверия поддерживаются в актуальном состоянии с помощью обслуживания якоря доверия RFC 5011; при использовании со static-key или static-ds ключи являются постоянными
zone
Определяет описание зон(ы)
В таблице Основные параметры конфигурационного файла bind описаны некоторые параметры файла /etc/bind/options.conf. Для получения более подробной информации следует обратиться к man странице named.conf(5).

Таблица 68.2. Основные параметры конфигурационного файла bind

Опция
Описание
directory
Указывает каталог расположения таблиц зон
listen-on
Определяет адреса IPv4, на которых сервер прослушивает DNS-запросы
listen-on-v6
Определяет адреса IPv6, на которых сервер прослушивает DNS-запросы
allow-query
IP-адреса и подсети, от которых будут обрабатываться запросы. Если параметр не задан, сервер отвечает на все запросы
allow-transfer
Устанавливает возможность передачи зон для slave-серверов
allow-query-cache
IP-адреса и подсети, которые могут получить доступ к кешу этого сервера
allow-recursion
IP-адреса и подсети, от которых будут обрабатываться рекурсивные запросы (для остальных будут выполняться итеративные запросы). Если параметр не задан, сервер выполняет рекурсивные запросы для всех сетей
pid-file
Указывает путь к файлу, в который сервер записывает идентификатор процесса
tkey-gssapi-keytab
Устанавливает файл таблицы ключей KRB5, который будет использоваться для обновлений GSS-TSIG. Это файл таблицы ключей KRB5, который можно использовать для обновлений GSS-TSIG. Если этот параметр установлен, а tkey-gssapi-credential не установлен, обновления разрешены с любым ключом, соответствующим участнику в указанной вкладке ключей
minimal-responses
Контролирует, добавляет ли сервер записи в разделы полномочий и дополнительных данных. При значении yes сервер добавляет записи в авторитетные и дополнительные разделы только тогда, когда такие записи требуются протоколом DNS (например, при возврате делегирования или отрицательных ответах). Это обеспечивает лучшую производительность сервера, но может привести к увеличению количества клиентских запросов
max-cache-ttl
Указывает максимальное время (в секундах), в течение которого сервер кеширует обычные (положительные) ответы. Максимальный срок кеша по умолчанию — 04800 (одна неделя)
forward
Позволяет указать каким образом сервер обрабатывает запрос клиента. При значении first DNS-сервер будет пытаться разрешать имена с помощью DNS-серверов, указанных в параметре forwarders. Если разрешить имя с помощью данных серверов не удалось, то попытаться разрешить имя самостоятельно. Если указать значение none, сервер не будет пытаться разрешить имя самостоятельно
forwarders
DNS-сервер, на который будут перенаправляться запросы клиентов
dnssec-validation
Включает проверку DNSSEC в именованных файлах. Если установлены значения auto (по умолчанию) и yes, проверка DNSSEC включена. Если установлено значение no, проверка DNSSEC отключена
type
Указывает тип зоны, описываемой в текущем разделе. Тип зоны может принимать следующие значения:
  • forward — указывает зону переадресации, которая переадресовывает запросы, пришедшие в эту зону;
  • hint — указывает вспомогательную зону (данный тип содержит информацию о корневых серверах, к которым сервер будет обращаться в случае невозможности найти ответ в кеше);
  • master — указывает работать в качестве мастер сервера для текущей зоны;
  • slave — указывает работать в качестве подчиненного сервера для текущей зоны

Часть IX. Решение проблем

Содержание

69. Отладочная информация
69.1. Проблемы службы samba.service
69.1.1. Проблемы с запуском службы samba.service
69.1.2. Настройка уровня журналирования Samba
69.1.3. Управление процессами Samba
69.2. Диагностика DNS
69.2.1. Устранение неполадок, связанных с серверной частью DNS
69.2.2. Проверка корректности DNS-записей
69.3. Ошибки аутентификации
69.4. Проблемы на стороне клиента
69.4.1. Ошибка при вводе в домен
69.4.2. Ошибка при подключении к IP-адресу 127.0.0.1
69.4.3. Команда getent не показывает доменных пользователей и группы
69.5. Проблемы с присоединением к домену в роли контроллера домена
69.5.1. Рост базы данных при первичной репликации сложной инфраструктуры
69.6. Проблемы с репликацией
69.7. Сетевые проблемы
69.8. Работа доверительных отношений
69.9. Групповые политики
70. Инструменты диагностики
70.1. Инструмент диагностики состояния контроллера домена
70.2. Инструмент диагностики клиента домена
70.3. ALT Diagnostic Tool
70.3.1. Установка
70.3.2. Работа с ADT
70.3.3. Руководство администратора
70.3.4. Ошибки и нестандартные случаи

Глава 69. Отладочная информация

Перед началом поиска источника ошибки следует определить направление диагностики. Возможные области:
  • DNS — при недоступности ресурсов, отсутствии разрешения имён, наличии избыточных или нерелевантных DNS-серверов в конфигурации.

    Примечание

    В качестве DNS-серверов должны использоваться только те, которые знают о доменной зоне. Запросы к другим зонам должны пересылаться (forward) на соответствующие DNS-серверы.
  • Kerberos — при невозможности получения билета Kerberos или ошибках аутентификации.
  • NTP — если полученный билет не является действительным или ошибках аутентификации.
  • LDAP — при невозможности получения информации о пользователях или группах, ошибках аутентификации через LDAP.
  • SMB/ACL — при проблемах с доступом к файлам в общих ресурсах или аутентификацией в них.
  • Репликация — при расхождении данных между разными контроллерами домена.
Полезные утилиты для диагностики проблем:
  • Сетевые утилиты: netstat, ss, ping, telnet — для проверки сетевой доступности.
  • DNS-диагностика: host, dig, nslookup — для проверки разрешения имён.
  • LDAP-запросы:
    • ldapsearch — для запросов к Samba через LDAP.
    • ldbsearch — для прямого доступа к локальной базе Samba (ldap-like запросы).
  • Управление Samba: samba-tool — для администрирования и проверки состояния.
  • Специализированные инструменты диагностики:

Примечание

При сложных проблемах с интеграцией в домен или настройкой контроллера домена рекомендуется использовать diag-domain-controller и diag-domain-client — они автоматизируют проверку большинства критических компонентов.

69.1. Проблемы службы samba.service

69.1.1. Проблемы с запуском службы samba.service

Алгоритм диагностики:
  1. Проверить доступное место на диске:
    $ df -h
  2. Проверить конфигурацию Samba (/etc/samba/smb.conf) на ошибки:
    $ testparm
  3. Проверить /var/log/samba/log.samba на наличие аномальных сообщений. Для подробного вывода можно увеличить уровень журнала (см. раздел Уровни журналирования).
  4. Проверить целостность базы данных Samba (ldb-базу samba):
    # samba-tool dbcheck --cross-ncs

69.1.2. Настройка уровня журналирования Samba

Для диагностики проблем можно временно повысить уровень журналирования (например, до 3 или 5).
Уровень журналирования задаётся параметром log level в разделе [global] файла /etc/samba/smb.conf, например:
log level = 3
После изменения параметра следует перезапустить службу samba:
# systemctl restart samba
Файлы журналов Samba по умолчанию размещаются в каталоге /var/log/samba/.
Дополнительные сведения об уровнях журналирования см. в разделе Уровни журналирования.

69.1.3. Управление процессами Samba

Для проверки состояния процессов Samba можно использовать утилиту ps:
# ps axf | grep -E "samba|smbd|winbindd"
…
3078 ?        S      0:00 /usr/sbin/samba --no-process-group
   3091 ?        S      0:00  \_ /usr/sbin/samba --no-process-group
   3092 ?        S      0:00  |   \_ /usr/sbin/samba --no-process-group
   3096 ?        S      0:00  |       \_ /usr/sbin/samba --no-process-group
   3101 ?        Ss     0:00  |           \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3138 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3139 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3149 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
   3150 ?        S      0:00  |               \_ /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
…
   3127 ?        Ss     0:00  |           \_ /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
   3140 ?        S      0:00  |               \_ /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
…
Все процессы smbd и winbindd должны быть дочерними по отношению к основному процессу samba.
Если структура не соответствует ожиданиям или процессы отсутствуют:
  • следует проверить файлы журнала Samba на наличие ошибок (/var/log/samba/). Для подробного вывода можно временно увеличить уровень журнала (см. раздел Уровни журналирования);
  • для подробной диагностики можно запустить Samba в интерактивном режиме:
    # samba -i
    В этом режиме ошибки выводятся непосредственно в консоль.

69.2. Диагностика DNS

69.2.1. Устранение неполадок, связанных с серверной частью DNS

69.2.1.1. Внутренний DNS-сервер (SAMBA_INTERNAL)

Если клиенты не могут разрешать имена из зоны домена, следует выполнить следующие действия:
  1. Убедиться, что на клиенте указан IP-адрес DNS-сервера, способного разрешать зону домена.
  2. Проверить, запущен ли DNS-сервер Samba.
Если DNS-сервер Samba не запускается, необходимо убедиться, что ни один другой процесс не использует TCP- и UDP-порт 53:
  • проверить файлы журнала Samba на наличие ошибок, связанных с DNS;
  • убедиться, что другой процесс (например, bind) не занимает порт:
    # ss -tulpn | grep ":53"
    
Если порт 53 занят другим процессом:
  • остановить конфликтующую службу, например:
    # systemctl disable --now bind
  • перезапустить Samba:
    # systemctl restart samba
Для проверки работы DNS выполнить тестовый запрос:
# host -t A <домен> 127.0.0.1
Если DNS отвечает корректно, в выводе будет указан IP-адрес контроллера домена.

69.2.1.2. Samba с BIND9_DLZ

Каталог /var/lib/samba/bind-dns создается только в следующих случаях:
  • при создании контроллера домена с параметром --dns-backend=BIND9_DLZ;
  • при подключении к существующему домену с параметром --dns-backend=BIND9_DLZ;
  • при обновлении домена до использования Bind 9 при помощи команды samba_upgradedns с использованием опции --dns-backend=BIND9_DLZ.

Примечание

Если каталог отсутствует — следует проверить, действительно ли был использован один из этих сценариев.

69.2.2. Проверка корректности DNS-записей

Пример для домена test.alt:
  1. Проверка A-записей контроллеров домена:
    [root@dc1 /]# host -t A test.alt 127.0.0.1
    Using domain server:
    Name: 127.0.0.1
    Address: 127.0.0.1#53
    Aliases:
    
    test.alt has address 192.168.0.132
    test.alt has address 192.168.0.133
    
  2. Проверка служебных SRV-записей LDAP и Kerberos:
    [root@dc1 /]# host -t SRV _ldap._tcp.test.alt 127.0.0.1
    Using domain server:
    Name: 127.0.0.1
    Address: 127.0.0.1#53
    Aliases:
    
    _ldap._tcp.test.alt has SRV record 0 100 389 dc1.test.alt.
    _ldap._tcp.test.alt has SRV record 0 100 389 dc2.test.alt.
    
    [root@dc1 /]# host -t SRV _kerberos._udp.test.alt 127.0.0.1
    Using domain server:
    Name: 127.0.0.1
    Address: 127.0.0.1#53
    Aliases:
    
    _kerberos._udp.test.alt has SRV record 0 100 88 dc1.test.alt.
    _kerberos._udp.test.alt has SRV record 0 100 88 dc2.test.alt.
    
    [root@dc1 /]# host -t SRV _kerberos._tcp.test.alt
    _kerberos._tcp.test.alt has SRV record 0 100 88 dc1.test.alt.
    _kerberos._tcp.test.alt has SRV record 0 100 88 dc2.test.alt.
    
Если в ответе отсутствуют SRV-записи, необходимо проверить:
  • настройки зоны DNS в Samba или Bind;
  • наличие зоны _msdcs.<домен>;
  • корректность работы DNS-сервера на контроллере домена.

69.3. Ошибки аутентификации

Типичные причины ошибок аутентификации:
  • рассинхронизация времени между клиентом и контроллером домена (Kerberos чувствителен к рассинхронизации времени более чем на 5 минут);
  • заблокированная учётная запись;
  • ошибки в Kerberos-конфигурации (/etc/krb5.conf);
  • отсутствие билета Kerberos.
Порядок проверки:
  1. Проверить работу NTP на контроллере домена:
    1. Убедиться, что UDP-порт 123 открыт:
      [root@dc1 /]# ss -tulnp | grep ':123'
      
      Или:
      [root@dc1 /]# netstat -anp | grep ':123'
      
    2. Проверить статус службы NTP (на примере chronyd):
      [root@dc1 /]# systemctl is-enabled chronyd
      [root@dc1 /]# systemctl is-active chronyd
      
      Если служба запущена, запустить:
      [root@dc1 /]# systemctl enable --now chronyd
      
      При ошибках — проверить статус:
      [root@dc1 /]# systemctl status chronyd
      
    3. Убедиться, что служба работает в режиме server:
      [root@dc1 /]# control chrony server
      
  2. Убедиться, что учётная запись пользователя не заблокирована:
    [root@dc1 /]# samba-tool user show <пользователь> | grep userAccountControl | awk '{if (and($2, 2)) print "DISABLED"; else print "ACTIVE"}'
    DISABLED
    
  3. Попробовать получить билет Kerberos (realm указывается заглавными буквами):
    [root@dc1 /]# kinit <пользователь;@TEST.ALT
    Если пароль неверный — будет выведено соответствующее уведомление:
    kinit: Password incorrect while getting initial credentials
    В случае успеха можно проверить выданный билет:
    [root@dc1 /]# klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: пользователь@TEST.ALT
    
    Valid starting       Expires              Service principal
    30.09.2025 17:19:34  01.10.2025 03:19:34  krbtgt/TEST.ALT@TEST.ALT
    	renew until 01.10.2025 17:19:33
    
    Для диагностики работы Kerberos можно включить отладку:
    [root@dc1 /]# KRB5_TRACE=/dev/stdout kinit <учётная_запись>@TEST.ALT
    
  4. Проверить конфигурацию Kerberos. В файле /etc/krb5.conf обязательно должны быть указаны следующие параметры:
    [libdefaults]
     dns_lookup_kdc = true
     dns_lookup_realm = false
     default_realm = TEST.ALT
    
  5. Если на клиенте поменялся провайдер (sssd ↔ winbind), следует убедиться, что владелец домашнего каталога соответствует UID/GID пользователя.
  6. Убедитесь, что нет конфликта имён между локальными и доменными учётными записями (например, user1 и user1@TEST.ALT). Вход такой учётной записью будет невозможен.
Если нет доступа к общим ресурсам, либо при доступе запрашивается логин/пароль:
  1. Убедиться, что получен Kerberos-билет (klist) и дата его действия является валидной.
  2. Убедиться, что доступ осуществляется не по IP или короткому имени, а по полному (FQDN) имени.
  3. Проверить доступ с помощью smbclient (при полученном Kerberos-билете):
    [user1@myhost1 /]$ smbclient -k -L dc1.test.alt
    
    Должен отобразиться список ресурсов без запроса пароля.
    [user1@myhost1 /]$ smbclient -k //dc1.test.alt/sysvol
    
    Должно произойти подключение к ресурсу без запроса пароля.
    Если этого не происходит, необходимо проверить:
    • синхронизацию времени;
    • членство в домене;
    • права доступа к ресурсу на сервере.

69.4. Проблемы на стороне клиента

69.4.1. Ошибка при вводе в домен

При попытке ввода через командную строку выдается ошибка:
Failed to join domain: Failed to find DC for domain FSRTN - The object was not found
При вводе в домен через графический интерфейс отображается ошибка:
Невозможно найти указанный домен
Для успешного ввода и дальнейшей работы машины в домене необходимо, чтобы она могла корректно разрешать все необходимые DNS-записи. Подробнее см. разделы Уровни журналирования и Проверка разрешения DNS.

69.4.2. Ошибка при подключении к IP-адресу 127.0.0.1

По умолчанию утилита net пытается подключиться к IP-адресу 127.0.0.1. Если служба Samba не прослушивает loopback-интерфейс, соединение завершается ошибкой:
# net rpc rights list -U administrator
Could not connect to server 127.0.0.1
Connection failed: NT_STATUS_CONNECTION_REFUSED
Чтобы устранить эту проблему, необходимо настроить Samba на прослушивание петлевого интерфейса, добавив в smb.conf строки:
interfaces = lo enp1s0
bind interfaces only = yes

Примечание

Чтобы временно обойти проблему, можно указать IP-адрес или имя хоста контроллера домена, добавив параметр -I <IP-адрес> или -S <Имя хоста> в команду net:
# net rpc rights list -U administrator -I 192.168.0.132
Password for [TEST\administrator]:
    SeMachineAccountPrivilege  Add machines to domain
    SeTakeOwnershipPrivilege  Take ownership of files or other objects
    …

69.4.3. Команда getent не показывает доменных пользователей и группы

Используя команды getent passwd и getent group, нельзя увидеть доменных пользователей и группы. Этот функционал отключен по умолчанию, чтобы сократить нагрузку на серверы.
Для проверки наличия доменного пользователя необходимо указать точное имя пользователя:
# getent passwd <имя_пользователя>
Например:
# getent passwd ivanov
Если команда getent passwd <имя_пользователя> ничего не возвращает, можно попробовать указать домен вручную:
# getent passwd <рабочая_группа>\<имя_пользователя>
Например:
# getent passwd "TEST\ivanov"
Если команда с указанием рабочей группы срабатывает, а без неё — нет, в файл smb.conf необходимо добавить строку:
winbind use default domain = yes

Примечание

Список пользователей можно посмотреть на сервере командой:
# samba-tool user list

69.5. Проблемы с присоединением к домену в роли контроллера домена

69.5.1. Рост базы данных при первичной репликации сложной инфраструктуры

При присоединении нового контроллера домена под управлением Samba к существующей инфраструктуре Active Directory с использованием хранилища MDB (backend mdb) возможен значительный рост размера базы данных на этапе первичной репликации. Этот рост может существенно превышать её итоговый рабочий объём из-за особенностей работы механизма репликации.

Примечание

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

Важно

Перед выполнением операции рекомендуется создать резервную копию базы данных.
Процедура сжатия базы данных:
# systemctl stop samba.service
# cd /var/lib/samba/private/sam.ldb.d/
# for i in *.ldb; do mv $i $i.bak; mdb_copy -n -c $i.bak $i.new; mv $i.new $i; done
# systemctl start samba.service

69.6. Проблемы с репликацией

Проверить состояние репликации:
[root@dc1 /]# samba-tool drs showrepl --summary -UAdministrator
В выводе должно быть указано ALL GOOD.
В противном случае необходимо проанализировать разделы INBOUND NEIGHBORS (входящая репликация) и OUTBOUND NEIGHBORS (исходящая репликация), чтобы выяснить в чью сторону возникают ошибки, и с какой репликацией ошибки с исходящей или входящей:
[root@dc1 /]# samba-tool drs showrepl --use-kerberos=required -UAdministrator@TEST.ALT --use-krb5-ccache=/tmp/krb5cc_0 | grep -A2 -B3 -e BOUND -e failed
DSA object GUID: 3fd9d6ae-1d33-4721-8e7b-be75999b8637
DSA invocationId: 3f871245-2220-44bd-b34f-64a0f6c42dfb

==== INBOUND NEIGHBORS ====

DC=DomainDnsZones,DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:56:27 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        4 consecutive failure(s).
        Last success @ Wed Oct  1 10:36:24 2025 +05
--
DC=ForestDnsZones,DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:56:31 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        4 consecutive failure(s).
        Last success @ Wed Oct  1 10:36:24 2025 +05
--
CN=Schema,CN=Configuration,DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:56:34 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        4 consecutive failure(s).
        Last success @ Wed Oct  1 10:36:24 2025 +05
--
DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:56:37 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        4 consecutive failure(s).
        Last success @ Wed Oct  1 10:36:24 2025 +05
--
CN=Configuration,DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:56:40 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        4 consecutive failure(s).
        Last success @ Wed Oct  1 10:36:25 2025 +05

==== OUTBOUND NEIGHBORS ====

DC=DomainDnsZones,DC=test,DC=alt
--
DC=test,DC=alt
    site2\DC2 via RPC
        DSA object GUID: fff1244c-b3e7-49e1-84d7-a3128340767e
        Last attempt @ Wed Oct  1 10:57:08 2025 +05 failed, result 1232 (WERR_HOST_UNREACHABLE)
        151 consecutive failure(s).
        Last success @ NTTIME(0)
Необходимо обратить внимание на строки с failed и кодами ошибок. Код WERR_HOST_UNREACHABLE означает, что целевой контроллер домена недоступен по сети.
Определение направления проблемы:
  • INBOUND: текущий сервер не может получить данные от партнёра.
  • OUTBOUND: текущий сервер не может отправить данные партнёру.
В приведённом примере все операции репликации с узлом site2\DC2 завершаются ошибкой WERR_HOST_UNREACHABLE. Это указывает на то, что хост dc2 недоступен (необходимо проверить сеть, брандмауэр, состояние службы Samba на dc2).

69.7. Сетевые проблемы

При возникновении сетевых проблем:
  1. Убедиться, что все необходимые порты открыты на контроллере домена (см. раздел Порты, используемые контроллером домена).
  2. Если используется фаервол — настроить правила или временно отключить его для тестирования.
  3. Убедиться в корректности сетевых настроек на клиенте:
    • корректные DNS-серверы (должны разрешать зону домена);
    • служба NTP настроена в режиме клиента.

69.8. Работа доверительных отношений

Алгоритм проверки:
  1. Если на контроллере домена используется встроенный DNS (SAMBA_INTERNAL), следует убедиться, что указан глобальный форвардинг на DNS-сервер доверенного домена (dns forwarder).
  2. Если на контроллере домена используется BIND9_DLZ (т.е. в /etc/samba/smb.conf в секции [global] указано server services = -dns), следует убедиться, что запросы в зону доверенного домена пересылаются на его DNS-сервер (через forwarders в named.conf).
  3. Если используется доверие типа forest, на клиентах нельзя использовать SSSD.
  4. Если используется доверие типа external, на клиентах использующих SSSD нужно явно указать доверенный домен в /etc/sssd/sssd.conf. В некоторых случаях требуется отключить проверку билетов:
    krb5_validate = false

69.9. Групповые политики

Подробную информацию о диагностике проблем, связанных с групповыми политиками см. в разделе Решение проблем.

Глава 70. Инструменты диагностики

70.1. Инструмент диагностики состояния контроллера домена

diag-domain-controller — утилита для диагностики корректности настройки компьютера в роли контроллера домена.
diag-domain-controller содержит набор тестов, проверяющих:
  • конфигурацию DNS, Kerberos и Samba;
  • состояние служб;
  • целостность системных файлов и баз данных.
diag-domain-controller имеет модульную структуру. Можно запустить все тесты сразу или выполнить отдельный модуль.
Установка:
# apt-get install diag-domain-controller
Синтаксис:
diag-domain-controller [опции] [<тест>]
где тест — название функции из списка тестов. Если не указывать название функции, будут запущены все доступные тесты.
Возможные опции:
  • -l, --list — вывести список доступных тестов;
  • -V, --version — показать версию и выйти;
  • -v, --verbose — подробный вывод в терминал;
  • -r[FILE], --report=[FILE] — сохранить отчёт в файл (report_<текущая дата>.txt) и создать архив, содержащий отчёт и копии файлов smb.conf, krb5.conf. Необязательный параметр — имя архива. Если имя не указано, будет создан архив $TMP/report_<текущая дата>.tar.gz;
  • -a, -alterator — формат вывода для интеграции с приложениями Alterator;
  • -h, --help — показать справку и выйти.
Возможные состояния тестов:
  • DONE — тест пройден успешно;
  • WARN — обнаружена некритичная проблема;
  • FAIL — тест завершился с ошибкой.
В таблице Тесты diag-domain-controller приведены тесты, доступные в diag-domain-controller.

Таблица 70.1. Тесты diag-domain-controller

Тест
Описание
is_domain_info_available
Проверка доступности просмотра общей информации о домене
is_hostname_correct
Проверка корректности FQDN узла
is_hostname_static_and_transient
Проверка, что статическое имя хоста задано и совпадает с временным (transient)
is_not_empty_sysvol
Проверка, что каталог sysvol не пуст.
При запуске от root также выводит неполный список файлов каталога
does_sysvol_contain_necessary_files
Проверка наличия обязательных подкаталогов <домен>/Policies и <домен>/scripts в sysvol.
Требуется запуск от root
is_samba_package_installed
Проверка установки в системе пакета (samba-dc или samba-dc-mitkrb5). Вывод информации о данных пакетах
is_samba_service_running
Проверка, что служба Samba запущена
is_resolve_local
Проверка, что контроллер домена разрешает DNS-запросы локально (файл /etc/resolv.conf содержит строку nameserver 127.0.0.1)
is_krb5_conf_file_exists
Проверка наличия и вывод содержимого файла конфигурации /etc/krb5.conf
is_smb_conf_file_exists
Проверка наличия и вывод содержимого файла конфигурации /etc/samba/smb.conf
is_there_way_to_cache_kerberos_tickets
Проверка метода кеширования билетов Kerberos (control krb5-conf-ccache)
is_sections_with_domain_name_in_krb5_empty
Проверка, что секции [realms] и [domain_realm] в файле /etc/krb5.conf не пусты
is_dns_lookup_kdc_enabled
Проверка, что включен поиск доменного имени Kerberos через DNS (dns_lookup_kdc = true в файле /etc/krb5.conf)
is_dns_lookup_realm_disabled
Проверка, что поиск доменного имени Kerberos через DNS отключён (dns_lookup_realm = false в файле /etc/krb5.conf)
is_resolv_conf_file_exists
Проверка наличия и вывод содержимого файла конфигурации /etc/resolv.conf
does_resolv_conf_and_default_realm_it_match
Проверка соответствия записи области (realm) в файле конфигурации /etc/krb5.conf одному из доменных имен в файле /etc/resolv.conf
does_smb_realm_and_krb5_default_realm_it_match
Проверка соответствия соответствие записи домена в файле конфигурации /etc/krb5.conf записи realm в файле конфигурации smb.conf
are_there_errors_in_samba_databases
Проверка целостности баз Samba. Требуется запуск от root
is_ntp_service_running
Проверка, что служба NTP запущена
is_time_synchronization_enabled
Проверяет, включена ли синхронизация времени
is_ports_listening
Проверка доступности необходимых сетевых портов
is_list_trusts_validated
Проверка списка доверенных доменов
is_nscd_service_disabled
Проверка, что служба nscd отключена
is_nslcd_service_disabled
Проверка, что служба nslcd отключена
Примеры (команды запускаются на контроллере домена):
  • вывод списка тестов:
    $ diag-domain-controller -l
    is_domain_info_available
    is_hostname_correct
    is_hostname_static_and_transient
    is_not_empty_sysvol
    does_sysvol_contain_necessary_files
    is_samba_package_installed
    is_samba_service_running
    is_resolve_local
    is_krb5_conf_file_exists
    is_smb_conf_file_exists
    is_there_way_to_cache_kerberos_tickets
    is_sections_with_domain_name_in_krb5_empty
    is_dns_lookup_kdc_enabled
    is_dns_lookup_realm_disabled
    is_resolv_conf_file_exists
    does_resolv_conf_and_default_realm_it_match
    does_smb_realm_and_krb5_default_realm_it_match
    are_there_errors_in_samba_databases
    is_ntp_service_running
    is_time_synchronization_enabled
    is_ports_listening
    is_list_trusts_validated
    is_nscd_service_disabled
    is_nslcd_service_disabled
    
  • запуск теста is_domain_info_available:
    $ diag-domain-controller is_domain_info_available
    =================================================
    General information about the domain controller:
    Forest           : test.alt
    Domain           : test.alt
    Netbios domain   : TEST
    DC name          : dc1.test.alt
    DC netbios name  : DC1
    Server site      : Default-First-Site-Name
    Client site      : newSite
    
    =================================================
    [DONE]: is_domain_info_available
    
  • запуск всех тестов:
    $ diag-domain-controller
    [DONE]: is_domain_info_available
    [DONE]: is_hostname_correct
    [DONE]: is_hostname_static_and_transient
    [WARN]: is_not_empty_sysvol
    [DONE]: does_sysvol_contain_necessary_files
    [DONE]: is_samba_package_installed
    [DONE]: is_samba_service_running
    [DONE]: is_resolve_local
    [DONE]: is_krb5_conf_file_exists
    [DONE]: is_smb_conf_file_exists
    [DONE]: is_there_way_to_cache_kerberos_tickets
    [DONE]: is_sections_with_domain_name_in_krb5_empty
    [DONE]: is_dns_lookup_kdc_enabled
    [DONE]: is_dns_lookup_realm_disabled
    [DONE]: is_resolv_conf_file_exists
    [DONE]: does_resolv_conf_and_default_realm_it_match
    [DONE]: does_smb_realm_and_krb5_default_realm_it_match
    [WARN]: are_there_errors_in_samba_databases
    [DONE]: is_ntp_service_running
    [DONE]: is_time_synchronization_enabled
    [DONE]: is_ports_listening
    [DONE]: is_list_trusts_validated
    [DONE]: is_nscd_service_disabled
    [DONE]: is_nslcd_service_disabled
    

70.2. Инструмент диагностики клиента домена

diag-domain-client — утилита для диагностики корректности настройки компьютера в роли клиента домена.
Утилита выполняет набор тестов, проверяющих:
  • конфигурацию DNS, Kerberos, Samba и PAM;
  • доступность контроллеров домена;
  • состояние необходимых пакетов и служб.
diag-domain-client имеет модульную структуру. Можно запустить все тесты сразу или выполнить отдельный модуль.
Процесс диагностики зависит от того, находится ли компьютер в домене или нет. Для корректной работы необходимо получить Kerberos-билет доменного пользователя (kinit user@DOMAIN). Выполнение некоторых проверок требует полномочий суперпользователя (иначе они будут пропущены).
Утилита позволяет записать результат в log-файл.
Установка:
# apt-get install diag-domain-client
Синтаксис:
diag-domain-client [опции] [<тест>]
где тест — название функции из списка тестов. Если не указывать название функции, будут запущены все доступные тесты.
Возможные опции:
  • -h, --help — показать справку и выйти;
  • -V, --version — показать версию и выйти;
  • -v, --verbose — подробный вывод;
  • -w[FILE], --logfile[=FILE] — сохранить отчёт в файл. Если файл не указан, отчёт будет записан в файл ./diag-domain-client.log. В случае если файл уже существует, создаются ротированные копии (например, diag-domain-client.log.1, diag-domain-client.log.2 и т.д.);
  • -f, --force — принудительная запись в существующий файл отчёта;
  • -l, --list — вывести список доступных тестов.
Возможные состояния тестов:
  • DONE — тест пройден успешно;
  • SKIP — тест пропущен из-за отсутствия прав root;
  • WARN — обнаружена некритичная проблема;
  • FAIL — тест завершился с ошибкой.

Примечание

Если компьютер введен в домен, статус FAIL выводится для тех проверок, когда несоответствие проверяемого элемента приводит к неработоспособности машины в домене.
При выполнении программы не суперпользователем некоторые проверки могут быть пропущены (SKIP) или находиться в состоянии WARN.
В таблице Тесты diag-domain-client приведены тесты, доступные в diag-domain-client.

Таблица 70.2. Тесты diag-domain-client

Тест/Проверка
Описание
check_hostnamectl
Проверка информации о настройках хоста.
С опцией -v отображает информацию о хосте: имя, система, версия ядра, архитектура, виртуализация (при наличии)
test_hostname
Проверяет, задано ли полное доменное имя (FQDN)
check_system_auth
Проверяет метод аутентификации пользователей, используемый в подсистеме PAM (sss, winbind — компьютер введен в домен, local — не введен).
С опцией -v выводит содержимое файла /etc/pam.d/system-auth
test_domain_system_auth
Проверяет, что метод аутентификации допустим для работы в домене (sss или winbind)
check_system_policy
Проверяет информацию об инструменте применения групповых политик
test_gpupdate_system_policy
Проверяет, настроено ли применение групповых политик
check_krb5_conf_exists
Проверяет наличие файла конфигурации krb5.conf
С опцией -v отображает права доступа и выводит содержимое /etc/krb5.conf
check_krb5_conf_ccache
Проверяет способ кеширования Kerberos-билетов.
С опцией -v отображает текущий способ кеширования Kerberos-билетов — keyring, file, dir
test_keyring_krb5_conf_ccache
Проверяет, что для кеширования используется keyring
check_krb5_conf_kdc_lookup
Проверяет, включен ли поиск Kerberos-имени домена через DNS (dns_lookup_kdc = true в файле /etc/krb5.conf)
check_krb5_keytab_exists
Проверяет наличие файла /etc/krb5.keytab. В этом файле хранятся принципалы и хеши пароля доменной учётной записи компьютера.
С опцией -v отображает права доступа и дату последнего изменения файла /etc/krb5.keytab
check_keytab_credential_list
Проверяет содержимое файла /etc/krb5.keytab.
С опцией -v отображает содержимое файла /etc/krb5.keytab.
Требуется запуск от root, иначе тест будет пропущен (SKIP)
check_resolv_conf
Проверяет наличие файла конфигурации разрешения имен resolv.conf
С опцией -v отображает права и содержимое файла /etc/resolv.conf.
compare_resolv_conf_with_default_realm
Сравнивает домен для поиска (поле search в /etc/resolv.conf) с доменом по умолчанию, указанным для Kerberos (default_realm из /etc/krb5.conf)
check_smb_conf
Проверяет наличие файла настроек конфигурации Samba
С опцией -v выводит содержимое файла /etc/samba/smb.conf.
compare_smb_realm_with_krb5_default_realm
Сравнивает домен, указанный в файле конфигурации Samba (realm в /etc/samba/smb.conf), с доменом по умолчанию, указанным для Kerberos (default_realm из /etc/krb5.conf)
test_smb_realm
Проверяет корректность заполнение настройки домена в конфигурационных файлах Samba (smb.conf) и Kerberos (krb5.conf)
test_domainname
Сравнивает доменное имя из /etc/hostname с именем домена в составе FQDN-имени узла
check_time_synchronization
Проверяет, доступна ли информация о часовом поясе, синхронизации времени с сервером (необходимо для корректной работы с сертификатами, электронной подписью, билетами Kerberos).
С опцией -v выводит подробную информацию — часовой пояс, временную зону и т.д.
test_time_synchronization
Проверяет, включена ли синхронизация времени
check_nameservers
Проверяет доступность всех контроллеров домена по имени (host <domain FQDN>) и IP-адресу (работает ли resolv.conf)
check_domain_controllers
Проверяет доступность всех контроллеров домена в домене (из SRV-записей)
check_kerberos_and_ldap_srv_records
Проверяет наличие SRV-записей _kerberos._udp.<domain FQDN> и _ldap._tcp.<domain FQDN>. Требуется для корректной работы машины в домене. Без записей Kerberos, sssd и winbind не смогут найти контроллеры домена
compare_netbios_name
Сравнивает короткое имя хоста из /etc/hostname с NetBios-именем машины (netbios name) в smb.conf
check_common_packages
Проверяет наличие установленных пакетов (alterator-auth, libnss-role, libkrb5 и libsmbclient)
check_group_policy_packages
Проверяет наличие установленных пакетов для управления групповыми политиками (local-policy и gpupdate)
check_sssd_ad_packages
Проверяет наличие установленного мета-пакета для аутентификации с помощью sssd (task-auth-ad-sssd)
check_sssd_winbind_packages
Проверяет наличие установленного мета-пакета для аутентификации с помощью winbind (task-auth-ad-winbind)
Примеры:
  • вывод списка тестов:
    $ diag-domain-client -l
    check_hostnamectl
    test_hostname
    check_system_auth
    test_domain_system_auth
    check_system_policy
    test_gpupdate_system_policy
    check_krb5_conf_exists
    check_krb5_conf_ccache
    test_keyring_krb5_conf_ccache
    check_krb5_conf_kdc_lookup
    check_krb5_keytab_exists
    check_keytab_credential_list
    check_resolv_conf
    compare_resolv_conf_with_default_realm
    check_smb_conf
    compare_smb_realm_with_krb5_default_realm
    test_smb_realm
    test_domainname
    check_time_synchronization
    test_time_synchronization
    check_nameservers
    check_domain_controllers
    check_kerberos_and_ldap_srv_records
    compare_netbios_name
    check_common_packages
    check_group_policy_packages
    check_sssd_ad_packages
    check_sssd_winbind_packages
    
  • запуск теста check_smb_conf:
    $ diag-domain-client check_smb_conf
    [DONE]: Check Samba configuration
    
  • запуск теста check_krb5_conf_kdc_lookup с подробным выводом информации:
    $ diag-domain-client check_krb5_conf_kdc_lookup -v
    ===============================================================================
    | Samba environment diagnostic tool |
    -------------------------------------------------------------------------------
    Version: 0.5
    Date: Пн 20 окт 2025 10:16:37 EET
    -------------------------------------------------------------------------------
    System information
    Kernel: 6.12.34-6.12-alt1
    Branch: p11
    ===============================================================================
    
    ===============================================================================
    | check_krb5_conf_kdc_lookup |
    -------------------------------------------------------------------------------
    
    /etc/krb5.conf: dns_lookup_kdc is enabled
    
    -------------------------------------------------------------------------------
    [DONE]: Check DNS lookup kerberos KDC status
    ===============================================================================
    
  • запуск всех тестов:
    $ diag-domain-client
    [DONE]: Check hostname persistance
    [DONE]: Test hostname is FQDN (not short)
    [DONE]: System authentication method
    [DONE]: Domain system authentication enabled
    [DONE]: System policy method
    [WARN]: System group policy enabled
    [DONE]: Check Kerberos configuration exists
    [DONE]: Kerberos credential cache status
    [DONE]: Using keyring as kerberos credential cache
    [DONE]: Check DNS lookup kerberos KDC status
    [DONE]: Check machine credential cache is exists
    [SKIP]: Check machine credentials list in keytab
    [DONE]: Check nameserver resolver configuration
    [DONE]: Compare krb5 realm and first search domain
    [DONE]: Check Samba configuration
    [DONE]: Compare samba and krb5 realms
    [DONE]: Check Samba domain realm
    [DONE]: Check hostname FQDN domainname
    [DONE]: Check time synchronization
    [DONE]: Time synchronization enabled
    [WARN]: Check nameservers availability
    [FAIL]: Check domain controllers list
    [DONE]: Check Kerberos and LDAP SRV-records
    [DONE]: Compare NetBIOS name and hostname
    [DONE]: Check common packages
    [FAIL]: Check group policy packages
    [DONE]: Check SSSD AD packages
    [WARN]: Check SSSD Winbind packages
    
  • запись вывода теста check_krb5_conf_kdc_lookup в файл /tmp/diag-domain-client.log:
    $ diag-domain-client check_krb5_conf_kdc_lookup -w/tmp/diag-domain-client.log
    [DONE]: Check DNS lookup kerberos KDC status
    
    содержимое файла /tmp/diag-domain-client.log:
    ===============================================================================
    | Samba environment diagnostic tool |
    -------------------------------------------------------------------------------
    Version: 0.5
    Date: Пн 20 окт 2025 10:17:11 EET
    -------------------------------------------------------------------------------
    System information
    Kernel: 6.12.34-6.12-alt1
    Branch: p11
    ===============================================================================
    
    ===============================================================================
    | check_krb5_conf_kdc_lookup |
    -------------------------------------------------------------------------------
    
    /etc/krb5.conf: dns_lookup_kdc is enabled
    
    -------------------------------------------------------------------------------
    [DONE]: Check DNS lookup kerberos KDC status
    ===============================================================================
    

70.3. ALT Diagnostic Tool

ALT Diagnostic Tool (ADT) — приложение для диагностики ОС с графическим и терминальным интерфейсом.
Утилита ADT позволяет:
  • проводить диагностику системы посредством набора подготовленных утилит;
  • выводить на экран результаты диагностики;
  • сохранять файл журнала с результатами диагностики;
  • выполнять операции, требующие привилегий, от учетной записи непривилигированного пользователя.
Программа ADT предназначена для:
  • системных администраторов;
  • опытных пользователей;
  • службы технической поддержки.
Запуск инструментов диагностики регулируется системным администратором, позволяя создавать отчеты пользователям, не передавая им административные полномочия.

70.3.1. Установка

Для работы с ADT необходимо установить:
  • ADT (пакет adt);
  • диагностические инструменты (например, пакеты diag-domain-client, diag-domain-controller).
Установка ADT:
# apt-get install adt
Установка инструментов диагностики состояния клиента домена и состояния контроллера домена:
# apt-get install diag-domain-client diag-domain-controller

70.3.2. Работа с ADT

Запустить и добавить в автозагрузку службу alterator-manager:
# systemctl enable --now alterator-manager.service
Запустить ADT можно:
  • из командной строки:
    $ adt
  • в рабочей среде GNOME: МенюСистемныеADT;
  • в рабочей среде Mate: МенюСистемныеADT;
  • в рабочей среде KDE5: Меню запуска приложенийНастройкиADT.
Внешний вид программы ADT без установленных инструментов диагностики:
Интерфейс ADT без установленных инструментов диагностики
Внешний вид программы ADT с инструментами диагностики:
Интерфейс ADT с установленными инструментами диагностики
Для выбора набора тестов следует дважды щелкнуть мышью по его названию, либо выделить набор и нажать кнопку Выбрать инструмент. Откроется окно с набором тестов инструмента:
ADT. Набор тестов для диагностики клиента домена
На панели инструментов доступны опции: Перейти к предыдущему окну, Остановить запуск тестов, Запустить все тесты в выбранном диагностическом инструменте, Остановить запуск тестов, Экспорт отчета, Сохранить журнал диагностического инструмента, Сбросить все тесты диагностического инструмента. Напротив каждого теста находятся кнопки Запустить и Журнал.
Нажатие на кнопку Запустить все тесты в выбранном диагностическом инструменте запускает весь набор тестов выбранного инструмента:
ADT. Результат выполнения набора тестов
Для того чтобы запустить отдельный тест, необходимо нажать кнопку Запустить, расположенную справа от названия теста:
ADT. Запуск отдельного теста
Нажатие на кнопку Журнал выводит отчет теста от утилиты инструмента диагностики (если инструмент поддерживает такую возможность):
ADT. Отчет теста
Для поиска конкретного теста среди доступных можно воспользоваться строкой Фильтр:
ADT. Фильтр
Для сохранения полного отчёта инструмента в файл (если инструмент поддерживает такую возможность) следует нажать кнопку Сохранить журнал диагностического инструмента на панели инструментов:
ADT. Сохранение отчета в файл

Примечание

Для возможности генерирования файла с отчетом, инструмент диагностики должен поддерживать опции -r, --report.

70.3.3. Руководство администратора

70.3.3.1. Компоненты

Alterator-manager — модульный сервис, предназначенный для конфигурации посредством D-Bus. Весь функционал реализуется в виде модулей, а интерфейсы описываются в конфигурационных файлах «alterator entry».
Система межпроцессного взаимодействия D-Bus — механизм для обмена сообщениями между различными программами в ОС. D-Bus позволяет программам отправлять сообщения и вызывать методы других программ, обеспечивая совместную работу и координацию между приложениями. D-Bus представляет из себя совокупность следующих шин:
  • Системная шина — создаётся при старте демона D-Bus. Предназначена для взаимодействия между различными системными службами, а также взаимодействие пользовательских приложений с этими службами;
  • Сессионная шина — создаётся для каждого пользователя во время авторизации как отдельный экземпляр. Предназначена для взаимодействия между пользовательскими приложениями в рамках одной сессии.
На шинах D-Bus регистрируются службы, предоставляющие определенные функции. Они могут быть как частью операционной системы, так и сторонними приложениями.
Для каждой службы заводятся объекты, представляющие собой абстракции реальных ресурсов или служб.
У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.
Объекты, создаваемые службами. Каждая служба может создавать объекты, которые представляют собой абстракции реальных ресурсов или служб. Например, служба сетевого менеджера может предоставлять объекты для каждого сетевого соединения.
Интерфейсы объектов. У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.
Каждая служба, поддерживающая D-Bus, представлена в виде объектов на этих шинах. А взаимодействие между ними осуществляется посредством интерфейсов и методов этих объектов.
На системной шине методы запускаются с правами root и имеют высокие привилегии. На сессионной шине методы запускаются с правами пользователя и не имеют доступа к системным ресурсам, которые требуют высоких привилегий. С точки зрения alterator-manager, диагностический инструмент является объектом на D-Bus, описанном в двух файлах «alterator entry»:
  • .backend — описывает интерфейс диагностического инструмента, обеспечивающий взаимодействие с D-Bus. В нем же описываются методы интерфейса: info, run, list, report;
  • .diagnostictool — описывает отображение диагностического инструмента в ADT. Содержит информацию о тестах, доступных в рамках описываемого диагностического инструмента.
alterator-module-executor — модуль альтератора для обработки файлов .backend и запуска исполняемых файлов.

70.3.3.2. Алгоритм работы

Алгоритм работы ALT Diagnostic Tool:
  1. Systemd служба alterator-manager во время запуска создает на шине D-Bus службу с именем «ru.basealt.alterator».
  2. Systemd служба alterator-module-executor собирает информацию из файлов .backend обо всех установленных диагностических инструментах и создает объекты на системной и сессионных (в зависимости от расположения backend-файлов) шинах D-Bus с именами вида «ru.basealt.alterator.<имя инструмента>».
  3. ADT формирует список диагностических инструментов, обращаясь к D-Bus и получая информацию обо всех объектах сервиса «ru.basealt.alterator», имеющих интерфейс «ru.basealt.alterator.diag1».
  4. Для каждого диагностического инструмента ADT вызывает на D-Bus метод List, чтобы получить список всех возможных тестов.
  5. ADT запускает через D-Bus метод Run, передав ему в качестве параметра имя теста.
  6. По коду возврата ADT получает информацию об успешном/неуспешном прохождении теста, а из данных, полученных из stderr и stdout, формирует журнал выполнения теста.
Блок-схема взаимодействия компонентов:
Блок-схема взаимодействия компонентов

70.3.3.3. Разработка инструмента диагностики

70.3.3.3.1. Формат файлов инструмента диагностики
Минимальный набор файлов для инструмента диагностики в ADT:
  • исполняемый файл;
  • файлы .backend и .diagnostictool (или .diag), описывающие сущности Alterator Entry.

Примечание

Оба варианта .diagnostictool и .diag считаются верными.
70.3.3.3.2. Требования к исполняемому файлу
Исполняемый файл может быть как бинарным, так и текстовым (написанным на интерпретируемом языке). Файл должен поддерживать запуск в следующем виде:
/путь_к_исполняемому_файлу {param}
где {param} — означает имя теста, который необходимо выполнить.
При успешном завершении теста исполняемый файл должен завершиться с кодом возврата 0. При неуспешном завершении теста — с кодом возврата отличным от 0.
Лог выполнения нужно выводить в стандартный вывод.
Необходима также поддержка следующих ключей:
  • -l или --list — вывод списка тестов. Список необходимо выводить в стандартный вывод. Имя каждого теста должно быть с новой строки;
  • -r или --report — сгенерировать файл с отчетом. Файл с отчетом может представлять собой как текстовые данные, так и бинарные (например, архив). Его содержимое необходимо направить в стандартный вывод. ADT получит этот вывод и сохранит в файл с именем вида «имя_инструмента_дата» и суффиксом, указанным в файле .diagnostictool.
Исполняемый файл рекомендуется разместить в каталоге согласно стандарту FHS (Filesystem Hierarchy Standard).
70.3.3.3.3. Рекомендации к файлам .backend и .diagnostictool
Для описания файлов .backend и .diagnostictool следует воспользоваться спецификацией Alterator Entry.
Файлы .backend и .diagnostictool являются текстовыми и содержат описание в виде секций. Синтаксис файлов:
[имя секции1]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секции2]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секцииN]
Поле1 = значение
Поле2 = значение
ПолеN = значение
При этом следует учитывать:
  • все поля чувствительны к регистру и должны начинаться с заглавной буквы;
  • перед и после знака «=» пробелы;
  • значения полей указываются без кавычек;
  • значения могут содержать пробелы;
  • если строка начинается с символа «#», то она считается комментарием и при чтении информации из файла игнорируется.
Имя каталога должно соответствовать суффиксу в имени файла:
  • ./backends для файла .backend;
  • ./diagnostictools для файла .diagnostictool (или .diag).
70.3.3.3.3.1. Файл .diagnostictool
Файл .diagnostictool имеет имя вида <имя диагностического инструмента>.diagnostictool.
Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге /usr/share/alterator/diagnostictools/. В противном случае рекомендуется использовать каталог /etc/alterator/diagnostictools/.
Файл .diagnostictool содержит информацию для GUI. Он включает секцию [Alterator Entry] и секции, описывающие варианты тестирования.
Секция [Alterator Entry]:
  • [Alterator Entry]
    • Name — идентификатор инструмента (имя без пробелов);
    • Type — всегда Diagnostictool;
    • DisplayName — имя инструмента;
    • DisplayName[локаль] — имя инструмента, выводящееся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Comment — описание инструмента;
    • Comment[локаль] — описание, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Icon — имя файла с иконкой;
    • ReportSuffix — суффикс файла с отчетом. Этот файл будет создаваться при вызове метода Report.
  • Секции, описывающие варианты тестирования:
    • [Название секции соответствует названию теста]
    • DisplayName — идентификатор теста (имя без пробелов);
    • DisplayName[локаль] — имя теста, выводящееся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Comment — описание теста;
    • Comment[локаль] — описание теста, выводящееся в GUI, если используется интерфейс с использованием указанной в скобках локали.
70.3.3.3.3.2. Файл .backend
Файл .backend имеет имя вида <имя диагностического инструмента>.ru.basealt.alterator.backend.
Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге:
  • /usr/share/alterator/backends/system — если объект необходимо создать на системной шине;
  • /usr/share/alterator/backends/user — если объект необходимо создать на сессионной шине;
В противном случае рекомендуется использовать каталог:
  • /etc/alterator/backends/system/ — если объект необходимо создать на системной шине;
  • /etc/alterator/backends/user/ — если объект необходимо создать на сессионной шине;
Секция [Alterator Entry] описывает информацию об объекте и содержит следующие поля:
  • [Alterator Entry]
    • Type — содержит тип метода. Всегда имеет значение Backend;
    • Module — всегда executor;
    • Name — идентификатор инструмента (имя без пробелов);
    • Interface — идентификатор интерфейса. Имеет значение ru.basealt.alterator.diag1. Можно сократить до diag1;
    • thread_limit — указывает максимальное число потоков при одновременном выполнении нескольких методов.
Секция Info описывает метод Info и содержит следующие поля:
  • [Info]
    • execute — в качестве параметра необходимо передать команду, выводящую содержимое файла .diagnostictool (cat <путь к файлу>);
    • stdout_bytes — всегда enabled;
    • thread_limit — всегда 3;
    • action_id — содержит идентификатор метода. Всегда имеет значение Info.
Секция Run описывает метод Run и содержит следующие поля:
  • [Run]
    • execute — содержит строку для запуска тестов вида <путь к исполняемому файлу> {param};
    • stdout_signal_name — всегда diag1_stdout_signal. ADT ожидает сигнал с таким именем;
    • stderr_signal_name — всегда diag1_stderr_signal. ADT ожидает сигнал с таким именем;
    • action_id — содержит идентификатор метода. Всегда имеет значение Run.
Секция List описывает метод List и содержит следующие поля:
  • [List]
    • execute — содержит команду для вывода списка всех возможных тестов в виде <путь к исполняемому файлу> -l;
    • stdout_strings — всегда enabled;
    • action_id — содержит идентификатор метода. Всегда имеет значение List.
Секция Report содержит следующие поля:
  • [Report]
    • execute — содержит команду для создания отчета в виде <путь к исполняемому файлу> -R;
    • stdout_bytes — всегда enabled;
    • action_id — содержит идентификатор метода. Всегда имеет значение Report.

70.3.3.4. Пример инструмента диагностики

Ниже представлен пример диагностического инструмента для определения производителя материнской платы.
Пример состоит из трех файлов:
  • исполняемый файл: /usr/bin/diag-example;
  • файл .backend: /usr/share/alterator/backends/diag-example.backend;
  • файл .diag, описывающий тесты: /usr/share/alterator/diagnostictools/diag-example.diag.
70.3.3.4.1. Исполняемый файл
Содержимое исполняемого файла /usr/bin/diag-example:
#!/bin/bash
#
# Copyright (c) 2024 Evgeny Sinelnikov <sin@altlinux.org>
#
# Example diagnostic tool
#
# SPDX-License-Identifier: GPL-2.0-or-later
#

set -euo pipefail

. shell-getopt

PROG="${0##*/}"
PROG_VERSION='0.0.1'

cmd="run"
global_retval=0

print_version()
{
cat <<EOF
$PROG version $PROG_VERSION
Written by Evgeny Sinelnikov <sin@altlinux.org>

Copyright (C) 2024 Evgeny Sinelnikov <sin@altlinux.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
EOF
exit
}

show_usage()
{
cat <<EOF
$PROG - example diagnostic tool.

Usage: $PROG [options] [<diagnostic-task>]

Options:
-l, --list                list of diagnostic tasks;
-V, --version             print program version and exit;
-h, --help                show this text and exit.

Report bugs to https://bugzilla.altlinux.org/

EOF
exit
}

TEMP=$(getopt -n "$PROG" -o "l,V,h" -l "list,version,help" -- "$@") || show_usage
eval set -- "$TEMP"

while :; do
case "$1" in
    --) shift; break
        ;;
    -l|--list) cmd="list";
        ;;
    -V|--version) print_version
        ;;
    -h|--help) show_usage
        ;;
    *) fatal "Unrecognized option: $1"
        ;;
esac
shift
done

task_list="$*"

task_show()
{
local func="$1"

echo "$func"
}

task_run()
{
local retval=126
local func="$1"

if test -n "$task_list"; then
    echo "$task_list" | tr ' ' '\n' | grep -q "^$func\$" ||
        return 0
fi

$func && retval=0 || retval="$?"
test $retval = 0 || global_retval=1

return $retval
}

task()
{
local task="$1"

case "$cmd" in
    list) task_show "$task"
        ;;
    run) task_run "$task" && echo "[DONE]: $task" || echo "[FAIL]: $task"
        ;;
    *) fatal "Unrecognized command: $cmd"
        ;;
esac
}

is_gigabyte()
{
/usr/sbin/dmidecode -s baseboard-manufacturer | grep -q "^Gigabyte Technology"
}

is_std_def_kernel_running()
{
uname -r | grep -q '^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+-std-def-'
}

task is_gigabyte
task is_std_def_kernel_running

exit "$global_retval"
70.3.3.4.2. Файл .backend
Содержимое файла /usr/share/alterator/backends/diag-example.backend:
[Alterator Entry]
Type = Backend
Module = executor
Name = diag_example
Interface = diag1

[Info]
execute = cat /usr/share/alterator/diagnostictools/diag-example.diag
stdout_bytes = enabled
stdout_byte_limit = 200000
action_id = Info

[Run]
execute = diag-example {param}
stdout_signal_name = diag_example_stdout_signal
stderr_signal_name = diag_example_stderr_signal
thread_limit = 1
action_id = Run

[List]
execute = diag-example -l
stdout_strings = enabled
stdout_strings_limit = 200000
action_id = List
70.3.3.4.3. Файл .diag, описывающий тесты
Содержимое файла /usr/share/alterator/diagnostictools/diag-example.diag:
[Alterator Entry]
Type = diag
Name = Example
DisplayName = Diagnostic tool example
DisplayName[ru] = Пример инструмента диагностики
Comment = Diagnostic tool comment
Comment[ru] = Комментарий к диагностическому инструменту
Icon = system-run

[is_gigabyte]
DisplayName = Is motherboard manufacturer — Gigabyte?
DisplayName[ru] = Производитель материнской платы — Gigabyte?
70.3.3.4.4. Отображение диагностического инструмента в интерфейсе ADT

Примечание

Для того чтобы новый диагностический инструмент отображался интерфейсе ADT, необходимо перезапустить alterator-manager:
# systemctl restart alterator-manager.service
Пример отображения диагностического инструмента в интерфейсе ADT
Набор тестов инструмента

70.3.4. Ошибки и нестандартные случаи

Если диагностический инструмент не отображается, необходимо проверить объект alterator-manager с именем ru.basealt.alterator на системной шине D-Bus:

Примечание

Для этого можно использовать утилиту D-Feet (пакет d-feet):
D-Feet

Часть X. Примечания

Глава 71. Настройка беспарольного доступа по SSH

Генерация SSH-ключа (на DC1):
# ssh-keygen -t ed25519
На запрос о файле для сохранения ключа можно нажать Enter (используется путь по умолчанию). На запрос о пароле для ключа можно также нажать Enter (без установки пароля).
Скопировать публичную часть SSH-ключа на второй контроллер домена (DC2) для пользователя user:
# ssh-copy-id -i ~/.ssh/id_ed25519.pub user@dc2.test.alt
Скопировать публичную часть SSH-ключа для администратора (root) на DC2. Для этого необходимо подключиться к DC2 от имени пользователя user, переключиться на пользователя root и скопировать публичную часть ключа:
# ssh user@dc2.test.alt
[user@dc2 ~]$ su -
Password:
[root@dc2 ~]# cat /home/user/.ssh/authorized_keys >> .ssh/authorized_keys
[root@dc2 ~]# exit
выход
[user@dc2 ~]$ exit
выход
Connection to dc2 closed.
Теперь можно подключаться к DC2 по SSH и выполнять команды с привилегиями администратора (root) без ввода пароля.

Глава 72. Центр управления системой

Центр управления системой (ЦУС, альтератор) представляет собой удобный интерфейс для выполнения наиболее востребованных административных задач: добавления и удаления пользователей, настройки сетевых подключений, просмотра информации о состоянии системы и т.п.
ЦУС в Альт Домен представлен в трёх вариантах:
  • консольный интерфейс (alteratorctl);
  • графический интерфейс;
  • веб-интерфейс, позволяющий управлять сервером с любого компьютера сети.
Графический и веб-интерфейс ЦУС состоит из модулей. Каждый модуль отвечает за настройку определённой функции или свойства системы.
Консольный интерфейс alteratorctl включает модули: компоненты, редакции, информация о системе, пакеты, диагностика, менеджер системных интерфейсов.
Если Альт Домен установлен с графическим окружением (GNOME), доступны все три интерфейса. В минимальной установке без графики доступен только консольный интерфейс alteratorctl. Веб-интерфейс может быть установлен дополнительно через компоненты: alteratorctl components.
Запустить ЦУС в графической среде можно следующими способами:
  • в графической среде GNOME: Меню GNOMEНастройкиЦентр управления системой;
  • нажав кнопку , расположенную на панели задач;
  • из командной строки: командой acc.
По умолчанию запускается Alterator на D-Bus — альтернативная реализация Alterator, использующая взаимодействие модулей через шину D-Bus.
Alterator на D-Bus
Для запуска ЦУС в Альт Домен достаточно прав обычного пользователя. Некоторые модули (например, О системе) работают без повышенных привилегий. При доступе к модулям, требующим административных прав, будет запрошен пароль администратора (root):
Запрос пароля администратора для запуска модуля Alterator на D-Bus

Примечание

В отдельных случаях пароль администратора потребуется ввести для выполнения конкретных действий (например, установки или удаления пакетов).
При необходимости можно переключиться на предыдущую версию ЦУС (Alterator legacy), нажав кнопку Переключиться на старую версию.
Для запуска Alterator legacy будет запрошен пароль администратора системы (root):
Запрос пароля администратора для запуска Alterator legacy
После успешного входа будет запущен Alterator legacy.
Alterator legacy

Примечание

Запустить Alterator legacy можно вручную:
$ acc-legacy
Веб-интерфейс ЦУС доступен, если при устновке системы была выбрана одна из групп приложений:
  • Поддержка графической подсистемы (GNOME)
  • Поддержка управления через web-интерфейс
Если веб-интерфейс не установлен, его можно добавить, установив компонент alterator-legacy-web (или пакет alterator-fbi).
Перед установкой можно проверить статус компонента:
$ alteratorctl components status alterator-legacy-web

Компонент: Web-интерфейс - Альтератор (legacy)
Категория: Альтератор (legacy)
Статус: не установлен
Список пакетов, входящих в компонент:
[ ] alterator-fbi
Установка компонента:
# alteratorctl components install alterator-legacy-web
После установки компонента необходимо запустить веб-службу сервера ЦУС:
# systemctl enable --now ahttpd.service
Работа с ЦУС может происходить из любого веб-браузера. Для начала работы необходимо перейти по адресу https://ip-адрес:8080/.
При запуске центра управления системой необходимо ввести в соответствующие поля имя пользователя (root) и пароль пользователя:
Вход в систему
После входа будут доступны все возможности ЦУС на той машине, к которой было произведено подключение через веб-интерфейс.
Веб-интерфейс центра управления системой
Список установленных пакетов, относящихся к ЦУС, можно посмотреть, выполнив команду:
$ rpm -qa | grep alterator*
Прочие пакеты для ЦУС можно найти, выполнив команду:
$ apt-cache search alterator*
Модули можно дополнительно загружать и удалять как обычные программы:
# apt-get install alterator-net-openvpn
# apt-get remove alterator-net-openvpn
После установки модуля с веб-интерфейсом требуется перезапустить службу ahttpd:
# systemctl restart ahttpd