Product SiteDocumentation Site

Альт Сервер 11.1

Документация

Руководство пользователя

Редакция ноябрь, 2025

Елена Мишина

Сергей Зайцев

Юридическое уведомление

Данный документ распространяется на условиях свободной лицензии FDL (Free Documentation License) версии 1.3.
Данный документ не содержит текста, помещаемого на первой или последней странице обложки. Данный документ не содержит неизменяемого текста.

Аннотация

Добро пожаловать в документацию дистрибутива Альт Сервер. Данное руководство предназначено как для начинающих, так и для опытных пользователей. Руководство описывает подготовку системы для установки, процесс установки дистрибутива, а также процедуру настройки и использования системы.
Названия компаний и продуктов, встречающихся в руководстве, могут являться торговыми знаками соответствующих компаний.
Данное руководство соответствует текущему состоянию сведений, но какие-либо окончательные правки могли не попасть в него. В случае обнаружения ошибок и неточностей в руководство вносятся изменения.
I. Что такое Альт Сервер?
1. Что такое Альт Сервер
2. Что такое Linux
2.1. Свободные программы
2.2. Разработка Linux
2.3. Защищённость
2.4. Дистрибутивы Linux
2.5. Новичку
3. Что такое системы Альт
3.1. ALT Linux Team
3.2. Сизиф
3.3. Что такое одиннадцатая платформа
3.3.1. Основные новшества одиннадцатой платформы
II. Установка дистрибутива
4. Подготовка установочного диска
4.1. Запись ISO-образа дистрибутива на DVD
4.1.1. Запись образа диска под операционной системой MS Windows
4.1.2. Запись образа диска под операционной системой Linux
4.2. Запись установочного образа на USB Flash
4.2.1. В операционной системе Windows
4.2.2. В операционной системе Linux
4.2.3. В операционной системе OS X
4.2.4. Проверка целостности записанного образа
5. Сохранение данных и меры предосторожности
6. Начало установки: загрузка системы
6.1. Способы первоначальной загрузки
6.2. Загрузка системы
6.3. Загрузка с помощью последовательного порта
7. Последовательность установки
8. Язык
9. Выбор редакции
10. Лицензионное соглашение
11. Дата и время
12. Подготовка диска
12.1. Выбор профиля разбиения диска
12.2. Автоматический профиль разбиения диска
12.3. Ручной профиль разбиения диска
12.4. Дополнительные возможности разбиения диска
12.4.1. Создание программного RAID-массива
12.4.2. Создание LVM-томов
12.4.3. Создание шифрованных разделов
12.4.4. Создание подтомов BtrFS
12.4.5. Настройка RAID-массива с IMSM-метаданными (Intel VROC)
13. Установка системы
13.1. Дополнительные приложения
13.2. Установка пакетов
14. Сохранение настроек
15. Установка загрузчика
16. Настройка сети
17. Администратор системы
18. Системный пользователь
19. Установка пароля на LUKS-разделы
20. Информация о завершении установки
21. Обновление системы до актуального состояния
22. Автоматическая установка системы (autoinstall)
22.1. Файлы автоустановки
22.1.1. Формат файла vm-profile.scm
22.1.2. Формат файла pkg-groups.tar
22.1.3. Формат файла autoinstall.scm
22.1.4. Формат файла install-scripts.tar
22.2. Запуск автоматической установки
23. Первая помощь
23.1. Проблемы при установке системы
23.2. Проблемы с загрузкой системы
23.3. Полезные ссылки
III. Начало использования Альт Сервер
24. Загрузка системы
25. Получение доступа к зашифрованным разделам
26. Вход в систему
26.1. Вход и работа в консольном режиме
26.2. Виртуальная консоль
26.3. Вход и работа в системе в графическом режиме
IV. Рабочий стол GNOME
27. Рабочий стол GNOME
27.1. GNOME: Область рабочего стола
27.2. Панель GNOME
27.3. Запуск приложений
28. Настройка параметров GNOME
29. Расширяемый центр управления (Tuner)
30. Полезные комбинации клавиш
V. Настройка системы
31. Центр управления системой
31.1. Описание
31.2. Применение центра управления системой
31.3. Запуск центра управления системой в графической среде
31.4. Использование веб-ориентированного центра управления системой
31.4.1. Установка
31.4.2. Запуск
31.5. Модули ЦУС
32. Настройка сети
32.1. NetworkManager
32.2. Настройка в ЦУС
33. Центр приложений
33.1. Установка/удаление программ
33.2. Обновление системы
VI. Alterator на D-Bus
34. Alteratorctl
34.1. Модуль manager
34.2. Модуль editions
34.3. Модуль components
34.4. Модуль diag
34.5. Модуль packages
34.6. Модуль systeminfo
35. Системная информация
35.1. Запуск
35.2. Работа с модулем
36. Альт Компоненты
36.1. Запуск
36.2. Работа с компонентами
37. Приложение Пакеты
37.1. Запуск
37.2. Управление репозиториями (вкладка Repo)
37.3. Управление пакетами (вкладка APT)
37.4. Управление RPM-пакетами (вкладка RPM)
VII. Средства удаленного администрирования
38. Вход в систему
39. Настройка подключения к Интернету
39.1. Конфигурирование сетевых интерфейсов
39.2. Объединение сетевых интерфейсов
39.3. Сетевые мосты
39.4. VLAN интерфейсы
39.5. NAT
39.6. Автоматическое присвоение IP-адресов (DHCP-сервер)
40. Развертывание доменной структуры
41. Сетевая установка операционной системы на рабочие места
41.1. Подготовка сервера
41.2. Подготовка рабочих станций
42. FTP-сервер
43. Удостоверяющий центр
44. Соединение удалённых офисов (OpenVPN-сервер)
44.1. Настройка OpenVPN-сервера
44.2. Настройка клиентов
45. Доступ к службам сервера из сети Интернет
45.1. Внешние сети
45.2. Список блокируемых хостов
46. Настройка ограничений на использование USB-устройств
46.1. Информационное поле
46.2. Список USB-устройств
46.3. Предустановки
46.4. Добавление правил
46.4.1. Правила по классу интерфейса
46.4.2. Правила по VID&PID
46.4.3. Правила по хэшу
46.4.4. Другие правила
46.4.5. Загрузка правил из файла
46.5. Удаление правил
46.6. Просмотр журнала аудита
47. Настройка ограничения доступа к файловой системе USB-­устройства
47.1. Запуск/останов службы
47.2. Список устройств
47.3. Добавление/удаление правил
47.4. Просмотр журнала аудита
48. Статистика
48.1. Сетевой трафик
49. Обслуживание сервера
49.1. Мониторинг состояния системы
49.2. Системные службы
49.3. Обновление системы
49.4. Обновление ядра ОС
49.5. Обновление систем, не имеющих выхода в Интернет
49.5.1. Настройка веб-сервера
49.5.2. Настройка FTP-сервера
49.6. Локальные учётные записи
49.7. Администратор системы
49.8. Дата и время
49.9. Агент наблюдения
49.10. Ограничение использования диска
49.11. Выключение и перезагрузка компьютера
50. Права доступа к модулям
VIII. Корпоративная инфраструктура
51. Альт Домен
51.1. Создание нового домена
51.1.1. Установка пакетов
51.1.2. Остановка конфликтующих служб
51.1.3. Восстановление к начальному состоянию Samba
51.1.4. Установка имени контроллера домена
51.1.5. Сетевые настройки
51.1.6. Создание домена в ЦУС
51.1.7. Создание домена одной командой
51.1.8. Интерактивное создание домена
51.1.9. Запуск службы
51.1.10. Настройка Kerberos
51.1.11. Проверка работоспособности домена
51.2. Повышение уровня схемы, функционального уровня домена
51.3. Управление пользователями
51.4. Присоединение к домену в роли контроллера домена
51.5. Проверка результатов присоединения
51.6. Репликация
51.7. Подключение к домену на рабочей станции
51.7.1. Подготовка
51.7.2. Ввод в домен
52. Групповые политики
52.1. Развертывание групповых политик
52.2. Пример создания групповой политики
53. Samba в режиме файлового сервера
53.1. Настройка smb.conf
53.2. Монтирование ресурса Samba через /etc/fstab
54. SOGo
54.1. Установка
54.2. Подготовка среды
54.3. Включение веб-интерфейса
54.4. Настройка электронной почты
54.4.1. Настройка Postfix
54.4.2. Настройка Dovecot
54.4.3. Безопасность
54.4.4. Проверка конфигурации
54.5. Настройка автоответчика, переадресации и фильтрации
54.6. Настройка общих папок в SOGo
55. FreeIPA
55.1. Установка сервера FreeIPA
55.2. Добавление новых пользователей домена
55.3. Установка FreeIPA клиента и подключение к серверу
55.3.1. Установка FreeIPA клиента
55.3.2. Подключение к серверу в ЦУС
55.3.3. Подключение к серверу в консоли
55.3.4. Вход пользователя
55.4. Удаление клиента FreeIPA
55.5. Настройка репликации
56. Система мониторинга Zabbix
56.1. Установка сервера PostgreSQL
56.2. Настройка PHP
56.3. Настройка и запуск Zabbix-сервера
56.4. Установка веб-интерфейса Zabbix
56.5. Установка клиента Zabbix
56.6. Добавление нового хоста на Zabbix-сервер
56.7. Авторегистрация узлов
57. Отказоустойчивый кластер (High Availability) на основе Pacemaker
57.1. Настройка узлов кластера
57.1.1. Настройка разрешений имён узлов
57.1.2. Настройка SSH-подключения между узлами
57.2. Установка кластерного ПО и создание кластера
57.3. Настройка параметров кластера
57.3.1. Кворум
57.3.2. Настройка STONITH
57.4. Настройка ресурсов
58. Система виртуальных рабочих мест OpenUDS
58.1. Установка
58.1.1. Установка MySQL (MariaDB)
58.1.2. Установка OpenUDS Server
58.1.3. OpenUDS Tunnel
58.2. Обновление OpenUDS
58.3. Настройка OpenUDS
58.3.1. Поставщики услуг
58.3.2. Серверы
58.3.3. Настройка аутентификации пользователей
58.3.4. Настройка менеджера ОС
58.3.5. Транспорт
58.3.6. Сети
58.3.7. Туннели
58.3.8. Пулы услуг
58.3.9. Мета-пулы
58.3.10. Управление доступом по календарю
58.3.11. Настройка разрешений
58.3.12. Уведомители
58.3.13. Конфигурация OpenUDS
58.4. Подготовка шаблона виртуальной машины
58.4.1. Шаблон ВМ с ОС Альт
58.4.2. Шаблон ВМ с ОС Windows
58.5. Настройка клиента OpenUDS
58.5.1. Клиент с ОС Альт
58.5.2. Клиент с ОС Windows
58.6. Подключение пользователя к виртуальному рабочему месту
58.7. Отказоустойчивое решение
58.7.1. Конфигурация серверов MySQL
58.7.2. Настройка серверов HAProxy
58.7.3. Настройка OpenUDS
59. Система резервного копирования Proxmox Backup Server
59.1. Терминология
59.2. Установка PBS
59.2.1. Установка сервера PBS
59.2.2. Установка клиента PBS
59.3. Веб-интерфейс PBS
59.4. Настройка хранилища данных
59.4.1. Управление дисками
59.4.2. Создание локального хранилища данных
59.4.3. Съёмные хранилища данных
59.4.4. Управление хранилищами данных
59.5. Управление трафиком
59.6. Управление пользователями
59.6.1. Области аутентификации
59.6.2. API-токены
59.6.3. Управление доступом
59.6.4. Двухфакторная аутентификация
59.7. Управление удалёнными PBS и синхронизация хранилищ
59.7.1. Удалённые сервера
59.7.2. Задания синхронизации
59.8. Клиент резервного копирования
59.8.1. Создание резервной копии
59.8.2. Создание зашифрованной резервной копии
59.8.3. Восстановление данных
59.8.4. Аутентификация и завершение сеанса
59.9. Интеграция с PVE
59.10. Резервное копирование на ленту
59.10.1. Поддерживаемое оборудование
59.10.2. Быстрый старт
59.10.3. Настройка резервного копирования
59.10.4. Администрирование
59.11. Уведомления
59.11.1. Цели уведомлений (Notification Targets)
59.11.2. Триггеры уведомлений (Notification Matchers)
59.11.3. Пересылка системной почты
59.11.4. Разрешения
59.11.5. Режим уведомления
60. Система резервного копирования UrBackup
60.1. Установка UrBackup
60.1.1. Сервер UrBackup
60.1.2. Клиент UrBackup
60.2. Настройка резервного копирования
60.3. Создание резервных копий
60.4. Утилита urbackupclientctl
IX. Управление виртуализацией на основе libvirt
61. Установка сервера
62. Утилиты управления
62.1. Утилита Virsh
62.2. Утилита virt-install
62.3. Утилита qemu-img
62.4. Менеджер виртуальных машин virt-manager
63. Подключение к гипервизору
63.1. Управление доступом к libvirt через SSH
63.2. Подключение к гипервизору с помощью virsh
63.3. Настройка соединения с удаленным гипервизором в virt-manager
64. Создание виртуальных машин
64.1. Создание ВМ на основе файла конфигурации (утилита virsh)
64.2. Создание ВМ с помощью virt-install
64.3. Создание ВМ с помощью virt-manager
65. Запуск и управление функционированием ВМ
65.1. Управление состоянием ВМ в командной строке
65.2. Управление состоянием ВМ в менеджере виртуальных машин
65.3. Подключение к виртуальному монитору ВМ
65.3.1. Использование протокола SPICE
65.3.2. Использование протокола VNC
66. Управление ВМ
66.1. Редактирование файла конфигурации ВМ
66.2. Получение информации о ВМ
66.3. Конфигурирование ВМ в менеджере виртуальных машин
66.4. Мониторинг состояния
67. Управление виртуальными сетевыми интерфейсами и сетями
67.1. Управление виртуальными сетями в командной строке
67.2. Управление виртуальными сетями в менеджере виртуальных машин
67.3. Режимы работы виртуальной сети
67.3.1. Сеть на основе моста
67.3.2. Маршрутизируемая сеть
67.3.3. Сеть на основе NAT
67.3.4. Изолированная сеть
68. Управление хранилищами
68.1. Управление хранилищами в командной строке
68.2. Настройка хранилищ в менеджере виртуальных машин
69. Миграция ВМ
69.1. Миграция с помощью virsh
69.2. Миграция ВМ в менеджере виртуальных машин
70. Снимки ВМ
70.1. Управления снимками ВМ в консоли
70.2. Управления снимками ВМ в менеджере виртуальных машин
71. Регистрация событий libvirt
72. Управление доступом в виртуальной инфраструктуре
73. GNOME Boxes — создание и управление ВМ
73.1. Создание ВМ
73.2. Настройки ВМ
73.3. Взаимодействие с гостевой ОС
73.3.1. Настройки сети
73.3.2. Перенаправление USB-устройств
73.3.3. Создание общей сетевой папки
73.4. Управление снимками ВМ
73.5. Изменение каталога ВМ
X. Контейнерные технологии
74. LXC
74.1. Установка и настройка LXC
74.1.1. Подготовка для создания контейнера
74.1.2. Создание контейнера
74.1.3. Работа с контейнерами
74.1.4. Ограничение ресурсов контейнеров
75. Docker
75.1. Установка и настройка Docker
75.1.1. Загрузка образов Docker
75.1.2. Создание контейнера Docker
75.1.3. Основные команды Docker
75.1.4. Создание кластера Docker Swarm
75.1.5. Тестовый запуск nginx
75.1.6. Отказоустойчивость
76. Podman
76.1. Установка и настройка Podman
76.1.1. Настройка rootless режима
76.1.2. Настройка сети
76.1.3. Тестовый запуск nginx
76.1.4. Создание Pod
76.1.5. Управление Pod
77. Kubernetes
77.1. Установка и настройка Kubernetes
77.1.1. Создание кластера Kubernetes
77.1.2. Тестовый запуск nginx
77.2. Кластер высокой доступности Kubernetes
77.2.1. Стековая (составная) топология etcd
77.2.2. Внешняя etcd-топология
77.2.3. Создание HA-кластера с помощью kubeadm
XI. Установка пакетов для опытных пользователей
Введение
78. Источники программ (репозитории)
78.1. Редактирование репозиториев
78.1.1. Утилита apt-repo
78.1.2. Добавление репозитория на сменном носителе
78.1.3. Добавление репозиториев вручную
79. Поиск пакетов
80. Установка или обновление пакета
81. Удаление установленного пакета
82. Обновление системы
82.1. Обновление всех установленных пакетов
82.2. Обновление ядра
XII. Основы администрирования Linux
83. Общие принципы работы ОС
83.1. Процессы и файлы
83.1.1. Процессы функционирования ОС
83.1.2. Файловая система ОС
83.1.3. Структура каталогов
83.1.4. Организация файловой структуры
83.1.5. Имена дисков и разделов
83.1.6. Разделы, необходимые для работы ОС
83.2. Работа с наиболее часто используемыми компонентами
83.2.1. Виртуальная консоль
83.2.2. Командные оболочки (интерпретаторы)
83.2.3. Командная оболочка Bash
83.2.4. Команда
83.2.5. Команда и параметры
83.2.6. Команда и ключи
83.2.7. Обзор основных команд системы
83.3. Стыкование команд в системе Linux
83.3.1. Стандартный ввод и стандартный вывод
83.3.2. Перенаправление ввода и вывода
83.3.3. Использование состыкованных команд
83.3.4. Недеструктивное перенаправление вывода
84. Средства управления дискреционными правами доступа
84.1. Команда chmod
84.2. Команда chown
84.3. Команда chgrp
84.4. Команда umask
84.5. Команда chattr
84.6. Команда lsattr
84.7. Команда getfacl
84.8. Команда setfacl
85. Etcnet
85.1. Конфигурационные файлы
85.2. Управление и диагностика сетевых интерфейсов
85.2.1. Просмотр информации
85.2.2. Управление сетевыми интерфейсами
85.2.3. Настройка сети
85.3. Настройка статического IP-адреса
85.4. Настройка сетевого моста
85.5. Настройка объединения интерфейсов (bonding)
85.6. Настройка VLAN
85.6.1. Q-in-Q интерфейс
86. Режим суперпользователя
86.1. Какие бывают пользователи?
86.2. Для чего может понадобиться режим суперпользователя?
86.3. Как получить права суперпользователя?
86.4. Как перейти в режим суперпользователя?
87. Управление пользователями
87.1. Общая информация
87.2. Команда useradd
87.3. Команда passwd
87.4. Добавление нового пользователя
87.5. Настройка парольных ограничений
87.6. Управление сроком действия пароля
87.7. Настройка неповторяемости пароля
87.8. Модификация пользовательских записей
87.9. Удаление пользователей
88. Система инициализации systemd и sysvinit
88.1. Запуск операционной системы
88.1.1. Запуск системы
88.1.2. Система инициализации
88.2. Системы инициализации systemd и sysvinit
88.2.1. sysvinit
88.2.2. systemd
88.3. Примеры команд управления службами, журнал в systemd
89. Что происходит в системе
90. Документация
90.1. Экранная документация
90.1.1. man
90.1.2. info
90.2. Документация по пакетам
90.3. Документация к программам, имеющим графический интерфейс
XIII. Функциональность операционной системы
91. Управление шифрованными разделами
91.1. Работа с зашифрованными дисками
91.2. Шифрование пустого блочного устройства
91.3. Шифрование существующих данных на блочном устройстве с внешним (отсоединённым) заголовком
92. Поддержка файловых систем
93. Поддержка сетевых протоколов
93.1. SMB
93.1.1. Настройка Samba
93.1.2. Настройка клиента
93.2. NFS
93.2.1. Настройка сервера NFS
93.2.2. Использование NFS
93.3. FTP
93.3.1. Настройка сервера FTP
93.3.2. Подключение рабочей станции
93.4. NTP
93.4.1. Настройка сервера NTP
93.4.2. Настройка рабочей станции
93.5. HTTP(S)
93.5.1. Настройка сервера HTTP
93.5.2. Настройка рабочей станции
94. Механизм аудита
94.1. Команда auditd
94.2. Файл конфигурации auditd.conf
94.3. Команда auditctl
94.4. Команда aureport
94.5. Команда ausearch
94.6. Настройка ротации журналов аудита
94.7. Определение правил аудита
94.7.1. Установка правил с помощью auditctl
94.7.2. Установка постоянных правил в файлах .rules
94.7.3. Файлы журнала аудита
94.7.4. Примеры
XIV. Техническая поддержка продуктов «Базальт СПО»
95. Покупателям нашей продукции
96. Пользователям нашей продукции

Часть I. Что такое Альт Сервер?

Глава 1. Что такое Альт Сервер

Операционная система Альт Сервер — многофункциональный дистрибутив с возможностью создания компьютерной инфраструктуры предприятия и запуска сетевых приложений.
Альт Сервер представляет собой совокупность интегрированных программных продуктов, созданных на основе ОС Linux и обеспечивает обработку, хранение и передачу информации в круглосуточном режиме эксплуатации. Дистрибутив предоставляет интегрированную операционную систему на единой оптимизированной пакетной базе с поддержкой различных аппаратных платформ, с возможностью установки графического окружения.
Альт Сервер это комплекс серверных приложений, оснащённый удобным пользовательским интерфейсом для настройки. Управление сервером может осуществляться с любого компьютера через веб-браузер.
Альт Сервер представляет собой решение уровня предприятия, позволяющее осуществить миграцию на импортозамещающее программное и аппаратное обеспечение.
Основные преимущества ОС Альт Сервер:
  • установка серверных решений и решений конечных пользователей с одного диска;
  • управление системой через набор модулей: модуль системных интерфейсов, модуль редакций, модуль компонентов, модуль диагностики, модуль пакетов, модуль информации о системе;
  • графическая рабочая среда GNOME;
  • создание домена: единая аутентификация через сервер каталогов;
  • клиент домена: групповые политики, общие ресурсы и совместная работа;
  • поддержка средств контейнеризации.
В Альт Сервер поставляется два продукта в виде редакций, каждая из которых имеет собственную лицензию:
  • Альт Сервер
  • Альт Домен
Редакция определяет список сопровождаемых компонентов, входящих в продукт. Для каждой редакции определен собственный набор компонентов — базовый (устанавливаемый вместе с системой) и основной (компоненты которого можно установить в рабочей системе).
Редакцию можно выбрать как на этапе установки системы, так и после установки. Для переключения между редакциями имеется графический и консольный инструменты (alt-systeminfo и alteratorctl).

Глава 2. Что такое Linux

2.1. Свободные программы

Операционная система (далее — ОС) Linux — ядро, основные компоненты системы и большинство её пользовательских приложений — свободные программы. Свободные программы можно:
  • запускать на любом количестве компьютеров;
  • распространять бесплатно или за деньги без каких-либо ограничений;
  • получать исходные тексты этих программ и вносить в них любые изменения.
Свобода программ обеспечила их широкое использование и интерес к ним со стороны тысяч разработчиков. Основные программы для Linux выходят под лицензией GNU General Public License (далее — GPL). Лицензия GNU не только гарантирует свободу, но и защищает её. Она допускает дальнейшее распространение программ только под той же лицензией, поэтому исходный код ядра Linux, компиляторов, библиотеки glibc, пользовательских графических оболочек не может быть использован для создания приложений с закрытым кодом. В этом принципиальное отличие Linux от свободных ОС семейства BSD (FreeBSD, NetBSD, OpenBSD), фрагменты которых вошли в Microsoft Windows и даже стали основой OS X. Linux включает в себя многие разработки BSD, но его компиляторы и системные библиотеки разработаны в рамках проекта GNU (http://www.gnu.org/home.ru.html).

2.2. Разработка Linux

В отличие от распространённых несвободных ОС, Linux не имеет географического центра разработки. Нет фирмы, которая владела бы этой ОС, нет и единого координационного центра. Программы для Linux — результат работы тысяч проектов. Большинство из них объединяет программистов из разных стран, связанных друг с другом только перепиской. Лишь некоторые проекты централизованы и сосредоточены в фирмах. Создать свой проект или присоединиться к уже существующему может любой программист, и, в случае успеха, результаты этой работы станут известны миллионам пользователей. Пользователи принимают участие в тестировании свободных программ, общаются с разработчиками напрямую. Это позволяет за короткий срок добавлять в программное обеспечение новые возможности, оперативно находить ошибки и исправлять их.
Именно гибкая и динамичная система разработки, невозможная для проектов с закрытым кодом, определяет исключительную экономическую эффективность Linux. Низкая стоимость свободных разработок, отлаженные механизмы тестирования и распространения, привлечение независимых специалистов, обладающих индивидуальным, самостоятельным видением проблем, защита исходного текста программ лицензией GPL — всё это стало причиной успеха свободных программ.
Такая высокая эффективность разработки не могла не заинтересовать крупные фирмы. Они стали создавать свои свободные проекты, основывающиеся на тех же принципах. Так появились Mozilla, LibreOffice, свободный клон Interbase, SAP DB. IBM способствовала переносу Linux на свои мейнфреймы.
Открытый код программ значительно снизил себестоимость разработки закрытых систем для Linux и позволил снизить цену решения для пользователя. Вот почему Linux стала платформой, часто рекомендуемой для таких продуктов, как Oracle, DB2, Informix, Sybase, SAP ERP, Lotus Domino.

2.3. Защищённость

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

2.4. Дистрибутивы Linux

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

2.5. Новичку

Linux — самостоятельная операционная система. Все операционные системы разные: Linux — не Windows, не OS X и не FreeBSD. В Linux свои правила, их необходимо изучить и к ним необходимо привыкнуть. Терпение и настойчивость в изучении Linux обернётся значительным повышением эффективности и безопасности вашей работы. То, что сегодня кажется странным и непривычным, завтра понравится и станет нормой.
Не стесняйтесь задавать вопросы, ведь самый простой способ найти ответ — совет опытного специалиста. Взаимопомощь и общение — традиция в мире Linux. Всегда можно обратиться за помощью к сообществу пользователей и разработчиков Linux. Большинство вопросов повторяются, поэтому для начала стоит поискать ответ на свой вопрос в документации, затем в сети Интернет. Если вы не нашли ответа в перечисленных источниках, не стесняйтесь, пишите на форум или в списки рассылки так, как писали бы своим друзьям, и вам обязательно помогут.

Глава 3. Что такое системы Альт

3.1. ALT Linux Team

Команда ALT Linux (https://www.altlinux.org/ALT_Linux_Team) — это интернациональное сообщество, насчитывающее более 300 разработчиков свободного программного обеспечения.

3.2. Сизиф

Sisyphus (https://packages.altlinux.org) — наш ежедневно обновляемый банк программ (часто называемый репозиторием). Поддерживаемая ALT Linux Team целостность Sisyphus, оригинальная технология сборки программ и утилита apt-get позволяют пользователям легко обновлять свои системы и быть в курсе актуальных новинок мира свободных программ.
Ежедневно изменяющийся репозиторий содержит самое новое программное обеспечение со всеми его преимуществами и недостатками (иногда ещё неизвестными). Поэтому, перед обновлением вашей системы из Sisyphus, мы советуем взвесить преимущества новых возможностей, реализованных в последних версиях программ, и вероятность возникновения неожиданностей в работе с ними (https://www.altlinux.org/Sisyphus_changes).
Разработка Sisyphus полностью открыта. У нас нет секретных изменений кода и закрытого тестирования с подписками о неразглашении. Всё, что мы сделали сегодня, завтра вы найдёте в сети. По сравнению с другими аналогичными банками программ (Debian unstable, Mandriva Cooker, PLD, Fedora), в Sisyphus есть немало самобытного. Особое внимание уделяется защите системы, локализации на русский язык, полноте и корректности зависимостей.
Название Sisyphus (Сизиф) заимствовано из греческой мифологии. С кропотливым Сизифом, непрерывно закатывающим в гору камни, команду ALT Linux Team объединяет постоянная работа над усовершенствованием технологий, заложенных в репозиторий.
Sisyphus, в первую очередь, — открытая лаборатория решений. Если вам это интересно, если вы хотите дополнить Sisyphus новыми решениями, если вы считаете, что можете собрать какую-то программу лучше — присоединяйтесь к проекту ALT Linux Team (https://www.altlinux.org/Join).

3.3. Что такое одиннадцатая платформа

Как уже говорилось ранее, Sisyphus — это часто обновляемый репозиторий, ориентированный прежде всего для разработчиков. Для пользователей, которым стабильность и предсказуемость работы системы важнее расширенной функциональности (а это в первую очередь начинающие и корпоративные пользователи), предназначены дистрибутивы Альт. Такие дистрибутивы базируются на стабильном срезе репозитория Sisyphus. Эти срезы называются платформами.
Одиннадцатая платформа (p11) была создана в июне 2024 года и её поддержка продлится до июля 2027 года.

3.3.1. Основные новшества одиннадцатой платформы

  • Одиннадцатая платформа основана на ядре Linux 6.12 (LTS) с расширенной поддержкой современного оборудования: процессорных архитектур Intel, включая Intel Meteor Lake, Intel Xeon Sapphire Rapids, AMD Ryzen 7000 (Zen 4) и EPYC Genoa; аппаратных интерфейсов — PCI Express Gen5, USB4, Thunderbolt 4, Wi-Fi 6/6E, NVMe 1.4/2.0; улучшенной поддержкой виртуализации;
  • Программное обеспечение на одиннадцатой платформе использует обновленный OpenSSL 3.1. Платформа сохраняет поддержку OpenSSL 1.1 для совместимости с устаревшим ПО;
  • Произошел переход на Python 3.12;
  • Добавлены PHP 8.3 и 8.4;
  • Системный интерпретатор сценариев /bin/sh теперь основан на Bash 5.2;
  • Обновлены основные системные библиотеки и компиляторы: glibc 2.38, компилятор GCC 13 и LLVM/Clang 19;
  • Пакет systemd обновлён до версии 255;
  • Подсистема начальной загрузки установщика propagator заменена на altboot;
  • Основным фрэймворком приложений графической подсистемы стал Qt6, с поддержкой Qt5 для обратной совместимости приложений. Qt6 в качестве основного стека также использует системный установщик;
  • Включена поддержка нового Kerberos 1.21, полностью совместимого с Samba 4.20+. В дистрибутивах 11 платформы также доступны и ключевые изменения Samba 4.20+;
  • Существенно обновлён Альтератор в качестве Центра Управления Системой — новый интерфейс, взаимодействие с D-Bus, модульная архитектура. Новый Альтератор поддерживает модули предыдущих версий;
  • ALT Diagnostic Tool — графическая утилита диагностики ОС. ADT использует заранее подготовленный набор проверок, предоставляет возможность пользователю выполнить тесты без дополнительных привилегий и единый вид отчета по проверкам;
  • Копидел — средство тиражирования установленной системы (alterator-kopidel);
  • Платформа доступна для архитектур x86_64 и ARM64.

Часть II. Установка дистрибутива

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

Содержание

4. Подготовка установочного диска
4.1. Запись ISO-образа дистрибутива на DVD
4.1.1. Запись образа диска под операционной системой MS Windows
4.1.2. Запись образа диска под операционной системой Linux
4.2. Запись установочного образа на USB Flash
4.2.1. В операционной системе Windows
4.2.2. В операционной системе Linux
4.2.3. В операционной системе OS X
4.2.4. Проверка целостности записанного образа
5. Сохранение данных и меры предосторожности
6. Начало установки: загрузка системы
6.1. Способы первоначальной загрузки
6.2. Загрузка системы
6.3. Загрузка с помощью последовательного порта
7. Последовательность установки
8. Язык
9. Выбор редакции
10. Лицензионное соглашение
11. Дата и время
12. Подготовка диска
12.1. Выбор профиля разбиения диска
12.2. Автоматический профиль разбиения диска
12.3. Ручной профиль разбиения диска
12.4. Дополнительные возможности разбиения диска
12.4.1. Создание программного RAID-массива
12.4.2. Создание LVM-томов
12.4.3. Создание шифрованных разделов
12.4.4. Создание подтомов BtrFS
12.4.5. Настройка RAID-массива с IMSM-метаданными (Intel VROC)
13. Установка системы
13.1. Дополнительные приложения
13.2. Установка пакетов
14. Сохранение настроек
15. Установка загрузчика
16. Настройка сети
17. Администратор системы
18. Системный пользователь
19. Установка пароля на LUKS-разделы
20. Информация о завершении установки
21. Обновление системы до актуального состояния
22. Автоматическая установка системы (autoinstall)
22.1. Файлы автоустановки
22.1.1. Формат файла vm-profile.scm
22.1.2. Формат файла pkg-groups.tar
22.1.3. Формат файла autoinstall.scm
22.1.4. Формат файла install-scripts.tar
22.2. Запуск автоматической установки
23. Первая помощь
23.1. Проблемы при установке системы
23.2. Проблемы с загрузкой системы
23.3. Полезные ссылки

Глава 4. Подготовка установочного диска

Наиболее частый способ установки операционной системы на компьютер представляет собой установку с установочного DVD-диска. В этой главе описываются различные способы записи дистрибутива на DVD-диск.
Установочные образы являются гибридными, что позволяет производить установку, записав такой образ на USB Flash. О записи установочного образа на USB Flash также рассказано в этой главе.

4.1. Запись ISO-образа дистрибутива на DVD

4.1.1. Запись образа диска под операционной системой MS Windows

Файл ISO-образа диска — это файл специального формата, подготовленный для записи на диск. Для записи ISO-образа под операционной системой MS Windows используйте специальные программы: SCDWriter, Nero BurningROM и другие. Рекомендуем для записи использовать новые диски от известных производителей, таких как: Verbatim, TDK. Записанный на плохой диск образ может вызвать неразрешимые проблемы при установке.

4.1.1.1. Запись образа диска с помощью Small CD-Writer

Весь процесс записи установочного диска при помощи Small CD-Writer состоит из следующих шагов:
  • скачать образ дистрибутива;
  • скачать архив программы Small CD-Writer http://gluek.info/wiki/_media/software/scdwriter14.zip;
  • распаковать файлы программы из архива в любой каталог;
  • вставить чистый диск в привод;
  • войти в распакованный каталог и запустить программу SCDWriter.exe;
  • открыть пункт меню ДискЗаписать ISO-образ на диск и, в появившемся окне, указать путь к образу диска;
  • нажать кнопку Записать.
Окно программы Small CD-Writer

4.1.1.2. Запись образа диска с помощью Nero BurningROM

Процесс записи установочного диска при помощи Nero BurningROM состоит из следующих шагов:
  • скачать образ дистрибутива;
  • скачать программу Nero BurningROM с сайта производителя http://www.nero.com и установить её;
  • запустить программу и выбрать в списке устройств необходимый для записи CD/DVD дисковод;
  • нажать кнопку Открыть в главном окне. В появившемся окне выбрать необходимый ISO-образ для записи и нажать кнопку Открыть;
  • в окне Записать проект на вкладке Запись установить отметку в поле Запись и настроить необходимые параметры прожига;
  • записать ISO-образ на диск, щёлкнув по кнопке Прожиг.

4.1.2. Запись образа диска под операционной системой Linux

Для записи ISO-образов можно использовать множество утилит и программ с графическим или текстовым интерфейсом. Наиболее удобно использовать программы K3b или Brasero, которые поставляются в комплекте большинства дистрибутивов операционной системы Linux.

4.1.2.1. Запись образа диска с помощью K3b

Весь процесс записи установочного диска при помощи K3b состоит из следующих шагов:
  • если программа k3b отсутствует, необходимо установить её в систему, используя стандартные для вашего дистрибутива инструменты установки программ;
  • запустить программу k3b. При правильных настройках программа сообщит об отсутствии проблем с системой и предложит перейти к записи на диск;
  • в меню главного окна Сервис (Service) выбрать пункт Записать образ DVD (Burn DVD image);
  • в появившемся окне Записать образ DVD (Burn DVD image) нажать на кнопку Выбор файла для записи. Откроется диалог, в котором необходимо выбрать ISO-образ для записи и после выбора нажать кнопку ОК;
  • программа k3b покажет информацию о ISO-файле и начнёт вычислять контрольную сумму. Эта операция может занять несколько минут. Полученную контрольную сумму можно сравнить с MD5SUM суммой на странице дистрибутива;
  • если контрольные суммы не совпадают, значит, для записи был выбран не тот файл или скачанный ISO-образ был испорчен во время передачи данных по сети;
  • если контрольные суммы совпадают, вставить диск для записи в дисковод. Дождаться активации кнопки Начать (Start);
  • нажать на кнопку Начать (Start).

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

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

Запись образа дистрибутива на flash-диск приведёт к изменению таблицы разделов на носителе, таким образом, если flash-диск выполнил функцию загрузочного\установочного устройства и требуется вернуть ему функцию переносного накопителя данных, то необходимо удалить все имеющиеся разделы на flash-диске и создать нужное их количество заново.
Для восстановления совместимости flash-диска с операционными системами семейства Windows может понадобиться также пересоздание таблицы разделов (например, при помощи parted). Нужно удалить таблицу GPT и создать таблицу типа msdos. Кроме того, должен быть только один раздел с FAT или NTFS.
Для создания загрузочного flash-диска понадобится файл ISO-образа установочного диска с дистрибутивом. ISO-образы установочных дисков являются гибридными (Hybrid ISO/IMG), что позволяет записать их на flash-накопитель.

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

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

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

Будьте внимательны при указании имени usb-устройства — запись образа по ошибке на свой жёсткий диск приведёт к почти гарантированной потере данных на нём!
После проверки правильности выбранных параметров и нажатия кнопки Continue можно приступать к записи, нажав кнопку START. По успешному завершению записи окно с индикацией процесса записи закроется, после чего можно закрыть и окно самой программы.

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

Для записи образа на flash-диск можно воспользоваться одной из программ с графическим интерфейсом:
  • ALT Media Writer (altmediawriter):
    ALT Media Writer (altmediawriter)
    ALT Media Writer может автоматически загружать образы из интернета и записывать их, при необходимости извлекая сжатые образы (img.xz).
  • Impression (impression):
    Impression
  • SUSE Studio Imagewriter (imagewriter):
    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    15G  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.2.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.2.4. Проверка целостности записанного образа

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

Глава 5. Сохранение данных и меры предосторожности

Если необходимо установить ОС Альт Сервер и при этом сохранить уже установленную на компьютере операционную систему (например, другую версию GNU/Linux или Microsoft Windows), то нужно обязательно позаботиться о подготовке компьютера к установке второй системы и о сохранении ценных для вас данных.
Если у вас нет загрузочного диска для уже установленной системы, создайте его. В случае прерванной установки ОС Альт Сервер или неправильной настройки загрузчика, вы можете потерять возможность загрузиться в вашу предыдущую ОС.
Если на диске, выбранном для установки ОС Альт Сервер, не осталось свободного раздела, то программа установки должна будет изменить размер существующего раздела. От этой операции могут пострадать ваши данные, поэтому предварительно надо сделать следующие действия:
  • Выполнить проверку раздела, который вы собираетесь уменьшать. Для этого воспользуйтесь соответствующим программным обеспечением (далее — ПО), входящим в состав уже установленной ОС. Программа установки Альт Сервер может обнаружить некоторые очевидные ошибки при изменении размера раздела, но специализированное ПО предустановленной ОС справится с этой задачей лучше.
  • Выполнить дефрагментацию уменьшаемого раздела в целях повышения уровня безопасности данных. Это действие не является обязательным, но мы настоятельно рекомендуем его произвести: изменение размера раздела пройдёт легче и быстрее.

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

Полной гарантией от проблем, связанных с потерей данных, является резервное копирование!

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

6.1. Способы первоначальной загрузки

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

6.2. Загрузка системы

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

Примечание

Предварительно следует включить в BIOS опцию загрузки с оптического привода или с USB-устройства.
В большинстве случаев указание способа входа в BIOS отображается на вашем мониторе непосредственно после включения компьютера. Способ входа в меню BIOS и информация о расположении настроек определяется производителем используемого оборудования. За информацией можно обратиться к документации на ваше оборудование.
Начальный загрузчик EFI
Загрузка с установочного диска или специально подготовленного USB-flash-накопителя начинается с меню, в котором перечислено несколько вариантов загрузки:
  • Install ALT Server 11.1 — установка операционной системы;
  • VNC install (edit to set password) — установка по VNC с соединением в сторону устанавливаемой машины. Параметры установки по VNC передаются как параметры ядра. Нажатие клавиши E позволяет задать пароль (по умолчанию — VNCPWD):
    Параметры установки по VNC
  • Rescue LiveCD — режим восстановления установленной, но так или иначе поврежденной ОС Linux путем запуска небольшого образа ОС в оперативной памяти. Восстановление системы потребует некоторой квалификации. Этот пункт также может быть использован для сбора информации об оборудовании компьютера, которую можно отправить разработчикам, если ОС Альт Сервер устанавливается и работает неправильно. Загрузка восстановительного режима заканчивается запросом на ввод логина суперпользователя (root):
    Log in as root
    localhost login:
    
  • Safe Mode — позволяет включить или отключить добавление специальных параметров загрузки ядра, предназначенных для безопасного режима (может быть полезно для запуска системы на старом или нестабильном железе):
    Включение безопасного режима
    Подробнее о безопасном режиме см. Первая помощь.
  • Change serial console — позволяет выбрать последовательный порт для консольного подключения (например, COM1/ttyS0):
    Выбор последовательного порта
    Подробнее об установке через последовательный порт см. Загрузка с помощью последовательного порта.
  • Memory Test (may not work with Secure Boot) — проверка целостности оперативной памяти. Процесс диагностики заключается в проведении нескольких этапов тестирования каждого отдельного модуля ОЗУ (данный процесс будет выполняться бесконечно, пока его не остановят, необходимо дождаться окончания хотя бы одного цикла проверки);
  • UEFI Firmware Settings — позволяет получить доступ к настройкам UEFI.

Примечание

Начальный загрузчик в режиме Legacy:
Начальный загрузчик в режиме Legacy
Пункт Boot from hard drive — позволяет запустить уже установленную на жёсткий диск операционную систему.

Примечание

Мышь на этом этапе установки не поддерживается. Для выбора опций установки и различных вариантов необходимо использовать клавиатуру.
Нажатием клавиши E можно вызвать редактор параметров текущего пункта загрузки. Если система настроена правильно, то редактировать их нет необходимости.
Чтобы начать процесс установки, нужно клавишами перемещения курсора вверх и вниз выбрать пункт меню Install ALT Server 11.1 и нажать Enter. Начальный этап установки не требует вмешательства пользователя: происходит автоматическое определение оборудования и запуск компонентов программы установки. Сообщения о происходящем на данном этапе можно просмотреть, нажав клавишу ESC.

Примечание

В начальном загрузчике установлено небольшое время ожидания: если в этот момент не предпринимать никаких действий, то будет загружена та система, которая уже установлена на жестком диске. Если вы пропустили нужный момент, перезагрузите компьютер и вовремя выберите пункт Install ALT Server 11.1.

6.3. Загрузка с помощью последовательного порта

Для установки ОС Альт Сервер через последовательный порт выполните следующие действия:
  1. В меню загрузчика выберите пункт Change serial console и укажите порт для консольного подключения:
    Выбор последовательного порта
  2. Выберите скорость передачи данных:
    Скорость передачи данных
  3. Запустите установку, выбрав в меню вариантов загрузки пункт VNC install (edit to set password).

    Примечание

    При необходимости можно изменить пароль для подключения по VNC (см. VNC install).
  4. Подключитесь к последовательному порту с помощью терминала. В окне консоли отобразится процесс установки, а также IP-адрес, порт и пароль для подключения по VNC:
    …
    Running initinstall script [15-expert.sh] [ DONE ] 14:19:54
    Running initinstall script [20-nodesign.sh] [ DONE ] 14:19:54
    Running initinstall script [20-pts.sh] [ DONE ] 14:19:54
    Running initinstall script [25-setup-dhcp.sh] [ DONE ] 14:19:54
    Running initinstall script [26-metadata-autoinstall.sh] [ DONE ] 14:19:54
    Running initinstall script [27-metadata-install-scripts.sh] [ DONE ] 14:19:54
    Running initinstall script [30-ntp-client.sh] [ DONE ] 14:19:54
    Running initinstall script [40-xorg.sh] [ DONE ] 14:19:54
    Running initinstall script [50-removable] [ DONE ] 14:19:54
    Running initinstall script [80-stop-md-dm.sh] [ DONE ] 11:19:59
    Running initinstall script [85-start-multipath.sh] [ DONE ] 11:19:59
    Running initinstall script [90-alteratord.sh] [ DONE ] 11:19:59
    Running initinstall script [90-date.sh] [ DONE ] 11:19:59
    Running initinstall script [90-pkg.sh] [ DONE ] 11:20:00
    Running initinstall script [91-pkg-size.sh] [ DONE ] 11:20:01
    Running initinstall script [95-virt-env.sh] [ DONE ] 11:20:01
    Running initinstall script [98-oem.sh] [ DONE ] 11:20:01
    Open debug shell on tty2 [ DONE ] 11:20:01
    Open debug shell on tty3 [ DONE ] 11:20:01
    ** IP(s): 192.168.0.95
    ** VNC cmdline: vncpassword=Pa$$word
    
    The VNC desktop is:      localhost.localdomain:0
    PORT=5900
    
  5. Для продолжения установки подключитесь по VNC, например:
    $ vncviewer 192.168.0.95
    

    Примечание

    Установка через VNC выполняется так же, как описано в главе Последовательность установки.
После завершения графической части установки в окне последовательной консоли появится запрос на ввод логина:
Welcome to ALT Server 11.1 (Mendelevium)!

Hostname: server
IP: 192.168.0.95
server login:

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

До того как будет произведена установка базовой системы на жёсткий диск, программа установки работает с образом системы, загруженным в оперативную память компьютера.
Если инициализация оборудования завершилась успешно, будет запущен графический интерфейс программы-установщика. Процесс установки разделён на шаги. Каждый шаг посвящён настройке или установке определённого свойства системы. Шаги нужно проходить последовательно. Переход к следующему шагу происходит по нажатию кнопки Далее. При помощи кнопки Назад, при необходимости, можно вернуться к уже пройденному шагу и изменить настройки. Однако возможность перехода к предыдущему шагу ограничена теми шагами, в которых нет зависимости от данных, введённых ранее.
Если по каким-то причинам возникла необходимость прекратить установку, необходимо нажать кнопку <Reset> на корпусе системного блока компьютера.

Примечание

Совершенно безопасно выполнить отмену установки только до шага Подготовка диска, поскольку до этого момента не производится никаких изменений на жёстком диске. Если прервать установку между шагами Подготовка диска и Установка загрузчика, существует вероятность, что после этого с жёсткого диска не сможет загрузиться ни одна из установленных систем (если такие имеются).
Технические сведения о ходе установки можно посмотреть, нажав Ctrl+Alt+F1, вернуться к программе установки — Ctrl+Alt+F7. По нажатию Ctrl+Alt+F2 откроется отладочная виртуальная консоль.
Каждый шаг сопровождается краткой справкой, которую можно вызвать, щёлкнув кнопку Справка или нажав клавишу F1.
Нажатие на кнопку позволяет показать/скрыть панель со списком шагов установки:
Список шагов

Глава 8. Язык

Выбор основного языка
Установка Альт Сервер начинается с выбора основного языка — языка интерфейса программы установки и устанавливаемой системы. В списке, помимо доступных языков региона (выбранного на этапе начальной загрузки), указан и английский язык.
На этом же этапе выбирается вариант переключения раскладки клавиатуры. Раскладка клавиатуры — это привязка букв, цифр и специальных символов к клавишам на клавиатуре. Помимо ввода символов на основном языке, в любой системе Linux необходимо иметь возможность вводить латинские символы (имена команд, файлов и т.п.). Для этого обычно используется стандартная английская раскладка клавиатуры. Переключение между раскладками осуществляется при помощи специально зарезервированных для этого клавиш. Для русского языка доступны следующие варианты переключения раскладки:
  • клавиши Alt и Shift одновременно;
  • клавиша CapsLock;
  • клавиши Control и Shift одновременно;
  • клавиша Control;
  • клавиша Alt.
Если выбранный основной язык имеет всего одну раскладку (например, при выборе английского языка в качестве основного), эта единственная раскладка будет принята автоматически.

Глава 9. Выбор редакции

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

Примечание

Выбор редакции должен соответствовать приобретённой лицензии.
Выбор редакции Альт Сервер

Примечание

Редакцию можно изменить и после установки системы (alt-systeminfo и alteratorctl).
После выбора нужной редакции отметьте пункт Да, я согласен с выбранной редакцией и нажмите кнопку Далее.

Глава 10. Лицензионное соглашение

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

Глава 11. Дата и время

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

Примечание

В случае если ОС Альт Сервер устанавливается как вторая ОС, необходимо снять отметку с пункта Хранить время в BIOS по Гринвичу, иначе время в уже установленной ОС может отображаться некорректно.

Глава 12. Подготовка диска

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

12.1. Выбор профиля разбиения диска

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

12.2. Автоматический профиль разбиения диска

Профиль Установка сервера предполагает автоматическое разбиение диска. При выборе этого профиля будет создан корневой раздел (разделы под swap и EFI создаются автоматически). Если объём диска превышает 120 ГБ, дополнительно создаётся раздел /var с включёнными квотами (ограничениями по использованию дискового пространства).
Выбор автоматического профиля разбиения диска

Примечание

Квоты включаются через опции usrquota и grpquota в файле /etc/fstab. Например:
UUID=0761da11-67bc-4589-bbf9-88d6b8dfc2ba       /var    ext4    nosuid,relatime,usrquota,grpquota       1       2
Если квоты не нужны, эти опции можно удалить.

Примечание

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

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

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

12.3. Ручной профиль разбиения диска

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

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

Не уменьшайте NTFS-раздел с установленной Microsoft Windows Vista/Windows 7 средствами программы установки. В противном случае вы не сможете загрузить Microsoft Windows Vista/Windows 7 после установки Альт Сервер. Для выделения места под установку Альт Сервер воспользуйтесь средствами, предоставляемыми самой Microsoft Windows Vista/Windows 7: Управление дискамиСжать.
Для того чтобы система правильно работала (в частности могла загрузиться) с UEFI, при ручном разбиении диска надо обязательно сделать точку монтирования /boot/efi, в которую нужно смонтировать vfat раздел с загрузочными записями. Если такого раздела нет, то его надо создать вручную. При разбивке жёсткого диска в автоматическом режиме такой раздел создаёт сам установщик. Особенности разбиения диска в UEFI-режиме:
  • требуется создать новый или подключить существующий FAT32-раздел с GPT-типом ESP (efi system partition) размером ~100—500 Мб (будет смонтирован в /boot/efi);
  • может понадобиться раздел типа bios boot partition минимального размера, никуда не подключенный и предназначенный для встраивания grub2-efi;
  • остальные разделы — и файловая система, и swap — имеют GPT-тип basic data; актуальный тип раздела задаётся отдельно.
Для сохранения всех внесенных настроек и продолжения установки в окне Подготовка диска нужно нажать кнопку Далее. Появится окно со списком настроенных разделов и их точек монтирования. Если вы уверены в том, что подготовка диска завершена, подтвердите переход к следующему шагу нажатием кнопки ОК.

12.4. Дополнительные возможности разбиения диска

Ручной профиль разбиения диска позволяет установить ОС на программный RAID-массив, разместить разделы в томах LVM и использовать шифрование на разделах. Данные возможности требуют от пользователя понимания принципов функционирования указанных технологий.

12.4.1. Создание программного RAID-массива

Избыточный массив независимых дисков RAID (redundant array of independent disks) — технология виртуализации данных, которая объединяет несколько жёстких дисков в логический элемент для избыточности и повышения производительности.

Примечание

Для создания программного RAID-массива потребуется минимум два жёстких диска.
Программа установки поддерживает создание программных RAID-массивов следующих типов:
  • RAID 1;
  • RAID 0;
  • RAID 4/5/6;
  • RAID 10.
Процесс подготовки к установке на RAID условно можно разбить на следующие шаги:
  • создание разделов на жёстких дисках;
  • создание RAID-массивов на разделах жёсткого диска;
  • создание файловых систем на RAID-массиве.

Важно

Для создания программного RAID-массива может потребоваться предварительно удалить существующую таблицу разделов с жёсткого диска.

Важно

Системный раздел EFI должен быть физическим разделом в основной таблице разделов диска.
Для настройки параметров нового раздела из состава RAID-массива необходимо выбрать неразмеченный диск в окне профиля разбивки пространства Вручную и нажать кнопку Создать раздел.
Кнопка Создать раздел
Для создания программного массива на GPT-разделах следует сначала создать разделы типа basic data и не создавать на них том (снять отметку с пункта Создать том):
Создание раздела программного массива в режиме UEFI
В этом окне необходимо настроить следующие параметры:
  • Размер — в поле необходимо указать размер будущего раздела в Мбайт;
  • Смещение — в поле необходимо указать смещение начала данных на диске в Мбайт;
  • Тип раздела — в выпадающем поле нужно выбрать значение basic data для последующего включения раздела в RAID-массив.

Примечание

В режиме Legacy при создании разделов на жёстких дисках для последующего включения их в RAID-массивы следует указать Тип раздела для них равным Linux RAID:
Создание разделов для RAID-массива
На втором диске создать два раздела с типом basic data без создания на них томов. При этом разделы на разных дисках должны совпадать по размеру.

Примечание

При создании разделов следует учесть, что объём результирующего массива может зависеть от размера, включённых в него разделов жёсткого диска. Например, при создании RAID 1 результирующий размер массива будет равен размеру минимального участника.
После создания разделов на дисках можно переходить к организации самих RAID-массивов. Для этого в списке следует выбрать пункт RAID, после чего нажать кнопку Создать RAID:
Организация RAID-массива
Далее мастер предложит выбрать тип массива:
Выбор типа RAID-массива
И указать участников RAID-массива (по умолчанию выбираются все разделы, поэтому необходимо снять отметку с раздела sdb1):
Выбор участников RAID-массива
Результат создания RAID-массива:
Результат создания RAID-массива
После того, как RAID-массив создан, его можно использовать как обычный раздел на жёстких дисках, то есть на нём можно создавать файловые системы или же, например, включать в LVM-тома.

Примечание

После установки системы можно будет создать ещё один RAID-массив и добавить в него загрузочный раздел (/boot/efi).

12.4.2. Создание LVM-томов

Менеджер логических дисков LVM (Logical Volume Manager) — средство гибкого управления дисковым пространством, позволяющее создавать поверх физических разделов (либо неразбитых дисков) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (обычные разделы).
Процесс подготовки к установке на LVM условно можно разбить на следующие шаги:
  • создание разделов на жёстких дисках;
  • создание группы томов LVM;
  • создание томов LVM;
  • создание файловых систем на томах LVM.

Важно

Для создания группы томов LVM может потребоваться предварительно удалить существующую таблицу разделов с жёсткого диска.

Важно

Системный раздел EFI должен быть физическим разделом в основной таблице разделов диска, не под LVM.
Для настройки параметров нового раздела необходимо выбрать неразмеченный диск в окне профиля разбивки пространства Вручную и нажать кнопку Создать раздел:
Кнопка Создать раздел
При создании разделов на жёстких дисках для последующего включения их в LVM-тома следует указать Тип раздела для них равным basic data и не создавать на них том (снять отметку с пункта Создать том):
Создание раздела Linux LVM в режиме UEFI

Примечание

В режиме Legacy при создании разделов на жёстких дисках для последующего включения их в LVM-тома следует указать Тип раздела для них равным Linux LVM:
Создание раздела Linux LVM в режиме Legacy
После создания разделов на дисках можно переходить к созданию группы томов LVM. Для этого в списке следует выбрать пункт LVM, после чего нажать кнопку Создать группу томов:
Создание LVM-томов
В открывшемся окне необходимо выбрать разделы, которые будут входить в группу томов, указать название группы томов и выбрать размер экстента:
Создание группы томов LVM

Примечание

Размер экстента представляет собой наименьший объем пространства, который может быть выделен тому. Размер экстента по умолчанию 65536 (65536*512 байт = 32 Мб, где 512 байт — размер сектора).
После того, как группа томов LVM создана, её можно использовать как обычный жёсткий диск, то есть внутри группы томов можно создавать тома (аналог раздела на физическом жёстком диске) и файловые системы внутри томов.
Создание тома

12.4.3. Создание шифрованных разделов

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

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

Установка загрузчика на шифрованный раздел не поддерживается.

12.4.4. Создание подтомов BtrFS

Подтом (subvolume) не является блочным устройством, но в каждом томе btrfs создаётся один подтом верхнего уровня (subvolid=5), в этом подтоме могут создаваться другие подтома и снапшоты. Подтома (подразделы, subvolumes) создаются ниже вершины дерева BtrFS по мере необходимости, например, для / и /home создаются подтома с именами @ и @home. Это означает, что для монтирования подтомов необходимы определенные параметры вместо корня системы BtrFS по умолчанию:
  • подтом @ монтируется в / с помощью опции subvol=@;
  • подтом @home, если он используется, монтируется в /home с помощью параметра монтирования subvol=@home.
Программа установки Альт Сервер позволяет создать подтома (subvolume), указав разные точки монтирования.
Процесс подготовки к установке на подтома условно можно разбить на следующие шаги:
  • создание разделов на жёстких дисках;
  • создание подтомов на разделах жёсткого диска.
В данном разделе рассмотрен вариант подготовки раздела BtrFS с разбивкой на подразделы @ и @home.
Для настройки параметров нового раздела необходимо выбрать неразмеченный диск в окне профиля разбивки пространства Вручную и нажать кнопку Создать раздел:
Создание раздела с ФС BtrFS
При создании раздела на жёстком диске следует указать Тип раздела равным Linux filesystem или basic data:
Создание раздела с ФС BtrFS в режиме UEFI

Примечание

В режиме Legacy при создании раздела на жёстком диске для последующего создания подтомов BtrFS следует указать Тип раздела равным Linux:
Создание раздела с ФС BtrFS в режиме Legacy
На следующем шаге выбрать файловую систему BtrFS:
Создание раздела с ФС BtrFS
В окне Изменить точку монтирования нажать кнопку Отмена (не указывать точку монтирования для раздела):
Окно Изменить точку монтирования
После создания раздела можно переходить к созданию подтомов. Для этого в списке следует выбрать раздел с файловой системой BtrFS, после чего нажать кнопку Создать подтом:
Кнопка Создать подтом
В открывшемся окне следует указать имя подтома или путь до него. Создание подтома @home:
Создание подтома @home
Данное действие следует повторить для создания подтома @.
После создания подтомов необходимо указать точки монтирования для каждого тома. Для этого выбрать подтом и нажать кнопку Изменить точку монтирования:
Кнопка Изменить точку монтирования
В открывшемся окне указать точку монтирования:
Точка монтирования для подтома @
Далее можно установить систему как обычно.

12.4.5. Настройка RAID-массива с IMSM-метаданными (Intel VROC)

Примечание

RAID (0/1/5/10) массив должен быть сформирован средствами UEFI BIOS на основе INTEL VROC. На этом массиве также средствами UEFI BIOS может быть сформирован логический том (Volume).
RAID-массив с IMSM-метаданными
Программа установки Альт Сервер позволяет:
  • выбрать IMSM-раздел для размещения на нём какой-то точки монтирования;
  • удалить и создать заново раздел;
  • удалить и создать GPT и разделы для загрузки и системы.
Пример разбивки (GPT) тома на разделы средствами установщика:
Разделы на RAID-массиве с IMSM метаданными

Глава 13. Установка системы

На данном этапе происходит распаковка ядра и установка набора программ, необходимых для запуска Альт Сервер.

13.1. Дополнительные приложения

Программа установки предлагает выбрать дополнительные пакеты программ, которые будут включены в состав ОС Альт Сервер установлены вместе с ней на диск.
Выбор дополнительных групп пакетов
При установке редакции Альт Сервер доступны следующие дополнительные группы пакетов:
  • Поддержка графической подсистемы (GNOME) — в состав устанавливаемых пакетов будут включены инструменты диагностики, графическая среда GNOME и система управления сетевыми интерфейсами NetworkManager;
  • Поддержка клиентской инфраструктуры Samba AD — в состав устанавливаемых пакетов будут включены пакеты для конфигурации сервера в качестве клиента Альт Домена;
  • Поддержка работы в виртуальных окружениях — в состав устанавливаемых пакетов будут включены пакеты для улучшения взаимодействия между виртуальной машиной и гипервизором;
  • Поддержка управления через web-интерфейс — в состав устанавливаемых пакетов будет включен веб-интерфейс и основные модули Центра управления системой.
Если не выбирать дополнительные пакеты программ, система будет установлена с минимальным набором пакетов без графической оболочки.
Под списком групп на экране отображается информация об объёме дискового пространства, которое будет занято после установки пакетов, входящих в выбранные группы.
Опция Показать состав группы выводит список программных пакетов, входящих в состав той или иной группы пакетов.
Состав группы пакетов
Дополнительные пакеты программ в виде компонентов устанавливаются в развернутой системе Альт Сервер в приложении Альт компоненты (alt-components).
В дистрибутиве Альт Сервер доступно значительное количество программ, часть из них составляет саму операционную систему, а остальные — это прикладные программы и утилиты. В Альт Сервер все операции установки и удаления производятся над компонентами и пакетами — отдельными частями системы. Пакет и программа соотносятся неоднозначно: иногда одна программа состоит из нескольких пакетов, иногда один пакет включает несколько программ. Компонент, в терминологии ОС Альт, объединяет один или несколько пакетов, которые требуются для функционального запуска какой-либо части системы. Например, через компоненты можно установить графическую оболочку, если система была установлена без нее.
Выбрав, если это необходимо, к установке графическую оболочку, следует нажать кнопку Далее, после чего начнётся установка пакетов.

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

На этом этапе происходит установка набора программ, необходимых для работы системы.
Установка системы
Установка происходит автоматически в два этапа:
  • получение пакетов;
  • установка пакетов.
Получение пакетов осуществляется из источника, выбранного на этапе начальной загрузки. При сетевой установке (по протоколу FTP или HTTP) время выполнения этого шага будет зависеть от скорости соединения и может быть значительно большим в сравнении с установкой с лазерного диска.

Глава 14. Сохранение настроек

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

Глава 15. Установка загрузчика

Загрузчик ОС — это программа, которая позволяет загружать Альт Сервер и другие ОС, если они установлены на данной машине.
При установке на EFI модуль установки загрузчика предложит вариант установить загрузчик в специальный раздел «EFI» (рекомендуется выбрать автоматическое разбиение на этапе разметки диска для создания необходимых разделов для загрузки с EFI):
Установка загрузчика при установке в режиме EFI
Варианты установки загрузчика при установке в режиме EFI:
  • EFI (рекомендуемый) — при установке загрузчика в NVRAM будет добавлена запись, без которой большинство компьютеров не смогут загрузиться во вновь установленную ОС;
  • EFI (сначала очистить NVRAM) — перед добавлением записи в NVRAM её содержимое будет сохранено в /root/.install-log, после чего из неё будут удалены все загрузочные записи, что приведёт к восстановлению полностью заполненной NVRAM и гарантирует загрузку вновь установленной ОС;
  • EFI (запретить запись в NVRAM) — этот вариант следует выбрать, только если инсталлятор не может создать запись в NVRAM или если заведомо известно, что запись в NVRAM может вывести компьютер из строя (вероятно, запись в NVRAM придётся создать после установки ОС средствами BIOS Setup);
  • EFI (для съёмных устройств) — этот вариант следует выбрать, только если ОС устанавливается на съёмный накопитель. Этот вариант также можно использовать вместо варианта EFI (запретить запись в NVRAM) при условии, что это будет единственная ОС на данном накопителе. Создавать запись в NVRAM не потребуется.
Выбор варианта установки загрузчика, зависит от вашего оборудования. Если не работает один вариант, попробуйте другие.

Примечание

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

Примечание

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

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

На этом этапе необходимо задать параметры работы сетевой карты и настройки сети: IP-адреса сетевых интерфейсов, DNS-сервер, шлюз и т.п. Конкретные значения будут зависеть от используемого вами сетевого окружения. Ручного введения настроек можно избежать при наличии в сети настроенного DHCP-сервера. В этом случае все необходимые сетевые настройки будут получены автоматически.
Настройка сети
В окне Настройка сети доступны следующие поля:
  • Имя компьютера — сетевое имя компьютера (это общий сетевой параметр, не привязанный к какому-либо конкретному интерфейсу);
  • Интерфейсы — список доступных сетевых интерфейсов;
  • Версия протокола IP — версия используемого протокола IP (IPv4, IPv6);
  • Конфигурация — способ назначения IP-адресов (Использовать DHCP, Использовать Zeroconf, Вручную);
  • IP-адреса — пул назначенных IP-адресов из поля Добавить ↑ IP, выбранные адреса можно удалить нажатием кнопки Удалить;
  • Добавить ↑ IP — позволяет ввести IP-адрес вручную и выбрать в выпадающем поле предпочтительную маску сети. Для переноса адреса в пул поля IP-адреса необходимо нажать кнопку Добавить;
  • Шлюз по умолчанию — адрес шлюза, который будет использоваться сетью по умолчанию;
  • DNS-серверы — список предпочтительных DNS-серверов, которые будут получать информацию о доменах, выполнять маршрутизацию почты и управлять обслуживающими узлами для протоколов в домене;
  • Домены поиска — список предпочтительных доменов, по которым будет выполняться поиск.

Примечание

При переключении конфигурации с Использовать DHCP на Вручную в поле IP-адреса может отображаться IP-адрес, полученный по DHCP. Этот адрес никак не используется в дальнейшей настройке. Необходимо удалить отображаемый IP-адрес и задать адрес вручную, иначе сетевому интерфейсу будет назначен IP-адрес локальной заглушки (например, 127.0.0.2).
В окне, открываемом при нажатии кнопки Дополнительно, можно выбрать сетевую подсистему (NetworkManager, Etcnet, systemd-networkd) для интерфейса, а также указать, должен ли запускаться данный интерфейс при загрузке системы.
Настройка сети. Выбор сетевой подсистемы для интерфейса

Примечание

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

Глава 17. Администратор системы

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

Примечание

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

Важно

Стоит запомнить пароль root — его нужно будет вводить для получения права изменять настройки системы с помощью стандартных средств настройки Альт Сервер. Более подробную информацию о режиме суперпользователя вы можете прочитать в главе Режим суперпользователя.
Подтверждение введенного (или сгенерированного) пароля учетной записи администратора (root) и продолжение работы программы установки выполняется нажатием кнопки Далее.

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

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

Глава 19. Установка пароля на LUKS-разделы

Примечание

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

Примечание

Впоследствии пароль для шифруемых разделов нельзя будет сменить в Центре управления системой. Для управления шифрованными разделами можно будет воспользоваться командой cryptsetup (см. Управление шифрованными разделами).

Глава 20. Информация о завершении установки

На экране последнего шага установки отображается информация о завершении установки Альт Сервер.
Завершение установки
После нажатия кнопки Завершить автоматически начнется перезагрузка системы.
Не забудьте извлечь установочный DVD (если это не происходит автоматически). Далее можно загружать установленную систему в обычном режиме.

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

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

Примечание

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

Примечание

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

Глава 22. Автоматическая установка системы (autoinstall)

ОС Альт Сервер можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети (по протоколам HTTP или FTP) каталог с несколькими файлами.

Примечание

Настроить FTP-сервер можно, например, в ЦУС (подробнее см. FTP-сервер).

22.1. Файлы автоустановки

Файлы автоустановки:
  • pkg-groups.tar — архив, содержащий дополнительные к базовой системе группы пакетов;
  • autoinstall.scm — сценарий автоматической установки на языке Scheme;
  • vm-profile.scm — различные варианты автоматической разбивки жёсткого диска на языке Scheme;
  • install-scripts.tar — архив, содержащий дополнительные скрипты для preinstall.d и postinstall.d в одноимённых каталогах. Скрипты должны быть исполняемыми. Скрипты из архива заменяют одноимённые скрипты инсталлятора.
Файлы, описывающие процесс установки, необходимо поместить в каталог (например, metadata), доступный по сети по протоколам HTTP или FTP.

22.1.1. Формат файла vm-profile.scm

Файл vm-profile.scm содержит сценарий на языке Scheme, описывающий формат автоматической разбивки жёсткого диска.
Пример файла vm-profile.scm с одним профилем (server) разбивки жёсткого диска:
((server
  (title . "Setup for server")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods plain))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods plain))))
               )
В примере указана разбивка:
  • подкачка (swap) — 1024 МБ;
  • корневой раздел (/) — 8 ГБ;
  • /var — всё остальное, но не меньше 2 ГБ.

Примечание

Все числа в файле vm-profile.scm указываются в виде 512-байтных блоков, поэтому чтобы получить размер в байтах, нужно умножить значения на 512.

Примечание

Добавление записи для /boot/efi не требуется — установщик добавит её сам.
Пример файла vm-profile.scm с тремя профилями разбивки жёсткого диска:
((server
  (title . "Setup for server")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods plain))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods plain))))
  (server_lvm
  (title . "Setup for server LVM")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods lvm))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods lvm))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods lvm))))
  (timeshift
  (title . "Timeshift-compatible setup")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("" (size 40632320 . #t) (fsim . "BtrFS") (methods plain) (subvols ("@" . "/") ("@home" . "/home")))))
               )
В примере указаны профили:
  • server — подкачка (swap), корневой раздел и раздел /var;
  • server_lvm — подкачка (swap), корневой раздел и раздел /var в томе LVM;
  • timeshift — подкачка (swap) и раздел BtrFS с разбивкой на подразделы @ и @home.
Имя профиля указывается в файле autoinstall.scm:
("/evms/profiles/server_lvm" action apply commit #f clearall #t exclude ())

22.1.2. Формат файла pkg-groups.tar

Файл pkg-groups.tar представляет собой tar-архив с двумя подкаталогами:
  • groups — содержит описание групп программного обеспечения в файлах *.directory;
  • lists — содержит файлы со списками пакетов для каждой группы и скрытый файл .base, содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае).
Файл pkg-groups.tar проще всего взять из установочного ISO-образа из каталога /Metadata/ и доработать, если необходимо.
Для изменения списка пакетов:
  1. Распаковать архив, например, выполнив команду:
    $ tar xf pkg-groups.tar
    
  2. Перейти в подкаталог lists и добавить или изменить файл группы. Имена пакетов указываются по одному в каждой строке, например, содержимое файла admc:
    admc
    alterator-gpupdate
    gpupdate
    local-policy
    admx-basealt
    samba-dc-common
    admx-firefox
    admx-chromium
    gpui
    
  3. Упаковать архив, например, выполнив команду:
    $ tar cf pkg-groups.tar groups lists
    
Имя файла используемой группы затем указывается через пробел в autoinstall.scm:
(("pkg-install") action "write" lists "group-1 group-2" auto #t)
где group-1 и group-2 — имена файлов со списками пакетов из подкаталога lists.

Важно

В качестве источника пакетов при установке выступает сам диск, поэтому указание пакетов, которых нет на диске, приведёт к сбою установки.

22.1.3. Формат файла autoinstall.scm

Файл autoinstall.scm представляет собой командный скрипт для программы установки, написанный с использованием языка программирования Scheme. Каждая строка скрипта — команда для модуля программы установки.

Примечание

Ниже приведён пример файла autoinstall.scm для частного случая установки. Если требуются особые настройки, рекомендуется сначала выполнить установку вручную, изучить лог в /root/.install-log/wizard.log, и на его основе составить собственный скрипт autoinstall.scm.
Пример файла autoinstall.scm:
; установка языка операционной системы (ru_RU)
("/sysconfig-base/language" action "write" lang ("ru_RU"))
; установка переключателя раскладки клавиатуры на Ctrl+Shift
("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "ctrl_shift_toggle")
;выбор редакции Альт Сервер
("/editions" action "write" name "edition_server")
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
; автоматическая разбивка жёсткого диска в профиле server
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/server" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
; установка пакетов операционной системы
("pkg-install-init" action "write")
; установка только базовой системы
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
; установка загрузчика GRUB в efi
("/grub" action "write" device "efi" passwd #f passwd_1 "*" passwd_2 "*")
; настройка сетевого интерфейса на получение адреса по DHCP
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "enp0s3" ipv "4" configuration "dhcp" default "" search "" dns "" computer_name "newhost" ipv_enabled #t)
("/net-eth" action "write" commit #t)
; установка пароля суперпользователя root '123'
("/root/change_password" passwd_2 "123" passwd_1 "123")
; задание первого пользователя 'user' с паролем '123'
("/users/create_account" new_name "user" real_name "Пользователь" allow_su #t auto #f passwd_1 "123" passwd_2 "123" autologin #f)
;("/postinstall/firsttime" script "ftp://192.168.0.123/metadata/update.sh")

Примечание

Для переключения раскладки по ALT+Shift используйте:
("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "alt_sh_toggle")
В данном примере будет выполнена установка системы с редакцией Альт Сервер в минимальном профиле (дополнительное ПО в состав устанавливаемых пакетов включаться не будет). Если, например, необходимо установить графический интерфейс GNOME, в список устанавливаемых пакетов нужно добавить группу centaurus/graph:
("/pkg-install" action "write" lists "centaurus/graph" auto #t)
Если необходима редакция Альт Домен, нужно изменить параметр /editions:
("/editions" action "write" name "edition_domain")
При установке системы в режиме EFI загрузчик устанавливается в специальный раздел efi. Пример установки пароля на загрузчик в режиме EFI (пароль '123'):
("/grub" action "write" device "efi" passwd #t passwd_1 "123" passwd_2 "123")
Если установка происходит в режиме Legacy, то загрузчик GRUB необходимо установить на первый жёсткий диск, например:
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
Пример настройки сетевого интерфейса на статический IP-адрес:
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "enp0s3" ipv "4" configuration "static" default "192.168.0.1" search "" dns "8.8.8.8" computer_name "newhost" ipv_enabled #t)
("/net-eth" action "add_iface_address" name "enp0s3" addip "192.168.0.25" addmask "24" ipv "4")
("/net-eth" action "write" commit #t)
где:
  • addip "192.168.0.25" — IP-адрес;
  • default "192.168.0.1" — шлюз по умолчанию;
  • dns "8.8.8.8" — DNS-сервер;
  • computer_name "newhost" — имя хоста.
В конец файла autoinstall.scm можно добавить шаг /postinstall, который позволяет в конце установки или при первом запуске ОС выполнить команду или скрипт. Например:
("/postinstall/firsttime" script "ftp://192.168.0.123/metadata/update.sh")
Шаг /postinstall поддерживает два уровня запуска:
  • laststate — выполняется перед перезагрузкой после установки ОС;
  • firsttime — выполняется при первом запуске установленной системы.
Для указания выполняемого кода доступны два метода (method):
  • script — скачивает и выполняет скрипт с удалённого сервера (поддерживаются протоколы http и ftp). Скрипт скачивается во время установки, а запускается в зависимости от уровня запуска;
  • run — выполняет указанную команду или набор команд напрямую (возможно указание перенаправления).

    Важно

    Для каждого уровня (laststate или firsttime) метод run должен быть указан не более одного раза. Если их несколько, будет выполнен только последний.
Примеры:
("/postinstall/firsttime" script "http://server/script.sh")
("/postinstall/firsttime" run "curl --silent --insecure http://server/finish")

("/postinstall/laststate" script "http://server/script.sh")
("/postinstall/laststate" run "curl --silent --insecure http://server/gotoreboot")

Примечание

На уровне laststate система ещё не запущена, и корневая файловая система смонтирована в каталоге, указанном через переменную $destdir. Поэтому для работы с файлами установленной системы необходимо:
  • использовать $destdir в путях;
  • выполнять команды через утилиту run_chroot.
Пример скрипта:
#!/bin/sh

a= . install2-init-functions

run_chroot sh -c "date > /root/STAMP_1"
date > $destdir/root/STAMP_2

22.1.4. Формат файла install-scripts.tar

Файл install-scripts.tar представляет собой tar-архив, содержащий дополнительные скрипты:
  • preinstall.d — скрипты, выполняемые после установки базовой системы. Как правило, это скрипты для дополнительной настройки базовой системы (перед установкой дополнительного набора ПО) и для переноса настроек из среды инсталлятора. Добавлять сюда свои собственные скрипты стоит только тогда, когда вы чётко представляете свои цели;
  • postinstall.d — скрипты, выполняемые после завершения всей установки, перед перезагрузкой. Как правило, это скрипты, удаляющие служебные пакеты инсталлятора из базовой системы. Подходят для финальной настройки, очистки временных файлов и т.д.

Важно

Данные скрипты выполняются в среде установщика, а не в среде установленной системы. Поэтому для доступа к файлам целевой системы необходимо использовать $destdir или run_chroot (см. пример выше).
Скрипты preinstall.d необходимо поместить в каталог preinstall.d, скрипты postinstall.d — в каталог postinstall.d. Упаковать архив можно, выполнив команду:
$ tar cf install-scripts.tar preinstall.d postinstall.d

22.2. Запуск автоматической установки

Для включения режима автоматической установки ядру инсталлятора ОС необходимо передать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами. Формат адреса в curl должен быть представлен в виде URL:
ai curl=ftp://<IP-адрес>/metadata/
Чтобы начать процесс автоматической установки ОС Альт Сервер, необходимо загрузиться с носителя, на котором записан дистрибутив. Затем клавишами перемещения курсора вверх и вниз выбрать пункт меню Install ALT Server 11.1 и нажать клавишу E. В открывшемся редакторе следует найти строку, начинающуюся с linux /boot/vmlinuz, в её конец дописать требуемые параметры:
Включение режима автоматической установки
После нажатия клавиши F10 начнётся автоматическая установка системы.
При невозможности получения файлов из указанного источника по сети, программа установки будет смотреть в следующих местах:
  1. На диске в каталоге /Metadata/.
  2. В образе установщика в каталоге /usr/share/install2/metadata/.

Глава 23. Первая помощь

Важно

В случае возникновения каких-либо неприятностей не паникуйте, а спокойно разберитесь в сложившейся ситуации. Linux не так уж просто довести до полной неработоспособности и утраты ценных данных. Поспешные действия отчаявшегося пользователя могут привести к плачевным результатам. Помните, что решение есть, и оно обязательно найдётся!

23.1. Проблемы при установке системы

Важно

При возникновении проблем с UEFI или Legacy/CSM рекомендуется изменить выбор используемого вида прошивки на другой. Не следует выбирать режим смешанной загрузки Legacy/UEFI! Рекомендуется отключить всевозможные оптимизации и ускорение UEFI-загрузки, а также отключить на время установки SecureBoot.
Если в системе не произошла настройка какого-либо компонента после стадии установки пакетов, не отчаивайтесь, доведите установку до конца, загрузитесь в систему и попытайтесь в спокойной обстановке повторить настройку.
Если установить систему не удалось вовсе, сначала попробуйте выполнить установку в безопасном режиме. Этот режим предназначен для запуска системы на старом или нестабильном оборудовании.
Для включения безопасного режима необходимо на экране загрузки выбрать пункт Safe Mode, затем Enable:
Включение безопасного режима
Далее можно начать установку системы в безопасном режиме, выбрав пункт Install ALT Server 11.1.
В безопасном режиме используется следующая переменная загрузки:
SAFEMODE="nomodeset nosplash module_blacklist=nouveau,nvidia,ast bc_debug irqpoll pci=noaer oldinst"
где:
  • nomodeset — отключает автозагрузку графических драйверов. Используется для предотвращения проблем с отображением на этапе загрузки (например, чёрный экран);
  • nosplash — отключает графический экран загрузки, позволяя видеть сообщения консоли;
  • module_blacklist=nouveau,nvidia,ast — запрещает загрузку указанных модулей ядра;
  • bc_debug — включает режим расширенной диагностики на этапе stage1 и копирует журнал в stage2;
  • irqpoll — заставляет ядро опрашивать IRQ (аппаратные прерывания) вручную;
  • pci=noaer — отключает AER (Advanced Error Reporting) для PCI устройств. Используется при проблемах с PCIe-контроллерами, чтобы подавить спам в журнале и сбои при загрузке;
  • oldinst — применяет более медленный, но надёжный метод копирования файлов вместо распаковки командой unsquashfs (актуально только для образов, использующих squashfs).
Этот набор параметров минимизирует использование графической подсистемы и повышает совместимость с «проблемным» оборудованием.
Изменить параметры загрузки можно не только выбрав пункт Safe Mode, но и отредактировав любой другой пункт меню — например, Install ALT Server 11.1. Это может быть полезно, если требуется вручную добавить параметры ядра для диагностики или устранения проблем с оборудованием без использования полного безопасного режима.
Редактор параметров текущего пункта загрузки можно вызвать нажатием клавиши E.
Редактор параметров пункта загрузки «Install ALT Server 11.1»
При редактировании пункта Install ALT Server 11.1 в открывшемся редакторе следует найти строку, начинающуюся с linux /boot/vmlinuz. В конец этой строки необходимо дописать требуемые параметры, отделяя их пробелами, и нажать F10 для запуска с изменёнными параметрами.
Если вы хотите получить точный ответ, то сообщите, пожалуйста, подробный состав вашего оборудования и подробное описание возникшей проблемы в нашей системе отслеживания ошибок.

23.2. Проблемы с загрузкой системы

Если не загружается ни одна из установленных операционных систем, то значит, есть проблема в начальном загрузчике. Такие проблемы могут возникнуть после установки системы, в случае если загрузчик все-таки не установлен или установлен с ошибкой. При установке или переустановке Windows на вашем компьютере загрузчик Linux будет перезаписан в принудительном порядке, и станет невозможно запускать Linux.
Повреждение или перезапись загрузчика никак не затрагивает остальные данные на жёстком диске, поэтому в такой ситуации очень легко вернуть работоспособность: для этого достаточно восстановить загрузчик.
Если у вас исчез загрузчик другой операционной системы или другого производителя, то внимательно почитайте соответствующее официальное руководство на предмет его восстановления. Но в большинстве случаев вам это не потребуется, так как загрузчик, входящий в состав Альт Сервер, поддерживает загрузку большинства известных операционных систем.
Для восстановления загрузчика достаточно любым доступным способом загрузить Linux и получить доступ к тому жёсткому диску, на котором находится повреждённый загрузчик. Для этого проще всего воспользоваться восстановительным режимом, который предусмотрен на установочном диске дистрибутива (пункт Rescue LiveCD).
Загрузка восстановительного режима заканчивается запросом на ввод логина суперпользователя (root):
Log in as root
localhost login:
После ввода логина логина суперпользователя (root) система будет готова к приёму команд:
Восстановительный режим
В большинстве случаев для восстановления загрузчика можно просто воспользоваться командой fixmbr без параметров. Программа попытается переустановить загрузчик в автоматическом режиме.

23.3. Полезные ссылки

Если у вас что-то не получается, вы всегда можете поискать решение на ресурсах, указанных в разделе Техническая поддержка продуктов «Базальт СПО».

Часть III. Начало использования Альт Сервер

Глава 24. Загрузка системы

Запуск Альт Сервер выполняется автоматически после запуска компьютера и отработки набора программ BIOS.
На экране появляется меню, в котором перечислены возможные варианты загрузки операционной системы.
Загрузка системы

Важно

При первом старте, в условиях установки нескольких ОС на один компьютер, возможно отсутствие в загрузочном меню пункта/пунктов с другой/другими операционными системами, они будут добавлены в список при последующей перезагрузке. Все перечисленные в меню после перезагрузки варианты могут быть загружены загрузчиком Linux.
Стрелками клавиатуры Вверх и Вниз выберите нужную операционную систему. Дополнительно к основным вариантам запуска ОС из этого меню можно загрузить Linux в безопасном режиме или запустить проверку памяти.
Загрузка операционной системы по умолчанию (первая в списке) начинается автоматически после небольшого времени ожидания (обычно несколько секунд). Нажав клавишу Enter, можно начать загрузку немедленно.
Нажатием клавиши E можно вызвать редактор параметров текущего пункта загрузки. Если система настроена правильно, то редактировать их нет необходимости.
В процессе загрузки Альт Сервер пользователь может следить за информацией процесса загрузки, которая отображает этапы запуска различных служб и программных серверов в виде отдельных строк, на экране монитора.
Информация процесса загрузки системы
При этом каждая строка начинается словом вида [XXXXXXX] (FAILED или OK), являющегося признаком нормального или ненормального завершения этапа загрузки. Слово XXXXXXX=FAILED (авария) свидетельствует о неуспешном завершении этапа загрузки, что требует вмешательства и специальных действий администратора системы.
Загрузка операционной системы может занять некоторое время, в зависимости от производительности компьютера. Основные этапы загрузки операционной системы — загрузка ядра, подключение (монтирование) файловых систем, запуск системных служб — периодически могут дополняться проверкой файловых систем на наличие ошибок. В этом случае время ожидания может быть занять больше времени, чем обычно. Подробную информацию о шагах загрузки можно получить, нажав клавишу Esc.

Глава 25. Получение доступа к зашифрованным разделам

В случае, если вы создали шифрованный раздел, вам потребуется вводить пароль при обращении к этому разделу.
Запрос ввода пароля для LUKS-раздела
Например, если был зашифрован домашний раздел /home, то для того, чтобы войти в систему под своим именем пользователя, вам потребуется ввести пароль этого раздела и затем нажать Enter.

Важно

Если не ввести пароль за отведенный промежуток времени, то загрузка системы завершится ошибкой. В этом случае вам следует перезагрузить систему, нажав для этого два раза Enter, а затем клавиши Ctrl+Alt+Delete.

Глава 26. Вход в систему

26.1. Вход и работа в консольном режиме

Стандартная установка Альт Сервер включает базовую систему, работающую в консольном режиме.
При загрузке в консольном режиме работа загрузчика Альт Сервер завершается запросом на ввод логина и пароля учетной записи. В случае необходимости на другую консоль можно перейти, нажав Ctrl+Alt+F2.

Примечание

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

26.2. Виртуальная консоль

В процессе работы ОС Альт Сервер активно несколько виртуальных консолей. Каждая виртуальная консоль доступна по одновременному нажатию клавиш Ctrl, Alt и функциональной клавиши с номером этой консоли от F1 до F6.
На первых шести виртуальных консолях (от Ctrl+Alt+F1 до Ctrl+Alt+F6) пользователь может зарегистрироваться и работать в текстовом режиме. Двенадцатая виртуальная консоль (Ctrl+Alt+F12) выполняет функцию системной консоли — на неё выводятся сообщения о происходящих в системе событиях.
Если при установке системы была выбрана графическая оболочка GNOME, то первую виртуальную консоль (Ctrl+Alt+F1) будет занимать gdm (графический менеджер входа), а на второй виртуальной консоли (Ctrl+Alt+F2) будет запущена графическая сессия.

26.3. Вход и работа в системе в графическом режиме

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

Важно

Поскольку работа в системе с использованием учётной записи администратора системы небезопасна, вход в систему в графическом режиме для суперпользователя root запрещён. Попытка зарегистрироваться в системе будет прервана сообщением об ошибке.
GNOME поддерживает две графические подсистемы — Wayland и X11 (Xorg). По умолчанию в Альт Сервер используется Wayland.
Графическую подсистему можно выбрать при входе в систему:
  1. В окне ввода пароля нажать значок шестеренки;
  2. Выбрать графический сервер:
    • GNOME — для запуска сессии с использованием Wayland;
    • GNOME на Xorg — для запуска сессии с использованием Xorg;
    Выбор графического сервера при входе в систему
  3. Войти в систему. GNOME запустится с выбранным графическим сервером.

Примечание

Просмотреть какой графический сервер используется в текущей графической сессии можно, выполнив команду:
$ echo $XDG_SESSION_TYPE
 wayland

Часть IV. Рабочий стол GNOME

Глава 27. Рабочий стол GNOME

Рабочий стол GNOME
На рабочем столе GNOME есть две особые области:
  • область рабочего стола (рабочая площадь в центре, занимающая большую часть экрана);
  • панель GNOME (полоса внизу экрана).

27.1. GNOME: Область рабочего стола

В области рабочего стола отображается содержимое папки Рабочий стол. По умолчанию в области рабочего стола расположены значки:
  • Домашняя папка — предоставляет доступ к домашнему каталогу пользователя /home/<имя пользователя>. В этой папке по умолчанию хранятся пользовательские файлы (например, аудиозаписи, видеозаписи, документы). Домашняя папка есть у каждого пользователя системы, и по умолчанию содержащиеся в ней файлы недоступны для других пользователей (даже для чтения);
  • Корзина — предоставляет доступ к «удаленным файлам». Обычно удаляемый файл не удаляется из системы. Вместо этого он помещается в «Корзину». С помощью этого значка можно просмотреть или восстановить «удаленные файлы». Чтобы удалить файл из системы, нужно очистить «Корзину». Чтобы очистить «Корзину», необходимо щелкнуть правой кнопкой мыши по значку Корзина и выбрать в контекстном меню пункт Очистить корзину.
На область рабочего стола можно перетащить файлы и создать ярлыки программ.
Для добавления ярлыка на рабочий стол необходимо открыть Меню GNOME и в контекстном меню нужного приложения выбрать пункт Создать ярлык на рабочем столе:
Создать ярлык на рабочем столе

27.2. Панель GNOME

Панель GNOME расположена в нижней части экрана.
Элементы панели GNOME
На панели расположены:
  • основное меню — Меню GNOME, обеспечивающее доступ ко всем графическим приложениями и изменениям настроек;
  • Кнопка — Обзор  — кнопка Обзор;
  • Панель задач с кнопками избранных приложений;
  • раскладка клавиатуры;
  • текущие дата и время;
  • системное меню для управления звуком, сетевыми соединениями и питанием системы;
  • кнопка Показать рабочий стол — позволяет свернуть (развернуть) все открытые окна на текущем рабочем месте.
Через Меню GNOME осуществляется запуск всех приложений, установленных на компьютер.
Меню MATE — все доступные программы

Примечание

Открыть меню также можно, нажав клавишу Super.
Кнопка Обзор позволяет переключаться между режимами Обзор и Рабочий стол.
Режим Обзор позволяет получить доступ к открытым окнам и приложениям. В этом режиме для поиска приложений, файлов, папок можно просто начать набирать текст.
GNOME. Режим Обзор
Чтобы переключиться на окно, следует в режиме Обзор нажать на это окно. Если у вас открыто несколько виртуальных рабочих столов, можно нажать на любой из них, чтобы посмотреть, какие окна открыты на этом виртуальном рабочем столе.
На панели задач отображаются избранные и запущенные приложения. Для открытия приложения достаточно щёлкнуть мышью по значку на панели задач. Если приложение уже запущено, под его значком будет показана белая полоса. Нажатие правой кнопки мыши на значке открывает меню, в котором можно выбрать любое из уже открытых окон запущенного приложения или открыть новое окно.
Запущенные приложения на панели задач
Если у приложения есть значки на Панели задач, то приложение можно запустить, щелкнув по этому значку.

Примечание

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

Примечание

Используйте комбинацию клавиш Alt+Tab для переключения между открытыми окнами.
Удерживая нажатой клавишу Alt, нажимайте Tab для последовательного переключения между окнами. Отпустите обе клавиши, чтобы подтвердить свой выбор.
На правой части панели отображаются раскладка клавиатуры, текущие дата и время, системное меню для управления звуком, сетевыми соединениями и питанием системы.
При нажатии на строку даты и времени (Super+V) открывается календарь со списком предстоящих событий и уведомлений:
Календарь и уведомления
Нажатие на кнопку, расположенную в правом углу панели, открывает Системное меню:
Системное меню GNOME
Системное меню также можно открыть, нажав Super+S.
В системном меню отображается индикатор состояния батареи и кнопки:
  •  — кнопка для запуска инструмента создания снимков экрана;
  •  — кнопка для запуска приложения Настройки GNOME;
  •  — кнопка блокировки сеанса доступа;
  •  — кнопка позволяющая приостановить или выключить компьютер, предоставить доступ к компьютеру другому пользователю без полного выхода из системы.
С помощью ползунков можно регулировать громкость звука или яркость экрана.
Остальная часть меню содержит кнопки быстрых настроек, с помощью которых можно управлять доступными службами и устройствами (например, Wi-Fi, Bluetooth).

27.3. Запуск приложений

В левой части панели GNOME находится Меню GNOME. Через Меню GNOME осуществляется запуск всех приложений, установленных на компьютер.
Меню GNOME — все доступные программы
Установленные приложения доступны в следующих пунктах меню:
  • Графика
  • Инструменты
  • Настройки
  • Офис
  • Сеть
  • Системные.
Этот список обновляется при установке или удалении программ.
Поле Поиск позволяет быстро запустить нужное приложение. Для этого достаточно приступить к вводу названия или описания искомого приложения, по мере ввода символов, в меню остаются видны только те приложения, которые соответствуют запросу. Если объект поиска отсутствует в меню, функция Поиск «предложит» другие возможные действия, например, поиск в файлах ОС или поисковой системе.
Поиск в меню GNOME
Если у приложения есть кнопка на панели задач, его можно запустить, нажав эту кнопку.
При нажатии на Super+A будут показаны значки всех установленных приложений:
Поиск приложения
Чтобы найти приложение можно перейти в режим Обзор и приступить к вводу названия или описания искомого приложения, поиск начнётся в процессе набора символов:
Поиск приложения
Для запуска приложения также можно нажать Alt+F2, в открывшемся окне ввести название приложения и нажать Enter:
Запуск ЦУС

Глава 28. Настройка параметров GNOME

Самые широкие возможности по настройке графической среды GNOME предлагает диалог Настройки GNOME. Здесь можно изменять фон рабочего стола, внешний вид, а также настраивать различные системные параметры.
Настройки GNOME
Настройки GNOME можно запустить как любое другое приложение (см. Запуск приложений).
Настройки GNOME также можно запустить из системного меню, нажав кнопку Кнопка Настройки , или из командной строки:
$ gnome-control-center

Глава 29. Расширяемый центр управления (Tuner)

Тюнер (Tuner) — это расширяемый центр управления, обеспечивающий расширенный контроль над интерфейсом и функциями с помощью плагинов. Тюнер содержит дополнительный набор настроек системы, компонентов, приложений и т. д.
На вкладке Внешний вид можно выбрать темы курсора и значков, а также указать, следует ли использовать светлую тему для оболочки системы.
Тюнер. Вкладка Внешний вид
На вкладке Мышь и сенсорная панель можно отключить вставку выделенного текста по нажатию средней кнопки мыши, а также настроить действия, выполняемые при нажатии кнопок мыши в заголовке окна.
Тюнер. Вкладка Мышь и сенсорная панель
На вкладке Клавиатура настраиваются расширенные параметры ввода и поведения клавиатуры, включая раскладки, модификаторы, горячие клавиши и поведение системных клавиш.
Тюнер. Вкладка Клавиатура
Кнопка Дополнительные параметры раскладки открывает отдельное окно, где собраны более тонкие и продвинутые настройки поведения клавиатуры. Эти параметры позволяют гибко адаптировать ввод под конкретные пользовательские сценарии и предпочтения.
Тюнер. Дополнительные параметры раскладки
Вкладка Оболочка и композитор предоставляет дополнительные параметры настройки поведения окон и графической оболочки.
Тюнер. Вкладка Оболочка и композитор
На этой вкладке доступны следующие параметры:
  • Центрировать новые окна — включает автоматическое размещение новых окон в центре экрана при их открытии;
  • Изменять размер щелчком вторичной кнопки — позволяет изменять размер окна с помощью щелчка правой кнопкой мыши (вторичной кнопки) по краю окна, что может быть удобно при работе с мышью без модификаторов клавиатуры;
  • Режим фокусировки окна — определяет поведение системы при выборе активного окна;
  • Расположение кнопок окна — позволяет изменить порядок и наличие кнопок управления окнами в заголовке:
    Настройка видимости кнопок в панели заголовка окон
Параметры, расположенные в секции Дополнительные возможности, включают переключатели, активирующие соответствующие функции в Настройках GNOME:
  • Параметры переменной частоты обновления — позволяет адаптивно менять частоту обновления монитора для обеспечения плавности и отсутствия разрывов во время игр и показа видео.

    Примечание

    Переменная частота обновления (VRR) работает только на мониторах, которые поддерживают эту функцию.
  • Параметры дробного масштабирования — позволяет включить поддержку масштабирования с дробным коэффициентом (например, 125 %, 150 %), расширяя выбор масштабов в настройках GNOME. Это может быть полезно на экранах с нестандартным DPI.
    Настройки масштабирования

    Примечание

    Функция дробного масштабирования доступна только в сессии Wayland.

    Примечание

    Включение дробного масштабирования может привести к размытию изображения в устаревших приложениях, использующих XWayland, даже если выбраны только целочисленные масштабы, поскольку при этом меняется метод рендеринга.
  • Родное масштабирование XWayland — включает режим масштабирования приложений X11, запускаемых под XWayland, с учётом текущего масштаба Wayland. Это позволяет избежать размытия и обеспечивает более чёткий вывод.
Вкладка GDM предоставляет доступ к опции синхронизации текущих параметров монитора, с экраном входа в графическом режиме.
Синхронизация GDM

Глава 30. Полезные комбинации клавиш

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

Таблица 30.1. Управление рабочим столом

Комбинация клавиш
Описание
Super
Показать/скрыть меню GNOME
Super+A
Показать экран приложений
Super+Page Up и Super+Page Down
Переключение между рабочими пространствами
Super+Shift+ и Super+Shift+
Переместить текущее окно на другой монитор
Super+L
Блокировка экрана
Super+V
Показать календарь и список уведомлений
Super+S
Показать системное меню
Alt+F2
Открыть окно для запуска команд (в окне можно использовать стрелки)

Таблица 30.2. Переключение раскладки клавиатуры

Комбинация клавиш
Описание
Super+Space
Переключение раскладки клавиатуры (или источник ввода)
Super+Shift+Space
Переключение раскладки клавиатуры в обратном порядке (полезно если имеется больше двух источников ввода)

Таблица 30.3. Управление окнами

Комбинация клавиш
Описание
Alt+F4
Закрыть окно
Super+H
Свернуть окно
Super+
Развернуть окно
Super+
Восстановить размер
Super+ и Super+
Переместить окно влево/вправо (половина экрана)
Super+Tab
Переключение между окнами
Super+Shift+Tab
Переключение между окнами в обратном порядке
Super+`
Переключение между окнами одного приложения

Таблица 30.4. Общие комбинации клавиш для редактирования

Комбинация клавиш
Описание
Ctrl+A
Выделение всего текста или всех объектов в списке
Ctrl+X
Вырезать (удалить) выделенный текст или объекты и поместить их в буфер обмена
Ctrl+C
Копировать выделенный текст или объекты в буфер обмена
Ctrl+V
Вставить содержимого буфера обмена
Ctrl+Z
Отменить последнее выполненное действие
Ctrl+Shift+C
Копировать в терминале (консоли) выделенный текст или команду в буфер обмена
Ctrl+Shift+V
Вставить содержимое буфера обмена в терминал (консоль)

Таблица 30.5. Снимки и запись экрана

Комбинация клавиш
Описание
PrtSc (Print Screen)
Запуск инструмента создания снимков экрана
Alt+PrtSc
Сделать снимок активного окна
Shift+PrtSc
Сделать снимок всего экрана
Shift+Ctrl+R
Запись экрана (включить/выключить)
Изменить или добавить свои сочетания клавиш можно в диалоговом окне Комбинации клавиш (открывается при нажатии кнопки Просмотр и изменение комбинаций клавиш в модуле Клавиатура) приложения Параметры системы:
Настройки комбинаций клавиш

Часть V. Настройка системы

Глава 31. Центр управления системой

31.1. Описание

Для управления настройками установленной системы вы можете воспользоваться Центром управления системой (ЦУС). ЦУС в Альт Сервер представлен консольным интерфейсом (alteratorctl), графическим интерфейсом и веб-интерфейсом, позволяющим управлять сервером с любого компьютера сети.
Графический интерфейс ЦУС включает модули для выполнения наиболее востребованных административных задач: просмотр информации о состоянии системы, управление компонентами, настройка сетевых подключений, добавление и удаление пользователей и тому подобное. Каждый модуль отвечает за настройку определённой функции или свойства системы. Консольный интерфейс alteratorctl включает модули: компоненты, редакции, информация о системе, пакеты, диагностика, менеджер системных интерфейсов.
ОС Альт Сервер, установленная с графическим окружением (GNOME), включает все три типа интерфейса ЦУС. Система, установленная без графического окружения, включает только alteratorctl с модулями. Веб-интерфейс ЦУС при необходимости доустанавливается через компоненты: alteratorctl components.

31.2. Применение центра управления системой

Вы можете использовать ЦУС для разных целей, например:
  • Управления функциональными компонентами системы (установка, удаление);
  • Просмотра лицензии на систему и иной информации;
  • Смены редакции;
  • Настройки Даты и времени (datetime);
  • Управления выключением и перезагрузкой компьютера (ahttpd-power, доступно только в веб-интерфейсе);
  • Управления Системными службами (services);
  • Просмотра Системных журналов (logs);
  • Настройки OpenVPN-подключений (openvpn-server и net-openvpn);
  • Конфигурирования Сетевых интерфейсов (net-eth);
  • Изменения пароля Администратора системы (root) (root);
  • Создания, удаления и редактирования учётных записей Пользователей (users);
  • Настройки ограничения Использования диска (квоты) (quota).
Вы всегда можете воспользоваться кнопкой Справка. Модули ЦУС имеют справочную информацию.

31.3. Запуск центра управления системой в графической среде

Графический интерфейс ЦУС можно запустить следующими способами:
  • в графической среде 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 позволяет выбрать один из режимов:
  • основной режим (кнопка отжата);
  • режим эксперта (кнопка нажата).
Выбор режима влияет на количество отображаемых модулей. В режиме эксперта отображаются все модули, а в основном режиме только наиболее используемые.

Примечание

Запустить Alterator legacy также можно, выполнив команду:
$ acc-legacy

31.4. Использование веб-ориентированного центра управления системой

ЦУС имеет веб-ориентированный интерфейс, позволяющий управлять данным компьютером с любого другого компьютера сети.

31.4.1. Установка

Веб-интерфейс ЦУС будет доступен в ОС Альт Сервер, если при установке системы были выбраны группы приложений Поддержка графической подсистемы (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

31.4.2. Запуск

Работа с ЦУС может происходить из любого веб-браузера. Для начала работы необходимо перейти по адресу https://ip-адрес:8080/.
Например, для сервера задан IP-адрес 192.168.0.122. В таком случае:
  • интерфейс управления будет доступен по адресу: https://192.168.0.122:8080/;
  • документация по дистрибутиву будет доступна по адресу https://192.168.0.122/.

Примечание

IP-адрес сервера можно узнать, введя на сервере команду:
$ ip addr
IP-адрес будет указан после слова inet:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 60:eb:69:6c:ef:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.122/24 brd 192.168.0.255 scope global enp0s3
Например, тут мы видим, что на интерфейсе enp0s3 задан IP-адрес 192.168.0.122.
При запуске центра управления системой необходимо ввести в соответствующие поля имя пользователя (root) и пароль пользователя:
Вход в систему
После этого будут доступны все возможности ЦУС на той машине, к которой было произведено подключение через веб-интерфейс.
Веб-интерфейс центра управления системой
Веб-интерфейс ЦУС можно настроить (кнопка Настройка), выбрав один из режимов:
  • основной режим;
  • режим эксперта.
Выбор режима влияет на количество отображаемых модулей. В режиме эксперта отображаются все модули, а в основном режиме только наиболее используемые.
Центр управления системой содержит справочную информацию по включённым в него модулям. Об использовании самого интерфейса системы управления можно прочитать, нажав на кнопку Справка на начальной странице центра управления системой.

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

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

Примечание

Подробнее об использовании Центра управления системой можно узнать в главе Средства удаленного администрирования.

31.5. Модули ЦУС

Установленные пакеты, которые относятся к ЦУС, можно посмотреть, выполнив команду:
rpm -qa | grep alterator*
Прочие пакеты для ЦУС можно найти, выполнив команду:
apt-cache search alterator*
Модули можно дополнительно загружать и удалять как обычные программы:
# apt-get install alterator-net-openvpn
# apt-get remove alterator-net-openvpn
Установленные компоненты, относящиеся к ЦУС, можно просмотреть, выполнив команду:
$ alteratorctl components list -i |grep alterator
Все компоненты ЦУС можно найти, выполнив команду:
$ alteratorctl components list | grep alterator
│  └─[*] Альтератор (alterator)
│     └─[*] Альтератор - базовое управление системой (alterator-base)
│  ├─[~] Альтератор (alterator)
│  │  ├─[~] Альтератор (legacy) (alterator-legacy)
│  │  │  ├─[ ] Web-интерфейс - Альтератор (legacy) (alterator-legacy-web)
│  │  │  ├─[ ] Альтератор - графический браузер (legacy) (alterator-browser)
│  │  │  ├─[~] Базовое системное управление - Альтератор (legacy) (alterator-legacy-system)
│  │  │  │  ├─[ ] USBGuard - Альтератор (legacy) (alterator-legacy-usbguard)
│  │  │  │  ├─[ ] USB mount - Альтератор (legacy) (alterator-legacy-usbmount)
│  │  │  │  ├─[ ] Администратор системы - Альтератор (legacy) (alterator-legacy-root)
…
Пример установки компонента alterator-legacy-usbguard:
$ alteratorctl components install alterator-legacy-usbguard

Примечание

После установки модуля ЦУС, у которого есть веб-интерфейс, для того чтобы он отобразился в веб-интерфейсе, необходимо перезапустить службу ahttpd:
# systemctl restart ahttpd

Глава 32. Настройка сети

32.1. NetworkManager

Для управления настройками сети в Альт Сервер может использоваться программа NetworkManager.
NetworkManager позволяет подключаться к различным типам сетей: проводные, беспроводные, мобильные, VPN и DSL, а также сохранять эти подключения для быстрого доступа к сети. Например, если вы подключались к сети в каком-либо интернет-кафе, то можно сохранить настройки этого подключения и в следующее посещение этого кафе подключиться автоматически.
В системном меню есть две кнопки Проводное и Wi-Fi, которые отображают состояние (включено/отключено) соответственно проводного и беспроводного соединения.
Меню NetworkManger при нажатии левой кнопки мыши
Нажатие на кнопку меняет состояние соответствующего соединения.
Для подключения к беспроводной сети, необходимо нажать на стрелку рядом с кнопкой Wi-Fi. Будет раскрыт раздел Wi-Fi, в котором можно выбрать нужную Wi-Fi сеть:
Раздел Wi-Fi

Примечание

При подключении к беспроводной сети в первый раз может понадобиться указать некоторые сведения о защите сети (например, указать аутентификационные данные).
При нажатии на стрелку рядом с кнопкой Проводное открывается окно с выбором доступных проводных подключений. Для того чтобы просмотреть информацию о сетевом соединении или изменить его настройки, следует нажать кнопку Настройки подключения:
Раздел Проводные подключения
Будет открыт модуль Сеть приложения Настройки GNOME:
Модуль Сеть
Для просмотра/изменения настроек необходимо нажать кнопку Параметры сети Кнопка «Параметры сети» . В открывшемся окне можно просмотреть настройки сетевого интерфейса:
Информация о проводном сетевом соединении

Примечание

Для соединения Wi-Fi кнопка Кнопка «Параметры сети» будет расположена рядом с активной сетью.
Окно настроек Wi-Fi соединения:
Изменение настроек Wi-Fi соединения

Примечание

NetworkManager под именем System enp0s3 показывает системное Ethernet-соединение, создаваемое Etcnet. Изменить его в диалоге Сетевые соединения невозможно. Это соединение можно изменить в ЦУС, там же можно выбрать, какой именно интерфейс какой подсистемой обслуживается (подробнее о выборе сетевой подсистемы рассказано в разделе Конфигурирование сетевых интерфейсов).

32.2. Настройка в ЦУС

Настройку сети можно выполнить в Центре управления системой в разделе СетьEthernet интерфейсы. Здесь можно задать как глобальные параметры сети (адрес сервера DNS, имя компьютера), так и настройки конкретного сетевого интерфейса:
Настройка сети в ЦУС
Подробнее о настройке сетевых интерфейсов в ЦУС рассказано в разделе Конфигурирование сетевых интерфейсов.

Глава 33. Центр приложений

Центр приложений позволяет легко устанавливать и удалять программы из репозиториев Альт, совместимых с вашим дистрибутивом. Центр приложений позволяет выполнять поиск по названиям и описаниям среди доступных приложений.
Для запуска Центра приложений следует выбрать Меню GNOMEСистемныеЦентр приложений.
Вся информация распределена по трём вкладкам:
  • на вкладке Обзор показаны доступные приложения:
    Центр приложений
  • на вкладке Установлено показаны установленные приложения:
    Центр приложений вкладка Установлено
  • на вкладке Обновления показана информация о статусе обновления программного обеспечения.
    Центр приложений вкладка Обновления

33.1. Установка/удаление программ

На вкладке Обзор доступные приложения разбиты на категории. Чтобы найти приложение, можно выбрать категорию приложения.
Быстро найти необходимое приложение можно, используя поиск. Строка поиска открывается, при нажатии на кнопку Кнопка поиска , расположенную в левом верхнем углу Центра приложений. В строке поиска нужно ввести название приложения.
Поиск приложения
При выборе приложения, в детальном просмотре, доступны кнопки Установить/Запустить/Удалить (в зависимости от того установлено данное приложение или нет), выводятся снимки экрана, полное описание, а также пользовательские комментарии:
Детальный просмотр приложения
Чтобы установить приложение, нужно нажать кнопку Установить.

Примечание

Для удаления программ потребуется ввести пароль пользователя root.
Список подключенных репозиториев можно просмотреть, нажав на кнопку Кнопка дополнительных сведений и выбрав пункт Репозитории ПО:
Репозитории ПО

33.2. Обновление системы

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

Часть VI.  Alterator на D-Bus

Глава 34. Alteratorctl

alteratorctl является компонентом новой реализации проекта Альтератор, Alterator на D-Bus.
Приложение имеет модульную структуру. Каждый модуль предназначен для работы с определенным интерфейсом объектов на D-Bus. Запуск модулей осуществляется при помощи команды:
$ alteratorctl <имя_модуля> <команда_модуля>
Справку по каждому модулю можно получить, выполнив команду:
$ alteratorctl <имя_модуля> -h
Список модулей можно просмотреть, выполнив команду:
$ alteratorctl -m
manager
editions
components
diag
packages
systeminfo

34.1. Модуль manager

Модуль manager использует интерфейс org.altlinux.alterator.manager объекта /org/altlinux/alterator.

34.2. Модуль editions

Модуль editions использует интерфейс org.altlinux.alterator.editions объектов из пакетов с редакциями.
Модуль предоставляет возможность выбора редакции и получения информации о составе доступных к выбору редакций.

Примечание

Для работы некоторых команд модуля могут потребоваться права администратора.
Редакция — набор компонентов в составе дистрибутива. Каждая редакция содержит индивидуальный набор предустановленных и доступных для установки компонентов.
Примеры использования модуля:
  • вывести список доступных редакций:
    $ alteratorctl editions
    Альт Домен (edition_domain)
    * Альт Сервер (edition_server)
    
    Звёздочкой отмечена текущая редакция;
  • отобразить текущую редакцию:
    $ alteratorctl editions get
    edition_server
    
  • вывести информацию о лицензии текущей редакции:
    $ alteratorctl editions license
    
  • вывести информацию о лицензии редакции Альт Домен:
    $ alteratorctl editions license edition_domain
    
  • установить редакцию Альт Домен:
    $ alteratorctl editions set edition_domain
    ==== AUTHENTICATING FOR org.altlinux.alterator.current-edition1.Set ====
    org.altlinux.alterator.current-edition1.License requires authentication.
    Authenticating as: System Administrator (root)
    Password:
    ==== AUTHENTICATION COMPLETE ====
    

Примечание

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

34.3. Модуль components

Модуль components использует интерфейс org.altlinux.alterator.component1 объектов установленных компонентов.
Компонент — набор пакетов, предоставляющих определённую функциональность, и некоторую последовательность действий (deploy) для их конфигурации.
Модуль позволяет:
  • просматривать список компонентов;
  • просматривать информацию о компонентах (статус, описание, состав);
  • устанавливать/удалять компоненты.

Примечание

Для работы некоторых команд модуля могут потребоваться права администратора.
Примеры использования модуля:
  • вывести компоненты в виде дерева с псевдографикой:
    $ alteratorctl components -g
    
  • вывести компоненты в виде простого дерева:
    $ alteratorctl components -t
    
  • вывести список компонентов с отображением их имён, а не только имён объектов:
    $ alteratorctl components -l --enable-display-name
    
  • вывести пути объектов компонентов на D-Bus в виде дерева с псевдографикой:
    $ alteratorctl components list -p
    
  • вывести список установленных компонентов:
    $ alteratorctl components list -l -i
    
  • вывести список неустановленных компонентов:
    $ alteratorctl components list -l -u
    
  • вывести описание компонента samba-dc:
    $ alteratorctl components description samba-dc
    Предназначен для развёртывания контроллера домена Active Directory на базе Samba,
    совместимого с Microsoft Active Directory.
    
    Обеспечивает единый центр аутентификации и авторизации, хранение данных о пользователях и устройствах,
    а также их администрирование.
    
  • установить компонент samba-dc:
    $ alteratorctl components install samba-dc
    ==== AUTHENTICATING FOR org.altlinux.alterator.apt1.InstallOrRemove ====
    org.altlinux.alterator.apt1.InstallOrRemove requires authentication.
    Authenticating as: System Administrator (root)
    Password:
    ==== AUTHENTICATION COMPLETE ====
    …
    Следующие компоненты будут установлены:
      samba-dc
    Следующие пакеты будут установлены:
      bind-utils  samba-winbind-clients  task-samba-dc
    
    Продолжить? [Y/n] y
    
    Preparing the transaction...
    …
    
  • удалить компонент samba-dc:
    $ alteratorctl components remove samba-dc
    ==== AUTHENTICATING FOR org.altlinux.alterator.apt1.InstallOrRemove ====
    org.altlinux.alterator.apt1.InstallOrRemove requires authentication.
    Authenticating as: System Administrator (root)
    Password:
    ==== AUTHENTICATION COMPLETE ====
    …
    Следующие компоненты будут удалены:
      samba-dc
    Следующие пакеты будут удалены:
      bind-utils  samba-winbind-clients  task-samba-dc
    
    Продолжить? [Y/n] y
    
    Preparing the transaction...
    …
    

34.4. Модуль diag

Модуль diag использует интерфейс org.altlinux.alterator.diag1 объектов установленных инструментов диагностики.

34.5. Модуль packages

Модуль packages использует интерфейсы org.altlinux.alterator.rpm1, org.altlinux.alterator.apt1, org.altlinux.alterator.repo объектов /org/altlinux/alterator/rpm, /org/altlinux/alterator/apt, /org/altlinux/alterator/repo соответственно.

Примечание

Для работы некоторых команд модуля могут потребоваться права администратора.
Примеры использования модуля:
  • вывести список подключенных репозиториев:
    $ alteratorctl packages repo list
    rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic
    rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic
    rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
    
  • установить пакет alterator-usbguard:
    $ alteratorctl packages apt install alterator-usbguard
    Следующие пакеты будут установлены:
      alterator-usbguard
    
    Продолжить? [Y/n] y
    
    ==== AUTHENTICATING FOR org.altlinux.alterator.apt1.InstallOrRemove ====
    org.altlinux.alterator.apt1.InstallOrRemove requires authentication.
    Authenticating as: System Administrator (root)
    Password:
    ==== AUTHENTICATION COMPLETE ====
    Preparing the transaction...
    …
    
  • вывести список файлов установленного пакета:
    $ alteratorctl packages rpm files alterator-usbguard
    /etc/usbguard/android_vidpid.json
    /usr/lib/alterator/backend3/usbguard
    /usr/share/alterator/applications/USBGuard.desktop
    /usr/share/alterator/design/scripts/alt-usb-guard.js
    /usr/share/alterator/design/styles/alt_usb_guard.css
    /usr/share/alterator/help/ru_RU/usbguard.html
    /usr/share/alterator/ui/usbguard/ajax.scm
    /usr/share/alterator/ui/usbguard/index.html
    /usr/share/locale/ru/LC_MESSAGES/alterator-usbguard.mo
    
  • вывести информацию о пакете:
    $ alteratorctl packages rpm packageinfo alterator-usbguard
    Name        : alterator-usbguard
    Version     : 0.2.2
    Release     : alt1
    DistTag     : p11+374626.100.4.1
    Architecture: x86_64
    Install Date: Вт 08 апр 2025 17:40:36
    Group       : System/Configuration/Other
    Size        : 567749
    License     : GPLv2+
    Signature   : RSA/SHA512, Вт 25 фев 2025 16:44:24, Key ID e1130f0e925e1ff4
    Source RPM  : alterator-usbguard-0.2.2-alt1.src.rpm
    Build Date  : Вт 25 фев 2025 16:44:20
    Build Host  : proskur-p11.hasher.altlinux.org
    Relocations : (not relocatable)
    Packager    : Oleg Proskurin <proskur@altlinux.org>
    Vendor      : ALT Linux Team
    URL         : https://gitlab.basealt.space/proskurinov/alterator_usbguard
    Summary     : alterator module to control usb devices
    Description :
    Alterator Module to control USB devices via USBGuard
    
  • вывести список всех установленных пакетов:
    $ alteratorctl packages rpm list
    
  • переустановить пакет:
    $ alteratorctl packages apt reinstall alterator-usbguard
    Следующие НОВЫЕ пакеты будут установлены:
    alterator-usbguard
    Продолжить? [Y/n] y
    
    ==== AUTHENTICATING FOR org.altlinux.alterator.apt1.InstallOrRemove ====
    org.altlinux.alterator.apt1.InstallOrRemove requires authentication.
    Authenticating as: System Administrator (root)
    Password:
    ==== AUTHENTICATION COMPLETE ====
    …
    

34.6. Модуль systeminfo

Модуль systeminfo использует интерфейс org.altlinux.alterator.systeminfo1 объекта /org/altlinux/alterator/systeminfo.
Примеры использования модуля:
  • вывести основную информацию о системе:
    $ alteratorctl systeminfo
    
  • вывести информацию о центральном процессоре:
    $ alteratorctl systeminfo cpu
    12th Gen Intel(R) Core(TM) i7-1255U (2) 2611Hz
    
  • вывести название ОС:
    $ alteratorctl systeminfo name
    ALT Server 11.1 (Mendelevium)
    
  • вывести название ветки ОС:
    $ alteratorctl systeminfo branch
    p11
    

Глава 35. Системная информация

Модуль Системная информация (alt-systeminfo) — модуль альтератора, предоставляющий информацию о системе.

35.1. Запуск

Модуль Системная информация можно запустить следующими способами:
  • из ЦУС: модули О системе или Информация о системе из раздела Система (выбор модуля определяет на какой вкладке будет открыто приложение);
  • из командной строки: командой alt-systeminfo.

35.2. Работа с модулем

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

Примечание

Переключение редакции — это безопасная операция, при которой установка или удаление компонентов не выполняется. После смены редакции можно выбрать компоненты, входящие в базовый раздел, и установить их, используя графический (alt-components) или консольный (alteratorctl components ) инструмент.
Вкладка Информация о дистрибутиве содержит полезные ссылки на интернет-ресурсы. Некоторые ссылки адаптируются в соответствии с выбранной редакцией:
Полезная информация
На вкладке Локальные настройки находятся кнопки для перехода к настройкам системы:
Локальные настройки

Глава 36. Альт Компоненты

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

Примечание

Для корректной работы alt-components требуется apt, сконфигурированный на работу с репозиториями, содержащими необходимые RPM-пакеты и доступ к этим репозиториям.

36.1. Запуск

Альт Компоненты можно запустить следующими способами:
  • из ЦУС: модуль Управление компонентами из раздела Компоненты и приложения;
  • из командной строки: командой alt-components.
Управление компонентами

36.2. Работа с компонентами

Компоненты разделены на разделы:
  • Базовые компоненты — определяют минимальный состав продукта;
  • Основные компоненты — могут быть доустановлены под конкретную задачу;
  • Другие компоненты — дополнительные компоненты.
Список компонентов в разделе — группа пакетов, объединенных для выполнения определенной задачи.
Перечень компонентов в базовом и основном разделе зависит от выбранной редакции.
Чтобы раскрыть список компонентов в категории, необходимо дважды нажать на название категории. Для того чтобы просмотреть описание компонента, следует дважды щелкнуть мышью по названию компонента. При этом в соответствующих секциях будут показаны описание компонента и его пакеты:
Описание компонента
Чтобы установить/удалить компонент или все компоненты одной категории, необходимо выполнить следующие действия:
  1. Установить/снять отметку в поле рядом с компонентом, который необходимо установить/удалить, или рядом с категорией, если действия будут производиться со всеми компонентами категории:
    Установка компонента
  2. Нажать кнопку Применить. Будет открыто окно Мастер транзакций. Здесь будут показаны изменения, который произойдут в пакетной базе (список компонентов и пакетов на вкладках Компоненты и Пакеты соответственно). Для продолжения работы необходимо нажать кнопку Далее:
    Изменения в пакетной базе
  3. В окне Мастер транзакций разрешенных компонентов нажать кнопку Применить:
    Разрешенные компоненты
  4. В открывшемся окне ввести пароль администратора системы (root):
    Подтверждение подлинности
  5. Далее будет представлен ход выполнения и результат транзакции:
    Результат выполнения транзакции

Примечание

Для удаления вручную установленных пакетов необходимо снять отметку с пункта Запретить удаление вручную установленных пакетов: ИнструментыСистемаЗапретить удаление вручную установленных пакетов.
Запретить удаление вручную установленных пакетов

Глава 37. Приложение Пакеты

Приложение Пакеты (alt-packages) — модуль альтератора, позволяющий управлять репозиториями APT и пакетами при помощи RPM и APT.

37.1. Запуск

Пакеты можно запустить следующими способами:
  • из ЦУС: модули APT, RPM или Repo из раздела Компоненты и приложения (выбор модуля определяет на какой вкладке будет открыто приложение);
  • из командной строки: командой alt-packages.

37.2. Управление репозиториями (вкладка Repo)

На вкладке Repo можно просмотреть актуальный список репозиториев:
Вкладка Repo
Для удаления репозиториев необходимо выделить удаляемые репозитории и нажать кнопку Удалить выбранные репозитории:
Кнопка Удалить выбранные репозитории
В открывшемся окне необходимо ввести пароль администратора системы (root):
Подтверждение подлинности для удаления репозиториев
Для добавления репозитория необходимо:
  1. Нажать кнопку Новый репозиторий.
  2. В открывшемся окне ввести адрес репозитория и нажать кнопку ОК:
    Добавление репозитория
    Можно также ввести название репозитория:
    Добавление стандартного репозитория
  3. Ввести пароль администратора системы:
    Подтверждение подлинности для добавления репозиториев
  4. Репозитории будут добавлены в список:
    Список репозиториев

37.3. Управление пакетами (вкладка APT)

На вкладке APT можно просмотривать список установленных и доступных пакетов, а также устанавливать и удалять пакеты:
Вкладка APT
Текущее состояние пакета можно определить по полю, расположенному рядом с названием пакета:
  • в поле установлена отметка — пакет установлен;
  • поле пустое — пакет не установлен.
Для поиска пакета по названию можно воспользоваться строкой поиска (ввести искомый текст и нажать Enter).

Примечание

Перед тем как устанавливать пакет, необходимо нажать на кнопку Синхронизировать список пакетов, для того чтобы скачать список самых последних версий ПО.
Для установки/удаления пакета необходимо:
  1. Установить/снять отметку в поле, расположенном рядом с названием пакета и нажать кнопку Применить:
    Пакет, отмеченный для установки
  2. Будет показан список пакетов отмеченных для установки. Для подтверждения согласия следует нажать кнопку Применить:
    Список изменений
  3. Ввести пароль администратора системы:
    Подтверждение подлинности для установки/удаления пакетов
  4. Откроется окно, в котором будет отображаться ход выполнения транзакций:
    Ход выполнения транзакций
Для обновления всех пакетов, установленных в системе, необходимо нажать кнопку Обновить систему.

37.4. Управление RPM-пакетами (вкладка RPM)

На вкладке RPM можно просмотреть информацию об установленных пакетах, а также установить RPM-пакет из RPM-файла:
Вкладка RPM
Для поиска пакета по названию можно воспользоваться строкой Поиск… (ввести искомый текст и нажать Enter).
Для просмотра информации о пакете необходимо выделить пакет и нажать кнопку Информация:
Информация о пакете
Нажав кнопку Файлы можно просмотреть список файлов пакета:
Список файлов пакета
Для установки RPM-пакета из файла необходимо нажать кнопку Установить из файла, выбрать файл пакета и подтвердить подлинность, введя пароль администратора.

Примечание

При удалении пакета или при установке пакета из RPM-файла система не устанавливает зависимости пакета.

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

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

Часть VII. Средства удаленного администрирования

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

Важно

Эта и последующие главы рекомендуются к прочтению опытным пользователям и системным администраторам.

Содержание

38. Вход в систему
39. Настройка подключения к Интернету
39.1. Конфигурирование сетевых интерфейсов
39.2. Объединение сетевых интерфейсов
39.3. Сетевые мосты
39.4. VLAN интерфейсы
39.5. NAT
39.6. Автоматическое присвоение IP-адресов (DHCP-сервер)
40. Развертывание доменной структуры
41. Сетевая установка операционной системы на рабочие места
41.1. Подготовка сервера
41.2. Подготовка рабочих станций
42. FTP-сервер
43. Удостоверяющий центр
44. Соединение удалённых офисов (OpenVPN-сервер)
44.1. Настройка OpenVPN-сервера
44.2. Настройка клиентов
45. Доступ к службам сервера из сети Интернет
45.1. Внешние сети
45.2. Список блокируемых хостов
46. Настройка ограничений на использование USB-устройств
46.1. Информационное поле
46.2. Список USB-устройств
46.3. Предустановки
46.4. Добавление правил
46.4.1. Правила по классу интерфейса
46.4.2. Правила по VID&PID
46.4.3. Правила по хэшу
46.4.4. Другие правила
46.4.5. Загрузка правил из файла
46.5. Удаление правил
46.6. Просмотр журнала аудита
47. Настройка ограничения доступа к файловой системе USB-­устройства
47.1. Запуск/останов службы
47.2. Список устройств
47.3. Добавление/удаление правил
47.4. Просмотр журнала аудита
48. Статистика
48.1. Сетевой трафик
49. Обслуживание сервера
49.1. Мониторинг состояния системы
49.2. Системные службы
49.3. Обновление системы
49.4. Обновление ядра ОС
49.5. Обновление систем, не имеющих выхода в Интернет
49.5.1. Настройка веб-сервера
49.5.2. Настройка FTP-сервера
49.6. Локальные учётные записи
49.7. Администратор системы
49.8. Дата и время
49.9. Агент наблюдения
49.10. Ограничение использования диска
49.11. Выключение и перезагрузка компьютера
50. Права доступа к модулям

Глава 38. Вход в систему

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

Глава 39. Настройка подключения к Интернету

Помимо множества различных служб, которые Альт Сервер может предоставлять компьютерам сети, важно определить, будет ли сервер предоставлять общий доступ в Интернет для компьютеров домена или нет. В зависимости от этого сервер можно рассматривать как:
Сервер без подключения к сети Интернет
Типичный случай — это сервер с одним сетевым интерфейсом (одной сетевой картой), который и связывает его с компьютерами локальной сети. Такой сервер называется также сервер рабочей группы.
Шлюз
В этом случае сервер обычно имеет два сетевых интерфейса (например, две сетевые карты), одна из которых служит для подключения к локальной сети, а другая — для подключения к сети Интернет.
Как для обеспечения доступа в сеть Интернет самого Альт Сервер, так и для настройки общего выхода в Интернет для компьютеров сети необходимо настроить подключение к Интернету на самом сервере. Альт Сервер поддерживает самые разные способы подключения к сети Интернет:
  • Ethernet;
  • PPTP;
  • PPPoЕ;
  • и т.д.
Для настройки подключения воспользуйтесь одним из разделов ЦУС Сеть.
Доступные разделы:
Выберите раздел, соответствующий вашему типу подключения, и приступайте к настройке.

39.1. Конфигурирование сетевых интерфейсов

Конфигурирование сетевых интерфейсов осуществляется в модуле ЦУС Ethernet-интерфейсы (пакет alterator-net-eth) из раздела Сеть:
Настройка Ethernet-интерфейсов
В модуле Ethernet-интерфейсы можно заполнить следующие поля:
  • Имя компьютера — указать сетевое имя ПЭВМ в поле для ввода имени компьютера (это общий сетевой параметр, не привязанный к какому-либо конкретному интерфейсу). Имя компьютера, в отличие от традиционного имени хоста в Unix (hostname), не содержит названия сетевого домена;
  • Интерфейсы — выбрать доступный сетевой интерфейс, для которого будут выполняться настройки;
  • Версия протокола IP — указать в выпадающем списке версию используемого протокола IP (IPv4, IPv6) и убедиться, что пункт Включить, обеспечивающий поддержку работы протокола, отмечен;
  • Конфигурация — выбрать способ назначения IP-адресов (службы DHCP, Zeroconf, вручную);
  • IP-адреса — пул назначенных IP-адресов из поля Добавить ↑ IP, выбранные адреса можно удалить нажатием кнопки Удалить;
  • Добавить ↑ IP — ввести IP-адрес вручную и выбрать в выпадающем поле предпочтительную маску сети, затем нажать кнопку Добавить для переноса адреса в пул назначенных IP-адресов (поле IP-адреса);
  • Шлюз по умолчанию — в поле для ввода необходимо ввести адрес шлюза, который будет использоваться сетью по умолчанию;
  • DNS-серверы — в поле для ввода необходимо ввести список предпочтительных DNS-серверов, которые будут получать информацию о доменах, выполнять маршрутизацию почты и управлять обслуживающими узлами для протоколов в домене;
  • Домены поиска — в поле для ввода необходимо ввести список предпочтительных доменов, по которым будет выполняться поиск. Если в поле Домены поиска перечислить наиболее часто используемые домены (например, domain), то можно пользоваться неполными именами машин (computer вместо computer.domain).
IP-адрес и Маска сети — обязательные параметры каждого узла IP-сети. Первый параметр – уникальный идентификатор машины, от второго напрямую зависит, к каким машинам локальной сети данная машина будет иметь доступ. Если требуется выход во внешнюю сеть, то необходимо указать параметр Шлюз по умолчанию.
В случае наличия DHCP-сервера можно все вышеперечисленные параметры получить автоматически — выбрав в списке Конфигурация пункт Использовать DHCP:
Автоматическое получение настроек от DHCP сервера

Примечание

При переключении конфигурации с Использовать DHCP на Вручную в поле IP-адреса может отображаться IP-адрес, полученный по DHCP. Этот адрес никак не используется в дальнейшей настройке. Необходимо удалить отображаемый IP-адрес и задать адрес вручную, иначе сетевому интерфейсу будет назначен IP-адрес локальной заглушки (например, 127.0.0.2).
Дополнительно для каждого интерфейса можно настроить сетевую подсистему (NetworkManager, Etcnet, systemd-networkd), а также должен ли запускаться данный интерфейс при загрузке системы:
Выбор сетевой подсистемы

Примечание

Список доступных сетевых подистем зависит от пакетов, выбранных на этапе Установка системы (группа пакетов Система управления сетевыми интерфейсами).
В списке Сетевая подсистема можно выбрать следующие режимы:
Etcnet
В этом режиме настройки берутся исключительно из файлов находящихся в каталоге настраиваемого интерфейса /etc/net/ifaces/<интерфейс>. Настройки сети могут изменяться либо в ЦУС в данном модуле, либо напрямую через редактирование файлов /etc/net/ifaces/<интерфейс>.
NetworkManager (etcnet)
В этом режиме NetworkManager сам инициирует сеть, используя в качестве параметров — настройки из файлов Etcnet. Настройки сети могут изменяться либо в ЦУС в данном модуле, либо напрямую через редактирование файлов /etc/net/ifaces/<интерфейс>. В этом режиме можно просмотреть настройки сети, например, полученный по DHCP IP-адрес, через графический интерфейс NetworkManager.
NetworkManager (native)
В данном режиме управление настройками интерфейса передаётся NetworkManager и не зависит от файлов Etcnet. Управлять настройками можно через графический интерфейс NetworkManager. Файлы с настройками находятся в каталоге /etc/NetworkManager/system-connections. Этот режим особенно актуален для задач настройки сети на клиенте, когда IP-адрес необходимо получать динамически с помощью DHCP, а DNS-сервер указать явно. Через ЦУС так настроить невозможно, так как при включении DHCP отключаются настройки, которые можно задавать вручную.
systemd-networkd
В данном режиме управление настройками интерфейса передаётся службе systemd-networkd. Настройки сети могут изменяться либо в ЦУС в данном модуле (только настройки физического интерфеса), либо напрямую через редактирование файлов /etc/systemd/network/<имя_файла>.network, /etc/systemd/network/<имя_файла>.netdev, /etc/systemd/network/<имя_файла>.link. Данный режим доступен, если установлен пакет systemd-networkd;
Не контролируется
В этом режиме интерфейс находится в состоянии DOWN (выключен).

Примечание

После смены сетевой подсистемы c Etcnet на systemd-networkd может потребоваться вручную отключить службу network и включить systemd-networkd:
# systemctl disable --now network && systemctl enable --now systemd-networkd
И, наоборот, при смене с systemd-networkd на Etcnet отключить службу systemd-networkd и включить network:
# systemctl disable --now systemd-networkd && systemctl enable --now network

39.2. Объединение сетевых интерфейсов

Модуль Объединение интерфейсов (пакет alterator-net-bond) позволяет объединить несколько физических сетевых интерфейсов в один логический. Это позволяет достичь отказоустойчивости, увеличения скорости и балансировки нагрузки.
Для создания объединения интерфейсов необходимо выполнить следующие действия:
  1. Нажать кнопку Создать объединение…:
    Объединение интерфейсов в веб-интерфейсе alterator-net-eth
  2. Переместить сетевые интерфейсы, которые будут входить в объединение, из списка Доступные интерфейсы в список Используемые интерфейсы.
  3. Выбрать режим объединения:
    • Round-robin — режим циклического выбора активного интерфейса для исходящего трафика;
    • Активный-резервный — активен только один интерфейс, остальные находятся в режиме горячей замены;
    • XOR — один и тот же интерфейс работает с определённым получателем, передача пакетов распределяется между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов;
    • Широковещательная — трафик идёт через все интерфейсы одновременно;
    • Агрегирование каналов по стандарту IEEE 802.3ad — в группу объединяются одинаковые по скорости и режиму интерфейсы, все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки);
    • Адаптивная балансировка нагрузки передачи — исходящий трафик распределяется в соответствии с текущей нагрузкой (с учётом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт). Входящие пакеты принимаются только активным сетевым интерфейсом;
    • Адаптивная балансировка нагрузки — включает в себя балансировку исходящего трафика и балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов. Балансировка на приём достигается на уровне протокола ARP путём перехвата ARP ответов локальной системы и перезаписи физического адреса на адрес одного из сетевых интерфейсов (в зависимости от загрузки).
  4. Указать, если это необходимо, параметры объединения в поле Параметры объединения.
  5. Нажать кнопку Назад:
    Выбор сетевых интерфейсов для объединения
  6. В результате будет создан агрегированный интерфейс bond0. Для данного интерфейса можно задать IP-адрес и, если необходимо, дополнительные параметры:
    Настройки интерфейса bond0
  7. Нажать кнопку Применить.
Информацию о получившемся агрегированном интерфейсе можно посмотреть в /proc/net/bonding/bond0.
Для удаления агрегированного интерфейса необходимо выбрать его в списке Интерфейсы и нажать кнопку Удалить объединение….

39.3. Сетевые мосты

Модуль Сетевые мосты (пакет alterator-net-bridge) позволяет организовать виртуальный сетевой мост.

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

Если интерфейсы, входящие в состав моста, являются единственными физически подключенными и настройка моста происходит с удалённого узла через эти интерфейсы, то требуется соблюдать осторожность, так как эти интерфейсы перестанут быть доступны.
Для создания Ethernet-моста необходимо выполнить следующие действия:
  1. У интерфейсов, которые будут входить в мост, удалить IP-адреса и шлюз по умолчанию (если они были установлены).
  2. Нажать кнопку Создать сетевой мост…:
    Настройка сети в веб-интерфейсе
  3. В окне Сетевые мосты в поле Интерфейс-мост ввести имя моста.
  4. В выпадающем списке Тип моста выбрать тип моста: Linux Bridge (по умолчанию) или Open vSwitch.
  5. Переместить сетевые интерфейсы, которые будут входить в мост, из списка Доступные интерфейсы в список Члены.
  6. Нажать кнопку Ок:
    Выбор сетевых интерфейсов для моста
  7. В результате будет создан сетевой интерфейс моста (в примере vmbr0). Для данного интерфейса можно задать IP-адрес и, если необходимо, дополнительные параметры:
    Настройка параметров сетевого интерфейса vmbr0
  8. Нажать кнопку Применить.
Для удаления интерфейса моста необходимо выбрать его в списке Интерфейсы и нажать кнопку Удалить сетевой мост….

39.4. VLAN интерфейсы

Модуль VLAN интерфейсы (пакет alterator-net-vlan) предназначен для настройки 802.1Q VLAN.
Для создания интерфейсов VLAN необходимо выполнить следующие действия:
  1. В списке Интерфейсы выбрать сетевой интерфейс и нажать кнопку Настройка VLAN…:
    Создание интерфейса VLAN в веб-интерфейсе alterator-net-eth
  2. Ввести VLAN ID (число от 1 до 4095) в поле VID и нажать кнопку Добавить VLAN:
    Создание интерфейса VLAN

    Примечание

    Следует обратить внимание, что 4094 является верхней допустимой границей идентификатора VLAN, а 4095 используется технически в процессе отбрасывания трафика по неверным VLAN.
  3. Для того чтобы вернуться к основным настройкам, нажать кнопку Назад.
  4. В результате будут созданы виртуальные интерфейсы с именем, содержащим VLAN ID. Для данных интерфейсов можно задать IP-адрес и, если необходимо, дополнительные параметры:
    Настройки интерфейса enp0s3.100
  5. Нажать кнопку Применить.
Для удаления интерфейса VLAN следует в списке Интерфейсы выбрать «родительский» сетевой интерфейс и нажать кнопку Настройка VLAN…. Затем в открывшемся окне выбрать VLAN интерфейс и нажать кнопку Удалить:
Удаление интерфейса VLAN

39.5. NAT

NAT (Network Address Translation, преобразование сетевых адресов) — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Таким образом, компьютеры локальной сети, имеющие IP-адреса, зарезервированные для использования исключительно в локальных сетях, могут использовать общий канал доступа к Интернет (общий внешний IP-адрес). При этом на компьютере-шлюзе, непосредственно подключённом к Интернет, выполняется преобразование адресов.
Настройка NAT осуществляется в модуле ЦУС Внешние сети (пакет alterator-net-iptables) из раздела Брандмауэр. Для минимальной настройки достаточно выбрать режим работы Шлюз (NAT), отметить правильный внешний сетевой интерфейс и нажать на кнопку Применить.
Настройка NAT

39.6. Автоматическое присвоение IP-адресов (DHCP-сервер)

DHCP (Dynamic Host Configuration Protocol) — протокол, позволяющий клиенту самостоятельно получить IP-адрес из зарезервированного диапазона адресов, а также дополнительную информацию о локальной сети (DNS-сервер сети, домен поиска, шлюз по умолчанию). Это облегчает администрирование клиентских машин, избавляя администратора домена от необходимости вручную настраивать сетевые интерфейсы на компьютерах локальной сети.
Чтобы настраивать DHCP-сервер, на машине должен быть хотя бы один статически сконфигурированный Ethernet-интерфейс.
Настройка DHCP-сервера осуществляется в модуле ЦУС DHCP-сервер (пакет alterator-dhcp) из раздела Серверы.
Для включения DHCP-сервера необходимо установить флажок Включить службу DHCP, указать начальный и конечный IP-адрес, а также шлюз по умолчанию (обычно это IP-адрес сервера на сетевом интерфейсе, обслуживающем локальную сеть).
Настройка DHCP-сервера
Теперь при включении любой клиентской машины с настройкой получение ip и dns автоматически будет присваиваться шлюз 192.168.0.1, DNS 192.168.0.251 и адреса начиная с 192.168.0.50 по порядку включения до 192.168.0.60.
Иногда бывает полезно выдавать клиенту один и тот же IP-адрес независимо от момента обращения. В этом случае он определяется по аппаратному адресу (MAC-адресу) сетевой карты клиента. Для добавления своих значений в таблицу соответствия статических адресов введите IP-адрес и соответствующий ему MAC-адрес и нажмите кнопку Добавить.
Привязка IP-адреса к MAC-адресу
Выданные IP-адреса можно увидеть в списке Текущие динамически выданные адреса. Здесь также имеется возможность зафиксировать выданные адреса, за данными компьютерами. Для этого необходимо отметить хост, за которым нужно закрепить IP-адрес и нажать кнопку Зафиксировать адрес для выбранных компьютеров.
Список динамически выданных адресов

Глава 40. Развертывание доменной структуры

Для развертывания доменной структуры предназначен модуль ЦУС Домен из раздела Система (пакет alterator-net-domain):
Веб-интерфейс модуля Домен
Модуль поддерживает следующие виды доменов:
  • ALT-домен. Домен, основанный на OpenLDAP и MIT Kerberos. Домен нужно устанавливать только после настройки сервера DHCP. В противном случае придётся выбирать другое имя домена.
  • Active Directory. Домен для контроллера домена Samba AD. Рекомендуется для аутентификации рабочих станций под управлением и Windows и Linux.
  • FreeIPA. Домен для контроллера домена FreeIPA. Рекомендуется для аутентификации рабочих станций под управлением Linux.
  • DNS. Обслуживание только запросов DNS указанного домена сервисом BIND.

Глава 41. Сетевая установка операционной системы на рабочие места

Одной из удобных возможностей Альт Сервер при разворачивании инфраструктуры является сетевая установка (пакет alterator-netinst). При помощи сетевой установки можно производить установку Альт Сервер не с DVD-диска, а загрузив инсталлятор по сети.

41.1. Подготовка сервера

Перед началом установки рабочих станций следует произвести предварительную настройку сервера: задать имя сервера (модуль Ethernet-интерфейсы в ЦУС) и включить DHCP-сервер (модуль DHCP-сервер).

Примечание

Каталог /var/lib/tftpboot должен быть доступен клиенту через TFTP, каталог /srv/public/netinst должен быть доступен клиенту через NFS.
Настройка TFTP:
  1. Включить TFTP-сервер, установив в файле /etc/xinetd.d/tftp значение:
    disable = no
  2. Удалить или закомментировать следующую строку в файле /etc/xinetd.conf:
    only_from = 127.0.0.1
  3. Перезапустить сервис xinetd:
    # systemctl restart xinetd
Настройка NFS-сервера:
  1. В файл /etc/exports добавить строку:
    /srv/public -ro,insecure,no_subtree_check,fsid=1 *
  2. Экспортировать каталоги:
    # exportfs -r
  3. Разрешить rpcbind прослушивать входящие соединения из сети:
    # control rpcbind server
  4. Запустить и добавить в автозагрузку NFS-сервер:
    # systemctl enable --now nfs-server

Примечание

В настоящий момент модуль Сервер сетевых установок не позволяет настроить установку в EFI-режиме для PXE-установки.
Перед активацией сетевой установки потребуется импортировать установочный DVD-диск Альт Сервер, предварительно вставив его в DVD-привод сервера, либо используя образ диска, расположенный на файловой системе на сервере (например, /tmp/alt-workstation-11.0-x86_64.iso). Можно также использовать URL вида http://ftp.altlinux.org/pub/distributions/ALTLinux/images/p11/workstation/x86_64/alt-workstation-11.0-x86_64.iso.

Примечание

Локальный файл должен быть доступен для nobody и должен находиться на сервере, где запущен alterator-netinst.
В разделе Сервер сетевых установок (пакет alterator-netinst) укажите, откуда импортировать новый образ, и нажмите кнопку Добавить.
Выбор источника для импорта установочного образа
Процесс добавления образа занимает какое-то время. Пожалуйста, дождитесь окончания этого процесса.
Процесс добавления установочного образа
После добавления образ появится в списке Доступные образы дисков. Необходимо выбрать из списка один из образов и нажать кнопку Выбрать.
Выбор образа диска из списка доступных
На этом подготовка сервера к сетевой установке рабочих станций завершена.
Дополнительно данный модуль позволяет выбрать вариант загрузки (например, непосредственно загружать ОС некоторых Live-версий дистрибутивов):
Выбор варианта загрузки
Для включения режима автоматической установки (см. Автоматическая установка системы (autoinstall)) необходимо выбрать образ, выбрать вариант загрузки Установка системы, установить отметку в поле Автоматическая установка, в поле Метаданные указать каталог с установочными файлами и сохранить настройки, нажав кнопку Применить:
Включение режима автоматической установки

Примечание

В alterator-netinst до версии 1.9.1-alt7 для включения режима автоматической установки необходимо выбрать образ, выбрать вариант загрузки Установка системы и сохранить настройки, нажав кнопку Применить. Затем в файле /var/lib/tftpboot/pxelinux.cfg/default следует дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами, например:
label linux
  kernel syslinux//boot/vmlinuz
  append initrd=syslinux//boot/initrd.img fastboot changedisk  stagename=altinst ramdisk_size=648701 showopts vga=normal quiet splash automatic=method:nfs,network:dhcp tz=Europe/Kaliningrad  lang=ru_RU  vnc vncpassword=123 ai curl=ftp://192.168.0.186/metadata/
Если отмечен пункт Включить установку по VNC, то далее следует выбрать направление соединения. Удалённый доступ к компьютеру может быть двух видов:
  • Со стороны клиента. Во время установки администратор может с помощью VNC-клиента подключиться к компьютеру, на которой производится установка, зная его IP-адрес и заданный пароль.
  • Со стороны сервера. Во время установки с каждого компьютера инициируется подключение к запущенному на заданном компьютере VNC-клиенту. Компьютер-приёмник соединений задаётся IP-адресом или именем.
Настройка удалённого доступа
В случае, когда работа с аппаратной подсистемой ввода-вывода невозможна (например, если клавиатура, мышь или монитор отсутствуют), можно использовать вариант Только по VNC.
Если необходимо управлять установкой удалённо, отметьте пункт Включить установку по VNC и пункт Подключение со стороны VNC сервера раздела Направление соединения и укажите в поле IP-адрес или имя компьютера, с которого будет происходить управление. Для приёма подключения можно запустить, например, vncviewer -listen.

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

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

41.2. Подготовка рабочих станций

Для сетевой установки следует обеспечить возможность загрузки по сети рабочих станций, на которых будет производиться установка ОС.
Большинство современных материнских плат имеют возможность загрузки по сети, однако она по умолчанию может быть отключена в BIOS. Различные производители материнских плат дают разные названия данной возможности, например: «Boot Option ROM» или «Boot From Onboard LAN».

Примечание

Некоторые материнские платы позволяют выбрать источник загрузки во время включения компьютера. Эта возможность может называться, например, «Select boot device» или «Boot menu».
Последовательность установки при установке с DVD-диска и при сетевой установке не отличаются друг от друга. Обратитесь к разделу руководства Последовательность установки.

Глава 42. FTP-сервер

Модуль FTP-сервер (пакет alterator-vsftpd) из раздела Серверы предназначен для настройки FTP-сервера (vsftpd).
Веб-интерфейс модуля FTP-сервер
Чаще всего протокол FTP (File Transfer Protocol) используется для организации файлового сервера с анонимным доступом. Возможность анонимного доступа управляется параметром Разрешить вход анонимному пользователю. Менее распространённый вариант — сервер с возможностью загружать на него файлы, в том числе и анонимным пользователям. Возможность загрузки включается параметром Разрешить запись. Еще один вариант — сервер, позволяющий локальным пользователям скачивать и загружать файлы из своих домашних каталогов. Этот вариант используется редко, что связано с небезопасностью протокола FTP. Возможность работы с локальными пользователями управляется параметром Разрешить вход локальным пользователям. Чтобы пользователи могли загружать файлы, требуется включить параметр Разрешить запись. Разрешение на загрузку файлов можно настраивать индивидуально, для этого необходимо отметить параметр Разрешить настройку локальных пользователей.
Если вам необходимо создать анонимный FTP-сервер, вы можете использовать vsftpd в сочетании с пакетом anonftp. В целях безопасности сервер по умолчанию сконфигурирован именно для предоставления анонимного доступа. Запрещены любые команды записи, а также доступ локально зарегистрированных пользователей.
При установке пакета anonftp автоматически создаётся каталог, который будет корневым при анонимном подключении, — /var/ftp с необходимыми правами доступа. Владельцем этого каталога является пользователь root, а не псевдопользователь, от имени которого работает vsftpd. Это сделано для обеспечения безопасности FTP-сервера и системы в целом. Группой-владельцем каталога является специальная группа ftpadmin, предназначенная для администраторов FTP-сервера.

Примечание

Многие параметры использования FTP-сервера, в том числе относящиеся к безопасности, могут быть заданы при помощи xinetd. В частности, этот сервер позволяет ограничить количество одновременно выполняемых процессов как по системе в целом, так и для каждого отдельного пользователя, указать пользователя, от имени которого будет выполняться служба, задать приоритет процесса (nice), указать адреса, с которых разрешено подключение к данной службе, а также время доступа и множество других параметров. Указать эти настройки можно в модуле Службы xinetd (пакет alterator-xinetd) из раздела Система. Например, установить неограниченный по адресам доступ можно, указав в поле Только с адресов значение 0.0.0.0:
Модуль Службы xinetd — неограниченный по адресам доступ к vsftpd

Глава 43. Удостоверяющий центр

Модуль Удостоверяющий центр (пакет alterator-са) из раздела Система служит для выдачи сертификатов службам на серверах и рабочих станциях.
Для обеспечения безопасности соединения для клиента (в качестве клиентского ПО может выступать, например, веб-браузер) основным является вопрос о принятии сертификата. При принятии сертификата возможны описанные ниже варианты.
Сертификат сервера подписан одним из известных клиенту удостоверяющим центром (УЦ)
В этом случае сертификат принимается и устанавливается безопасное SSL-соединение. Обычно клиентское ПО (например, веб-браузер) содержит список наиболее известных УЦ и предоставляет возможность управления (добавление/удаление) сертификатами таких УЦ.
Сертификат сервера подписан УЦ неизвестным клиенту
В этом случае следует самостоятельно решить вопрос о принятии такого сертификата:
  • можно временно (на время одной сессии) принять сертификат сервера;
  • можно принять сертификат сервера на постоянной основе;
  • если вы доверяете УЦ, подписавшему сертификат, можно добавить сертификат самого УЦ к списку известных сертификатов, и таким образом, в дальнейшем все сертификаты, подписанные этим УЦ, будут приниматься автоматически.
Сертификат сервера является самоподписанным
Это случай, когда сертификат сервера не подтверждён вообще никакой третьей стороной. Такие сертификаты используются в локальных сетях, где вы самостоятельно можете проверить аутентичность сервера. В случае самоподписанных сертификатов вы должны самостоятельно убедиться в том, что сервер является тем, за кого себя выдаёт. Сделать это можно, сверив отпечатки полученного сертификата и реально находящегося на сервере.

Примечание

При первом обращении к модулю Удостоверяющий центр необходимо создать УЦ, указав страну и организацию:
Удостоверяющий центр. Создать УЦ
Модуль Удостоверяющий центр включает две вкладки: Управление УЦ и Управление сертификатами.
Удостоверяющий центр. Вкладка «Управление УЦ»
На вкладке Управление УЦ можно:
  • просмотреть информацию о сертификате УЦ;
  • выгрузить для дальнейшего использования сертификат УЦ (файл ca-root.pem). Этот файл можно будет добавить к списку УЦ, используемому клиентским ПО, после чего все сертификаты, подписанные данным УЦ будут приниматься автоматически;
  • выгрузить, для дальнейшего использования, запрос на подпись сертификата УЦ (файл ca-root.csr). Этот запрос можно подписать сторонним УЦ;
  • перегенерировать сертификат УЦ с другими параметрами (можно изменить параметры: Страна (С) и Организация (O)).
Удостоверяющий центр. Вкладка «Управление сертификатами»
На вкладке Управление сертификатами можно:
  • настроить ежедневное обновление подписей сертификатов, используемых локальными службами и службами подчинённых серверов;
  • подписать произвольный сертификат (запрос на подпись) корневым сертификатом УЦ, настроенным на вкладке Управление УЦ;
  • просмотреть состояния и подпись локальных сертификатов и сертификатов подчинённых серверов:
    Удостоверяющий центр. Локальные сертификаты
Чтобы подписать сертификат необходимо на вкладке Управление сертификатами нажать кнопку Выберите файл, выбрать файл с запросом на подпись и нажать кнопку Загрузить запрос. В результате на экране отобразится запрос на подпись. Далее следует нажать кнопку Подписать:
Удостоверяющий центр. Запрос на подпись
Подписанный сертификат (файл output.pem) будет загружен в каталог загрузок.

Глава 44. Соединение удалённых офисов (OpenVPN-сервер)

Альт Сервер предоставляет возможность безопасного соединения удалённых офисов, используя технологию VPN (англ. Virtual Private Network — виртуальная частная сеть), которая позволяет организовать безопасные шифрованные соединения через публичные сети (например, Интернет) между удалёнными офисами или локальной сетью и удалёнными пользователями. Таким образом, вы можете связать два офиса организации, что делает работу с документами, расположенными в сети удалённого офиса, более удобной.
Помимо соединения целых офисов, также существует возможность организовать доступ в офисную сеть для работы в ней извне. Это означает, например, что сотрудник может работать в своём привычном окружении, даже находясь в командировке или просто из дома.

44.1. Настройка OpenVPN-сервера

Для организации VPN соединения на стороне сервера предусмотрен модуль ЦУС OpenVPN-сервер (пакет alterator-openvpn-server) из раздела Серверы.
Настройка OpenVPN-сервера
Используя модуль OpenVPN-сервер можно:
  • включить/отключить OpenVPN-сервер;
  • настроить параметры сервера: тип, сети сервера, использование сжатия и т.д.;
  • управлять сертификатами сервера;
  • настроить сети клиентов.
Особое внимание при планировании и настройке подключений следует обратить на используемые сети. Они не должны пересекаться.
Для создания соединения необходимо установить отметку в поле Включить службу OpenVPN, выбрать тип подключения: маршрутизируемое (используется TUN) или через мост (используется TAP), и проверить открываемую по соединению сеть (обычно это локальная сеть в виде IP-адреса и маски подсети).
Для настройки сертификата и ключа SSL необходимо нажать на кнопку Сертификат и ключ SSL…. Откроется окно модуля Управление ключами SSL (пакет alterator-sslkey):
Модуль Управление ключами SSL
Здесь нужно заполнить поле Общее имя (CN) и поле Страна (С) (прописными буквами), отметить пункт (Пере)создать ключ и запрос на подпись и нажать кнопку Подтвердить. После чего станет активной кнопка Забрать запрос на подпись:
Забрать запрос на подпись
Если нажать на кнопку Забрать запрос на подпись, запрос на подпись (файл openvpn-server.csr) будет загружен в каталог загрузок.
В модуле Управление ключами SSL появится новый ключ openvpn-server (Нет сертификата):
Ключ openvpn-server
Чтобы подписать сертификат, необходимо перейти в модуль Удостоверяющий ЦентрУправление сертификатами, нажать кнопку Выберите файл, указать путь до полученного файла openvpn-server.csr и загрузить запрос:
Запрос на подпись сертификата
В результате на экране появится две группы цифр и кнопка Подписать. При нажатии на кнопку Подписать подписанный сертификат (файл output.pem) будет загружен в каталог загрузок.
Запрос на подпись сертификата
Далее в разделе Управление ключами SSL, необходимо выделить ключ openvpn-server (Нет сертификата) и нажать кнопку Изменить. В появившемся окне в пункте Положить сертификат, подписанный УЦ нужно нажать кнопку Выберите файл, указать путь до файла output.pem и нажать кнопку Положить:
Сертификат, подписанный УЦ
В модуле Управление ключами SSL будет видно, что изменился ключ openvpn-server (истекает_и_дата). Ключ создан и подписан.
Для того чтобы положить сертификат УЦ, необходимо найти его в модуле Удостоверяющий Центр, нажать на ссылку Управление УЦ и забрать сертификат, нажав на ссылку Сертификат: ca-root.pem:
Сертификат УЦ
В модуле OpenVPN-сервер в поле Положить сертификат УЦ при помощи кнопки Выберите файл необходимо указать путь к файлу ca-root.pem и нажать кнопку Положить:
Выбор сертификата УЦ в модуле OpenVPN-сервер
Появится сообщение: «Сертификат УЦ успешно загружен».
Для включения OpenVPN необходимо отметить пункт Включить службу OpenVPN и нажать кнопку Применить.
Если необходимо организовать защищённое соединение между двумя локальными сетями, воспользуйтесь модулем OpenVPN-соединения (раздел Сеть).

44.2. Настройка клиентов

Со стороны клиента соединение настраивается в модуле ЦУС OpenVPN-соединения (пакет alterator-net-openvpn) из раздела Сеть. Доступ к настроенной приватной сети могут получить пользователи, подписавшие свои ключи и получившие сертификат в удостоверяющем центре на том же сервере.
Предварительно следует создать ключ (например, openvpn) в модуле Управление ключами SSL и подписать его в модуле Удостоверяющий центр на сервере. С сервера также необходимо забрать сертификат ca-root.pem.
Для создания нового соединения необходимо отметить пункт Сетевой туннель (TUN) или Виртуальное Ethernet устройство (TAP) и нажать кнопку Создать соединение.
Создание нового OpenVPN-соединения
Следует обратить внимание, что на стороне клиента, должен быть выбран тот же тип виртуального устройства, что и на стороне сервера. Для большинства случаев подходит маршрутизируемое подключение.
В результате станут доступны настройки соединения.
В поле Положить сертификат УЦ необходимо при помощи кнопки Выберите файл указать путь к файлу ca-root.pem и нажать кнопку Положить.

Примечание

Если при загрузке сертификата удостоверяющего центра возникает ошибка, можно вручную скопировать его в каталог /var/lib/ssl/certs, например:
# cp /home/user/ca-root.pem /var/lib/ssl/certs
Далее в модуле OpenVPN-соединение необходимо указать:
  • Состояние — «запустить»;
  • Сервер — IP адрес сервера или домен;
  • Порт — 1194;
  • Ключ — выбрать подписанный на сервере ключ.
Для применения настроек следует нажать кнопку Применить. Состояние с Выключено должно поменяться на Включено.
Настройки OpenVPN-соединения
Проверить, появилось ли соединение с сервером можно, выполнив команду:
$ ip addr
должно появиться новое соединение tun0. При обычных настройках это может выглядеть так:
tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
   link/none
   inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0

Глава 45. Доступ к службам сервера из сети Интернет

45.1. Внешние сети

Сервер предоставляет возможность организовать доступ к своим службам извне. Например, можно предоставить доступ к корпоративному веб-сайту из сети Интернет. Для обеспечения такой возможности необходимо разрешить входящие соединения на внешних интерфейсах. По умолчанию такие соединения блокируются.
Для разрешения внешних и внутренних входящих соединений предусмотрен раздел ЦУС Брандмауэр. В списке Разрешить входящие соединения на внешних интерфейсах модуля Внешние сети (пакет alterator-net-iptables) перечислены наиболее часто используемые службы, отметив которые, вы делаете их доступными для соединений на внешних сетевых интерфейсах. Если вы хотите предоставить доступ к службе, отсутствующей в списке, задайте используемые этой службой порты в соответствующих полях.
Настройки модуля Внешние сети
Можно выбрать один из двух режимов работы:
  • Роутер. В этом режиме перенаправление пакетов между сетевыми интерфейсами происходит без трансляции сетевых адресов.
  • Шлюз (NAT). В этом режиме будет настроена трансляция сетевых адресов (NAT) при перенаправлении пакетов на внешние интерфейсы. Использование этого режима имеет смысл, если у вас настроен, по крайней мере, один внешний и один внутренний интерфейс.

Примечание

В любом режиме включено только перенаправление пакетов с внутренних интерфейсов. Перенаправление пакетов с внешних интерфейсов всегда выключено.

Примечание

Все внутренние интерфейсы открыты для любых входящих соединений.

45.2. Список блокируемых хостов

Модуль ЦУС Список блокируемых хостов (пакет alterator-net-iptables) предназначен для блокирования любого трафика с указанными узлами. Данный модуль позволяет блокировать любой сетевой трафик с указанных в списке узлов (входящий, исходящий и пересылаемый).
Блокирование трафика с указанных в списке узлов начинается после установки флажка Использовать чёрный список.
Список блокируемых хостов
Для добавления блокируемого узла необходимо ввести IP-адрес в поле Добавить IP-адрес сети или хоста и нажать кнопку Добавить.
Для удаления узла из списка выберите его и нажмите кнопку Удалить.

Глава 46. Настройка ограничений на использование USB-устройств

Модуль ЦУС Контроль USB-устройств (пакет alterator-usbguard) из раздела Система предназначен для настройки ограничений на использование USB-устройств. Модуль работает на основе функционала USBGuard, позволяет вести чёрный и белый списки ограничений и предоставляет два типа действий — allow/block.
Модуль предоставляет следующие возможности:
  • сканирование подключенных устройств;
  • выбор и добавление устройств в набор правил из списка подключенных устройств;
  • создание предустановленных правил для распространённых сценариев;
  • создание правил по дескрипторам интерфейса: CC:SS:PP;
  • создание правил по свойствам USB-устройства: PID, VID;
  • создание правил по хэшу устройства по PID+VID+SN;
  • создание сложных правил с дополнительными условиями;
  • загрузка правил из csv-файла;
  • редактирование значений в созданных правилах;
  • просмотр журнала событий подключения/отключения USB-устройств.

46.1. Информационное поле

В информационном поле отображается текущее состояние службы usbguard, список пользователей и групп, которые могут редактировать правила, сообщения об ошибках и предупреждения:
Alterator-usbguard. Информационное поле

Примечание

Добавить/удалить пользователя/группу, которые могут редактировать правила, можно в командной строке, например:
  • дать пользователю user полный доступ к разделам «devices» и «exceptions», пользователь user также будет иметь возможность просматривать и изменять текущую политику:
    # usbguard add-user -u user --devices ALL --policy modify,list --exceptions ALL
    
  • удалить права у пользователя user:
    # usbguard remove-user -u user
    
Дополнительную информацию смотрите на соответствующих страницах руководства, например:
$ usbguard add-user -h
Для включения контроля за USB-устройствами необходимо установить отметку в пункте Активировать контроль портов, нажать кнопку Проверить, а затем кнопку Применить. Служба usbguard будет запущена и добавлена в автозагрузку:
Alterator-usbguard. Служба usbguard запущена и добавлена в автозагрузку

Важно

По умолчанию будет установлен режим Белый список: Заблокировать все, кроме подключенных устройств, поэтому все подключенные устройства будут добавлены в список разрешённых, а все новые USB-­устройства будут блокироваться.
Изменить поведение по умолчанию можно, установив нужный режим перед запуском службы usbguard (см. Предустановки).
Для отключения контроля за USB-устройствами необходимо снять отметку с поля Активировать контроль портов, нажать кнопку Проверить, а затем кнопку Применить и перезагрузить систему.

46.2. Список USB-устройств

Если служба usbguard запущена, в веб-интерфейсе будет отображён список текущих подключённых устройств:
Список подключённых USB-устройств
В столбце Статус отображается текущее состояние USB-устройства (allow — разрешённое устройство, block — заблокированное устройство).
Для редактирования состояния USB-устройства необходимо выделить строку с нужным ­устройством и нажать кнопку Разблокировать/Заблокировать. При этом будет добавлено соответствующее правило в таблицу Хэш.

Примечание

Если активен Белый список, то для устройства со статусом block будет активна кнопка Разблокировать, если активен Чёрный список, то для устройства со статусом allow будет активна кнопка Заблокировать.
Кнопка Сканировать устройства позволяет обновить список подключённых USB-устройств.

46.3. Предустановки

Правила могут работать в режиме белого или чёрного списка. После установки режима Чёрный список, будут заблокированы только перечисленные в данном списке USB-­устройства. После установки режима Белый список, будут заблокированы все USB-­устройства, кроме перечисленных в данном списке.
Alterator-usbguard. Предустановки
Кроме ручного режима добавления правил в списки существует возможность предварительной настройки списков. Для предварительной настройки правил необходимо:
  1. Выбрать соответствующий пункт:
    • Белый список:
      • Заблокировать все, кроме подключенных устройств — в правила (таблица Хэш) с действием allow будут добавлены все подключенные устройства. Все новые USB-­устройства будут заблокированы (будут отображаться в таблице Список устройств со статусом block);
      • Заблокировать все, кроме подключенных и HID/HUB устройств — в правила с действием allow будут добавлены все подключенные устройства (таблица Хэш) и все устройства с интерфейсами 03:*:* и 09:*:* (таблица Маски CC:SS:PP). Все новые USB-устройства кроме HID/HUB-устройств (клавиатуры, мыши, джойстики, USB-концентраторы) будут заблокированы (будут отображаться в таблице Список устройств со статусом block);
      • Ручной режим — позволяет установить свои правила.
    • Чёрный список:
      • Блокировать устройства по классам дескриптора интерфейса: 06 Image и 08 Mass Storage — в правила (таблица Маски CC:SS:PP) с действием block будут добавлены все устройства с интерфейсами 08:*:* и 06:*:*. Все USB-устройства Mass Storage Device (USB-накопитель, карта памяти, кардридер, цифровая фотокамера) и Image (веб-камера, сканер) будут заблокированы (будут отображаться в таблице Список устройств со статусом block);
      • Блокировать устройства по списку известных PID:VID, использующих Аndroid Debug Bus — в правила (таблица Маски VID:PID) с действием block будут добавлены известные Android-устройства. Все Android-устройства будут заблокированы (будут отображаться в таблице Список устройств со статусом block);
      • Ручной режим — позволяет установить свои правила.
  2. Нажать кнопку Проверить. Будут показаны планируемые изменения:
    Alterator-usbguard. Планируемые изменения
  3. Если изменения корректные, нажать кнопку Применить.
  4. Для отмены изменений, до нажатия кнопки Применить, следует выбрать пункт Ручной режим и нажать кнопку Проверить, а затем Применить.

46.4. Добавление правил

Для добавления нового правила должен быть выбран пункт Ручной режим в белом или чёрном списках. Если Ручной режим выбран в белом списке, правило будет добавлено с действием allow, если в чёрном — с действием block.

46.4.1. Правила по классу интерфейса

Назначение USB-устройств может определяться кодами классов, которые сообщаются USB-узлу для загрузки необходимых драйверов. Коды классов позволяют унифицировать работу с однотипными устройствами разных производителей. Устройство может поддерживать один или несколько классов, максимальное количество которых определяется количеством доступных endpoints. Например, широко известны устройства класса Human Interface Device, HID (мыши, клавиатуры, игровые манипуляторы и т.д.) или устройства Mass Storage (USB-накопители, карты памяти и т.д.).

Примечание

Класс интерфейса указывается как три 8-битных числа в шестнадцатеричном формате, разделенных двоеточием (CC:SS:PP). Числа обозначают класс интерфейса (CC), подкласс (SS) и протокол (PP). Вместо номера подкласса и протокола можно использовать символ *, чтобы соответствовать всем подклассам или протоколам. Сопоставление определенного класса и определенного протокола не допускается, то есть если в качестве номера подкласса используется *, то для протокола также необходимо использовать *.
Добавление правила по маске:
  1. Под таблицей Маски CC:SS:PP нажать кнопку Добавить.
  2. В поле CC:SS:PP вписать маску, например, правило для всех устройств с интерфейсами 09:*:*:
    Добавление правила для всех устройств с интерфейсами 09:*:*
  3. Нажать кнопку Проверить. Корректное правило будет выделено зелёным цветом, некорректное — красным:
    Alterator-usbguard. Проверка правила
  4. Исправить или удалить некорректное правило и повторно нажать кнопку Проверить.
  5. Нажать кнопку Применить для активации правила. Правило для всех устройств с интерфейсами 09:*:* будет добавлено.

46.4.2. Правила по VID&PID

Каждое USB-устройство содержит атрибуты, куда входит идентификатор разработчика устройства (VID) и идентификатор изделия (PID). На основании этих идентификаторов узел (компьютер) ищет методы работы с этим устройством (обычно это выражается в требовании установить драйверы, поставляемые разработчиком устройства).

Примечание

VID и PID — это 16-битные числа в шестнадцатеричной системе счисления. В правиле можно также использовать символ *:
  • для соответствия любому идентификатору устройства *:*
  • для соответствия любому идентификатору продукта от конкретного поставщика, например, 090с:*
Добавление правила по VID&PID:
  1. Под таблицей Маски VID:PID нажать кнопку Добавить.
  2. В поле VID вписать идентификатор разработчика устройства (VID), а в поле PID идентификатор изделия (PID):
    Добавление правила по VID&PID
  3. Нажать кнопку Проверить. Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Исправить или удалить некорректное правило и повторно нажать кнопку Проверить.
  5. Нажать кнопку Применить для активации правила.

46.4.3. Правила по хэшу

Для каждого USB-устройства USBGuard вычисляет хэш на основе значений атрибутов устройства и данных дескриптора USB (PID+VID+SN).
Добавление правила по хэшу:
  1. Под таблицей Хэш нажать кнопку Добавить.
  2. В поле Хэш вписать хэш устройства:
    Добавление правила по хэшу
  3. Нажать кнопку Проверить. Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Исправить или удалить некорректное правило и повторно нажать кнопку Проверить.
  5. Нажать кнопку Применить для активации правила.

46.4.4. Другие правила

Модуль позволяет создавать сложные правила с дополнительными условиями.
Добавление сложного правила:
  1. Под таблицей Другие правила нажать кнопку Добавить.
  2. В поле Правило вписать правило:
    Добавление сложного правила
    Например, правило, разрешающее подключение принтера только через определённый порт:
    allow id 04a9:177a name "Canon E400" serial "F572EC" via-port "1-2" hash "eql9yA8m+5VVMmhXOvbUzwNPDGCAPq+fxIQHvbptlsY="
    
  3. Нажать кнопку Проверить. Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Исправить или удалить некорректное правило и повторно нажать кнопку Проверить.
  5. Нажать кнопку Применить для активации правила.

46.4.5. Загрузка правил из файла

Правила должны быть добавлены в csv-файл, по одному правилу в каждой строке. Строка должна иметь вид:
allow/block,Interface,PID:VID,Hash
Например:
allow,,090c:1000,"2dfdMHZxF5olAaNbsh68G4fpzD3iQLPL3+M7KHnSRjE="
allow,00:00:*,,
allow,,1000:*,
allow,,,"eql9yA8m+5VVMmhXOvbUzwNPDGCAPq+fxIQHvbptlsY="

Примечание

Файл не должен содержать конфликтные правила — должны быть либо все allow, либо все block.
Загрузка правил из файла:
  1. Нажать кнопку Выберите файл/Обзор (под таблицей Хэш) и выбрать файл с правилами.
  2. Нажать кнопку Загрузить из файла.
  3. Нажать кнопку Проверить. Корректное правило будет выделено зелёным цветом, некорректное — красным.
  4. Нажать кнопку Применить для активации правила.

Важно

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

46.5. Удаление правил

Пример удаления правила по маске:
  1. В таблице Маски CC:SS:PP установить отметку в поле с соответствующим правилом.
  2. Нажать кнопку Удалить. Правило будет готово к удалению:
    Удаление правила для всех устройств с интерфейсами 03:*:*
  3. Нажать кнопку Проверить.
  4. Нажать кнопку Применить для удаления правила.
Правила из других таблиц удаляются аналогичным способом.

46.6. Просмотр журнала аудита

Для просмотра журнала событий подключения/отключения USB-устройств (журнала аудита) необходимо нажать кнопку Журнал, расположенную в левом нижнем углу модуля. По нажатию на эту кнопку раскрывается журнал аудита:
Журнал событий подключения/отключения USB-устройств

Примечание

Фильтрация по логу USBGuard — строгая, регистрозависимая.

Глава 47. Настройка ограничения доступа к файловой системе USB-­устройства

Модуль ЦУС Контроль USB-устройств (монтирование) (пакет alterator-usbmount) из раздела Система позволяет ограничить доступ к файловой системе USB-устройства по UID/GID. В модуле также предусмотрена возможность просмотра журнала событий подключения/отключения USB-устройств.
Особенности работы модуля:
  • если для устройства не создано правило, то служба не вмешивается в логику монтирования USB-устройства;
  • если для устройства создано правило, то служба монтирует блочные устройства на назначенном USB-устройстве в каталог /media/alt-usb-mount/$user_$group или /media/alt-usb-mount/root_$group, если пользователь не указан;
  • служба назначает ACL для указанного пользователя и группы на каталог, в котором будет создана точка монтирования блочного устройства;
  • в правилах можно указать только существующего локального пользователя и пользовательскую группу;
  • доступ к USB-устройству назначенному пользователю и группе предоставляется полностью (rw);
  • любой пользователь может отмонтировать устройство через стандартные средства ОС;
  • служба не вмешивается в права самих файловых систем блочных устройств;
  • рекомендуемая файловая система для переносных носителей exFAT.

Примечание

Особенности работы модуля с файловыми системами:
  • EXT2/3/4, XFS, BTRFS поддерживают права. Доступ к файловой системе будет также определяться назначенными правами самой файловой системы;
  • FAT16/FAT32/exFAT не поддерживают права. Доступ будет полностью определяться через точку монтирования, назначенную в USBMount;
  • ISO9660/UDF поддерживает только readonly. Доступ будет предоставлен только на чтение;
  • NTFS поддерживает права. Не рекомендуется использовать. В случае если ранее NTFS носитель был извлечён небезопасно, то носитель будет смонтирован только для чтения.

47.1. Запуск/останов службы

В модуле отображается текущее состояние службы USBMount:
Alterator-usbmount. Служба USBMount остановлена
Для включения контроля за устройствами необходимо передвинуть переключатель Служба USBMount остановлена и нажать кнопку Сохранить. Служба USBMount будет запущена и добавлена в автозагрузку.
Для отключения контроля за устройствами необходимо передвинуть переключатель Служба USBMount активна и нажать кнопку Сохранить.

47.2. Список устройств

Если служба USBMount запущена, в веб-интерфейсе будет отображён список текущих подключённых устройств:
Alterator-usbmount. Служба USBMount запущена
В столбце Статус отображается текущее состояние устройства (free — владелец для устройства не назначен, owned — устройству назначен владелец).
Если устройству назначен владелец и устройство примонтировано, то текущая точка монтирования отображается в столбце Точка монтирования.
Кнопка Обновить список блочных устройств позволяет обновить список подключённых устройств.

47.3. Добавление/удаление правил

Для того чтобы назначить права для подключенного блочного устройства, необходимо выполнить следующие действия:
  1. Выделить строку с нужным устройством в таблице Список устройств и нажать кнопку Назначить владельца (или дважды щелкнуть мышью по строке с устройством):
    Alterator-usbmount. Назначение владельца для подключенного устройства
  2. Правило будет добавлено в таблицу Список владельцев:
    Правило добавлено в таблицу «Список владельцев»
  3. В столбце Пользователь выбрать пользователя, в столбце Группа — группу владельца блочного устройства:
    Указание пользователя и группы для блочного устройства
  4. Нажать кнопку Сохранить. Статус устройства в таблице Список устройств изменится на owned:
    Статус «owned» для устройства в таблице «Список устройств»

Примечание

При создании/редактировании правила некорректные значения будут выделены красным цветом, корректные — зелёным.
Чтобы назначить права для произвольного блочного устройства, необходимо:
  1. Нажать кнопку Добавить, расположенную под таблицей Список владельцев. В таблицу будет добавлена пустая строка:
    Создание нового правила USBMount
  2. В соответствующих столбцах указать VID, PID и Серийный номер устройства:
    Параметры устройства
  3. В столбце Пользователь выбрать пользователя, в столбце Группа — группу владельца блочного устройства:
    Указание группы для блочного устройства

    Примечание

    Если необходимо назначить права для определённой группы пользователей, в столбце Пользователь следует выбрать прочерк.
  4. Нажать кнопку Сохранить.
Редактирование правила:
  1. Дважды щелкнуть мышью по строке с правилом в таблице Список владельцев (или выделить строку в таблице Список владельцев и нажать кнопку Изменить).
  2. Внести изменения.
  3. Нажать кнопку Сохранить.
Удаление правила:
  1. Выделить строку(и) с правилом в таблице Список владельцев.
  2. Нажать кнопку Удалить:
    Удаление правила USBMount
  3. Нажать кнопку Сохранить.

Примечание

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

47.4. Просмотр журнала аудита

Для просмотра журнала событий подключения/отключения USB-устройств необходимо нажать кнопку Журнал, расположенную в левом нижнем углу модуля. По нажатию на эту кнопку раскрывается журнал аудита:
Журнал аудита USBMount

Глава 48. Статистика

48.1. Сетевой трафик

Все входящие и исходящие с сервера сетевые пакеты могут подсчитываться, и выводится по запросу для анализа.
Модуль Сетевой трафик (пакет alterator-ulogd) из раздела Статистика предназначен для просмотра статистики входящих и исходящих с сервера сетевых пакетов. Данный модуль позволяет оценить итоговый объём полученных и переданных данных за всё время работы сервера, за определённый период времени и по каждой службе отдельно.
Для включения сбора данных необходимо установить флажок Включить сбор данных, и нажать кнопку Применить.
Веб-интерфейс модуля Сетевой трафик
Для просмотра статистики укажите период (в виде начальной и конечной дат). Дата указывается в формате YYYY-MM-DD (год-месяц-день) или выбирается из календаря справа от поля ввода даты. Из списка доступных сетевых интерфейсов необходимо выбрать интересующий и нажать на кнопку Показать.
Просмотр статистики входящих и исходящих пакетов
Трафик на указанном интерфейсе за заданный период показывается в виде:
  • служба (название протокола);
  • входящий трафик в килобайтах;
  • исходящий трафик в килобайтах.

Глава 49. Обслуживание сервера

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

49.1. Мониторинг состояния системы

Для обеспечения бесперебойной работы сервера крайне важно производить постоянный мониторинг его состояния. Все события, происходящие с сервером, записываются в журналы, анализ которых помогает избежать сбоев в работе сервера и предоставляет возможность разобраться в причинах некорректной работы сервера.
Для просмотра журналов предназначен модуль ЦУС Системные журналы (пакет alterator-logs) из раздела Система). Интерфейс позволяет просмотривать записи журналов с возможностью перехода к более старым или более новым записям.
Веб-интерфейс модуля Системные журналы
В журнале Системные сообщения (Journald) — отображаются события процессов ядра и пользовательской области. У каждого сообщения в этом журнале есть приоритет, который используется для пометки важности сообщений. Сообщения в зависимости от уровня приоритета подсвечиваются цветом.
Журнал может содержать довольно большое количество сообщений. Уменьшить либо увеличить количество выводимых строк можно, выбрав нужное значение в списке Показывать.

49.2. Системные службы

Для изменения состояния служб можно использовать модуль ЦУС Системные службы (пакет alterator-services) из раздела Система. Интерфейс позволяет изменять текущее состояние службы и, если необходимо, применить опцию запуска службы при загрузке системы.
Веб-интерфейс модуля Системные службы
После выбора названия службы из списка отображается описание данной службы, а также текущее состояние: Работает/Остановлена/Неизвестно.

49.3. Обновление системы

После установки системы крайне важно следить за обновлениями ПО. Обновления для Альт Сервер могут содержать как исправления, связанные с безопасностью, так и новый функционал или просто улучшение и ускорение алгоритмов. В любом случае настоятельно рекомендуется регулярно обновлять систему для повышения надёжности работы сервера.
Для автоматизации процесса установки обновлений предусмотрен модуль ЦУС Обновление системы (пакет alterator-updates) из раздела Система. Здесь можно включить автоматическое обновление через Интернет с одного из предлагаемых серверов или задать собственные настройки.
Модуль Обновление системы
Источник обновлений указывается явно (при выбранном режиме Обновлять систему автоматически из сети Интернет) или вычисляется автоматически (при выбранном режиме Обновление системы управляемое сервером и наличии в локальной сети настроенного сервера обновлений).

Примечание

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

Примечание

Чтобы указать в качестве сервера обновлений локально настроенный источник, необходимо выбрать режим Обновлять систему автоматически из Интернет, выбрать в списке Другой адрес и указать адрес локального сервера обновлений, например, http://<ip сервера>/mirror:
Указание источника обновлений

49.4. Обновление ядра ОС

Модуль ЦУС Обновление ядра (пакет alterator-update-kernel) из раздела Система реализует функционал утилиты update-kernel. Данный модуль предоставляет возможность:
  • просматривать список установленных ядер;
  • устанавливать, обновлять и удалять ядра;
  • задавать ядро, загружаемое по умолчанию;
  • устанавливать/удалять отдельные модули ядра.
В главном окне модуля отображается ядро, загруженное по умолчанию, и список установленных модулей ядра:
Модуль Обновление ядра
В дистрибутиве Альт Сервер можно установить несколько версий ядра одного и того же типа одновременно. После установки или обновления ядра старые ядра не удаляются.
В случае возникновения проблем с новым ядром можно переключиться на установленное ранее. Для этого следует выбрать нужное ядро в списке Установленные ядра и нажать кнопку Сделать ядро загружаемым по умолчанию.
Накопленный при обновлениях набор ранее установленных ядер можно удалить для освобождения дискового пространства. Для этого следует выбрать нужное ядро в списке Установленные ядра и нажать кнопку Удалить ядро.
Для того чтобы обновить ядро или установить модули ядра, следует нажать кнопку Обновить ядро….

Примечание

При нажатии кнопки Обновить ядро… локальная база данных пакетов будет синхронизирована с удалённым репозиторием, это может занять некоторое время.
Если в системе уже установлено последнее ядро, сообщение об этом появится в открывшемся окне, иначе в этом окне будет показано доступное к установке ядро.
Доступное к установке ядро
Чтобы обновить ядро, необходимо нажать кнопку Обновить ядро. Далее следует подтвердить желание обновить ядро нажатием кнопки Да.

Примечание

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

49.5. Обновление систем, не имеющих выхода в Интернет

Для систем, не имеющих прямого выхода в Интернет, рекомендуется установка отдельного сервера обновлений на базе ОС Альт Сервер, находящегося вне защищенного контура и организация ограниченного доступа к этому серверу.
Модуль ЦУС Сервер обновлений (пакет alterator-mirror) из раздела Серверы предназначен для зеркалирования репозиториев и публикации их для обновлений рабочих станций и серверов.
Сервер обновлений — технология, позволяющая настроить автоматическое обновление программного обеспечения, установленного на клиентских машинах (рабочих местах), работающих под управлением Альт Рабочая станция.
Настройка сервера обновлений
На странице модуля можно выбрать, как часто выполнять закачку пакетов, можно выставить время, когда начинать зеркалирование.
Здесь также можно выбрать репозитории, локальные срезы которых необходимы. При нажатии на название репозитория, появляются настройки этого репозитория. Необходимо выбрать источник (сайт, откуда будет скачиваться репозиторий), архитектуру процессора (если их несколько, то стоит выбрать соответствующие).

Примечание

При выборе любой архитектуры также будет добавлен источник с noarch.
Настройки репозитория
Сервер обновлений предоставляет возможность автоматически настроить обновление клиентских машин в нужном режиме:
  • Локальное зеркало репозитория
    В этом режиме на сервере создаётся копия удалённого репозитория. Загрузка ПО клиентскими машинами может производиться с локального сервера по протоколам HTTP, HTTPS, FTP, rsync (для каждого протокола нужно настроить соответствующие службы, ниже приведён пример настройки HTTP- и FTP-сервера). Наличие на локальном сервере зеркала репозитория при большом количестве машин в сети позволяет существенно сэкономить трафик.

    Важно

    Зеркалирование потребует наличия большого количества места на диске.
    Уменьшить размер скачиваемых файлов и занимаемое репозиторием место на диске можно, указав имена каталогов и файлов, которые будут исключены из синхронизации. Например, не скачивать пакеты с исходным кодом и пакеты с отладочной информацией:
    SRPMS
    *-debuginfo-*
    
    Шаблоны указываются по одному в отдельной строке. Символ «*» используется для подстановки любого количества символов.
  • Публикация репозитория
    В этом случае публикуется или URL внешнего сервера, содержащего репозиторий или, если включено локальное зеркало репозитория, адрес этого сервера. Такая публикация позволяет клиентским машинам автоматически настроить свои менеджеры пакетов на использование внешнего или локального репозитория.
    Со стороны клиентских машин, в этом случае, необходимо настроить модуль Обновление системы, отметив в нём Обновление системы управляемое сервером.
Настройка локального репозитория заканчивается нажатием на кнопку Применить.

Примечание

По умолчанию локальное зеркало репозитория находится в /srv/public/mirror. Для того чтобы зеркалирование происходило в другую папку, необходимо эту папку примонтировать в папку /srv/public/mirror. Для этого в файл /etc/fstab следует вписать строку:
/media/disk/localrepo /srv/public/mirror none rw,bind,auto 0 0
где /media/disk/localrepo — папка-хранилище локального репозитория.

Примечание

Если в каталогах /srv/public/mirror/<репозиторий>/branch/<архитектура>/base/. нет файлов pkglist.* значит зеркалирование не закончено (т.е. не все файлы загружены на ваш сервер).

49.5.1. Настройка веб-сервера

Установить веб-сервер (в данном примере nginx):
# apt-get install nginx
Создать файл конфигурации сервера в /etc/nginx/sites-available.d/repo.conf:
server {
  listen 80;
  server_name localhost .local <ваш ip>;

  access_log /var/log/nginx/repo-access.log;
  error_log /var/log/nginx/repo-error.log;

  location /mirror {
    root /srv/public;
    autoindex on;
   }
}
Сделать ссылку в /etc/nginx/sites-enabled.d/:
# ln -s /etc/nginx/sites-available.d/repo.conf /etc/nginx/sites-enabled.d/repo.conf
Запустить nginx и добавить его в автозагрузку:
# systemctl enable --now nginx
На клиентских машинах необходимо настроить репозитории:
# apt-repo rm all
# apt-repo add http://<ip сервера>/mirror/p11/branch
Проверить правильность настройки репозиториев:
# apt-repo
rpm http://192.168.0.185/mirror p11/branch/x86_64 classic
rpm http://192.168.0.185/mirror p11/branch/noarch classic

49.5.2. Настройка FTP-сервера

Установить пакеты vsftpd, lftp, если они еще не установлены:
# apt-get install vsftpd lftp
Настроить параметры использования vsftpd в файле /etc/xinetd.d/vsftpd:
# default: off
# description: The vsftpd FTP server.
service ftp
{
    disable = no # включает службу
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    nice = 10
    rlimit_as = 200M
    server = /usr/sbin/vsftpd
    only_from = 0.0.0.0 # предоставить доступ для всех IP
}
Перезапустить xinetd:
# systemctl restart xinetd
Изменить настройку прав доступа в файле /etc/vsftpd/conf:
local_enable=YES
Создать каталог /var/ftp/mirror:
# mkdir -p /var/ftp/mirror
Примонтировать каталог /srv/public/mirror в /var/ftp/mirror с опцией --bind:
# mount --bind /srv/public/mirror /var/ftp/mirror

Примечание

Для автоматического монтирования каталога /srv/public/mirror при загрузке системы необходимо добавить следующую строку в файл /etc/fstab:
/srv/public/mirror /var/ftp/mirror none defaults,bind 0 0
На клиентских машинах необходимо настроить репозитории:
# apt-repo rm all
# apt-repo add ftp://<ip сервера>/mirror/p11/branch
# apt-repo
rpm ftp://192.168.0.185/mirror p11/branch/x86_64 classic
rpm ftp://192.168.0.185/mirror p11/branch/noarch classic

49.6. Локальные учётные записи

Модуль Локальные учётные записи (пакет alterator-users) из раздела Пользователи предназначен для администрирования системных пользователей.
Веб-интерфейс модуля alterator-users
Для создания новой учётной записи необходимо ввести имя новой учётной записи и нажать кнопку Создать, после чего имя отобразится в списке слева.
Для дополнительных настроек необходимо выделить добавленное имя, либо, если необходимо изменить существующую учётную запись, выбрать её из списка.

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

В модуле Администратор системы (пакет alterator-root) из раздела Пользователи можно изменить пароль суперпользователя (root), заданный при начальной настройке системы.
В данном модуле (только в веб-интерфейсе) можно добавить публичную часть ключа RSA или DSA для доступа к серверу по протоколу SSH.
Веб-интерфейс модуля Администратор системы

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

В модуле Дата и время (пакет alterator-datetime) из раздела Система можно изменить дату и время на сервере, сменить часовой пояс, а также настроить автоматическую синхронизацию часов на самом сервере по протоколу NTP и предоставление точного времени по этому протоколу для рабочих станций локальной сети.
Веб-интерфейс модуля Дата и время
Системное время зависит от следующих факторов:
  • часы в BIOS — часы, встроенные в компьютер. Они работают, даже если он выключен;
  • системное время — часы в ядре операционной системы. Во время работы системы все процессы пользуются именно этими часами;
  • часовые пояса — регионы Земли, в каждом из которых принято единое местное время.
При запуске системы происходит активация системных часов и их синхронизация с аппаратными, кроме того, в определённых случаях учитывается значение часового пояса. При завершении работы системы происходит обратный процесс.
Если настроена синхронизация времени с NTP-сервером, то сервер сможет сам работать как сервер точного времени. Для этого достаточно отметить соответствующий пункт Работать как NTP-сервер.

Примечание

Выбор источника сигналов времени (источника тактовой частоты) доступен в режиме эксперта.

49.9. Агент наблюдения

Модуль Агент наблюдения (пакет alterator-zabbix-agent) из раздела Система позволяет настроить клиентскую часть системы мониторинга Zabbix.
Веб-интерфейс модуля Агент наблюдения
На странице модуля можно задать следующие параметры:
  • Слушать по адресу — IP-адрес, который агент должен прослушивать;
  • Адрес сервера наблюдения — адрес сервера Zabbix, которому разрешено обращаться к агенту;
  • Имя узла — при выборе пункта Системное, узел будет добавлен на сервер Zabbix под системным именем, при выборе пункта Пользовательское, имя узла можно указать в поле Пользовательское имя узла;
  • Пользовательское имя узла — имя узла мониторинга, которое будет указано на сервере Zabbix.

Примечание

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

49.10. Ограничение использования диска

Модуль Использование диска (пакет alterator-quota) в разделе Пользователи позволяет ограничить использование дискового пространства пользователями, заведёнными на сервере в модуле Пользователи.
Веб-интерфейс модуля Использование диска
Модуль позволяет задать ограничения (квоты) для пользователя при использовании определённого раздела диска. Ограничить можно как суммарное количество килобайт, занятых файлами пользователя, так и количество этих файлов.
Для управления квотами файловая система должна быть подключена с параметрами usrquota, grpquota. Для этого следует выбрать нужный раздел в списке Файловая система и установить отметку в поле Включено:
Задание ограничений для пользователя user на раздел /home
Для того чтобы задать ограничения для пользователя, необходимо выбрать пользователя в списке Пользователь, установить ограничения и нажать кнопку Применить.
При задании ограничений различают жёсткие и мягкие ограничения:
  • Мягкое ограничение: нижняя граница ограничения, которая может быть временно превышена. Временное ограничение — одна неделя.
  • Жёсткое ограничение: использование диска, которое не может быть превышено ни при каких условиях.
Значение 0 при задании ограничений означает отсутствие ограничений.

49.11. Выключение и перезагрузка компьютера

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

Примечание

Для возможности настройки оповещений на e-mail, необходимо установить пакет state-change-notify-postfix (из репозитория p11):
# apt-get install state-change-notify-postfix
Для настройки оповещений необходимо отметить пункт При изменении состояния системы отправлять электронное письмо по адресу, ввести e-mail адрес и нажать кнопку Применить:
Веб-интерфейс модуля Выключение компьютера. Настройка оповещений
По указанному адресу, при изменении состоянии системы будут приходить электронные письма. Например, при включении компьютера, содержание письма будет следующее:
Mon Mar 10 11:02:43 EET 2025: The server.test.alt is about to start.
При выключении:
Mon Mar 10 12:02:28 EET 2025: The server.test.alt is about to shutdown.
Кнопка Сбросить возвращает сделанный выбор к безопасному значению по умолчанию: Продолжить работу, перечитывает расписания и выставляет отметки для ежедневного автоматического действия в соответствие с прочитанным.

Глава 50. Права доступа к модулям

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

Часть VIII. Корпоративная инфраструктура

Содержание

51. Альт Домен
51.1. Создание нового домена
51.1.1. Установка пакетов
51.1.2. Остановка конфликтующих служб
51.1.3. Восстановление к начальному состоянию Samba
51.1.4. Установка имени контроллера домена
51.1.5. Сетевые настройки
51.1.6. Создание домена в ЦУС
51.1.7. Создание домена одной командой
51.1.8. Интерактивное создание домена
51.1.9. Запуск службы
51.1.10. Настройка Kerberos
51.1.11. Проверка работоспособности домена
51.2. Повышение уровня схемы, функционального уровня домена
51.3. Управление пользователями
51.4. Присоединение к домену в роли контроллера домена
51.5. Проверка результатов присоединения
51.6. Репликация
51.7. Подключение к домену на рабочей станции
51.7.1. Подготовка
51.7.2. Ввод в домен
52. Групповые политики
52.1. Развертывание групповых политик
52.2. Пример создания групповой политики
53. Samba в режиме файлового сервера
53.1. Настройка smb.conf
53.2. Монтирование ресурса Samba через /etc/fstab
54. SOGo
54.1. Установка
54.2. Подготовка среды
54.3. Включение веб-интерфейса
54.4. Настройка электронной почты
54.4.1. Настройка Postfix
54.4.2. Настройка Dovecot
54.4.3. Безопасность
54.4.4. Проверка конфигурации
54.5. Настройка автоответчика, переадресации и фильтрации
54.6. Настройка общих папок в SOGo
55. FreeIPA
55.1. Установка сервера FreeIPA
55.2. Добавление новых пользователей домена
55.3. Установка FreeIPA клиента и подключение к серверу
55.3.1. Установка FreeIPA клиента
55.3.2. Подключение к серверу в ЦУС
55.3.3. Подключение к серверу в консоли
55.3.4. Вход пользователя
55.4. Удаление клиента FreeIPA
55.5. Настройка репликации
56. Система мониторинга Zabbix
56.1. Установка сервера PostgreSQL
56.2. Настройка PHP
56.3. Настройка и запуск Zabbix-сервера
56.4. Установка веб-интерфейса Zabbix
56.5. Установка клиента Zabbix
56.6. Добавление нового хоста на Zabbix-сервер
56.7. Авторегистрация узлов
57. Отказоустойчивый кластер (High Availability) на основе Pacemaker
57.1. Настройка узлов кластера
57.1.1. Настройка разрешений имён узлов
57.1.2. Настройка SSH-подключения между узлами
57.2. Установка кластерного ПО и создание кластера
57.3. Настройка параметров кластера
57.3.1. Кворум
57.3.2. Настройка STONITH
57.4. Настройка ресурсов
58. Система виртуальных рабочих мест OpenUDS
58.1. Установка
58.1.1. Установка MySQL (MariaDB)
58.1.2. Установка OpenUDS Server
58.1.3. OpenUDS Tunnel
58.2. Обновление OpenUDS
58.3. Настройка OpenUDS
58.3.1. Поставщики услуг
58.3.2. Серверы
58.3.3. Настройка аутентификации пользователей
58.3.4. Настройка менеджера ОС
58.3.5. Транспорт
58.3.6. Сети
58.3.7. Туннели
58.3.8. Пулы услуг
58.3.9. Мета-пулы
58.3.10. Управление доступом по календарю
58.3.11. Настройка разрешений
58.3.12. Уведомители
58.3.13. Конфигурация OpenUDS
58.4. Подготовка шаблона виртуальной машины
58.4.1. Шаблон ВМ с ОС Альт
58.4.2. Шаблон ВМ с ОС Windows
58.5. Настройка клиента OpenUDS
58.5.1. Клиент с ОС Альт
58.5.2. Клиент с ОС Windows
58.6. Подключение пользователя к виртуальному рабочему месту
58.7. Отказоустойчивое решение
58.7.1. Конфигурация серверов MySQL
58.7.2. Настройка серверов HAProxy
58.7.3. Настройка OpenUDS
59. Система резервного копирования Proxmox Backup Server
59.1. Терминология
59.2. Установка PBS
59.2.1. Установка сервера PBS
59.2.2. Установка клиента PBS
59.3. Веб-интерфейс PBS
59.4. Настройка хранилища данных
59.4.1. Управление дисками
59.4.2. Создание локального хранилища данных
59.4.3. Съёмные хранилища данных
59.4.4. Управление хранилищами данных
59.5. Управление трафиком
59.6. Управление пользователями
59.6.1. Области аутентификации
59.6.2. API-токены
59.6.3. Управление доступом
59.6.4. Двухфакторная аутентификация
59.7. Управление удалёнными PBS и синхронизация хранилищ
59.7.1. Удалённые сервера
59.7.2. Задания синхронизации
59.8. Клиент резервного копирования
59.8.1. Создание резервной копии
59.8.2. Создание зашифрованной резервной копии
59.8.3. Восстановление данных
59.8.4. Аутентификация и завершение сеанса
59.9. Интеграция с PVE
59.10. Резервное копирование на ленту
59.10.1. Поддерживаемое оборудование
59.10.2. Быстрый старт
59.10.3. Настройка резервного копирования
59.10.4. Администрирование
59.11. Уведомления
59.11.1. Цели уведомлений (Notification Targets)
59.11.2. Триггеры уведомлений (Notification Matchers)
59.11.3. Пересылка системной почты
59.11.4. Разрешения
59.11.5. Режим уведомления
60. Система резервного копирования UrBackup
60.1. Установка UrBackup
60.1.1. Сервер UrBackup
60.1.2. Клиент UrBackup
60.2. Настройка резервного копирования
60.3. Создание резервных копий
60.4. Утилита urbackupclientctl

Глава 51. Альт Домен

Альт Домен — программный комплекс для централизованного управления пользователями и компьютерами в корпоративной сети на базе Linux и Windows. Обеспечивает единый центр аутентификации и авторизации, хранение данных о пользователях и устройствах, а также их администрирование. Поддерживает интеграцию с MS Active Directory и Samba DC включая управление настройками и политиками безопасности.

Примечание

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

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

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

Для Samba DC на базе Heimdal Kerberos необходимо установить компонент samba-dc:
# alteratorctl components install samba-dc
или пакет task-samba-dc:
# apt-get install task-samba-dc

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

Если настройка домена выполняется не сразу после установки ОС, перед установкой необходимо остановить конфликтующие службы krb5kdc и slapd, а также bind:
# for service in smb nmb krb5kdc slapd bind; do \
systemctl disable $service; \
systemctl stop $service; \
done

Примечание

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

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

Необходимо очистить базы и конфигурацию 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 перед созданием домена: rm -f /etc/samba/smb.conf

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

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

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

Необходимо избегать суффиксов .local. При указании домена, имеющего суффикс .local, на сервере и подключаемых компьютерах под управлением Linux потребуется отключить службу avahi-daemon.
Для установки имени узла и домена следует выполнить команду:
# hostnamectl set-hostname <имя узла>
Например:
# hostnamectl set-hostname dc1.test.alt

Примечание

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

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

Для корректной работы сервера должны соблюдаться следующие условия:
  • для сервера должно быть задано полное доменное имя (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
      

Примечание

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

51.1.6. Создание домена в ЦУС

При инициализации домена в веб-интерфейсе ЦУС следует выполнить следующие действия:
  1. В модуле Домен указать имя домена, отметить пункт Active Directory, указать IP-адреса внешних DNS-серверов, задать пароль администратора домена и нажать кнопку Применить:
    Создание домена в ЦУС

    Примечание

    Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов. Пароль, не полностью соответствующий требованиям, это одна из причин завершения развертывания домена ошибкой.
  2. После успешного создания домена, будет выведена информация о домене:
    Создание домена в ЦУС
  3. Перезагрузить сервер.

51.1.7. Создание домена одной командой

Создание контроллера домена test.alt с паролем администратора Pa$$word:
# 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
где
  • --realm — область Kerberos (LDAP), и DNS имя домена;
  • --domain — имя домена (имя рабочей группы);
  • --adminpass — пароль основного администратора домена;
  • dns forwarder — внешний DNS-сервер;
  • --server-role — тип серверной роли.

Примечание

Параметр --use-rfc2307 позволяет поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.
Если уровень домена не указан, то домен разворачивается на уровне 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 (см. Повышение уровня схемы, функционального уровня домена).

51.1.8. Интерактивное создание домена

Примечание

У Samba свой собственный DNS-сервер. В DNS forwarder IP address нужно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена.
Для интерактивного развертывания запустите samba-tool domain provision, это запустит утилиту развертывания, которая будет задавать различные вопросы о требованиях к установке. В примере показано создание домена test.alt:
# samba-tool domain provision
Realm [TEST.ALT]:
Domain [TEST]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: 8.8.8.8
Administrator password:
Retype password:
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
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
Repacking database from v1 to v2 format (first record CN=Address-Book-Roots2,CN=Schema,CN=Configuration,DC=test,DC=alt)
Repack: re-packed 10000 records so far
Repacking database from v1 to v2 format (first record CN=nTFRSSettings-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=test,DC=alt)
Repacking database from v1 to v2 format (first record CN=Remote Desktop Users,CN=Builtin,DC=test,DC=alt)
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Repacking database from v1 to v2 format (first record DC=ForestDnsZones,DC=test.alt,CN=MicrosoftDNS,DC=DomainDnsZones,DC=test,DC=alt)
Repacking database from v1 to v2 format (first record CN=MicrosoftDNS,DC=ForestDnsZones,DC=test,DC=alt)
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
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-1303430852-2161078951-3079987082
При запросе ввода нажимайте Enter за исключением запроса пароля администратора («Administrator password:» и «Retype password:»).

Примечание

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

51.1.9. Запуск службы

В файл /etc/resolvconf.conf добавить строку:
name_servers=127.0.0.1
Обновить DNS адреса:
# resolvconf -u
Установить службу по умолчанию и запустить её:
# systemctl enable --now samba

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

После создания домена необходимо внести изменения в файл /etc/krb5.conf. В этом файле следует раскомментировать строку default_realm и содержимое разделов realms и domain_realm и указать название домена (обратите внимание на регистр символов), в строке dns_lookup_realm должно быть установлено значение false:
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]
dc1 = TEST.ALT

Примечание

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

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

Просмотр общей информации о домене:
# 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  : DC
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.9-alt1)
SMB1 disabled -- no workgroup available
Общие ресурсы netlogon и sysvol создаваемые по умолчанию нужны для функционирования сервера и создаются в smb.conf в процессе развертывания/модернизации.
Проверка конфигурации DNS:
  • Убедиться в наличии nameserver 127.0.0.1 в /etc/resolv.conf:
    # cat /etc/resolv.conf
    nameserver 127.0.0.1
    search test.alt
    
    # host test.alt
    test.alt has address 192.168.0.132
    test.alt has IPv6 address fd47:d11e:43c1:0:a00:27ff:fe49:2df
    
  • Проверить имена хостов:
    # host -t SRV _kerberos._udp.test.alt.
    _kerberos._udp.test.alt has SRV record 0 100 88 dc1.test.alt
    # 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
    
    Если имена не находятся, необходимо проверить выключение службы named.
Проверка Kerberos (имя домена должно быть в верхнем регистре):
# 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
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

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

Для повышения уровня домена необходимо выполнить следующие действия:
  1. Указать функциональный уровень AD, который будет поддерживаться контроллером домена в параметре ad dc functional level файла /etc/samba/smb.conf. Возможные значения: 2008_R2, 2012, 2012_R2, 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:
  • в раздел [global] файла /etc/samba/smb.conf добавить строку:
    ad dc functional level = 2016
    
  • перезагрузить службу samba:
    # systemctl restart samba.service
    
  • обновить схему домена:
    # samba-tool domain schemaupgrade --schema=2019
    
  • подготовить функциональный уровень домена:
    # samba-tool domain functionalprep --function-level=2016
    
  • повысить функциональные уровни домена и леса до 2016:
    # samba-tool domain level raise --domain-level=2016 --forest-level=2016
    Domain function level changed!
    Forest function level changed!
    All changes applied successfully!
    
  • убедиться, что уровни домена и леса повышены:
    # 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
    

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

Создать пользователя с паролем:
samba-tool user create имя пользователя
samba-tool user setexpiry имя пользователя
Удалить пользователя:
samba-tool user delete имя пользователя
Отключить пользователя:
samba-tool user disable имя пользователя
Включить пользователя:
samba-tool user enable имя пользователя
Изменить пароль пользователя:
samba-tool user setpassword имя пользователя
Просмотреть доступных пользователей:
# samba-tool user list
Например, создать пользователя ivanov и установить, что срок действия пароля пользователя ivanov никогда не истекает:
# samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@test.alt'
# samba-tool user setexpiry ivanov --noexpiry

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

Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). Если компьютер с таким именем заведён, удалить его можно командой: pdbedit -x -m имя

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

Для обеспечения отказоустойчивости и балансировки нагрузки в домен могут добавляться дополнительные контроллеры домена.
Заведение дополнительного контроллера домена выполняется путём присоединения дополнительного DC к существующему домену.

Примечание

Уровни леса и домена на существующем DC и дополнительном DC должны совпадать.
На добавляемом DC в /etc/resolv.conf обязательно должен быть добавлен первый DC как nameserver:
# echo "name_servers=192.168.0.132" >> /etc/resolvconf.conf
# echo "search_domains=test.alt" >> /etc/resolvconf.conf
# resolvconf -u
# cat /etc/resolv.conf
search test.alt
nameserver 192.168.0.132
nameserver 8.8.8.8
где enp0s3 — имя интерфейса.

Примечание

После успешного присоединения настройка nameserver должна быть изменена таким образом, чтобы использовать IP-адрес нового DC.
Все действия, указанные ниже, выполняются на узле dc2.test.alt (192.168.0.133), если не указано иное.
Этапы настройки сервера и присоединения к домену в роли контроллера домена:
  1. Установить установить компонент samba-dc:
    # alteratorctl components install samba-dc
    
    или пакет task-samba-dc:
    # apt-get install task-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
    
  4. На существующем контроллере домена завести 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
    

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

    Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
  5. На новом контроллере домена установить следующие параметры в файле конфигурации клиента Kerberos (/etc/krb5.conf):
    [libdefaults]
    default_realm = TEST.ALT
    dns_lookup_realm = false
    dns_lookup_kdc = true
    
  6. Для проверки настройки запросить билет Kerberos для администратора домена:
    # kinit administrator@TEST.ALT
    Password for administrator@TEST.ALT:
    

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

    Имя домена должно быть указано в верхнем регистре.
  7. Убедиться, что билет получен:
    # 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
    
  8. Ввести дополнительный 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-1303430852-2161078951-3079987082) as a DC
    
    Для получения дополнительной информации можно воспользоваться командой:
    # samba-tool domain join --help
    
  9. После успешного ввода в домен в resolvconf необходимо сменить адрес первого DC на собственный адрес (в примере 192.168.0.133). Для этого следует внести изменения в файл /etc/net/ifaces/enp0s3/resolv.conf и выполнить:
    # resolvconf -u
  10. Сделать службу samba запускаемой по умолчанию и запустить её:
    # systemctl enable --now samba
    

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

Примечание

После присоединения к домену службе синхронизации данных может понадобиться до 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 --summary -Uadministrator
    Password for [TEST\administrator]:
    
    [ALL GOOD]
    

    Примечание

    Подробнее о настройке репликации см. в разделе Репликация.
  3. На добавленном DC создать нового пользователя домена:
    # samba-tool user add testuser --random-password
    User 'testuser' added successfully
    
  4. Убедиться, что учетная запись созданного пользователя доступна на первом контроллере домена:
    # samba-tool user list | grep testuser
    testuser
    

51.6. Репликация

Начиная с Samba 3.5, топология репликации выстраивается автоматически.

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

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

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

При настройке репликации указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
Процедура двусторонней репликации:
  1. Репликация с первого контроллера домена на второй:
    # 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. Репликация на первый контроллер домена со второго:
    # 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.

    Примечание

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

Примечание

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

51.7. Подключение к домену на рабочей станции

51.7.1. Подготовка

Для ввода компьютера в Альт Домен потребуется установить пакет task-auth-ad-sssd и все его зависимости (если он еще не установлен):
# apt-get install task-auth-ad-sssd
Синхронизация времени с контроллером домена производится автоматически.
Для ввода компьютера в домен, на нём должен быть доступен сервер DNS, имеющий записи про контроллер домена. Ниже приведен пример настройки сетевого интерфейса со статическим IP-адресом. При получении IP-адреса по DHCP данные о сервере DNS также должны быть получены от сервера DHCP.
Настройку сети можно выполнить как в графическом интерфейсе, так и в консоли:
  • В Центре управления системой в разделе СетьEthernet интерфейсы задать имя компьютера, указать в поле DNS-серверы DNS-сервер домена и в поле Домены поиска — домен для поиска:
    Настройка сети
  • В консоли:
    • задать имя компьютера:
      # hostnamectl set-hostname newhost.test.alt
      
    • в качестве первичного DNS должен быть указан DNS-сервер домена. Для этого необходимо создать файл /etc/net/ifaces/enp0s3/resolv.conf со следующим содержимым:
      nameserver 192.168.0.132
      search test.alt
      
      где 192.168.0.132 — IP-адрес DNS-сервера домена, test.alt — домен.
    • обновить DNS адреса:
      # resolvconf -u
      

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.
В результате выполненных действий в файле /etc/resolv.conf должны появиться строки:
search test.alt
nameserver 192.168.0.132

51.7.2. Ввод в домен

Ввод в домен можно осуществить следующими способами:
  • В командной строке:
    # system-auth write ad test.alt newhost test 'administrator' 'Pa$$word'
    Joined 'NEWHOST' to dns domain 'test.alt'
    
  • В Центре управления системой в разделе ПользователиАутентификация.
    В открывшемся окне следует выбрать пункт Домен Active Directory, заполнить поля и нажать кнопку Применить:
    Ввод в домен в Центре управления системой
    В открывшемся окне необходимо ввести имя пользователя, имеющего право вводить машины в домен, и его пароль и нажать кнопку ОК:
    Пароль для учётной записи с правами подключения к домену
    При успешном подключении к домену, отобразится соответствующая информация:
    Успешное подключение к домену
Перезагрузить рабочую станцию.

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

Групповые политики — это набор правил и настроек для серверов и рабочих станций, реализуемых в корпоративных решениях. В соответствии с групповыми политиками производится настройка рабочей среды относительно локальных политик, действующих по умолчанию. В данном разделе рассматривается реализация поддержки групповых политик Active Directory в решениях на базе дистрибутивов ALT.
В дистрибутивах ALT для применения групповых политик используется инструмент gpupdate. Он рассчитан на работу на машине, введённой в домен Samba.
Интеграция с инфраструктурой LDAP-объектов Active Directory позволяет осуществлять привязку настроек управляемых конфигураций к объектам в дереве каталогов. Помимо глобальных настроек в рамках домена, возможна привязка к следующим группам объектов:
  • подразделения (OU) — пользователи и компьютеры, хранящиеся в соответствующей части дерева объектов;
  • сайты — группы компьютеров в заданной подсети в рамках одного домена;
  • конкретные пользователи и компьютеры.
Кроме того, в самих объектах групповых политик могут быть заданы дополнительные условия, фильтры и ограничения, на основании которых принимается решение о том, как применять данную групповую политику.
Политики подразделяются на политики для компьютеров (Machine) и политики для пользователей (User). Политики для компьютеров применяются на хосте в момент загрузки, а также в момент явного или регулярного запроса планировщиком (раз в час). Пользовательские политики применяются в момент входа в систему.
Групповые политики можно использовать для разных целей, например:
  • управления интернет-браузерами Firefox, Chromium и Yandex Browser (при использовании ADMX-файлов: admx-firefox, admx-chromium, admx-yandex-browser соответственно);
  • управления почтовым клиентом Mozilla Thunderbird (пакет admx-thunderbird);
  • запрета подключения внешних носителей;
  • управления политиками control (широкий набор настроек; реализовано через ADMX-файлы ALT);
  • включения или выключения служб systemd (реализовано через ADMX-файлы ALT);
  • настройки удаленного доступа к рабочему столу (VNC) и настройки графической среды MATE (реализовано через ADMX-файлы ALT);
  • настройки графической среды GNOME (реализовано через ADMX-файлы ALT);
  • настройки среды рабочего стола KDE (экспериментальная политика; реализовано через ADMX-файлы ALT);
  • управления настройками службы Polkit (широкий набор настроек; реализовано через ADMX-файлы ALT);
  • подключения сетевых дисков;
  • управления переменными среды;
  • управления общими каталогами (экспериментальная политика);
  • создания, удаления и замены ярлыков;
  • создания каталогов;
  • управления файлами (экспериментальная политика);
  • выполнения скриптов при старте/завершении работы компьютера или входе/выходе пользователя (экспериментальная политика);
  • установки и удаления пакетов (экспериментальная политика).

Важно

Модули (настройки), помеченные как экспериментальные, необходимо включать вручную через ADMX-файлы ALT в разделе Групповые политики.

52.1. Развертывание групповых политик

Процесс развёртывание групповых политик:
  1. Развернуть Альт Домен (см. Альт Домен ).
  2. На контроллере домена установить административные шаблоны:
    • установить пакеты политик и утилиту admx-msi-setup:
      # apt-get install admx-basealt admx-chromium admx-firefox admx-yandex-browser admx-thunderbird admx-msi-setup
      
    • скачать и установить ADMX-файлы от Microsoft:
      # admx-msi-setup

      Примечание

      По умолчанию 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 <admx-msi-source>]
      Removing admx-msi-setup temporary files...
      
    • после установки политики будут находиться в каталоге /usr/share/PolicyDefinitions. Необходимо скопировать локальные ADMX-файлы в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/):
      # samba-tool gpo admxload -U Administrator
      
  3. Ввести рабочие станции в домен (см. Подключение к домену на рабочей станции).

    Примечание

    Должен быть установлен пакет alterator-gpupdate:
    # apt-get install alterator-gpupdate
    
    Для автоматического включения групповых политик при вводе в домен в окне ввода имени и пароля пользователя, имеющего право вводить машины в домен, необходимо отметить пункт Включить групповые политики:
    Пункт Включить групповые политики
    Политики будут включены сразу после ввода в домен (после перезагрузки системы).

    Примечание

    Если машина уже введена в домен, включить групповые политики можно вручную с помощью модуля ЦУС Групповые политики. Для этого в Центре управления системой в разделе СистемаГрупповые политики следует выбрать шаблон локальной политики (Сервер, Рабочая станция или Контроллер домена) и установить отметку в пункте Управление групповыми политиками:
    Модуль ЦУС «Групповые политики»
  4. На машине, введённой в домен, установить административные инструменты (модуль удаленного управления базой данных конфигурации (ADMC) и модуль редактирования настроек клиентской конфигурации (GPUI)):
    # apt-get install admc 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
    
  5. Настроить, если это необходимо, RSAT на машине с ОС Windows:
    • ввести машину с ОС Windows в домен (управление сервером Samba с помощью RSAT поддерживается из среды до Windows 2012R2 включительно);
    • включить компоненты удаленного администрирования (этот шаг можно пропустить, если административные шаблоны были установлены на контроллере домена). Для задания конфигурации с помощью RSAT необходимо установить административные шаблоны (файлы ADMX) и зависящие от языка файлы ADML из репозитория https://altlinux.space/alt-domain/admx-basealt и разместить их в каталоге \\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\PolicyDefinitions.
    • корректно установленные административные шаблоны будут отображены на машине Windows в оснастке Редактор управления групповыми политиками в разделе Конфигурация компьютераПолитикиАдминистративные шаблоныСистема ALT:
      Политики настройки систем ALT в консоли gpme.msc

52.2. Пример создания групповой политики

Для создания групповой политики на машине, введённой в домен, необходимо выполнить следующие шаги:
  1. Добавить доменные устройства (компьютеры/пользователи) в подразделение (OU) (инструмент ADMC или оснастка AD «Пользователи и компьютеры»);
  2. Создать политику и назначить её на OU (инструмент ADMC или оснастка AD «Управление групповой политикой»);
  3. Отредактировать параметры политики (инструмент GPUI или оснастка AD «Редактор управления групповыми политиками»).
В качестве примера, создадим политику, разрешающую запускать команду ping только суперпользователю (root).
Запустить ADMC, например, выполнив команду admc:
$ admc
В окне аутентификации Kerberos указать принципал (principal) пользователя и его пароль:
Запуск ADMC
Интерфейс ADMC:
Интерфейс ADMC
Добавление доменных устройств в группу членства GPO:
  1. Создать новое подразделение:
    • в контекстном меню домена выбрать пункт СоздатьПодразделение:
      ADMC. Создать новое подразделение
    • в открывшемся окне ввести название подразделения (например, OU) и нажать кнопку ОК:
      ADMC. Новое подразделение
  2. Переместить компьютеры и пользователей домена в созданное подразделение:
    • в контекстном меню пользователя/компьютера выбрать пункт Переместить…;
    • в открывшемся диалоговом окне Выбор контейнера – ADMC выбрать контейнер, в который следует переместить учетную запись пользователя.
ADMC. Компьютеры и пользователи в подразделении OU
Создание политики для подразделения:
  1. В контекстном меню подразделения (в папке Объекты групповой политики) выбрать пункт Создать политику и связать с этим подразделением:
    ADMC. Контекстное меню подразделения в объектах групповых политик
  2. В открывшемся окне ввести название политики и нажать кнопку ОК:
    ADMC. Создание объекта групповой политики
Редактирование настроек групповой политики:
  1. В контекстном меню политики выбрать пункт Изменить…:
    ADMC. Контекстное меню объекта групповой политики
  2. Откроется окно редактирования групповых политик (GPUI):
    Модуль редактирования настроек клиентской конфигурации (GPUI)
  3. Перейти в КомпьютерАдминистративные шаблоныСистема ALT. Здесь есть несколько разделов, соответствующих категориям control. Выбрать раздел Сетевые приложения, в правом окне редактора отобразится список политик:
    Раздел Сетевые приложения
  4. Щёлкнуть левой кнопкой мыши на политике Разрешения для /usr/bin/ping. Откроется диалоговое окно настройки политики. Выбрать параметр Включено, в выпадающем списке Кому разрешено выполнять выбрать пункт Только root и нажать кнопку ОК:
    GPUI. Диалоговое окно настройки политики
  5. После обновления политики на клиенте, выполнять команду ping сможет только администратор:
    $ ping localhost
    bash: ping: команда не найдена
    $ /usr/bin/ping localhost
    bash: /usr/bin/ping: Отказано в доступе
    # control ping
    restricted
    
Пример создания групповой политики на машине с ОС Windows:
  1. На машине с установленным RSAT открыть оснастку Управление групповыми политиками (gpmc.msc).
  2. Создать новый объект групповой политики (GPO) и связать его с подразделением (OU), в который входят машины или учетные записи пользователей.
  3. В контекстном меню GPO, выбрать пункт Изменить…. Откроется редактор GPO.
  4. Перейти в Конфигурация компьютераПолитикиАдминистративные шаблоныСистема ALT. Здесь есть несколько разделов, соответствующих категориям control. Выбрать раздел Сетевые приложения, в правом окне редактора отобразится список политик:
    Раздел Сетевые приложения
  5. Дважды щелкнуть левой кнопкой мыши на политике Разрешения для /usr/bin/ping. Откроется диалоговое окно настройки политики. Выбрать параметр Включить, в выпадающем списке Кому разрешено выполнять выбрать пункт Только root и нажать кнопку Применить:
    Раздел Сетевые приложения

Важно

Для диагностики механизмов применения групповых политик на клиенте можно выполнить команду:
# gpoa --loglevel 0
В выводе команды будут фигурировать полученные групповые объекты. В частности, соответствующий уникальный код (GUID) объекта.

Глава 53. Samba в режиме файлового сервера

Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части.

53.1. Настройка smb.conf

Примечание

После редактирования файла /etc/samba/smb.conf, следует запустить команду testparm для проверки файла на синтаксические ошибки:
# testparm /etc/samba/smb.conf
И, в случае отсутствия ошибок, перезапустить службы smb и nmb, чтобы изменения вступили в силу:
# systemctl restart smb
# systemctl restart nmb
Каждый раздел в файле конфигурации (кроме раздела [global]) описывает общий ресурс. Название раздела — это имя общего ресурса. Параметры в разделе определяют свойства общего ресурса.
Общий ресурс состоит из каталога, к которому предоставляется доступ, а также описания прав доступа, которые предоставляются пользователю.
Разделы — это либо общие файловые ресурсы, либо службы печати. Разделам может быть назначен гостевой доступ, в этом случае для доступа к ним не требуется пароль (для определения прав доступа используется специальная гостевая учетная запись). Для доступа к разделам, к которым запрещен гостевой доступ, потребуется пароль.

Примечание

Samba использует отдельную от системной базу данных пользователей. Для возможности доступа пользователя к папке (если запрещен гостевой доступ) необходимо внести его в базу данных Samba и установить пароль для доступа к общим ресурсам (он может совпадать с основным паролем пользователя). Следует учитывать, что в базу данных Samba можно добавлять только тех пользователей, которые уже есть в системе.
Добавить пользователя в базу данных Samba можно, выполнив команду (должен быть установлен пакет samba-common-client):
# smbpasswd -a <имя_пользователя>
В файле конфигурации есть три специальных раздела: [global], [homes] и [printers]:
Раздел [global]
Параметры в этом разделе применяются к серверу в целом или являются значениями по умолчанию для разделов, и могут быть переопределены в разделе.
Раздел [homes]
Используется для подключения домашних каталогов пользователей. При каждом обращении Samba сначала ищет имя запрошенного ресурса в списке общих ресурсов, и если имя не найдено проверяет наличие в конфигурации секции [homes]. Если такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей сервера Samba. Если имя найдено в базе данных пользователей, то Samba предоставляет в качестве общего ресурса домашний каталог этого пользователя. Аналогичный процесс происходит, если имя запрошенного ресурса — «homes», за исключением того, что имя общего ресурса меняется на имя запрашивающего пользователя.
Раздел [printers]
Если в файле конфигурации имеется раздел [printers], пользователи могут подключаться к любому принтеру, указанному в файле printcap локального хоста.

Примечание

В одноранговой сети (т.е. если Samba используется исключительно как файловый сервер, а не как контроллер домена) для возможности использования файлового ресурса [homes], необходимо добавить каждого локального пользователя в список пользователей Samba, например:
# smbpasswd -a user
New SMB password:
Retype new SMB password:
Added user user.

Примечание

Если в разделе [homes] указан гостевой доступ (guest ok = yes), все домашние каталоги будут видны всем клиентам без пароля. Если это действительно нужно (хотя маловероятно), разумно также указать доступ только для чтения (read only = yes).

Примечание

Флаг 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;
  • read list — список пользователей, которым будет предоставлен доступ только для чтения. Если пользователь находится в этом списке, ему не будет предоставлен доступ для записи, независимо от того, какой параметр установлен для параметра read only. Список может включать имена групп;
  • guest ok — если этот параметр имеет значение «yes», то для подключения к ресурсу не требуется пароль (по умолчанию: guest ok = no);
  • guest only — разрешить только гостевые соединения к общему ресурсу (по умолчанию: guest only = no);
  • printable — если этот параметр имеет значение «yes», то клиенты могут открывать, писать и ставить задания в очередь печати (по умолчанию: printable = no);
  • map to guest — определяет что делать с запросами, которые не удалось аутентифицировать («Never» — запросы с неправильными паролями будут отклонены; «Bad user» — запросы с неправильными паролями будут отклонены, если такое имя пользователя существует;) (по умолчанию: map to guest = Never).
Пример настройки /etc/samba/smb.conf для работы Samba в режиме файлового сервера с двумя открытыми для общего доступа ресурсами, домашними каталогами пользователей и принтером (закомментированные параметры действуют по умолчанию):
[global]
    workgroup = WORKGROUP
    server string = Samba Server Version %v
    security = user
    log file = /var/log/samba/log.%m
    max log size = 50
    guest ok = yes
    cups options = raw
    map to guest = Bad User
;   idmap config * : backend = tdb

[homes]
    comment = Home Directory for '%u'
    browseable = no
    writable = yes
    guest ok = no

[share]
    comment = Commonplace
    path = /srv/share
    read only = No

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
;   guest ok = no
;   writable = no
    printable = yes

# Каталог доступный только для чтения, за исключением пользователей
# входящих в группу "staff"
[public]
    comment = Public Stuff
    path = /home/samba
    public = yes
    writable = yes
    write list = +staff
;   browseable = yes

[Free]
    path = /mnt/win/Free
    read only = no
;   browseable = yes
    guest ok = yes
Просмотр ресурсов, доступных пользователю user:
# smbclient -L 192.168.0.157 -Uuser
Password for [WORKGROUP\user]:

	Sharename       Type      Comment
	---------       ----      -------
	share           Disk      Commonplace
	public          Disk      Public Stuff
	Free            Disk
	IPC$            IPC       IPC Service (Samba 4.21.9-alt1)
	user            Disk      Home Directory for 'user'
Обращение к домашней папке пользователя выполняется по имени пользователя (например, smb://192.168.0.157/user).

Примечание

Для ознакомления с прочими возможностями, читайте руководство по smb.conf. Для этого используйте команду man smb.conf.

53.2. Монтирование ресурса Samba через /etc/fstab

Создать файл /etc/samba/sambacreds (например, командой mcedit /etc/samba/sambacreds), с содержимым:
username=имя_пользователя
password=пароль
Для монтирования ресурса Samba в /etc/fstab необходимо прописать:
//server/public /mnt/server_public cifs users,credentials=/etc/samba/sambacreds 0 0
Для защиты информации, права на файл /etc/samba/sambacreds, надо установить так, чтобы файл был доступен только владельцу:
# chmod 600 /etc/samba/sambacreds
и принадлежать root:
# chown root: /etc/samba/sambacreds

Глава 54. SOGo

SOGo — сервер групповой работы, аналогичный Microsoft Exchange, с веб-интерфейсом и доступом по MAPI для Microsoft Outlook.
SOGo обеспечивает веб-интерфейс на основе AJAX и поддерживает различные нативные клиенты с помощью стандартных протоколов.
Возможности SOGo:
  • общие почтовые папки, календари и адресные книги;
  • веб-интерфейс, аналогичный Outlook Web Access;
  • поддержка протоколов CalDAV, CardDAV, GroupDAV, Microsoft ActiveSync, IMAP и SMTP;
  • доступ по MAPI для Microsoft Outlook, не требующий внешних модулей;
  • делегирование, уведомления, резервирование, поддержка категорий и почтовых фильтров;
  • поддержка нескольких почтовых ящиков в веб-интерфейсе;
  • Single sign-on с помощью CAS, WebAuth или Kerberos.

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

MAPI over HTTPS не поддерживается.

54.1. Установка

Для установки стабильной версии SOGo необходимо установить компонент sogo:
# alteratorctl components install sogo
или пакет task-sogo:
# apt-get install task-sogo
Драйвер к PostgreSQL будет установлен автоматически.

54.2. Подготовка среды

Подготовить к запуску и настроить службы PostgreSQL:
  • создать системные базы данных (пароль пользователя PostgreSQL необходимо запомнить):
    # /etc/init.d/postgresql initdb
    Введите новый пароль суперпользователя:
    Повторите его:
    
  • запустить службу:
    # systemctl start postgresql
    
  • создать пользователя sogo (пароль необходимо запомнить) и базу данных sogo (при запросе «Пароль» следует ввести пароль пользователя postgresql, созданный при создании системных баз данных):
    # su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt sogo'
    
    Введите пароль для новой роли:
    Повторите его:
    Пароль:
    
    # su - postgres -s /bin/sh -c 'createdb -O sogo sogo'
    Пароль:
    
    # systemctl restart postgresql
    
Настройка Альт Домен:
  • необходимо предварительно развернуть Альт Домен (см. Альт Домен );
  • создать в домене пользователя sogo с паролем Pa$$word (при запросе дважды ввести пароль):
    # samba-tool user create sogo
    # samba-tool user setexpiry --noexpiry sogo
    
Настройка SOGo (настраивается на домен test.alt):
  • заполнить файл конфигурации /etc/sogo/sogo.conf:
    {
      SOGoProfileURL = "postgresql://sogo:password@/sogo/sogo_user_profile";
      OCSFolderInfoURL = "postgresql://sogo:password@/sogo/sogo_folder_info";
      OCSSessionsFolderURL = "postgresql://sogo:password@/sogo/sogo_sessions_folder";
      OCSEMailAlarmsFolderURL = "postgresql://sogo:password@/sogo/sogo_alarms_folder";
      SOGoEnableEMailAlarms = YES;
      SOGoDraftsFolderName = Drafts;
      SOGoSentFolderName = Sent;
      SOGoTrashFolderName = Trash;
      SOGoIMAPServer = "imaps://localhost:993/?tlsVerifyMode=allowInsecureLocalhost";
      SOGoMailingMechanism = sendmail;
      SOGoForceExternalLoginWithEmail = NO;
      NGImap4ConnectionStringSeparator = "/";
      SOGoUserSources =  (
        {
            id = sambaLogin;
            displayName = "SambaLogin";
            canAuthenticate = YES;
            type = ldap;
            CNFieldName = cn;
            IDFieldName = cn;
            UIDFieldName = mail;
            hostname = "ldaps://127.0.0.1";
            baseDN = "CN=Users,DC=test,DC=alt";
            bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
            bindPassword = "Pa$$word";
            bindFields = (mail,sAMAccountName);
        },
        {
            id = sambaShared;
            displayName = "Shared Addressbook";
            canAuthenticate = NO;
            isAddressBook = YES;
            type = ldap;
            CNFieldName = cn;
            IDFieldName = mail;
            UIDFieldName = mail;
            hostname = "ldaps://127.0.0.1";
            baseDN = "CN=Users,DC=test,DC=alt";
            bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
            bindPassword = "Pa$$word";
            filter = "((NOT isCriticalSystemObject='TRUE') AND (mail='*') AND (NOT objectClass=contact))";
        },
        {
            id = sambaContacts;
            displayName = "Shared Contacts";
            canAuthenticate = NO;
            isAddressBook = YES;
            type = ldap;
            CNFieldName = cn;
            IDFieldName = mail;
            UIDFieldName = mail;
            hostname = "ldaps://127.0.0.1";
            baseDN = "CN=Users,DC=test,DC=alt";
            bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
            bindPassword = "Pa$$word";
            filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*')))
                     AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest))
                     OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))";
            mapping = {
                displayname = ("cn");
            };
        }
      );
      SOGoSieveScriptsEnabled = YES;
      SOGoLanguage = Russian;
      SOGoTimeZone = Europe/Moscow;
      SOGoFirstDayOfWeek = 1;
    }
    
    где password — пароль роли sogo, заданный при создании базы данных sogo;
  • включить службы по умолчанию и перезапустить их:
    # for service in samba postgresql memcached sogo httpd2; do systemctl enable $service; systemctl restart $service; done
    
Возможные ошибки будут записаны в файл журнала /var/log/sogo/sogo.log

Примечание

Корректность файла sogo.conf можно проверить, выполнив команду:
# plparse /etc/sogo/sogo.conf

54.3. Включение веб-интерфейса

Для включения веб-интерфейса необходимо выполнить команды:
# for mod in proxy proxy_http authn_core authn_file auth_basic authz_user env dav headers rewrite version setenvif; do a2enmod $mod; done 
# a2ensite SOGo
# systemctl restart httpd2 sogo
Теперь можно войти по адресу:
http://<адрес_сервера>/SOGo/
Форма входа в интерфейс SOGo

Примечание

Если при входе в веб-интерфейс возникает ошибка «Неправильный логин или пароль» и в логах /var/log/sogo/sogo.log есть ошибки вида:
Jul 06 16:14:51 sogod [12257]: [ERROR] <0x0x5578db070b40[LDAPSource]>
Could not bind to the LDAP server ldaps://127.0.0.1 (389) using the
bind DN: CN=sogo,CN=Users,DC=test,DC=alt
Следует в файл /etc/openldap/ldap.conf добавить опцию
TLS_REQCERT allow
и перезапустить службы samba и sogo:
# systemctl restart samba sogo

54.4. Настройка электронной почты

Для использования электронной почты в SOGo необходимо настроить аутентификацию в Active Directory для Postfix и Dovecot.
Использования электронной почты в SOGo
В примере используется следующая конфигурация:
  • имя домена: test.alt;
  • размещение почты: /var/mail/<имя_домена>/<имя_пользователя> (формат maildir);
  • доступ на чтение почты: IMAP (порт 993), SSL;
  • доступ на отправку почты: SMTP (порт 465), SSL/STARTTLS;
  • данные аутентификации: email с доменом (например, petrov@test.alt) или имя пользователя.

Примечание

У пользователей SambaDC должен быть указан атрибут mail. Указать атрибут mail можно, например, при создании учётной записи, используя опцию --mail-address:
# samba-tool user create petrov --mail-address='petrov@test.alt'

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

Доступ к серверу LDAP осуществляется по протоколу ldap без шифрования. На контроллере домена SambaDC необходимо отключить ldaps в /etc/samba/smb.conf в секции [global]:
ldap server require strong auth = no
и перезапустить samba:
# systemctl restart samba
Предварительно необходимо создать пользователя vmail (пароль Pa$$word) с не истекающей учётной записью:
# samba-tool user create -W Users vmail
# samba-tool user setexpiry vmail --noexpiry

54.4.1. Настройка Postfix

Установить пакет postfix-ldap:
# apt-get install postfix-ldap
В каталоге /etc/postfix изменить файлы для домена test.alt:
  • изменить содержимое файла main.cf:
    # Global Postfix configuration file.  This file lists only a small subset
    # of all parameters.  For the syntax, and for a complete parameter list,
    # see the postconf(5) manual page.  For a commented and more complete
    # version of this file see /etc/postfix/main.cf.dist
    mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
    inet_protocols = ipv4
    
    # Mappings
    virtual_mailbox_base = /var/mail
    virtual_mailbox_domains = test.alt
    virtual_mailbox_maps = ldap:/etc/postfix/ad_local_recipients.cf
    virtual_alias_maps = ldap:/etc/postfix/ad_mail_groups.cf
    virtual_transport = dovecot
    local_transport = virtual
    local_recipient_maps = $virtual_mailbox_maps
    
    # SSL/TLS
    smtpd_use_tls = yes
    smtpd_tls_security_level = encrypt
    #smtpd_tls_security_level = may
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = test.alt
    smtpd_sasl_path = private/auth
    smtpd_sasl_type = dovecot
    smtpd_sender_login_maps = ldap:/etc/postfix/ad_sender_login.cf
    smtpd_tls_auth_only = yes
    smtpd_tls_cert_file = /var/lib/ssl/certs/dovecot.cert
    smtpd_tls_key_file = /var/lib/ssl/private/dovecot.key
    smtpd_tls_CAfile = /var/lib/ssl/certs/dovecot.pem
    
    smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, permit_sasl_authenticated, reject
    smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
    default_destination_recipient_limit = 1
    
  • файл /etc/postfix/mydestination должен быть пустым;
  • в файл master.cf необходимо добавить строки:
    dovecot   unix  -       n       n       -       -       pipe
      flags=DRhu user=mail:mail argv=/usr/libexec/dovecot/deliver -d ${recipient}
    smtps     inet  n       -       n       -       -       smtpd
      -o smtpd_tls_wrappermode=yes
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    
  • создать файл ad_local_recipients.cf:
    version = 3
    server_host = test.alt:389
    search_base = dc=test,dc=alt
    scope = sub
    query_filter = (&(|(mail=%s)(otherMailbox=%u@%d))(sAMAccountType=805306368))
    result_filter = %s
    result_attribute = mail
    special_result_attribute = member
    
    bind = yes
    bind_dn = cn=vmail,cn=users,dc=test,dc=alt
    bind_pw = Pa$$word
    
  • создать файл ad_mail_groups.cf:
    version = 3
    server_host = test.alt:389
    search_base = dc=test,dc=alt
    timeout = 3
    scope = sub
    query_filter = (&(mail=%s)(sAMAccountType=268435456))
    result_filter = %s
    leaf_result_attribute = mail
    special_result_attribute = member
    
    bind = yes
    bind_dn = cn=vmail,cn=users,dc=test,dc=alt
    bind_pw = Pa$$word
    
  • создать файл ad_sender_login.cf:
    version = 3
    server_host = test.alt:389
    search_base = dc=test,dc=alt
    scope = sub
    query_filter = (&(objectClass=user)(|(sAMAccountName=%s)(mail=%s)))
    result_attribute = mail
    
    bind = yes
    bind_dn = cn=vmail,cn=users,dc=test,dc=alt
    bind_pw = Pa$$word
    
  • перезапустить службу postfix:
    # systemctl restart postfix
    
Проверка конфигурации Postfix (в выводе не должно быть никаких сообщений):
# postconf >/dev/null
Проверка пользователя почты petrov:
# postmap -q petrov@test.alt ldap:/etc/postfix/ad_local_recipients.cf
petrov@test.alt
Проверка входа:
# postmap -q petrov@test.alt ldap:/etc/postfix/ad_sender_login.cf
petrov@test.alt
Проверка общего адреса e-mail:
# samba-tool group add --mail-address=sales@test.alt Sales
Added group Sales
# samba-tool group addmembers Sales ivanov,petrov
Added members to group Sales
# postmap -q sales@test.alt ldap:/etc/postfix/ad_mail_groups.cf
sales@test.alt,ivanov@test.alt,petrov@test.alt

54.4.2. Настройка Dovecot

Установить Dovecot:
# apt-get install dovecot
Изменить файлы для домена test.alt:
  • создать файл /etc/dovecot/dovecot-ldap.conf.ext:
    hosts            = test.alt:3268
    ldap_version     = 3
    auth_bind        = yes
    dn               = cn=vmail,cn=Users,dc=test,dc=alt
    dnpass           = Pa$$word
    base             = cn=Users,dc=test,dc=alt
    scope            = subtree
    deref            = never
    
    user_filter = (&(objectClass=user)(|(mail=%Lu)(sAMAccountName=%Lu)))
    user_attrs  = =uid=8,gid=12,mail=user
    pass_filter = (&(objectClass=user)(|(mail=%Lu)(sAMAccountName=%Lu)))
    pass_attrs = mail=user
    
  • привести файл /etc/dovecot/conf.d/10-auth.conf к виду:
    auth_mechanisms = plain
    !include auth-ldap.conf.ext
    
  • изменить файл /etc/dovecot/conf.d/10-mail.conf:
    mail_location = maildir:/var/mail/%d/%n:UTF-8:INBOX=/var/mail/%d/%n/Inbox
    mail_uid = mail
    mail_gid = mail
    first_valid_uid = 5
    first_valid_gid = 5
    
  • изменить файл /etc/dovecot/conf.d/10-master.conf:
    service imap-login {
      inet_listener imap {
        port = 0
      }
      inet_listener imaps {
      }
    }
    service pop3-login {
      inet_listener pop3 {
        port = 0
      }
      inet_listener pop3s {
        port = 0
      }
    }
    service lmtp {
      unix_listener lmtp {
      }
    }
    service imap {
    }
    service pop3 {
    }
    service auth {
      unix_listener auth-userdb {
      }
      unix_listener /var/spool/postfix/private/auth {
        mode = 0600
        user = postfix
        group = postfix
      }
    }
    service auth-worker {
    }
    service dict {
      unix_listener dict {
      }
    }
    
  • изменить файл /etc/dovecot/conf.d/15-lda.conf:
    protocol lda {
      hostname = test.alt
      postmaster_address = administrator@test.alt
    }
    
  • изменить файл /etc/dovecot/conf.d/15-mailboxes.conf:
    namespace inbox {
      inbox = yes
      mailbox Drafts {
        auto = subscribe
        special_use = \Drafts
      }
      mailbox Junk {
        auto = subscribe
        special_use = \Junk
      }
      mailbox Trash {
        auto = subscribe
        special_use = \Trash
      }
      mailbox Sent {
        auto = subscribe
        special_use = \Sent
      }
      mailbox "Sent Messages" {
        special_use = \Sent
      }
    }
    
  • создать файл /etc/dovecot/conf.d/10-stats.conf:
    service stats {
        unix_listener stats-reader {
            user = mail
            group = mail
            mode = 0660
        }
    
        unix_listener stats-writer {
            user = mail
            group = mail
            mode = 0660
        }
    }
    
  • перезапустить службу dovecot:
    # systemctl restart dovecot
    
Проверка конфигурации Dovecot (в выводе не должно быть никаких сообщений):
# doveconf >/dev/null

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

Так как конфигурационные файлы содержат пароль пользователя LDAP, их необходимо сделать недоступным для чтения прочим пользователям:
# chown dovecot:root /etc/dovecot/dovecot-ldap.conf.ext
# chmod 0640 /etc/dovecot/dovecot-ldap.conf.ext
# chown root:postfix /etc/postfix/ad_local_recipients.cf /etc/postfix/ad_mail_groups.cf /etc/postfix/ad_sender_login.cf
# chmod 0640 /etc/postfix/ad_local_recipients.cf /etc/postfix/ad_mail_groups.cf /etc/postfix/ad_sender_login.cf
Перезапустить службы:
# systemctl restart dovecot postfix

54.4.4. Проверка конфигурации

Проверка SMTP:
# date | mail -s test petrov@test.alt
# mailq
Mail queue is empty
Проверка IMAP (выход по Ctrl+D):
# openssl s_client -crlf -connect dc1.test.alt:993
...
tag login petrov@test.alt Pa$$word
tag OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE
IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT
MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS
LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES
WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE] Logged in
где dc1.test.alt — имя узла сервера SOGo.

54.5. Настройка автоответчика, переадресации и фильтрации

В данном разделе рассмотрен процесс конфигурирования Dovecot с плагином Sieve, для возможности фильтрации и переадресации писем.
Настройка Dovecot:
  • в файле /etc/dovecot/conf.d/dovecot.conf указать используемые протоколы:
    protocols = imap lmtp submission sieve
    
  • в файл /etc/dovecot/conf.d/10-mail.conf добавить опцию mail_home с указанием пути до каталогов с почтой:
    mail_location = maildir:/var/mail/%d/%n:UTF-8:INBOX=/var/mail/%d/%n/Inbox
    mail_uid = mail
    mail_gid = mail
    first_valid_uid = 5
    first_valid_gid = 5
    mail_home = /var/mail/%d/%n
    
    Переменные %d и %n указывают на имя домена и имя учетной записи.
  • в файле /etc/dovecot/conf.d/15-lda.conf в раздел protocol lda добавить плагин sieve:
    mail_plugins = $mail_plugins sieve
    
  • в файле /etc/dovecot/conf.d/20-lmtp.conf в разделе protocol lmtp также указать плагин sieve:
    mail_plugins = $mail_plugins sieve
    
  • в файле /etc/dovecot/conf.d/20-managesieve.conf раскомментировать строку:
    protocols = $protocols sieve
    
  • в файлe /etc/dovecot/conf.d/90-sieve.conf закомментировать строку sieve = file:~/sieve;active=~/.dovecot.sieve и добавить новое её значение:
    #sieve = file:~/sieve;active=~/.dovecot.sieve
    sieve = file:/var/mail/%Ld/%n/sieve;active=/var/mail/%Ld/%n/active.sieve
    
    В этом же файле раскомментировать опцию sieve_extensions и привести её к виду:
    sieve_extensions = +notify +imapflags +vacation-seconds +vacation +date +relational
    
  • в файле /etc/dovecot/conf.d/10-auth.conf подключить master-users:
    !include auth-master.conf.ext
    
  • в файле /etc/dovecot/master-users создать запись:
    my_master_user@non-exist.com:{PLAIN}password::::::
    
    Должно быть обязательно указано несуществующее имя домена. В реальных условиях необходимо использовать хэш пароля (например, doveadm pw -s SSHA512).
  • в файле /etc/sogo/sieve.creds указать эти данные в виде:
    my_master_user@non-exist.com:password
    
  • в начало файла /etc/cron.d/sogo дописать:
    MAILTO=""
    
    и раскомментировать строку:
    */5 * * * *    _sogo    /usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds
    
В SOGo необходимо активировать окно настроек почтовых фильтров (параметр SOGoSieveScriptsEnabled), окно настроек сообщений об отпуске (параметр SOGoVacationEnabled), а также окно настроек адресов электронной почты для пересылки (параметр SOGoForwardEnabled). Для этого в файл конфигурации /etc/sogo/sogo.conf добавить строки:
SOGoSieveScriptsEnabled = YES;
SOGoVacationEnabled = YES;
SOGoForwardEnabled = YES;
SOGoSieveFolderEncoding = UTF-8;
Перезапустить службы:
# systemctl restart postfix dovecot sogo
В результате в веб-интерфейсе SOGo в настройках почты появятся три дополнительные вкладки:
SOGo. Настройки почты
На вкладке Фильтры можно создавать фильтры и устанавливать критерии, по которым они должны работать:
SOGo. Настройка фильтров
На вкладке Отпуск можно настроить автоответ на время отпуска:
SOGo. Настройка автоответа на период отпуска
На вкладке Пересылка настраивается переадресация электронной почты:
SOGo. Настройка переадресации электронной почты

54.6. Настройка общих папок в SOGo

Настройка общих папок (Shared Folders) в SOGo позволяет нескольким пользователям просматривать и/или управлять определёнными почтовыми папками (например, Входящие, Шаблоны или пользовательские папки) через веб-интерфейс или почтовые клиенты (например, Thunderbird).
Настройка Dovecot:
  • файл /etc/dovecot/conf.d/10-master.conf:
    service auth {
       unix_listener auth-userdb {
        #mode = 0666
        user = mail
        group = mail
      }
      unix_listener /var/spool/postfix/private/auth {
        mode = 0600
        user = postfix
        group = postfix
      }
    }
    
  • файл /etc/dovecot/conf.d/10-mail.conf:
    mail_home=/var/mail/%d/%n
    mail_location =  maildir:/var/mail/%d/%n:UTF-8:INBOX=/var/mail/%d/%n/Inbox
    mail_debug=yes
    
    namespace inbox {
      type = private
      separator = /
      prefix =
      inbox = yes
    }
    namespace {
        type = shared
        separator = /
        prefix = shared/%%u/
        location = maildir:%%h/:INDEX=~/shared/%%u:INDEXPVT=~/shared/%%u
        subscriptions = yes
        list = children
    
    
    }
    mail_uid = mail
    mail_gid = mail
    first_valid_uid = 5
    first_valid_gid = 5
    auth_socket_path = /var/run/dovecot/auth-userdb
    mail_plugins = acl
    protocol !indexer-worker {
    }
    mbox_write_locks = fcntl
    
  • файл /etc/dovecot/conf.d/20-imap.conf:
    protocol imap {
        mail_plugins = $mail_plugins imap_acl acl
    }
    
  • в файле /etc/dovecot/conf.d/15-lda.conf в раздел protocol lda добавить плагин acl:
    protocol lda {
      mail_plugins = $mail_plugins sieve acl
      hostname = test.alt
      postmaster_address = administrator@test.alt
    }
    
  • в файле /etc/dovecot/conf.d/20-lmtp.conf в разделе protocol lmtp также указать плагин acl:
    protocol lmtp {
      mail_plugins = $mail_plugins sieve acl
    }
    
  • указать настройки acl в файле /etc/dovecot/conf.d/90-plugin.conf:
    plugin {
      acl = vfile
      acl_shared_dict = file:/var/mail/test.alt/shared-mailboxes.db
    }
    
Перезапустить службы:
# systemctl restart postfix dovecot sogo
Для создания общей папки в веб-интерфейсе SOGo необходимо
  1. В разделе Почта создать папку.
  2. Раскрыть меню папки (нажать на три точки справа от названия папки) и выбрать пункт Совместный доступ…:
    SOGo. Меню папки
  3. В открывшемся окне выбрать пользователей, назначить права и нажать кнопку Сохранить:
    SOGo. Настройка общего доступа
  4. Папка появится у выбранных пользователей в списке Другие пользователи:
    SOGo. Общая папка

Глава 55. FreeIPA

FreeIPA — это комплексное решение по управлению безопасностью Linux-систем, 389 Directory Server, MIT Kerberos, NTP, DNS, Dogtag, состоит из веб-интерфейса и интерфейса командной строки.
FreeIPA является интегрированной системой проверки подлинности и авторизации в сетевой среде Linux, FreeIPA сервер обеспечивает централизованную проверку подлинности, авторизацию и контроль за аккаунтами пользователей сохраняя сведения о пользователе, группах, узлах и других объектах необходимых для обеспечения сетевой безопасности.

Примечание

В данном разделе приведена краткая инструкция разворачивания FreeIPA. Подробную инструкцию можно найти по ссылке Доменная инфраструктура на базе FreeIPA.

55.1. Установка сервера FreeIPA

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

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.
Если настройка FreeIPA выполняется не сразу после установки ОС, во избежание конфликтов с разворачиваемым tomcat необходимо отключить ahttpd, работающий на порту 8080, а также отключить HTTPS в Apache2:
# systemctl stop ahttpd
# a2dissite 000-default_https
# a2disport https
# systemctl condreload httpd2
Установить необходимые пакеты:
# apt-get install freeipa-server freeipa-server-dns
или через компоненты:
# alteratorctl components install freeipa-server
Команда установки сервера FreeIPA, со встроенным DNS-сервером, автоматическим обнаружением обратных зон DNS и с настройкой сервера пересылок, в пакетном режиме:
# ipa-server-install -U --hostname=$(hostname) \
-r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 \
--setup-dns --forwarder 8.8.8.8 --auto-reverse
Для пакетной установки необходимо указать следующие параметры:
  • -r REALM_NAME — имя области Kerberos для сервера FreeIPA;
  • -n DOMAIN_NAME — доменное имя;
  • -p DM_PASSWORD — пароль, который будет использоваться сервером каталогов для менеджера каталогов (DM);
  • -a ADMIN_PASSWORD — пароль пользователя admin, администратора FreeIPA;
  • -U — позволить процессу установки выбрать параметры по умолчанию, не запрашивая у пользователя информацию;
  • --hostname=HOST_NAME — полное DNS-имя этого сервера.
Чтобы установить сервер со встроенным DNS, должны также быть добавлены следующие параметры:
  • --setup-dns — создать зону DNS, если она еще не существует, и настроить DNS-сервер;
  • --forwarder или --no-forwarders — в зависимости от того, нужно ли настроить серверы пересылки DNS или нет;
  • --auto-reverse или --no-reverse — в зависимости от того, нужно ли настроить автоматическое обнаружение обратных зон DNS, которые должны быть созданы в FreeIPA DNS, или отключить автоматическое определение обратных зон.
Для запуска интерактивной установки следует выполнить команду:
# ipa-server-install
На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND, следует ответить утвердительно:
Do you want to configure integrated DNS (BIND)? [no]: yes
Остальные вопросы можно выбрать по умолчанию (просто нажать Enter). При установке также потребуется ввести пароль администратора системы и пароль администратора каталогов (пароли должны быть не менее 8 символов).
Перед началом конфигуририрования система выведет информацию о конфигурации и попросит ее подтвердить:
The IPA Master Server will be configured with:
Hostname: ipa.example.test
IP address(es): 192.168.0.113
Domain name: example.test
Realm name: EXAMPLE.TEST
The CA will be configured with:
Subject DN: CN=Certificate Authority,O=EXAMPLE.TEST
Subject base: O=EXAMPLE.TEST
Chaining: self-signed
BIND DNS server will be configured to serve IPA domain with:
Forwarders: 8.8.8.8
Forward policy: only
Reverse zone(s): 0.168.192.in-addr.arpa.
Continue to configure the system with these values? [no]: yes
Далее начнётся процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами.
Для возможности управлять FreeIPA сервером из командной строки необходимо получить билет Kerberos:
# kinit admin
Добавить в DNS запись о сервере времени:
# ipa dnsrecord-add example.test _ntp._udp \
--srv-priority=0 --srv-weight=100 --srv-port=123 \
--srv-target=ipa.example.test
Проверить работу NTP-сервера можно командой:
# ntpdate -q localhost
server 127.0.0.1, stratum 4, offset -0.000082, delay 0.02570
24 Mar 10:11:57 ntpdate[25874]: adjust time server 127.0.0.1 offset -0.000082 sec
Проверить наличие прямой и обратной зон можно, выполнив команды:
# ipa dnszone-show example.test
  Имя зоны: example.test.
  Активная зона: True
  Полномочный сервер имён: ipa.example.test.
…

# ipa dnszone-show 0.168.192.in-addr.arpa.
  Имя зоны: 0.168.192.in-addr.arpa.
  Активная зона: True
  Полномочный сервер имён: ipa.example.test.
…
Веб-интерфейс доступен по адресу https://ipa.example.test/ipa/ui/.

Примечание

В случае сбоя установки сервера FreeIPA некоторые файлы конфигурации могут быть уже сконфигурированы. В этом случае дополнительные попытки установить сервер FreeIPA завершатся неудачно. Чтобы решить эту проблему, перед повторной попыткой запуска процесса установки, следует удалить частичную конфигурацию сервера FreeIPA:
# ipa-server-install --uninstall
Если ошибки при установке сервера FreeIPA остаются, следует переустановить ОС. Одним из требований для установки сервера FreeIPA является чистая система без каких-либо настроек.

55.2. Добавление новых пользователей домена

Для добавления новых пользователей можно воспользоваться веб-интерфейсом FreeIPA. Для этого необходимо открыть в веб-браузере адрес https://ipa.example.test и ввести данные администратора для входа в систему.
Веб-интерфейс FreeIPA
После успешной авторизации можно создать нового пользователя домена. Для этого на странице ИдентификацияПользователиАктивные пользователи необходимо нажать кнопку Добавить:
Окно Пользователи домена
В открывшемся окне необходимо ввести данные пользователя и нажать кнопку Добавить:
Окно добавления нового пользователя домена
Созданный пользователь появится в списке пользователей:
Список пользователей домена

55.3. Установка FreeIPA клиента и подключение к серверу

55.3.1. Установка FreeIPA клиента

Установить необходимые пакеты:
# apt-get install freeipa-client libsss_sudo krb5-kinit bind-utils libbind zip task-auth-freeipa 
Клиентские компьютеры должны быть настроены на использование DNS-сервера, который был сконфигурирован на сервере FreeIPA во время его установки. При получении IP-адреса по DHCP данные о сервере DNS также должны быть получены от сервера DHCP. Ниже приведен пример настройки сетевого интерфейса со статическим IP-адресом.
В сетевых настройках необходимо указать использовать сервер FreeIPA для разрешения имен. Эти настройки можно выполнить как в графическом интерфейсе, так и в консоли:
  • В Центре управления системой в разделе СетьEthernet интерфейсы задать имя компьютера, IP-адрес FreeIPA сервера и в поле Домены поиска — домен для поиска:
    Настройка на использование DNS-сервера FreeIPA
  • В консоли:
    • задать имя компьютера:
      # hostnamectl set-hostname comp01.example.test
      
    • добавить DNS сервер, для этого необходимо создать файл /etc/net/ifaces/eth0/resolv.conf со следующим содержимым:
      nameserver 192.168.0.113
      search example.test
      
      где 192.168.0.113 — IP-адрес FreeIPA сервера, example.test — домен.
    • обновить DNS адреса:
      # resolvconf -u
      

Примечание

После изменения имени компьютера могут перестать запускаться приложения. Для решения этой проблемы необходимо перезагрузить систему.
В результате выполненных действий в файле /etc/resolv.conf должны появиться строки:
search example.test
nameserver 192.168.0.113

55.3.2. Подключение к серверу в ЦУС

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

55.3.3. Подключение к серверу в консоли

Запустить скрипт настройки клиента в пакетном режиме:
# ipa-client-install -U -p admin -w 12345678
или интерактивно:
# ipa-client-install
Если все настроено, верно, скрипт должен выдать такое сообщение:
'''Discovery was successful!'''
Client hostname: comp01.example.test
Realm: EXAMPLE.TEST
DNS Domain: example.test
IPA Server: ipa.example.test
BaseDN: dc=example,dc=test
Continue to configure the system with these values? [no]:
Необходимо ответить yes, ввести имя пользователя, имеющего право вводить машины в домен, и его пароль.

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

Если при входе в домен возникает такая ошибка:
Hostname (comp01.example.test) does not have A/AAAA record.
Failed to update DNS records.
Необходимо проверить IP-адрес доменного DNS сервера в файле /etc/resolv.conf.
В случае возникновения ошибки, необходимо перед повторной установкой запустить процедуру удаления:
# ipa-client-install -U --uninstall
Для работы sudo-политик для доменных пользователей на клиентской машине необходимо разрешить доступ к sudo:
# control sudo public

55.3.4. Вход пользователя

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

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

Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd:
# systemctl stop sssd
# rm -f /var/lib/sss/db/*
# rm -f /var/lib/sss/mc/*
# systemctl start sssd

55.3.4.1. Отключение списка пользователей

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

Примечание

Для отключения отображения списка пользователей можно также воспользоваться следующим решением:
  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
    

55.4. Удаление клиента FreeIPA

При удалении, клиент удаляется из домена FreeIPA вместе с конфигурацией системных служб FreeIPA.
Для удаления клиента FreeIPA необходимо:
  1. На клиенте ввести команду:
    # ipa-client-install --uninstall
    …
    Client uninstall complete.
    The original nsswitch.conf configuration has been restored.
    You may need to restart services or reboot the machine.
    Do you want to reboot the machine? [no]: yes
    The ipa-client-install command was successful
    
  2. На клиенте удалить, если они есть, старые принципалы Kerberos (кроме /etc/krb5.keytab):
    # ipa-rmkeytab -k /path/to/keytab -r EXAMPLE.TEST
    
  3. На сервере FreeIPA удалить все записи DNS для клиентского узла:
    # ipa dnsrecord-del
    Имя записи: comp01
    Имя зоны: example.test
    Возможность удаления определённой записи не предусмотрена.
    Удалить все? Yes/No (default No): yes
    -----------------------
    Удалена запись "comp01"
    -----------------------
    
  4. На сервере FreeIPA удалить запись узла с сервера LDAP FreeIPA (при этом будут удалены все службы и отозваны все сертификаты, выданные для этого узла):
    # ipa host-del comp01.example.test
    ---------------------------------
    Удалён узел "comp01.example.test"
    ---------------------------------
    

55.5. Настройка репликации

Для установки реплики используется утилита ipa-replica-install. Реплики необходимо устанавливать по одной. Установка нескольких реплик одновременно не поддерживается.
Новую реплику можно установить:
  • на существующем клиенте FreeIPA путем преобразования клиента в реплику;
  • на машине, которая еще не зарегистрирована в домене FreeIPA.
В обеих этих ситуациях можно настроить реплику, добавив нужные параметры в команду ipa-replica-install.
Перед разворачиванием реплики необходимо убедиться, что при настройк DNS в процессе инициализации FreeIPA была создана обратная зона DNS (Сетевые службыDNSЗоны DNS) и в обратной зоне создана реверсивная запись для основного сервера 192.168.0.113.

Примечание

Если реплика находится в другой IP-сети, необходимо вручную добавить запись для обратной зоны реплики на сервере FreeIPA.
В примере для настройки репликации используется узел: replica.example.test (192.168.0.145).

Примечание

Перед настройкой репликации необходимо настроить систему на использование DNS-сервера, который был сконфигурирован на сервере FreeIPA во время его установки (см. пример настройки в разделе Установка сервера FreeIPA).
Настройка на использование DNS-сервера FreeIPA
При установке реплики в системе, которая еще не зарегистрирована в домене FreeIPA, утилита ipa-replica-install сначала регистрирует систему в качестве клиента, а затем устанавливает компоненты реплики. В примере, описанном ниже, для авторизации регистрации используется случайный пароль, действительный только для одной регистрации этого клиента.
Установка реплики с использованием случайного пароля:
  1. На сервере FreeIPA получить билет Kerberos:
    $ kinit admin
    
  2. На сервере FreeIPA добавить внешнюю систему в качестве узла FreeIPA:
    $ ipa host-add replica.example.test --random --ip-address=192.168.0.145
    ----------------------------------
    Добавлен узел "replica.example.test"
    ----------------------------------
      Имя узла: replica.example.test
      Случайный пароль: 2AaT0Ix8itDsYugdDGoRtBt
      Пароль: True
      Таблица ключей: False
      Managed by: replica.example.test
    
  3. На сервере FreeIPA добавить систему replica.example.test в группу узлов ipaservers:
    $ ipa hostgroup-add-member ipaservers --hosts replica.example.test
      Группа узлов: ipaservers
      Описание: IPA server hosts
      Узлы-участники: ipa.example.test, replica.example.test
    -----------------------------------
    Количество добавленных участников 1
    -----------------------------------
    
  4. На машине, где будет установлена реплика, установить необходимые пакеты:
    # apt-get install freeipa-server freeipa-server-dns
    
  5. На машине, где будет установлена реплика, запустить утилиту ipa-replica-install, указав сгенерированный пароль в параметре --password (т.к. пароль часто содержит специальные символы, следует заключить его в одинарные кавычки):
    # ipa-replica-install --password='2AaT0Ix8itDsYugdDGoRtBt' \
    --setup-ca --setup-dns --forwarder 192.168.0.113 --forwarder 8.8.8.8
    
    Configuring client side components
    This program will set up IPA client.
    Version 4.12.3
    
    Discovery was successful!
    Client hostname: replica.example.test
    Realm: EXAMPLE.TEST
    DNS Domain: example.test
    IPA Server: ipa.example.test
    BaseDN: dc=example,dc=test
    …
    The ipa-client-install command was successful
    …
    The ipa-replica-install command was successful
    
После создания реплики можно проверить, реплицирует ли реплика данные должным образом:
  1. Создать пользователя на новой реплике:
    $ kinit admin
    $ ipa user-add test_user
    
  2. Убедиться, что пользователь виден на другой реплике:
    $ kinit admin
    $ ipa user-show test_user
    
После настройки и репликации контроллеров можно посмотреть топологию в веб-интерфейсе FreeIPA (IPA-серверТопологияTopology Graph):
Топология FreeIPA

Глава 56. Система мониторинга Zabbix

Zabbix — система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.
Для управления системой мониторинга и чтения данных используется веб-интерфейс.
Установить Zabbix-сервер:
# alteratorctl components install zabbix-server
Будут также установлены веб-сервер Apache и PHP8.4.

56.1. Установка сервера PostgreSQL

Перед установкой Zabbix должен быть установлен и запущен сервер PostgreSQL, с созданным пользователем zabbix и созданной базой zabbix.
Установить PostgreSQL:
# alteratorctl components install postgresql17
Подготовить к запуску и настроить службы PostgreSQL, для этого необходимо выполнить следующие действия:
  • создать системные базы данных (потребуется также создать пароль суперпользователя PostgreSQL):
    # /etc/init.d/postgresql initdb
    …
    Введите новый пароль суперпользователя:
    Повторите его:
    …
    
  • включить по умолчанию и запустить службу:
    # systemctl enable --now postgresql
    
  • создать пользователя zabbix и базу данных zabbix (под правами root):
    # su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt zabbix'
    Введите пароль для новой роли:
    Повторите его:
    Пароль:
    
    # su - postgres -s /bin/sh -c 'createdb -O zabbix zabbix'
    Пароль:
    
    # systemctl restart postgresql
    
  • добавить в базу данные для веб-интерфейса (последовательность команд важна, в разных версиях Zabbix путь будет отличаться, версия помечена звёздочкой):
    # su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/schema.sql zabbix'
    Пароль пользователя zabbix:
    
    # su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/images.sql zabbix'
    Пароль пользователя zabbix:
    
    # su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/data.sql zabbix'
    Пароль пользователя zabbix:
    

56.2. Настройка PHP

Примечание

Начиная с версии php8.0, пакеты модулей именуются следующим образом:
php<мажорная>.<минорная версии>-<имя модуля>
Из репозитория можно установить и эксплуатировать в одной системе одновременно разные версии php. В данном руководстве в качестве примера используется php8.4.
Изменить некоторые опции php в файле /etc/php/8.4/apache2-mod_php/php.ini:
memory_limit = 256M
post_max_size = 32M
max_execution_time = 600
max_input_time = 600
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1

56.3. Настройка и запуск Zabbix-сервера

Внести изменения в конфигурационный файл /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Пароль от базы
Добавить Zabbix-сервер в автозапуск и запустить его:
# systemctl enable --now zabbix_pgsql

56.4. Установка веб-интерфейса Zabbix

Включить модуль Zabbix в Apache:
# ln -s /etc/httpd2/conf/addon.d/A.zabbix.conf /etc/httpd2/conf/extra-enabled/
Добавить в автозапуск и запустить Apache:
# systemctl enable --now httpd2
Изменить права доступа к каталогу конфигурации веб-интерфейса, чтобы веб-установщик мог записать конфигурационный файл:
# chown apache2:apache2 /var/www/webapps/zabbix/ui/conf
В браузере перейти на страницу установки Zabbix:
http://<ip-сервера>/zabbix
При первом посещении страницы запустится мастер, который шаг за шагом проверит требования к веб-серверу и интерпретатору PHP и сконфигурирует подключение к базе данных.
На первом шаге можно выбрать язык установки Zabbix.
Страница установки Zabbix-сервера

Примечание

Если при входе на страницу http://<ip-сервера>/zabbix появляется ошибка: доступ запрещен, следует в файле /etc/httpd2/conf/sites-available/default.conf в секцию <Directory> добавить запись:
Require all granted
и перезапустить Apache:
# systemctl restart httpd2
Для начала установки необходимо нажать кнопку Далее, что осуществит переход на страницу проверки предварительных условий.
Zabbix. Страница проверки предварительных условий
Необходимо убедиться, что все требования выполнены. При необходимости следует установить недостающие PHP-модули и перезапустить Apache.
На следующей странице необходимо указать параметры подключения к базе данных (они должны совпадать с настройками в /etc/zabbix/zabbix_server.conf). По умолчанию в качестве Database schema необходимо указать public.
Zabbix. Параметры подключения к базе данных

Примечание

Если выбрана опция TLS шифрование базы данных, то в форме появятся дополнительные поля для настройки TLS-соединения с базой данных.
Далее необходимо задать имя Zabbix-сервера и выбрать параметры веб-интерфейса:
Параметры веб-интерфейса Zabbix-сервера
На следующей странице будут показаны итоговые параметры конфигурации:
Zabbix. Параметры конфигурации
Завершение установки:
Zabbix. Завершение установки
После завершения установки на экране будет отображаться форма входа в интерфейс управления системой мониторинга. Учётные данные по умолчанию:
Логин: Admin
Пароль: zabbix
Zabbix. Форма входа в интерфейс управления системой мониторинга
Войдя в систему, нужно сменить пароль пользователя, завести других пользователей и можно начать настраивать Zabbix.
Zabbix. Интерфейс управления системой мониторинга

Примечание

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

56.5. Установка клиента Zabbix

Установить компонент zabbix-agent:
# alteratorctl components install zabbix-agent
или пакет zabbix-agent:
# apt-get install zabbix-agent
Если Zabbix-агент устанавливается не на сервер мониторинга, в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно задать следующие параметры:
Server=<IP-сервера>
ServerActive=<IP-сервера>
Hostname=comp01.example.test
Hostname — имя узла мониторинга, которое будет отображаться в Zabbix.

Примечание

Если параметр Hostname пуст или закомментирован, то узел будет зарегистрирован под системным именем.
Добавить Zabbix-агент в автозапуск и запустить его:
# systemctl enable --now zabbix_agentd.service

Примечание

Для настройки Zabbix-агента можно воспользоваться модулем Агент наблюдения.

56.6. Добавление нового хоста на Zabbix-сервер

Каждый хост должен быть зарегистрирован в Zabbix.
Информация о настроенных узлах сети в Zabbix доступна в разделе Сбор данныхУзлы сети.
Для добавления нового узла сети следует нажать кнопку Создать узел сети:
Zabbix. Создание нового узла сети
В открывшемся окне необходимо заполнить поля Имя узла сети и IP адрес согласно данным добавляемого хоста, выбрать шаблон Linux by Zabbix agent, добавить хост в определенную группу (выбрав одну из них из списка, либо создав новую группу) и нажать кнопку Добавить:
Zabbix. Данные добавляемого хоста

Примечание

В поле Имя узла сети ставится значение, которое указано в настройках агента (/etc/zabbix/zabbix_agentd.conf) в поле Hostname.

Примечание

Все права в Zabbix назначаются на группы узлов, а не на отдельные узлы. Поэтому каждый узел должен принадлежать хотя бы одной группе.
Получение первых данных может занять до 60 секунд.
Для того чтобы просмотреть собранные данные, необходимо перейти в МониторингПоследние данные, выбрать в фильтре нужный узел и нажать кнопку Применить:
Zabbix. Собранные данные

56.7. Авторегистрация узлов

В Zabbix существует механизм, который позволяет Zabbix-серверу начинать мониторинг нового оборудования автоматически, если на этом оборудовании имеется установленный Zabbix-агент. Такой подход позволяет добавлять новые узлы сети на мониторинг без какой-либо настройки Zabbix-сервера вручную по каждому отдельному узлу сети.
Для настройки авторегистрации необходимо перейти в ОповещенияДействияДействия авторегистрации и нажать кнопку Создать действие:
Zabbix. Авторегистрация узлов
На вкладке Действия заполнить поле Имя и добавить условия. В поле Условия следует задать правила, по которым будут идентифицироваться регистрируемые хосты:
Zabbix. Условия идентификации узла
На вкладке Операции в поле Операции следует добавить правила, которые необходимо применить при регистрации хоста. Пример набора правил для регистрации узла, добавления его к группе Discovered hosts с присоединением к шаблону Linux by Zabbix agent:
Zabbix. Правила, применяемые при регистрации узла
В конфигурационном файле агента (/etc/zabbix/zabbix_agentd.conf) указать следующие значения:
Hostname=<уникальное_имя_узла>
Server=<IP-сервера>
ServerActive=<IP-сервера>
HostMetadata=alt.autoreg
Значение HostMetadata должно совпадать с условием, заданным на сервере.
После внесения изменений необходимо перезапустить агент:

Глава 57. Отказоустойчивый кластер (High Availability) на основе Pacemaker

Pacemaker — менеджер ресурсов кластера (Cluster Resource Manager), задачей которого является обеспечение максимальной доступности управляемых им ресурсов и защита их от сбоев как на уровне отдельных сервисов, так и на уровне целых узлов кластера.
Ключевые особенности Pacemaker:
  • обнаружение и автоматическое восстановление сбоев на уровне узлов и сервисов;
  • обеспечение целостности данных за счёт изоляции (fencing) неисправных узлов;
  • поддержка кластеров с одним или несколькими узлами;
  • поддержка нескольких стандартов интерфейсов ресурсов (любой ресурс, для управления которым можно написать сценарий, может быть интегрирован в кластер);
  • независимость от подсистемы хранения — общий диск не требуется;
  • поддержка как кворумных, так и некворумных (ресурс-зависимых) конфигураций;
  • автоматическая репликация конфигурации с возможностью обновления с любого узла;
  • возможность задавать порядок запуска ресурсов, а также правила их совместного размещения на узлах;
  • поддержка расширенных типов ресурсов: клонов (ресурс, запущенный одновременно на нескольких узлах) и ресурсов с ролями master/slave;
  • единый интерфейс управления кластером с возможностью автоматизации через сценарии.
Архитектура Pacemaker состоит из трёх уровней:
  • кластеронезависимый уровень — на этом уровне находятся сами ресурсы и скрипты, которыми они управляются. Локальный демон абстрагирует различия между стандартами написания скриптов ресурсов (OCF, LSB, Systemd и др.), предоставляя единый интерфейс вышестоящим уровням;
  • менеджер ресурсов (Pacemaker) — реагирует на события, происходящие в кластере: отказ или подключение узлов, изменение состояния ресурсов, перевод узлов в режим обслуживания и другие административные действия. На основе текущего состояния кластера Pacemaker определяет оптимальную конфигурацию и инициирует необходимые действия (остановка, перемещение ресурсов или узлов и т.п.);
  • уровень межузлового взаимодействия (Corosync) — обеспечивает сетевую связность между узлами кластера: передачу управляющих команд (запуск/остановка ресурсов и узлов), обмен информацией о составе кластера, определение кворума и т.д.
Узел кластера (node) — это физический сервер или виртуальная машина с установленным Pacemaker. Узлы, предназначенные для предоставления одинаковых сервисов, должны иметь идентичную конфигурацию.
Ресурс, с точки зрения кластера, — любая управляемая сущность: сетевой сервис, демон, точка монтирования, том или раздел. При создании ресурса необходимо указать его класс, тип, поставщика (provider) и имя, а также дополнительные параметры. Ресурсы поддерживают расширенные параметры, включая: привязку к узлу (resource-stickiness), роли по умолчанию (started, stopped, master) и т.д.
Также поддерживаются:
  • группы ресурсов — ресурсы всегда запускаются в заданном порядке на одном узле;
  • клоны — один и тот же ресурс может быть запущен на нескольких узлах.
Ограничения (constraints) определяют логику размещения и запуска ресурсов:
  • location — привязка ресурса к определённому узлу (или группе узлов);
  • ordering — порядок запуска/остановки ресурсов;
  • colocation — требование совместного размещения (или размещения отдельно) ресурсов на одном узле.
Ниже приведена инструкция по установке и настройке кластера в Альт Сервер.

57.1. Настройка узлов кластера

Для корректной работы отказоустойчивого кластера необходимо выполнение следующих требований:
  • дата и время на всех узлах должны быть синхронизированы (например, через NTP);
  • должно быть настроено разрешение имён узлов в кластере (прямое и обратное);
  • сетевые соединения между узлами должны быть стабильными и надёжными;
  • на узлах должна быть реализована возможность изоляции (fencing) через аппаратные интерфейсы управления питанием (например, IPMI, iLO);
  • следующие порты должны быть открыты и доступны между узлами:
    • TCP: 2224, 3121, 21064;
    • UDP: 5405.

Примечание

В примере используется следующая конфигурация:
  • node01 — первый узел кластера (IP 192.168.0.113/24);
  • node02 — второй узел кластера (IP 192.168.0.145/24);
  • node03 — третий узел кластера (IP 192.168.0.132/24);
  • 192.168.0.251 — виртуальный IP-адрес, который будет обслуживаться одним из узлов.
Дальнейшие действия следует выполнить на каждом узле кластера.

Примечание

Рекомендуется использовать короткие имена узлов. Чтобы изменить имя хоста без перезагрузки, можно воспользоваться утилитой hostnamectl:
# hostnamectl set-hostname node01

57.1.1. Настройка разрешений имён узлов

Необходимо обеспечить взаимно однозначное прямое и обратное преобразование имён для всех узлов кластера. Желательно использовать DNS. В крайнем случае можно добавить записи в локальные файлы /etc/hosts на каждом узле:
# echo "192.168.0.113 node01" >> /etc/hosts 
# echo "192.168.0.145 node02" >> /etc/hosts 
# echo "192.168.0.132 node03" >> /etc/hosts 
Проверка корректности разрешения имён:
# ping node01
PING node01 (192.168.0.113) 56(84) bytes of data.
64 bytes from node01 (192.168.0.113): icmp_seq=1 ttl=64 time=0.352 ms

# ping node02
PING node02 (192.168.0.145) 56(84) bytes of data.
64 bytes from node02 (192.168.0.145): icmp_seq=1 ttl=64 time=0.635 ms

57.1.2. Настройка SSH-подключения между узлами

Для автоматизированного управления кластером рекомендуется настроить SSH-доступ по ключу для пользователя root:
  1. В файле /etc/openssh/sshd_config раскомментировать следующие строки
    PermitRootLogin without-password
    PubkeyAuthentication yes
    AuthorizedKeysFile  /etc/openssh/authorized_keys/%u /etc/openssh/authorized_keys2/%u .ssh/authorized_keys .ssh/authorized_keys2
    PasswordAuthentication yes
    
  2. Перезапустить службу SSH:
    # systemctl restart sshd
    
  3. Создать SSH-ключ без пароля (для автоматизации):
    # ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
    

    Важно

    Незащищённые приватные ключи (без пароля) не рекомендуются для серверов, доступных извне.
  4. Скопировать публичную часть SSH-ключа на остальные узлы кластера:
    # ssh-copy-id -i ~/.ssh/id_ed25519.pub user@node02
    # ssh-copy-id -i ~/.ssh/id_ed25519.pub user@node03
    
    становится возможным выполнение команд и доступ к файлам удалённого узла по SSH без запроса пароля.
  5. Чтобы обеспечить доступ по ключу под root, скопировать публичную часть SSH-ключа ключ в /root/.ssh/authorized_keys на каждом узле. Например, на node02:
    # ssh user@node02
    user@node02 $ su -
    node02 # cat /home/user/.ssh/authorized_keys >> /root/.ssh/authorized_keys
    node02 # exit
    user@node02 $ exit
    

    Важно

    Каталог /root/.ssh должен существовать. Если каталога нет, его можно создать:
    node02 # mkdir -p /root/.ssh
    node02 # chmod 700 /root/.ssh
    
  6. Убедиться, что удалённый запуск команд работает без запроса пароля:
    # ssh node02 -- uname -n
    node02
    

57.2. Установка кластерного ПО и создание кластера

Для управления кластером Pacemaker используется утилита pcs.
Установить необходимые пакеты на всех узлах:
# apt-get install corosync resource-agents pacemaker pcs
или
# alteratorctl components install pacemaker

Примечание

Пакет resource-agent содержит агенты ресурсов (набор скриптов) кластера, соответствующие спецификации Open Cluster Framework (OCF), используемые для взаимодействия с различными службами в среде высокой доступности, управляемой менеджером ресурсов Pacemaker. Если есть необходимость управлять дополнительными ресурсами, следует установить недостающий пакет resource-agents-*:
$ apt-cache search resource-agents*
Пакет pcs (pacemaker/corosync configuration system) — утилита для управления, настройки и мониторинга кластера.
При установке Pacemaker автоматически будет создан пользователь hacluster. Для использования pcs нужно задать пароль пользователю hacluster (одинаковый на всех узлах):
# passwd hacluster
Запустить и добавить в автозагрузку службу pcsd:
# systemctl enable --now pcsd
Настроить аутентификацию (на одном узле):
# pcs host auth node01 node02 node03 -u hacluster
Password:
node02: Authorized
node01: Authorized
node03: Authorized
После этого кластером можно управлять с одного узла.
Создать кластер:
# pcs cluster setup newcluster node01 node02 node03
Destroying cluster on hosts: 'node01', 'node02', 'node03'...
node03: Successfully destroyed cluster
node01: Successfully destroyed cluster
node02: Successfully destroyed cluster
Requesting remove 'pcsd settings' from 'node01', 'node02', 'node03'
node01: successful removal of the file 'pcsd settings'
node03: successful removal of the file 'pcsd settings'
node02: successful removal of the file 'pcsd settings'
Sending 'corosync authkey', 'pacemaker authkey' to 'node01', 'node02', 'node03'
node01: successful distribution of the file 'corosync authkey'
node01: successful distribution of the file 'pacemaker authkey'
node03: successful distribution of the file 'corosync authkey'
node03: successful distribution of the file 'pacemaker authkey'
node02: successful distribution of the file 'corosync authkey'
node02: successful distribution of the file 'pacemaker authkey'
Sending 'corosync.conf' to 'node01', 'node02', 'node03'
node01: successful distribution of the file 'corosync.conf'
node02: successful distribution of the file 'corosync.conf'
node03: successful distribution of the file 'corosync.conf'
Cluster has been successfully set up.
Запустить кластер:
# pcs cluster start --all
node02: Starting Cluster...
node03: Starting Cluster...
node01: Starting Cluster...
Настройка автоматического включения кластера при загрузке:
# pcs cluster enable --all
node01: Cluster Enabled
node02: Cluster Enabled
node03: Cluster Enabled
Проверка состояния кластера:
# pcs status cluster
Cluster Status:
 Cluster Summary:
   * Stack: corosync (Pacemaker is running)
   * Current DC: node03 (version 3.0.1-alt1-3.0.1) - partition with quorum
   * Last updated: Wed Dec 17 09:51:53 2025 on node01
   * Last change:  Wed Dec 17 09:51:44 2025 by hacluster via hacluster on node03
   * 3 nodes configured
   * 0 resource instances configured
 Node List:
   * Online: [ node01 node02 node03 ]

PCSD Status:
  node01: Online
  node03: Online
  node02: Online
Проверка синхронизации узлов кластера:
# corosync-cmapctl | grep members
runtime.members.1.config_version (u64) = 0
runtime.members.1.ip (str) = r(0) ip(192.168.0.113)
runtime.members.1.join_count (u32) = 1
runtime.members.1.status (str) = joined
runtime.members.2.config_version (u64) = 0
runtime.members.2.ip (str) = r(0) ip(192.168.0.145)
runtime.members.2.join_count (u32) = 1
runtime.members.2.status (str) = joined
runtime.members.3.config_version (u64) = 0
runtime.members.3.ip (str) = r(0) ip(192.168.0.132)
runtime.members.3.join_count (u32) = 1
runtime.members.3.status (str) = joined

57.3. Настройка параметров кластера

Настройки кластера можно просмотреть, выполнив команду:
# pcs property
Cluster Properties: cib-bootstrap-options
  cluster-infrastructure=corosync
  cluster-name=newcluster
  dc-version=3.0.1-alt1-3.0.1
  have-watchdog=false

57.3.1. Кворум

Кворум — это минимальное число узлов, при котором кластер считается работоспособным. По умолчанию кворум теряется, если работает менее половины узлов.
В кластере из двух узлов кворум возможен только при работе обоих. Чтобы избежать остановки ресурсов при потере кворума (например, в двухузловом кластере), можно указать, чтобы наличие или отсутствие кворума не учитывалось:
# pcs property set no-quorum-policy=ignore

Примечание

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

57.3.2. Настройка STONITH

Для корректной работы узлов с общим хранилищем, необходимо настроить механизм STONITH. Этот механизм позволяет кластеру физически отключить не отвечающий на запросы узел, чтобы не повредить данные на общем хранилище.
Пока STONITH не настроен, его можно временно отключить:
# pcs property set stonith-enabled=false

Важно

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

57.4. Настройка ресурсов

Настроим ресурс, который будет управлять виртуальным IP-адресом. Этот адрес будет автоматически мигрировать между узлами, обеспечивая единую точку входа для клиентов.
Команда создания ресурса виртуального IP-адреса с именем ClusterIP с использованием агента ocf:heartbeat:IPaddr2 (каждые 20 секунд производить мониторинг работы, в случае выхода из строя узла необходимо виртуальный IP переключить на другой узел):
# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.0.251 cidr_netmask=24 op monitor interval=20s
Доступные стандарты ресурсов:
# pcs resource standards
lsb
ocf
service
systemd
Поставщики OCF-агентов:
# pcs resource providers
heartbeat
pacemaker
redhat
Список агентов от поставщика OCF:
# pcs resource agents ocf:heartbeat
aliyun-vpc-move-ip
anything
AoEtarget
apache
asterisk
…
Xinetd
zabbixserver
ZFS
Статус кластера с добавленным ресурсом:
# pcs status
Cluster name: newcluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node03 (version 3.0.1-alt1-3.0.1) - partition with quorum
  * Last updated: Wed Dec 17 09:55:22 2025 on node01
  * Last change:  Wed Dec 17 09:54:47 2025 by root via root on node01
  * 3 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ node01 node02 node03 ]

Full List of Resources:
  * ClusterIP	(ocf:heartbeat:IPaddr2):	 Started node01

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
Если остановить кластер на узле node01:
# pcs cluster stop node01
node01: Stopping Cluster (pacemaker)...
node01: Stopping Cluster (corosync)...
Ресурс ClusterIP автоматически переключится на один из оставшихся узлов (например, node02). Проверка статуса на узле node02:
# pcs status
Cluster name: newcluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node03 (version 3.0.1-alt1-3.0.1) - partition with quorum
  * Last updated: Wed Dec 17 09:56:18 2025 on node02
  * Last change:  Wed Dec 17 09:54:47 2025 by root via root on node01
  * 3 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ node02 node03 ]
  * OFFLINE: [ node01 ]

Full List of Resources:
  * ClusterIP	(ocf:heartbeat:IPaddr2):	 Started node02

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Глава 58. Система виртуальных рабочих мест OpenUDS

OpenUDS — это многоплатформенный брокер подключений для создания и управления виртуальными рабочими местами и приложениями.
Основные компоненты решения VDI на базе OpenUDS:
  • OpenUDS Server (openuds-server) — брокер подключений пользователей и веб-интерфейс администратора для настройки системы;
  • SQL-сервер — необходим для работы Django-приложения openuds-server. В качестве СУБД могут использоваться MySQL или MariaDB. SQL-сервер может быть установлен как на отдельной машине, так и на том же сервере, что и OpenUDS Server;
  • Платформа виртуализации — среда для запуска клиентских окружений и приложений. OpenUDS поддерживает множество платформ: PVE, OpenNebula, oVirt, OpenStack. Также возможна работа с физическими серверами без виртуализации (аналог терминального решения);
  • OpenUDS Client (openuds-client) — клиентское приложение для подключения к брокеру и последующего доступа к виртуальному рабочему окружению;
  • OpenUDS Tunnel (openuds-tunnel) — решение для туннелирования трафика от клиента к виртуальному окружению. Предназначен для предоставления доступа из недоверенных сетей (например, из Интернета). Устанавливается на отдельный сервер;
  • OpenUDS Actor (openuds-actor) — программное обеспечение, устанавливаемое на гостевые виртуальные машины (ВМ). Обеспечивает связь между ВМ и брокером OpenUDS.

Таблица 58.1. Системные требования

Компонент
ОЗУ
ЦП
Диск
OpenUDS Server
2 ГБ
2 vCPU
8 ГБ
SQL Server
1 ГБ
2 vCPU
10 ГБ
OpenUDS Tunnel
2 ГБ
2 vCPU
13 ГБ

Примечание

Если SQL-сервер размещён на том же хосте, что и OpenUDS Server, объём оперативной памяти следует суммировать (минимум 3 ГБ)

58.1. Установка

58.1.1. Установка MySQL (MariaDB)

Установить MySQL (MariaDB):
# alteratorctl components install mariadb
или:
# apt-get install mariadb
Запустить службу и добавьте её в автозагрузку:
# systemctl enable --now mariadb.service
Выполнить базовую настройку безопасности:
# mysql_secure_installation
Создать базу данных dbuds, пользователя базы данных dbuds с паролем password и предоставить ему привилегии в базе данных dbuds:
$ mysql -u root -p
Enter password:

MariaDB> CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB> CREATE USER 'dbuds'@'%' IDENTIFIED BY 'password';
MariaDB> GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit;

58.1.2. Установка OpenUDS Server

Установить компонент openuds:
# alteratorctl components install openuds
или пакет openuds-server-nginx:
# apt-get install openuds-server-nginx
При установке будут развернуты следующие компоненты:
  • openuds-server — Django-приложение;
  • gunicorn — WSGI-сервер для запуска Django;
  • nginx — HTTP-сервер, выступающий в роли reverse-proxy перед gunicorn.
Для работы механизма кеширования необходимо также установить пакет memcached и добавить службу memcached в автозагрузку:
# apt-get install memcached
# systemctl enable --now memcached
Настройка OpenUDS Server:
  • отредактировать файл /etc/openuds/settings.py, указав корректные данные для подключения к SQL-серверу:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'OPTIONS': {
                'isolation_level': 'read committed',
            },
            'NAME': 'dbuds',
            'USER': 'dbuds',
            'PASSWORD': 'password',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }
    
  • выполнить миграции базы данных:
    # su -s /bin/bash - openuds
    $ cd /usr/share/openuds
    $ python3 manage.py migrate
    $ python3 manage.py createcachetable uds_response_cach
    $ exit
    
  • запустить gunicorn:
    # systemctl enable --now openuds-web.service
    
  • запустить nginx:
    # ln -s ../sites-available.d/openuds.conf /etc/nginx/sites-enabled.d/openuds.conf
    # systemctl enable --now nginx.service
    
  • запустить менеджер задач OpenUDS:
    # systemctl enable --now openuds-taskmanager.service
    

Важно

Перед запуском nginx необходимо убедиться, что веб-сервер Apache остановлен и отключен:
# systemctl disable --now httpd2
Веб-интерфейс OpenUDS будет доступен по адресу https://<адрес-сервера>/:
Форма входа в интерфейс OpenUDS

Примечание

Учётные данные по умолчанию: root/udsmam0

Примечание

Для перехода в панель администрирования следует в меню пользователя выбрать пункт Панель управления:
OpenUDS. Меню пользователя

58.1.3. OpenUDS Tunnel

58.1.3.1. Установка OpenUDS Tunnel

OpenUDS Tunnel рекомендуется устанавливать на отдельный сервер.
Установить компонент openuds-tunnel:
# alteratorctl components install openuds-tunnel
или пакет openuds-tunnel:
# apt-get install openuds-tunnel

Примечание

При установке openuds-tunnel в каталог /etc/openuds-tunnel/ssl автоматически генерируются самоподписанные сертификаты. Их можно заменить на корпоративные или выданные доверенным УЦ.

58.1.3.2. Настройка OpenUDS Tunnel

На туннельном сервере:
  • указать адрес сервера OpenUDS (брокера) в файле /etc/openuds-tunnel/udstunnel.conf :
    uds_server = http://192.168.0.53/uds/rest/tunnel/ticket
    uds_token = 5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b
    
    где:
    • 192.168.0.53 — IP-адрес сервера OpenUDS (брокера);
    • uds_token — токен, сгенерированный при установке туннельного сервера.
  • запустить и добавить в автозагрузку службу:
    # systemctl enable --now openuds-tunnel.service
    
На сервере OpenUDS зарегистрировать туннельный сервер:
# openuds_tunnel_register -H 192.168.0.88 -n Tunnel \
 -t 5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b \
 -m 08:00:27:31:2d:14
Результат:
Tunnel token register success. (With token: 5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b)
Параметры:
  • -H — IP-адрес туннельного сервера;
  • -n — название туннеля;
  • -t — токен туннельного сервера (из файла udstunnel.conf);
  • -t — MAC-адрес туннельного сервера.
При создании туннеля указать IP-адрес и порт туннельного сервера: 192.168.0.88:7777

Примечание

Зарегистрированные туннельные серверы отображаются в веб-интерфейсе OpenUDS в разделе ИнструментыТокеныСерверы.

58.1.3.3. Настройка HTML5 (Guacamole)

На туннельном сервере:
  1. В файле /etc/guacamole/guacamole.properties привести значение параметра uds-base-url к виду:
    http://<IP_openuds_сервера>/uds/guacamole/auth/<Токен_из_udstunnel.conf>/
    
    Например:
    uds-base-url=http://192.168.0.53/uds/guacamole/auth/5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b
    
  2. Настроить Tomcat:
    • Для HTTP-подключения (порт 8080): остановить службу ahttpd:
      # systemctl disable --now ahttpd
      
      либо изменить порт Tomcat в файле /etc/tomcat/server.xml, например, на 8081:
      <Connector port="8081" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443"
                     maxParameterCount="1000"
                  />
      
    • Для HTTPS-подключения (порт 10443): в файл /etc/tomcat/server.xml добавить новый Connector, в котором указать порт (в примере 10443), сертификат (файл .crt, .pem и т.д.), закрытый ключ (.key, .pem и т.д.):
      <Connector port="10443"
                 protocol="org.apache.coyote.http11.Http11AprProtocol"
                 SSLEnabled="true"
                 ciphers="TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305"
                 maxThreads="500"
                 scheme="https"
                 secure="true"
                 SSLCertificateFile="/etc/openuds-tunnel/ssl/certs/openuds-tunnel.pem"
                 SSLCertificateKeyFile="/etc/openuds-tunnel/ssl/private/openuds-tunnel.key"
                 maxKeepAliveRequests="1000"
                 clientAuth="false"
                 sslProtocol="TLSv1.2+TLSv1.3" />
      
  3. Запустить службы Guacamole:
    # systemctl enable --now guacd tomcat
    
На сервере OpenUDS при создании туннеля указать IP-адрес и порт туннельного сервера:
  • http://192.168.0.88:8080 — для подключения по HTTP;
  • https://192.168.0.88:10443 — для подключения по HTTPS.

58.2. Обновление OpenUDS

После обновления пакета openuds-server до новой версии необходимо выполнить следующие действия:
  1. Перенести изменения из нового конфигурационного файла /etc/openuds/settings.py.rpmnew (если они есть) в используемый файл /etc/openuds/settings.py.
    Проверить, какие изменения были внесены, можно с помощью команды:
    # diff -u --color /etc/openuds/settings.py /etc/openuds/settings.py.rpmnew
    
  2. Установить пакет memcached:
    # apt-get install memcached
    
  3. Добавить службу memcached в автозагрузку и запустить её:
    # systemctl enable --now memcached
    
  4. Выполнить миграцию базы данных:
    # su -s /bin/bash - openuds -c "cd /usr/share/openuds; python3 manage.py migrate"
    
  5. Создать таблицу кеша:
    # su -s /bin/bash - openuds -c "cd /usr/share/openuds; python3 manage.py createcachetable uds_response_cache"
    
  6. Перезагрузить систему, так как при обновлении не создаётся сокет-файл /run/openuds/socket.

58.3. Настройка OpenUDS

58.3.1. Поставщики услуг

В разделе Поставщики услуг подключить один из поставщиков («Service providers»):
OpenUDS. Поставщики услуг

58.3.1.1. OpenNebula

Минимальные параметры для настройки Поставщик платформы OpenNebula:
  • Вкладка Основной:
    • Имя — название поставщика;
    • Хост — IP-адрес или доменное имя сервера OpenNebula;
    • Порт — порт подключения (по умолчанию — 2633);
    • Имя пользователя — имя пользователя OpenNebula (с правами администратора);
    • Пароль — пароль указанного пользователя;
    OpenUDS. Подключение OpenNebula (вкладка «Основной»)
  • Вкладка Расширенный:
    • Одновременное создание — максимальное количество ВМ, создаваемых параллельно;
    • Одновременное удаление — максимальное количество ВМ, удаляемых параллельно;
    • Таймаут — время ожидания ответа от OpenNebula (в секундах).
    OpenUDS. Подключение OpenNebula (вкладка «Расширенный»)
С помощью кнопки Проверить можно убедиться, что соединение с OpenNebula настроено корректно.
После подключения платформы OpenNebula можно создать базовые службы. Для этого следует дважды щелкнуть мышью по строке созданного поставщика услуг или в контекстном меню поставщика выбрать пункт Подробность:
OpenUDS. Контекстное меню поставщика услуг OpenNebula

Примечание

Пункт Обслуживание позволяет приостановить все операции OpenUDS для данного поставщика. Режим обслуживания рекомендуется включать при:
  • потери связи с поставщиком;
  • плановых работах по обслуживанию инфраструктуры.
В открывшемся окне на вкладке Поставщики услуг нажать кнопку НовыйДействующие образы OpenNebula:
OpenUDS. Создание новой службы
Заполнить минимальные параметры конфигурации:
  • Вкладка Основной:
    • Имя — название службы;
    • Хранилище — хранилище OpenNebula, где будут размещаться клонированные ВМ;
    OpenUDS. Действующие образы OpenNebula (вкладка «Основной»)
  • Вкладка Расширенный:
    • Метод подсчета услуг — определяет, как учитывается количество машин при соблюдении лимита Максимальное количество предоставляемых сервисов в пуле:
      • Стандартный — учитываются только созданные ВМ. В момент одновременного создания и удаления машин возможно временное превышение лимита. Пример: при лимите 5 машин система может кратковременно содержать 6 ВМ (4 активные + 1 создаваемая + 1 удаляемая);
      • Консервативный — учитываются и создаваемые, и удаляемые ВМ. Превышение лимита невозможно: новая ВМ не создаётся, пока удаление предыдущей не завершится;
    OpenUDS. Действующие образы OpenNebula (вкладка «Расширенный»)
  • Вкладка Машина:
    • Базовый шаблон — шаблон ВМ, используемый системой OpenUDS для развёртывания виртуальных рабочих столов (см. Подготовка шаблона виртуальной машины);
    • Имена машин — базовое название для клонов с этой машины (например, Desk-kwork-);
    • Длина имени — количество цифр счетчика, прикрепленного к базовому имени рабочих столов (например, если Длина имени = 3, названия сгенерированных рабочих столов будут: Desk-kwork-000, Desk-kwork-001 ... Desk-kwork-999).
    OpenUDS. Действующие образы OpenNebula (вкладка «Машина»)

58.3.1.2. Настройка поставщика PVE

Развертывание виртуальных рабочих столов, созданных с помощью OpenUDS, или подключение к существующим машинам в инфраструктуре виртуализации PVE.
Параметры поставщика платформы PVE:
  • Вкладка Основной:
    • Имя — название поставщика;
    • Хост — IP-адрес или имя сервера/кластера PVE;
    • Порт — порт подключения к API PVE (по умолчанию — 8006);
    • Использовать API-токен — если включено, вместо пароля используются API-токен и секрет (в поле Имя пользователя указывается идентификатор токена формате user@realm!tokenid, а в поле Пароль — секрет токена);
    • Имя пользователя — учётная запись с достаточными привилегиями в PVE (в формате пользователь@аутентификатор);
    • Пароль — пароль указанного пользователя (или секрет токена, если используется API-токен).
    OpenUDS. Подключение PVE (вкладка «Основной»)
  • Вкладка Расширенный:
    • Одновременное создание — максимальное количество ВМ, создаваемых параллельно;
    • Одновременное удаление — максимальное количество ВМ, удаляемых параллельно;
    • Таймаут — время ожидания ответа от PVE (в секундах);
    • Диапазон MAC-адресов — диапазон MAC-адресов, назначаемых создаваемым рабочим столам;
    • Начальный VmId — идентификатор ВМ, с которого OpenUDS начинает генерацию (должен быть >=10000);
    OpenUDS. Подключение PVE (вкладка «Расширенный»)
С помощью кнопки Проверить можно убедиться, что соединение с PVE настроено корректно.
После подключения платформы PVE можно создать базовые службы. Для этого нужно дважды щелкнуть мышью по строке созданного поставщика услуг или в контекстном меню поставщика выбрать пункт Подробность:
OpenUDS. Контекстное меню поставщика услуг PVE

Примечание

Пункт Обслуживание позволяет приостановить все операции OpenUDS для данного поставщика. Режим обслуживания рекомендуется включать при:
  • потери связи с поставщиком;
  • плановых работах по обслуживанию инфраструктуры.
58.3.1.2.1. Стационарные машины Proxmox
Этот тип службы позволяет пользователям напрямую подключаться к существующим ВМ в кластере или на сервере PVE.
Чтобы создать службу Стационарные машины Proxmox нужно перейти на вкладку Поставщики услуг и нажать кнопку НовыйСтационарные машины Proxmox:
OpenUDS. Создание новой услуги PVE
Минимальные параметры конфигурации:
  • Вкладка Основной:
    • Имя — название службы;
    • Токен сервиса — буквенно-цифровой идентификатор, необходимый для отслеживания входа и выхода пользователя. Если поле заполнено, OpenUDS сможет автоматически освобождать машину после выхода пользователя и предоставлять её другим. Требование: на каждой ВМ должен быть установлен Unmanaged OpenUDS Actor, и в его настройках указан тот же токен. Если поле оставлено пустым, машина навсегда закрепляется за пользователем до ручного освобождения администратором;
    OpenUDS. Стационарные машины Proxmox (вкладка «Основной»)
  • Вкладка Машина:
    • Пул ресурсов — пул PVE, в котором находятся ВМ, доступные для назначения;

      Примечание

      ВМ должны быть размещены в этом пуле, чтобы отображаться в списке.
    • Машины — список существующих ВМ в указанном пуле, которые будут управляться OpenUDS. Выбранные ВМ станут доступны пользователям. Если на ВМ установлен Unmanaged Actor с настроенным токеном, OpenUDS сможет динамически назначать и освобождать её. Если Actor не установлен, назначение остаётся постоянным до ручного удаления администратором;
    OpenUDS. Стационарные машины Proxmox (вкладка «Машина»)
  • Вкладка Расширенный:
    • Продолжайте — при активации система игнорирует временные ошибки доступа к ВМ, сохраняя её в списке доступных. Полезно, если машины могут быть кратковременно недоступны (например, при перезагрузке);
    • Использовать моментальные снимки — если включено, OpenUDS создаёт снимок (snapshot) ВМ перед подключением пользователя, и завершения сессии (автоматически или вручную) восстанавливает этот снимок, возвращая ВМ в исходное состояние.

      Примечание

      Если у ВМ уже существует снимок, OpenUDS будет использовать именно его, не создавая новый.
    OpenUDS. Стационарные машины Proxmox (вкладка «Расширенный»)
58.3.1.2.2. Связанный клон Proxmox
Этот тип службы создаёт виртуальные рабочие столы в инфраструктуре PVE, которые зависят от активных публикаций (то есть удаляются при отмене публикации).
Чтобы создать службу Связанный клон Proxmox нужно перейти на вкладку Поставщики услуг и нажать кнопку НовыйСвязанный клон Proxmox:
OpenUDS. Создание новой услуги «Связанный клон Proxmox»
Минимальные параметры конфигурации:
  • Вкладка Основной:
    • Имя — название службы;
    • Пул — пул ресурсов PVE, в котором будут размещаться ВМ;
    • Высокая доступность — включать создаваемые ВМ в группу HA PVE;
    OpenUDS. Связанный клон Proxmox (вкладка «Основной»)
  • Вкладка Машина:
    • Базовое имя — префикс для имён клонов (например, Desk-SL);
    • Длина имени — количество цифр в счётчике, добавляемом к базовому имени. (например, при значении 3 имена сгенерированных рабочих столов будут: Desk-SL000, Desk-SL001 … Desk-SL999);
    • Базовая машина — шаблон ВМ, используемый для развёртывания рабочих столов (см. Подготовка шаблона виртуальной машины);
    • Хранилище — хранилище PVE, где будут размещаться клонированные ВМ. Поддерживаются хранилища, позволяющие создавать снимки (snapshots);
    • Доступность графического процессора — определяет, как OpenUDS будет учитывать наличие виртуальных GPU (vGPU) на хостах PVE при размещении ВМ:
      • Не проверять (Do not check) — хосты не проверяются на наличие vGPU. ВМ могут размещаться на любом хосте пула;
      • Только при наличии (Only if available) — ВМ создаются только на хостах, оснащённых vGPU;
      • Только при отсутствии (Only if NOT available) — ВМ создаются только на хостах без vGPU.

      Примечание

      Для корректной работы опции требуется, чтобы в конфигурации хостов PVE были правильно настроены устройства vGPU (например, через mdev или PCI passthrough).
    OpenUDS. Связанный клон Proxmox (вкладка «Машина»)
  • Вкладка Расширенный:
    • Удалить найденные дубликаты — если включено (по умолчанию), OpenUDS автоматически удаляет ВМ с именем, сгенерированным системой, но не зарегистрированную в брокере (например, оставшуюся после сбоя). Рекомендуется оставить включённым, чтобы избежать «потерянных» машин в инвентаре;
    • Продолжайте — при активации система игнорирует ошибки доступа к службе и не удаляет ВМ. Особенно полезно для постоянных (персистентных) машин, так как предотвращает их удаление в большинстве ситуаций (за исключением ручного удаления администратором);
    • Сначала попробовать SOFT Shutdown — если включено, OpenUDS перед удалением ВМ попытается выполнить корректное выключение (через ACPI), а не принудительную остановку;
    • Вернуть в кеш — определяет, будут ли неперсистентные ВМ возвращаться в кеш после освобождения:
      • Нет. Никогда не помещать его обратно в кеш — ВМ удаляется после завершения сессии;
      • Да, попробовать вернуть его в кеш — ВМ возвращается в кеш для повторного использования другими пользователями (если это возможно);
    • Метод подсчета услуг — определяет, как учитывается количество машин при соблюдении лимита Максимальное количество предоставляемых сервисов в пуле:
      • Стандартный — учитываются только созданные ВМ. В момент одновременного создания и удаления машин возможно временное превышение лимита. Пример: при лимите 5 машин система может кратковременно содержать 6 ВМ (4 активные + 1 создаваемая + 1 удаляемая);
      • Консервативный — учитываются и создаваемые, и удаляемые ВМ. Превышение лимита невозможно: новая ВМ не создаётся, пока удаление предыдущей не завершится.
    OpenUDS. Связанный клон Proxmox (вкладка «Расширенный»)
После настройки OpenUDS и создания первого пула услуг в интерфейсе PVE можно будет наблюдать следующий процесс:
  1. Создаётся публикационный шаблон с именем вида: UDS-Pub-<базовое_имя>-<дата><номер_публикации> — это клон базовой ВМ.
  2. На основе клона создаются рабочие столы с именами: UDS-<базовое_имя><счётчик> (например, UDS-Desk-SL-001).
PVE. Созданные шаблоны и рабочие столы

58.3.1.3. Удалённый доступ к отдельному серверу

Этот тип поставщика услуг позволяет назначать пользователям постоянные устройства (физические или виртуальные) по их IP-адресам.
Для регистрации поставщика данного типа следует в разделе Поставщики услуг нажать кнопку Новый и выбрать пункт Поставщик машин статических IP.
Для настройки Поставщика машин статических IP достаточно задать название поставщика:
OpenUDS. Поставщик машин статических IP
После создания поставщика можно создавать базовые службы. Для этого следует дважды щелкнуть мышью по строке созданного поставщика или в контекстном меню поставщика выбрать пункт Подробность:
OpenUDS. Контекстное меню поставщика машин статических IP
OpenUDS поддерживает два типа служб для поставщика машин статических IP:
  • Статический множественный IP-адрес — используется для подключения одного пользователя к одному устройству (IP-адресу) из списка. Поддерживается неограниченное количество IP-адресов. По умолчанию устройства назначаются поочерёдно (первый пользователь получает первый IP из списка). Можно также настроить привязку конкретного пользователя к конкретному IP-адресу.

    Примечание

    Чтобы привязать пользователя к определённому устройству, необходимо в разделе Пулы услуг (см. раздел Пулы услуг) для созданной услуги на вкладке Назначенные сервисы нажать кнопку Назначить услугу и указать соответствие:
    OpenUDS. Привязка устройства пользователю
  • Статический одиночный IP-адрес — используется для подключения нескольких пользователей к одному и тому же устройству. Каждый пользователь запускает отдельный сеанс на этом компьютере.

Примечание

Для успешного подключения необходимо, чтобы:
  • устройства были включены;
  • на них был установлен и активирован соответствующий протокол удалённого доступа (RDP, X2Go и т.д.).
58.3.1.3.1. Статический множественный IP-адрес
Этот тип службы предоставляет пользователям доступ к разным устройствам по принципу «один пользователь — одно устройство».
Для создания новой услуги Поставщик машин статических IP нужно перейти на вкладку Поставщики услуг и нажать кнопку НовыйСтатический множественный IP-адрес:
OpenUDS. Создание новой услуги статический IP-адрес
Параметры конфигурации для услуги Статический множественный IP-адрес:
  • Вкладка Основной:
    • Имя — название службы;
    • Ключ услуги — токен для контроля сеансов. Если токен указан, OpenUDS отслеживает вход и выход пользователя (требуется установка Unmanaged OpenUDS Actor на каждом устройстве). После выхода устройство становится доступно другим. Если токен не указан, назначение остаётся постоянным до ручного освобождения администратором;
    • Группа серверов — группа устройств, зарегистрированная в разделе Серверы с типом НеуправляемыйНеуправляемый IP-сервер (см. раздел Серверы);
    OpenUDS. Статический множественный IP-адрес (вкладка «Основной»)
  • Вкладка Расширенный:
    • Игнорировать минуты при сбое — время (в минутах), в течение которого недоступное устройство не проверяется повторно (0 — проверять всегда);
    • Проверьте порт — порт для проверки доступности устройства. Если недоступно — система назначает следующее устройство из списка (0 — не проверять);
    • Максимальная продолжительность сеанса — при включённой опции Блокировка машины внешним доступом определяет, через сколько часов (0 — никогда) OpenUDS освободит устройство, если оно заблокировано внешним пользователем;
    • Блокировка машины внешним доступом — если включено и на устройстве установлен Unmanaged Actor, OpenUDS запретит доступ через OpenUDS, если на устройстве уже есть активный пользователь (например, вошедший локально);
    • Использовать случайный хост — определяет порядок назначения:
      • Включено — устройства назначаются случайно;
      • Отключено (по умолчанию) — по порядку в списке.
    OpenUDS. Статический множественный IP-адрес (вкладка «Расширенный»)
После настройки всей среды OpenUDS (поставщики, аутентификаторы, транспорты, пулы) пользователи получат доступ к устройствам из списка.

Примечание

По умолчанию назначение происходит в порядке очереди: первому обратившемуся пользователю — первый IP-адрес. Если ключ услуги не задан, привязка сохраняется даже после выхода пользователя — до ручного освобождения администратором.
Просмотр и управление назначениями доступны в разделе Пулы услуг (см. раздел Пулы услуг) вкладка Назначенные сервисы:
OpenUDS. Привязанные сервисы
58.3.1.3.2. Статический одиночный IP-адрес
Этот тип службы позволяет нескольким пользователям подключаться к одному и тому же устройству, каждый — в своём сеансе.
Для создания новой службы Поставщик машин статических IP нужно перейти на вкладку Поставщики услуг и нажать кнопку НовыйСтатический одиночный IP-адрес:
OpenUDS. Статический IP-адрес
Параметры конфигурации для услуги Статический одиночный IP-адрес:
  • Имя — название службы;
  • IP-адрес хоста/полное доменное имя — адрес устройства, к которому будет осуществляться доступ (устройство должно быть включено и настроено см. Подготовка шаблона виртуальной машины). Устройство должно поддерживать многопользовательские сеансы.
OpenUDS. Служба «Статический одиночный IP-адрес»
После настройки всей инфраструктуры OpenUDS пользователи смогут подключаться к указанному устройству, запуская новый сеанс при каждом обращении.

58.3.2. Серверы

В разделе Серверы можно определить группы серверов, которые будут использоваться поставщиком услуг машин со статическим IP-адресом. Эти группы регистрируются как независимые объекты и могут совместно использоваться разными поставщиками, что позволяет:
  • создавать конфигурации высокой доступности;
  • использовать разные наборы IP-адресов или имён для прямого назначения;
  • гибко управлять доступом к физическим или виртуальным устройствам.
Чтобы создать группу серверов для последующего использования в службе Статический множественный IP-адрес, необходимо перейти в раздел Серверы и нажать кнопку: НовыйНеуправляемыйНеуправляемый IP-сервер (Unmanaged IP Server):
OpenUDS. Создать группу серверов
В открывшемся окне следует указать название группы и нажать кнопку Сохранить:
OpenUDS. Создание группы серверов
После создания группы необходимо добавить в неё конкретные устройства:
  1. Дважды щёлкнуть по элементу или выбрать в контекстном меню пункт Подробность.
  2. На вкладке Серверы нажать кнопку Новый.
  3. Указать имя элемента, IP-адрес или имя машины:
    OpenUDS. Добавление машины в группу серверов
  4. Нажать Сохранить.
После завершения настройки группа серверов может быть использована поставщиком Поставщик машин со статическим IP-адресом (см. раздел Удалённый доступ к отдельному серверу).

58.3.3. Настройка аутентификации пользователей

58.3.3.1. Аутентификаторы

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

Важно

Не рекомендуется использовать учётную запись администратора для повседневной работы. Вместо этого нужно создать отдельного пользователя с необходимыми правами.
Рекомендуется настроить несколько аутентификаторов или как минимум один резервный.
При использовании IP-аутентификатора вход в систему выполняется автоматически. Если такой аутентификатор имеет наивысший приоритет (наименьшее числовое значение) и возникает ошибка в его работе, это может привести к бесконечному циклу входа, делающему доступ к OpenUDS невозможным. Чтобы обойти эту проблему, можно временно отключить IP-аутентификаторы, добавив к URL входа суффикс /disabled: https://<адрес_сервера>/uds/page/login/disabled

Примечание

Если в системе зарегистрировано несколько активных аутентификаторов, на странице входа появляется поле Аутентификатор с раскрывающимся списком. В этом списке пользователь может выбрать нужный способ аутентификации:
OpenUDS. Выбор типа аутентификации пользователей
При создании любого аутентификатора заполняется поле Метка. Даже при наличии нескольких аутентификаторов пользователь может войти напрямую через конкретный, указав метку в URL: https://<адрес_сервера>/uds/page/login/<метка> (например, https://192.168.0.53/uds/page/login/AD).
Для настройки аутентификации необходимо перейти в раздел Аутентификаторы и выбрать тип аутентификации:
  • внешние источники (Active Directory, OpenLDAP и др.);
  • внутренние (внутренняя база данных, IP-аутентификация).
OpenUDS. Выбор типа аутентификации пользователей
58.3.3.1.1. Внутренняя БД
При использовании аутентификатора Внутренняя БД данные пользователей и групп хранятся в базе данных OpenUDS.
Для создания аутентификатора Внутренняя БД следует перейти в раздел Аутентификаторы и нажать кнопку НовыйВнутренняя БД.
Минимальные параметры конфигурации (вкладка Основной): имя аутентификатора, приоритет (чем меньше значение, тем выше приоритет) и метка.
OpenUDS. Внутренняя база данных
После создания аутентификатора нужно зарегистрировать пользователей и группы пользователей:
  1. Выбрать созданный аутентификатор.
  2. Во вкладке Группы создать группы пользователей.
  3. Во вкладке Пользователи создать пользователей.
OpenUDS. Внутренняя база данных — пользователи
58.3.3.1.2. Аутентификатор Regex LDAP
Этот аутентификатор позволяет интегрировать OpenUDS с любым LDAP-совместимым каталогом (FreeIPA, Active Directory и др.).

Важно

На LDAP-сервере должна быть настроена учётная запись с правами только на чтение. Эта учётная запись используется OpenUDS для подключения к каталогу.
58.3.3.1.2.1. FreeIPA
Настройка интеграции с FreeIPA (сервер ipa.example.test):
  1. В разделе Аутентификаторы нажать кнопку: НовыйАутентификатор Regex LDAP.
  2. Заполнить параметры.
    Вкладка Основной: имя аутентификатора, приоритет, метка, IP-адрес и порт FreeIPA-сервера (обычно 389 без SSL, 636 с SSL):
    OpenUDS. Интеграция с FreeIPA
    Вкладка Учётные данные: имя пользователя (в формате DN: uid=user_freeipa,cn=users,cn=accounts,dc=example,dc=test) и пароль:
    OpenUDS. Интеграция с FreeIPA — учетные данные пользователя
    Вкладка LDAP информация: общая база пользователей, класс пользователей LDAP, атрибуты: идентификатор, имя пользователя, имя группы:
    OpenUDS. Интеграция с FreeIPA — LDAP информация

    Примечание

    С помощью кнопки Проверить можно убедиться в корректности подключения к FreeIPA.
  3. Добавить группу LDAP, в которую входят пользователи. Для этого выбрать созданный аутентификатор, затем в открывшемся окне на вкладке Группы нажать НовыйГруппа.
    Заполнить DN существующей группы (для FreeIPA по умолчанию это группа cn=ipausers,cn=groups,cn=accounts,dc=example,dc=test), можно также указать разрешённые пулы:
    OpenUDS. Интеграция с FreeIPA — добавление группы LDAP
58.3.3.1.2.2. Active Directory
Настройка аутентификации в Active Directory (домен test.alt):
  1. В разделе Аутентификаторы нажать кнопку: НовыйАутентификатор Regex LDAP.
  2. Заполнить параметры.
    Вкладка Основной: имя аутентификатора, приоритет, метка, IP-адрес и порт сервера AD (обычно 389 без SSL, 636 с SSL):
    OpenUDS. Интеграция с Active Directory
    Вкладка Учётные данные: имя пользователя (можно указать как имя@домен или в формате DN) и пароль:
    OpenUDS. Интеграция с Active Directory — учетные данные пользователя
    Вкладка LDAP информация: общая база пользователей, класс пользователей LDAP, атрибуты: идентификатор, имя пользователя, имя группы:
    OpenUDS. Интеграция с Active Directory — LDAP информация

    Примечание

    Если в поле Идентификатор атрибута пользователя указано userPrincipalName, пользователь при входе должен указать логин в формате имя_пользователя@домен. Если указано sAMAccountName, в качестве логина используется имя пользователя без указания домена.

    Примечание

    Кнопка Проверить позволяет протестировать соединение с Active Directory.

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

    Если доступ к серверу LDAP осуществляется по протоколу ldap без шифрования, на контроллере домена SambaDC необходимо отключить ldaps в /etc/samba/smb.conf в секции [global]:
    ldap server require strong auth = no
    и перезапустить samba:
    # systemctl restart samba

    Примечание

    Ошибка Ldap user class seems to be incorrect (no user found by that class) не влияет на возможность аутентифицироваться доменному пользователю.
  3. Добавить группу LDAP, в которую входят пользователи. Для этого выбрать созданный аутентификатор, затем в открывшемся окне на вкладке Группы нажать НовыйГруппа.
    Заполнить DN существующей группы (например, cn=UDS,cn=Users,dc=test,dc=alt), можно также указать разрешённые пулы:
    OpenUDS. Интеграция с Active Directory — добавление группы LDAP

Примечание

Пользователи добавляются автоматически при первом входе, если они входят в разрешённые группы:
OpenUDS. Интеграция с Active Directory — пользователи LDAP
Чтобы назначить пользователю специальные права до первого входа, его можно зарегистрировать вручную:
  • на вкладке Пользователи нажать кнопку Новый;
  • указать имя пользователя, статус (включён или отключён) и уровень доступа (поле Роль). Не рекомендуется заполнять поле Группы, так как система должна автоматически добавить пользователя в группу участников.
OpenUDS. Интеграция с AD — регистрация пользователя вручную
58.3.3.1.3. IP аутентификатор
Этот тип аутентификации предоставляет доступ к службам на основе IP-адреса клиента.
Для создания IP аутентификатора нужно перейти в раздел Аутентификаторы и нажать кнопку НовыйIP аутентификатор.
Минимальные параметры конфигурации (вкладка Основной): имя аутентификатора, приоритет и метка.
OpenUDS. IP аутентификатор
После создания аутентификатора необходимо определить группы, соответствующие диапазонам IP-адресов:
  • IP-адреса (192.168.0.33,192.168.0.110);
  • диапазон IP-адресов (192.168.0.1-192.168.0.55);
  • подсеть (192.168.0.0/24).
OpenUDS. IP аутентификатор — создание группы пользователей

58.3.3.2. Многофакторная аутентификация (МФА)

Многофакторная аутентификация добавляет дополнительный уровень защиты при входе в систему.
OpenUDS. Доступные методы МФА
OpenUDS поддерживает следующие методы МФА:
  • Многофакторная электронная почта;
  • Радиус OTP Challenge;
  • SMS через HTTP;
  • МФА на основе TOTP.
Также возможна интеграция с другими системами МФА, встроенными в сам аутентификатор.
58.3.3.2.1. Многофакторная аутентификация по электронной почте
При использовании этого метода после ввода логина и пароля пользователю отправляется письмо с одноразовым кодом. Для завершения входа необходимо ввести этот код.
Настройка:
  • вкладка Основной:
    • Имя — название метода МФА;
    • Кеширование устройства — время (в часах), в течение которого МФА не запрашивается повторно с того же устройства;
    • Срок действия кода МФА — время (в минутах), в течение которого код остаётся действительным;
    OpenUDS. Многофакторная электронная почта (Основной)
  • вкладка SMTP-сервер:
    • SMTP-хост — адрес SMTP-сервера (при необходимости указывается порт: host:port);
    • Безопасность — тип защиты соединения;
    • Имя пользователя — учётная запись с правами на отправку писем через указанный SMTP-сервер;
    • Пароль — пароль для указанной учётной записи;
    OpenUDS. Многофакторная электронная почта (SMTP-сервер)
  • вкладка Конфигурация:
    • Тема — заголовок письма;
    • Отправитель — адрес электронной почты, используемый в качестве отправителя;
    • Включить HTML — если включено, используется шаблон из поля Почтовый HTML, иначе — шаблон из поля Текст сообщения;
    • Текст сообщения — текст письма в формате plain text. Если пусто, используется сообщение по умолчанию. Доступны переменные:
      • {code} — одноразовый код;
      • {ip} — IP-адрес пользователя;
      • {username} — имя пользователя с доменом;
      • {justUsername} — имя пользователя без домена;
    • Почтовый HTML — HTML-шаблон письма. Если пусто, используется HTML-шаблон по умолчанию. Поддерживает те же переменные, что и поле Текст сообщения;
    • Политика для пользователей без поддержки МФА — определяет действия при отсутствии настройки второго фактора у пользователя.
    OpenUDS. Многофакторная электронная почта (вкладка «Конфигурация»)

Примечание

Для пользователей внутренней базы данных адрес электронной почты для МФА необходимо указать в поле МФА профиля пользователя:
OpenUDS. Настройка МФА для локального пользователя
Для доменных пользователей (Аутентификатор Regex LDAP) адрес электронной почты берётся из атрибута, указанного в настройках аутентификатора в поле (поле Атрибут многофакторной аутентификации):
OpenUDS. Настройка МФА для доменного пользователя
58.3.3.2.2. МФА на основе TOTP
При использовании этого метода, после ввода логина и пароля пользователь должен ввести одноразовый код, генерируемый в приложении (Google Authenticator, FreeOTP и др.).
При входе в систему пользователь без настроенного TOTP получает QR-код для самостоятельной регистрации. Пользователь с настроенным TOTP вводит текущий код.
Настройка:
  • вкладка Основной:
    • Имя — название метода МФА;
    • Эмитент — название организации (нельзя изменить после создания);
    • Кеширование устройства — время (в часах), в течение которого МФА не запрашивается повторно с того же устройства;
    • Срок действия кода МФА — время (в минутах), в течение которого код остаётся действительным;
    OpenUDS. МФА на основе TOTP (Основной)
  • вкладка Конфигурация:
    • Действительное окно — количество допустимых кодов до и после текущего (для компенсации рассинхронизации);
    • TOTP-сети — список сетей, из которых не требуется ввод одноразового пароля.
    OpenUDS. МФА на основе TOTP (вкладка «Конфигурация»)

58.3.4. Настройка менеджера ОС

OpenUDS Actor, установленный на виртуальном рабочем столе, обеспечивает взаимодействие между ОС и сервером OpenUDS в соответствии с конфигурацией выбранного менеджера ОС.

Примечание

Менеджер ОС требуется для каждой службы, развёрнутой в OpenUDS, за исключением случаев использования поставщика машин статических IP.
OpenUDS. Выбор менеджера ОС
Менеджер ОС управляет жизненным циклом виртуальных рабочих столов и выполняет задачи в зависимости от типа ОС и её участия в домене:
  • Менеджер ОС Linux Active Directory — для виртуальных рабочих столов на базе Linux, входящих в домен Active Directory или FreeIPA;
  • Linux ОС менеджер — для виртуальных рабочих столов на базе Linux без домена (выполняет переименование, управление сеансами);
  • Windows Basic ОС менеджер — для виртуальных рабочих столов на базе Windows без домена;
  • Windows Domain ОС менеджер — для виртуальных рабочих столов на базе Windows, входящих в домен Active Directory.

58.3.4.1. Linux ОС менеджер/Windows Basic ОС менеджер

Настройки для Linux ОС менеджер и Windows Basic ОС менеджер:
  • вкладка Основной:
    • Имя — название менеджера;
    • Максимальное время простоя — время бездействия (в секундах), по истечении которого OpenUDS Actor автоматически завершит сеанс. Значения менее 300 секунд или отрицательные отключают эту функцию;
    OpenUDS. Настройка Linux ОС менеджер (вкладка «Основной»)
  • вкладка Расширенный:
    • Действие при выходе из системы — определяет поведение ВМ после завершения сеанса:
      • Держать сервис привязанным — для постоянных пулов: ВМ перезапускается, и при следующем входе пользователь получает тот же рабочий стол;
      • Удалить сервис — для непостоянных пулов: ВМ удаляется и создаётся заново из шаблона;
      • Держать сервис привязанным даже в новой публикации — сохраняет привязку к пользователю даже при обновлении публикации;
    • Выход по календарю — если включено, OpenUDS попытается завершить сеанс пользователя при окончании действия календарного правила. Если отключено, пользователю будет разрешено продолжить работу за пределами расписания.
    OpenUDS. Настройка Linux ОС менеджер (вкладка «Расширенный»)

58.3.4.2. Менеджер ОС Linux Active Directory

Примечание

Для присоединения компьютера к домену на нём должен быть настроен DNS-сервер, содержащий записи контроллера домена (Active Directory или FreeIPA).
Минимальные настройки для Менеджер ОС Linux Active Directory:
  • вкладка Основной:
    • Имя — название менеджера;
    • Домен — домен, к которому будут присоединяться ВМ (указывается в формате FQDN, например, test.alt);
    • Аккаунт — учётная запись с правами на добавление машин в домен;
    • Пароль — пароль указанного пользователя;
    • OU — организационная единица, в которую будут добавляться ВМ. Если не указано, компьютеры регистрируются в контейнере по умолчанию — Computers. Формат OU: OU = name_OU_last_level, … OU = name_OU_first_level, DC = name_domain, DC = extension_domain. Во избежание ошибок, рекомендуется сверяться со значением атрибута distinguishedName в свойствах целевой OU;
    • Максимальное время простоя — время бездействия (в секундах), по истечении которого OpenUDS Actor автоматически завершит сеанс. Значения менее 300 секунд или отрицательные отключают эту функцию;
    OpenUDS. Менеджер ОС Linux Active Directory (вкладка «Основной»)
  • вкладка Расширенный:
    • Клиентское программное обеспечение — способ интеграции с доменом:SSSD или Winbind;
    • Программное обеспечение для членства — утилита для присоединения к домену: Samba или adcli;
    • Убрать машину — если включено, после удаления ВМ из пула её запись также удаляется из домена (пользователь, указанный в поле Аккаунт, должен иметь права на удаление объектов в заданной OU);
    • Серверное программное обеспечение — тип домена: Active Directory, FreeIPA;
    • Использовать SSL — включает защищённое соединение с контроллером домена;
    • Автоматическое сопоставление идентификаторов — включает автоматическое маппинг ID (например, UID/GID);
    • Действие при выходе из системы — определяет поведение ВМ после завершения сеанса:
      • Держать сервис привязанным — для постоянных пулов: ВМ перезапускается, и при следующем входе пользователь получает тот же рабочий стол;
      • Удалить сервис — для непостоянных пулов: ВМ удаляется и создаётся заново из шаблона;
      • Держать сервис привязанным даже в новой публикации — сохраняет привязку к пользователю даже при обновлении публикации;
    • Выход по календарю — если включено, OpenUDS попытается завершить сеанс пользователя при окончании действия календарного правила. Если отключено, пользователю будет разрешено продолжить работу за пределами расписания.
    OpenUDS. Менеджер ОС Linux Active Directory (вкладка «Расширенный»)

58.3.4.3. Windows Domain ОС менеджер

Настройки для Windows Domain ОС менеджер:
  • вкладка Основной:
    • Имя — название менеджера;
    • Домен — домен, к которому будут присоединяться ВМ (указывается в формате FQDN, например, test.alt);
    • Аккаунт — учётная запись с правами на добавление машин в домен;
    • Пароль — пароль указанного пользователя;
    • OU — организационная единица, в которую будут добавляться ВМ. Если не указано, компьютеры регистрируются в контейнере по умолчанию — Computers. Формат OU: OU = name_OU_last_level, … OU = name_OU_first_level, DC = name_domain, DC = extension_domain. Во избежание ошибок, рекомендуется сверяться со значением атрибута distinguishedName в свойствах целевой OU;
    • Максимальное время простоя — время бездействия (в секундах), по истечении которого OpenUDS Actor автоматически завершит сеанс. Значения менее 300 секунд или отрицательные отключают эту функцию.
    OpenUDS. Windows Domain ОС менеджер (вкладка «Основной»)
  • вкладка Расширенный:
    • Группа машин — указывает, к какой группе машин AD будут добавлены виртуальные рабочие столы, созданные UDS;
    • Убрать машину — если включено, после удаления ВМ из пула её запись также удаляется из домена (пользователь, указанный в поле Аккаунт, должен иметь права на удаление объектов в заданной OU);
    • Предпочитаемый сервер — если серверов AD несколько, можно указать, какой из них использовать предпочтительнее;
    • Действие при выходе из системы — определяет поведение ВМ после завершения сеанса:
      • Держать сервис привязанным — для постоянных пулов: ВМ перезапускается, и при следующем входе пользователь получает тот же рабочий стол;
      • Удалить сервис — для непостоянных пулов: ВМ удаляется и создаётся заново из шаблона;
      • Держать сервис привязанным даже в новой публикации — сохраняет привязку к пользователю даже при обновлении публикации;
    • Использовать SSL — включает защищённое соединение с контроллером домена;
    • Выход по календарю — если включено, OpenUDS попытается завершить сеанс пользователя при окончании действия календарного правила. Если отключено, пользователю будет разрешено продолжить работу за пределами расписания.
    OpenUDS. Windows Domain ОС менеджер (вкладка «Расширенный»)

58.3.5. Транспорт

Для подключения к виртуальным рабочим столам необходимо создать транспорт. Транспорт — это клиентское приложение, отвечающее за предоставление доступа к реализованной службе.
Можно создать один транспорт для нескольких «пулов» или назначить отдельный транспорт каждому «пулу».
При создании транспорта необходимо выбрать его тип:
  • Прямой (Direct) — используется, если пользователь имеет прямой доступ к виртуальным рабочим столам (например, через локальную сеть LAN или VPN);
  • Туннельный (Tunneled) — используется, если прямое подключение к рабочему столу недоступно.
OpenUDS. Настройка «Транспорт»

58.3.5.1. RDP (прямой)

Этот транспорт позволяет пользователям подключаться к виртуальным рабочим столам под управлением Windows или Linux.
На клиентских устройствах и на виртуальных рабочих столах должен быть установлен и включён протокол RDP (для виртуальных рабочих столов Linux необходимо использовать XRDP).
Параметры конфигурации транспорта RDP:
  • вкладка Основной:
    • Имя — название транспорта;
    • Приоритет — определяет порядок отображения транспорта в списке доступных для сервиса. Чем меньше значение, тем выше приоритет. Транспорт с наименьшим значением будет использоваться по умолчанию;
    • Сервис-пулы — позволяет назначить транспорт одному или нескольким ранее созданным пулам услуг. Если оставить поле пустым, выбор транспорта можно будет выполнить при настройке пула услуг;
    Настройка RDP. Вкладка Основной
  • вкладка Учётные данные:
    • Пропустить данные аккаунта — если включено, учётные данные для подключения к рабочему столу будут запрашиваться у пользователя при установке соединения. Если отключено, будут использоваться учётные данные, указанные в OpenUDS (см. ниже);
    • Имя пользователя — имя пользователя для доступа к рабочему столу (пользователь должен существовать на ВМ). Если поле пусто, будет использован логин пользователя, авторизованного в веб-интерфейсе OpenUDS;
    • Пароль — пароль указанного пользователя;
    • Без домена — если включено, домен не передаётся вместе с именем пользователя. Эквивалентно пустому полю Домен;
    • Домен — домен пользователя. Если указан, учётные данные будут передаваться в формате DOMAIN\user;
    Настройка RDP. Вкладка Учётные данные
  • на вкладке Параметры можно разрешить или запретить перенаправления дисков, принтеров и других устройств:
    Настройка RDP. Вкладка Параметры
  • на вкладке Экран/Дисплей настраиваются параметры отображения рабочего стола (разрешение, цветность и т.д.):
    Настройка RDP. Вкладка Экран/Дисплей
  • вкладка Linux Client:
    • Мультимедийная синхронизация — включает поддержку мультимедиа в клиенте FreeRDP;
    • Использовать Alsa — включает вывод звука через систему ALSA;
    • Строка принтера — имя принтера, используемого клиентом FreeRDP (если включено перенаправление принтеров). Пример: «HP_LaserJet_M1536dnf_MFP» (список доступных принтеров можно получить командой lpstat -a);
    • Строка Smartcard — имя токена, используемый клиентом FreeRDP (если включено перенаправление смарт-карт). Пример: «Aktiv Rutoken ECP 00 00»;
    • Пользовательские параметры — дополнительные параметры, поддерживаемые клиентом FreeRDP;
    Настройка RDP. Вкладка Linux Client
  • вкладка Расширенный:
    • Сетевая фильтрация — разрешает или запрещает доступ к службе в зависимости от сети, из которой выполняется подключение;
    • Сети — сетевые диапазоны, подсети или IP-адреса (настраиваются в разделе Сети). Пустое поле означает «все сети». Используется совместно с параметром Сетевой доступ;
    • Разрешенные устройства — ограничивает доступ только указанными устройствами. Пустое поле означает «все устройства»;
    • Метка — метка транспорта для метапула (используется при назначении нескольких транспортов одному метапулу).
    Настройка RDP. Вкладка Расширенный

58.3.5.2. RDP (туннельный)

Все настройки аналогичны прямому RDP-транспорту, за исключением параметров на вкладке Туннель.
Вкладка Туннель:
  • Туннельный сервер — туннель, через который будет устанавливаться соединение. Туннель должен быть предварительно создан (см. раздел Туннели);
  • Время ожидания туннеля — максимальное время ожидания установки туннельного соединения;
  • Принудительная проверка SSL-сертификата — включает обязательную проверку SSL-сертификата туннельного сервера.
Настройка RDP. Вкладка Туннель

58.3.5.3. X2Go (прямой)

X2Go позволяет пользователям получать доступ к виртуальным рабочим столам под управлением Linux.
На клиентских устройствах должен быть установлен клиент X2Go, а на виртуальных рабочих столах (серверах) — сервер X2Go, который должен быть запущен и настроен.
Параметры конфигурации транспорта X2Go:
  • вкладка Основной:
    • Имя — название транспорта;
    • Приоритет — определяет порядок отображения транспорта в списке доступных для сервиса. Чем меньше значение, тем выше приоритет. Транспорт с наименьшим значением будет использоваться по умолчанию;
    • Сервис-пулы — позволяет назначить транспорт одному или нескольким ранее созданным пулам услуг. Если оставить поле пустым, выбор транспорта можно будет выполнить при настройке пула услуг;
    Настройка X2Go. Вкладка Основной
  • вкладка Учётные данные:
    • Имя пользователя — имя пользователя для доступа к рабочему столу (пользователь должен существовать на ВМ). Если поле пусто, будет использован логин пользователя, авторизованного в веб-интерфейсе OpenUDS;
    Настройка X2Go. Вкладка Учётные данные
  • вкладка Параметры:
    • Размер экрана — размер окна рабочего стола;
    • Экран — менеджер рабочего стола (например, Xfce, MATE и др.) или режим виртуализации приложений Linux (UDS vAPP);
    • vAPP — полный путь к приложению (заполняется, если в поле Экран выбрано значение UDS vAPP);
    • Включить звук — разрешает передачу звука;
    • Перенаправить домашнюю папку — монтирует домашнюю папку клиента в сессию на виртуальном рабочем столе (в Linux также перенаправляется каталог /media);
    • Скорость — ожидаемая скорость сетевого соединения (влияет на настройки сжатия и качества);
    Настройка X2Go. Вкладка Параметры
  • вкладка Расширенный:
    • Звук — тип звукового сервера;
    • Клавиатура — раскладка клавиатуры;
    • Метод сжатия — алгоритм сжатия трафика (изменять с осторожностью);
    • Качество — качество изображения, применяемое при некоторых методах сжатия;
    • Сетевая фильтрация — разрешает или запрещает доступ к службе в зависимости от сети, из которой выполняется подключение;
    • Сети — сетевые диапазоны, подсети или IP-адреса (настраиваются в разделе Сети). Пустое поле означает «все сети». Используется совместно с параметром Сетевой доступ;
    • Разрешенные устройства — ограничивает доступ только указанными устройствами. Пустое поле означает «все устройства»;
    • Метка — метка транспорта для метапула (используется при назначении нескольких транспортов одному метапулу).
    Настройка X2Go. Вкладка Расширенный

58.3.5.4. X2Go (туннельный)

Все настройки аналогичны прямому X2Go-транспорту, за исключением параметров на вкладке Туннель.
Вкладка Туннель:
  • Туннельный сервер — туннель, через который будет устанавливаться соединение. Туннель должен быть предварительно создан (см. раздел Туннели);
  • Время ожидания туннеля — максимальное время ожидания установки туннельного соединения;
  • Принудительная проверка SSL-сертификата — включает обязательную проверку SSL-сертификата туннельного сервера.
Настройка X2Go. Вкладка Туннель

58.3.5.5. SPICE (прямой)

Примечание

Транспортный протокол SPICE поддерживается только в связке с платформами виртуализации oVirt/RHEV, OpenNebula и PVE.
SPICE позволяет пользователям подключаться к виртуальным рабочим столам под управлением Windows или Linux.
На клиентских устройствах должен быть установлен SPICE-клиент (например, virt-viewer или remote-viewer).

Важно

Для корректной работы прямого SPICE-подключения имена узлов платформы виртуализации (гипервизоров) должны корректно разрешаться в IP-адреса как на сервере OpenUDS, так и на клиентских устройствах, с которых выполняется подключение.
Параметры конфигурации транспорта SPICE:
  • вкладка Основной:
    • Имя — название транспорта;
    • Приоритет — определяет порядок отображения транспорта в списке доступных для сервиса. Чем меньше значение, тем выше приоритет. Транспорт с наименьшим значением будет использоваться по умолчанию;
    • Сертификат — сертификат, сгенерированный в ovirt-engine/RHV-manager или OpenNebula. Требуется для установки защищённого подключения к виртуальным рабочим столам;
    • Сервис-пулы — позволяет назначить транспорт одному или нескольким ранее созданным пулам услуг. Если оставить поле пустым, выбор транспорта можно будет выполнить при настройке пула услуг;
    Настройка SPICE. Вкладка Основной
  • вкладка Расширенный:
    • Полноэкранный режим — включает полноэкранный режим при запуске сессии;
    • Включить USB — разрешает перенаправление USB-устройств;
    • SSL-соединение — использовать зашифрованное SSL-соединение;
    • Переопределить прокси — позволяет указать собственный прокси-сервер для подключения к сервису вместо того, что предоставляет гипервизор (формат http://хост:порт);
    • Сетевая фильтрация — разрешает или запрещает доступ к службе в зависимости от сети, из которой выполняется подключение;
    • Сети — сетевые диапазоны, подсети или IP-адреса (настраиваются в разделе Сети). Пустое поле означает «все сети». Используется совместно с параметром Сетевой доступ;
    • Разрешенные устройства — ограничивает доступ только указанными устройствами. Пустое поле означает «все устройства»;
    • Метка — метка транспорта для метапула (используется при назначении нескольких транспортов одному метапулу).
    Настройка SPICE. Вкладка Расширенный

58.3.5.6. HTML5 RDP (туннельный)

Транспорт HTML5 RDP позволяет пользователям подключаться к виртуальным рабочим столам под управлением Windows или Linux через браузер, поддерживающий HTML5, с использованием протокола RDP.
На виртуальных рабочих столах должен быть установлен и включён протокол RDP (для виртуальных рабочих столов Linux необходимо использовать xRDP).
Параметры конфигурации транспорта HTML5 RDP:
  • вкладка Основной:
    • Имя — название транспорта;
    • Приоритет — определяет порядок отображения транспорта в списке доступных для сервиса. Чем меньше значение, тем выше приоритет. Транспорт с наименьшим значением будет использоваться по умолчанию;
    • Сервис-пулы — позволяет назначить транспорт одному или нескольким ранее созданным пулам услуг. Если оставить поле пустым, выбор транспорта можно будет выполнить при настройке пула услуг;
    Настройка HTML5 RDP. Вкладка Основной
  • вкладка Туннель:
    • Туннельный сервер — туннель, через который будет устанавливаться соединение. Туннель должен быть предварительно создан (см. раздел Туннели);
    Настройка HTML5 RDP. Вкладка Туннель
  • вкладка Учётные данные:
    • Пропустить данные аккаунта — если включено, учётные данные для подключения к рабочему столу будут запрашиваться у пользователя при установке соединения. Если отключено, будут использоваться учётные данные, указанные в OpenUDS (см. ниже);
    • Имя пользователя — имя пользователя для доступа к рабочему столу (пользователь должен существовать на ВМ). Если поле пусто, будет использован логин пользователя, авторизованного в веб-интерфейсе OpenUDS;
    • Пароль — пароль указанного пользователя;
    • Без домена — если включено, домен не передаётся вместе с именем пользователя. Эквивалентно пустому полю Домен;
    • Домен — домен пользователя. Если указан, учётные данные будут передаваться в формате DOMAIN\user;
    Настройка HTML5 RDP. Вкладка Учётные данные
  • вкладка Параметры:
    • Показать обои — отображать обои рабочего стола;
    • Разрешить композицию рабочего стола — включить функцию «Desktop Composition»;
    • Сглаживание шрифтов — активировать сглаживание шрифтов;
    • Включить аудио — перенаправлять звук с рабочего стола на клиент;
    • Включить микрофон — разрешить использование микрофона на виртуальном рабочем столе;
    • Включить печать — разрешить печать с виртуального рабочего стола;
    • Обмен файлами — определяет политику обмена файлами между виртуальным рабочим столом и клиентом. При включении создаётся временный каталог на сервере OpenUDS Tunnel, который используется для передачи файлов;
    • Буфер обмена — настройка общего буфера обмена между клиентом и рабочим столом;
    • Раскладка — раскладка клавиатуры, используемая в сессии;
    Настройка HTML5 RDP. Вкладка Параметры
  • вкладка Расширенный:
    • Срок действия билета — допустимое время (в секундах), в течение которого клиент HTML5 может обновлять данные из OpenUDS Broker (рекомендуемое значение — 60);
    • Открывать HTML в новом окне — указывает, следует ли открывать подключение в новом окне браузера;
    • Безопасность — уровень безопасности RDP-соединения;
    • Порт RDP — порт RDP-сервера (по умолчанию — 3389);
    • Сетевая фильтрация — разрешает или запрещает доступ к службе в зависимости от сети, из которой выполняется подключение;
    • Сети — сетевые диапазоны, подсети или IP-адреса (настраиваются в разделе Сети). Пустое поле означает «все сети». Используется совместно с параметром Сетевой доступ;
    • Разрешенные устройства — ограничивает доступ только указанными устройствами. Пустое поле означает «все устройства»;
    • Метка — метка транспорта для метапула (используется при назначении нескольких транспортов одному метапулу).
    Настройка HTML5 RDP. Вкладка Расширенный

58.3.5.7. HTML5 SSH (туннельный)

Транспорт HTML5 SSH позволяет пользователям подключаться к виртуальным рабочим столам Linux по протоколу SSH через браузер, поддерживающий HTML5.
На целевых машинах должен быть запущен SSH-сервер.
Этот транспорт особенно полезен для подключения к серверам Linux без графической оболочки (без оконного менеджера или среды рабочего стола).
Параметры конфигурации транспорта HTML5 SSH:
  • вкладка Основной:
    • Имя — название транспорта;
    • Приоритет — определяет порядок отображения транспорта в списке доступных для сервиса. Чем меньше значение, тем выше приоритет. Транспорт с наименьшим значением будет использоваться по умолчанию;
    • Сервис-пулы — позволяет назначить транспорт одному или нескольким ранее созданным пулам услуг. Если оставить поле пустым, выбор транспорта можно будет выполнить при настройке пула услуг;
    Настройка HTML5 SSH. Вкладка Основной
  • вкладка Туннель:
    • Туннельный сервер — туннель, через который будет устанавливаться соединение. Туннель должен быть предварительно создан (см. раздел Туннели);
    Настройка HTML5 SSH. Вкладка Туннель
  • вкладка Учётные данные:
    • Имя пользователя — имя пользователя для доступа к рабочему столу (пользователь должен существовать на ВМ). Если поле пусто, будет использован логин пользователя, авторизованного в веб-интерфейсе OpenUDS;
    Настройка HTML5 SSH. Вкладка Учётные данные
  • вкладка Параметры:
    • Обмен файлами — политика обмена файлами между удалённым сервером и клиентом;
    • SSH-команда — команда, выполняемая на удалённом сервере после подключения. Если поле пусто, запускается интерактивная оболочка:
      OpenUDS. Подключение по HTML5 SSH
    • Корень общего доступа к файлам — корневой каталог для файлового обмена. Если не указан, используется корневой каталог (/);
    • Порт SSH-сервера — порт SSH-сервера (по умолчанию — 22);
    • Ключ хоста SSH — публичный ключ хоста. Если не указан, проверка подлинности хоста выполняться не будет;
    • Поддержка сервера в рабочем состоянии — интервал (в секундах) между сообщениями keep-alive, отправляемыми на сервер для поддержания соединения. Если не указан, такие сообщения не отправляются;
    Настройка HTML5 SSH. Вкладка Параметры
  • вкладка Расширенный:
    • Срок действия билета — допустимое время (в секундах), в течение которого клиент HTML5 может обновлять данные из OpenUDS Broker (рекомендуемое значение — 60);;
    • Открывать HTML в новом окне — указывает, следует ли открывать подключение в новом окне браузера;
    • Сетевая фильтрация — разрешает или запрещает доступ к службе в зависимости от сети, из которой выполняется подключение;
    • Сети — сетевые диапазоны, подсети или IP-адреса (настраиваются в разделе Сети). Пустое поле означает «все сети». Используется совместно с параметром Сетевой доступ;
    • Разрешенные устройства — ограничивает доступ только указанными устройствами. Пустое поле означает «все устройства»;
    • Метка — метка транспорта для метапула (используется при назначении нескольких транспортов одному метапулу).
    Настройка HTML5 SSH. Вкладка Расширенный

Примечание

После входа на удалённый сервер, в зависимости от настроек политики обмена файлами, можно загружать файлы на сервер и скачивать их с него.
Для загрузки файлов необходимо:
  1. Открыть окно настроек с помощью сочетания клавиш Ctrl+Shift+Alt.
  2. В поле Устройства выбрать нужное устройство.
  3. Нажать кнопку Загрузка файлов и выбрать файл.
Ход передачи файла отображается в левом нижнем углу окна.
HTML5 SSH. Передача файлов

58.3.6. Сети

В OpenUDS можно зарегистрировать различные сети для управления доступом клиентов к виртуальным рабочим столам и приложениям. Эти сети в сочетании с транспортом определяют, какой тип подключения будет доступен пользователям.
Чтобы добавить сеть, следует перейти в раздел Сети и нажать кнопку Новый:
OpenUDS. Добавление новой сети
В открывшемся окне указать название сети и сетевой диапазон. В качестве диапазона можно задать один из следующих вариантов:
  • одиночный IP-адрес: xxx.xxx.xxx.xxx (например, 192.168.0.33);
  • подсеть: xxx.xxx.xxx.xxx/x (например, 192.168.0.0/24);
  • диапазон IP-адресов: xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx (например, 192.168.0.1–192.168.0.50).
OpenUDS. Добавление новой сети
После создания сетей их можно указывать при создании или редактировании транспорта. Это позволяет настроить отображение транспорта для клиентов в зависимости от их сетевого расположения:
OpenUDS. Выбор сети при редактировании транспорта
Если для транспорта не указаны сети, доступ к соответствующим рабочим столам и виртуальным приложениям будет разрешён из любой сети.

58.3.7. Туннели

В разделе Туннели можно настроить туннельные серверы, используемые транспортами для организации подключений пользователей к сервисам. Эти серверы применяются как для туннельных протоколов, так и для HTML5-подключений.
Чтобы использовать туннельный сервер, его необходимо настроить и зарегистрировать на сервере OpenUDS (см. Установка и настройка сервера OpenUDS Tunnel). Зарегистрированные серверы отображаются в разделе ИнструментыТокеныСерверы:
OpenUDS. Зарегистрированные туннельные серверы
Чтобы добавить туннель, следует перейти в раздел Туннели и нажать кнопку Новый:
OpenUDS. Добавление нового туннеля
В открывшемся окне следует указать следующие параметры:
  • Имя — название туннеля;
  • Узел — IP-адрес или имя туннельного сервера (если туннельных серверов несколько и они находятся за балансировщиком нагрузки, необходимо указать адрес балансировщика);
  • Порт — порт, на котором работает туннельный сервер. По умолчанию туннельный сервер прослушивает порт 7777.
OpenUDS. Новый туннель
Значения в полях Узел и Порт могут отличаться в зависимости от способа предоставления сервиса. Можно использовать:
  • внутренние IP-адреса или имена с портами по умолчанию (7777, 8080, 10443);
  • публичные IP-адреса или доменные имена с другими портами, если на стороне сервера настроено перенаправление трафика на стандартные порты туннельного сервера.
Сервер туннелей поддерживает два типа соединений:
  • Туннельные соединения — по умолчанию используют порт 7777;
  • Соединения HTML5 — по умолчанию используют порты 8080 (HTTP) и 10443 (HTTPS).
Можно назначить любой другой порт, если на туннельном сервере настроено перенаправление на соответствующий стандартный порт.
OpenUDS. Новый HTML5-туннель

Примечание

Для установки соединения клиенты должны иметь сетевой доступ к указанному IP-адресу/имени и порту.

58.3.8. Пулы услуг

После того как созданы и настроены хотя бы один поставщик услуг с соответствующей службой/услугой, аутентификатор (с пользователем и группой), менеджер ОС и транспорт, можно создать пул услуг (Сервис-пул) для публикации виртуальных рабочих столов или приложений.
Для создания пула услуг необходимо перейти в раздел Сервис-пулы и нажать кнопку Новый:
OpenUDS. Создать пул услуг
Заполнить параметры конфигурации:
  • вкладка Основной:
    • Имя — название службы, отображаемое пользователю при доступе к рабочему столу или виртуальному приложению. В этом поле можно использовать следующие переменные:
      • {use} — процент использования пула (рассчитывается на основе максимального количества предоставляемых сервисов и текущего числа назначенных услуг);
      • {total} — общее количество машин (значение из поля Максимальное количество предоставляемых сервисов);
      • {usec} — количество машин, используемых пользователями в пуле;
      • {left} — количество машин, доступных для подключения;
    • Базовый сервис — служба, созданная ранее в поставщике услуг (состоит из поставщика и базовой услуги);
    • ОС Менеджер — ранее созданный менеджер ОС, конфигурация которого применяется ко всем виртуальным рабочим столам или приложениям в пуле;

      Примечание

      Если выбран тип услуги Статический IP, это поле не используется.
    • Публиковать при создании — если включено, система автоматически запустит первую публикацию после сохранения пула. Если отключено, публикацию необходимо запустить вручную через вкладку Публикации;
    OpenUDS. Новый пул услуг (вкладка «Основной»)
  • вкладка Экран/Дисплей:
    • Видимый — если отключено, пул не отображается у пользователей;
    • Привязанный образ — изображение, связанное с услугой. Изображение должно быть предварительно загружено в репозиторий изображений (раздел ИнструментыГалерея);
    • Пул-группа — позволяет группировать различные службы. Группа должна быть предварительно создана в разделе ПулыГруппа;
    • Доступ к календарю запрещён — сообщение, отображаемое пользователю, если доступ к сервису ограничен правилами календаря;
    • Персонализированное сообщения о запуске — сообщение, показываемое пользователю при попытке запуска службу;
    • Включить персонализированное сообщения о запуске — активирует отображение указанного сообщения;
    OpenUDS. Новый пул услуг (вкладка «Экран/Дисплей»)
  • вкладка Расширенный:
    • Разрешить удаление пользователями — если включено, пользователи могут удалять назначенные им службы. Для автоматически созданных виртуальных рабочих столов OpenUDS: ВМ будет удалена, и при следующем подключении пользователю будет назначена новая. Для других типов (vAPP, статический IP): удаляется только назначение; новое назначение происходит при следующем подключении;
    • Разрешить сброс пользователям — позволяет пользователям перезапускать или сбрасывать свои службы (применяется только к автоматически созданным виртуальным рабочим столам);
    • Игнорировать неиспользуемые — если включено, непостоянные пользовательские службы, которые не используются, не будут автоматически удаляться;
    • Показать транспорты — если включено, отображаются все назначенные транспорты. В противном случае показывается только транспорт по умолчанию (с наивысшим приоритетом);
    • Учётные записи — назначение услуги ранее созданным аккаунтам (ПулыАккаунты);
    OpenUDS. Новый пул услуг (вкладка «Расширенный»)
  • вкладка Доступность:
    • Первоначально доступные сервисы — минимальное количество виртуальных рабочих столов, которые создаются, настраиваются и готовы к немедленному назначению;
    • Сервисы для удержания в кеше — количество виртуальных рабочих столов, постоянно находящихся в состоянии готовности к назначению. Эти машины автоматически создаются до достижения лимита, заданного в поле Максимальное количество предоставляемых сервисов);
    • Сервисы, хранящиеся в L2 кеше — количество ВМ в спящем или выключенном состоянии. Такие рабочие столы никогда не назначаются напрямую пользователям, но могут быть быстро активированы по запросу;
    • Максимальное количество предоставляемых сервисов — верхний предел числа виртуальных рабочих столов, которые может создать система в данном пуле.

      Примечание

      ВМ в L2-кеше не учитываются в этом лимите.
    OpenUDS. Новый пул услуг (вкладка «Доступность»)
После нажатия кнопки Сохранить система начнет создавать виртуальные рабочие столы в соответствии с настроенными параметрами кеширования.
После создания пула необходимо настроить доступ и транспорты. Для этого следует открыть его настройки (дважды щелкнуть мышью по строке созданного пула или в контекстном меню пула выбрать пункт Подробность) и выполнить следующие действия:
  • на вкладке Группы назначить группы доступа (выбрать аутентификатор и группу, которой разрешён доступ к этому пулу):
    OpenUDS. Назначение группы пулу услуг
  • на вкладке Транспорты выбрать способы подключения пользователей к рабочему столу:
    OpenUDS. Выбор способов подключения к пулу услуг

58.3.9. Мета-пулы

Виртуальные рабочие столы и приложения можно объединять в мета-пулы — логические группы, упрощающие управление и организацию доступа. Мета-пул позволяет пользователям получать доступ к ресурсам из разных пулов услуг единым, прозрачным образом. Для пользователя такая служба выглядит как один сервис, хотя на самом деле она объединяет несколько независимых пулов.
Пулы услуг, входящие в состав мета-пула, работают в соответствии с заданной политикой распределения, которая определяет, как и когда предоставляются те или иные услуги.
Чтобы создать Мета-пул необходимо перейти в раздел Мета-пулы и нажать кнопку Новый:
OpenUDS. Создать мета-пул
Заполнить параметры конфигурации:
  • вкладка Основной:
    • Имя — название мета-пула, отображаемое пользователю при доступе к службе:
    • Короткое имя — альтернативное название, которое будет показано в интерфейсе. При наведении курсора на него отображается полное имя из поля Имя;
    • Политика балансировки нагрузки — определяет как выбираются пулы услуг при предоставлении сервисов:
      • Равномерно распределённые — услуги создаются и используются равномерно по всем пулам, входящим в мета-пул;
      • Приоритет — сначала используются пулы с наивысшим приоритетом (чем меньше значение поля Приоритет, тем выше приоритет). После достижения лимита по максимальному количеству сервисов в таком пуле система переходит к следующему по приоритету;
      • Больше % доступно — предпочтение отдаётся пулу с наибольшим процентом свободных (доступных) сервисов;
    • Политика высокой доступности — если включена, при недоступности одного из пулов его сервисы будут автоматически перенаправляться в другие пулы мета-пула (эту опцию следует использовать с осторожностью, так как она может повлиять на стабильность и предсказуемость работы);
    OpenUDS. Новый мета-пула — вкладка «Основной»
  • вкладка Экран/Дисплей:
    • Привязанный образ — изображение, связанное с мета-пулом. Изображение должно быть предварительно загружено в репозиторий изображений (раздел ИнструментыГалерея);
    • Пул-группа — позволяет объединять мета-пулы в логические группы. Группа должна быть создана заранее в разделе ПулыГруппа;
    • Видимый — если отключено, мета-пул не отображается у пользователей;
    • Доступ к календарю запрещён — сообщение, показываемое пользователю, если доступ к сервису ограничен правилами календаря;
    • Выбор транспорта — определяет, как назначаются транспорты для мета-пула:
      • Автоматический выбор — используется ранспорт с наивысшим приоритетом (наименьшим значением) из назначенных пулу услуг. Пользователь не может выбирать транспорт вручную;
      • Использовать только общие транспорты — в мета-пуле доступны только те транспорты, которые назначены всем пулам услуг, входящим в мета-пул;
      • Группировать транспорты по метке — доступны только транспорты, имеющие метку, указанную в настройках транспорта на вкладке Расширенный).
    OpenUDS. Новый мета-пула — вкладка «Экран/Дисплей»
После создания мета-пула необходимо добавить в него конкретные пулы услуг. Для этого следует открыть настройки мета-пула (дважды щелкнуть мышью по строке созданного пула или выбрать Подробность в контекстном меню пула) и на вкладке Пулы услуг нажать кнопку Новый:
OpenUDS. Добавление пула служб в мета-пул
Для каждого добавляемого пула необходимо указать:
  • Приоритет — приоритет данного пула внутри мета-пула (чем меньше значение, тем выше приоритет);
  • Пул услуг — ранее созданный пул, который будет включён в мета-пул;
  • Включено — определяет, участвует ли пул в работе мета-пула (если отключено, пул игнорируется).
Можно добавить любое количество пулов, в том числе объединяя службы, размещённые на разных платформах виртуализации (PVE, KVM, OpenNebula и др.), серверах приложений или статических устройствах.
Как и у обычного пула услуг, у мета-пула доступны следующие вкладки:
  • Назначенные сервисы — отображает текущие назначения пользователям. Здесь можно вручную отменить назначение или переназначить сервис другому пользователю;
  • Группы — определяет, какие группы пользователей будут иметь доступ к услуге;
  • Доступ к календарям — позволяет применить ранее созданный календарь для ограничения доступа по расписанию;
  • Журналы — содержит логи событий, связанных с мета-пулом.

58.3.10. Управление доступом по календарю

В OpenUDS можно настроить ограничение доступа пользователей к удаленным рабочим столам и виртуальным приложениям по дате и времени.
Кроме того, с помощью календаря можно автоматизировать задачи в пуле услуг, такие как:
  • создание новых публикаций;
  • настройка значений системного кеша;
  • добавление или удаление групп и транспортов;
  • изменение максимального количества предоставляемых услуг.
Для создания календаря необходимо перейти в раздел Календари и нажать кнопку Новый. В открывшемся окне нужно ввести описательное название в поле Имя и нажать кнопку Сохранить:
OpenUDS. Новый календарь
В Календаре можно зарегистрировать правила, чтобы запланировать доступность услуги в определённое время. Чтобы создать правило, следует открыть нужный календарь (дважды щелкнуть по строке календаря или выбрать пункт Подробность в контекстном меню) и нажать кнопку Новый:
OpenUDS. Создать новое правило
Минимальные параметры для настройки правила:
  • Имя — название правила;
  • Событие — время начала и продолжительность события (в минутах, часах, днях или неделях);
  • Repetition (Периодичность) — настройка повторения. Необходимо указать дату начала, частоту повторения правила (ежедневно/еженедельно/ежемесячно/ежегодно/по будням) и интервал повторения (в днях);
  • Панель — сводная информация обо всех указанных настройках.
OpenUDS. Создание правила
После нажатия кнопки Хорошо правило будет создано и может быть назначено пулу услуг (виртуальному рабочему столу и/или приложению):
OpenUDS. Список правил

58.3.10.1. Разрешение/запрет доступа

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

Примечание

Правило по умолчанию (FallBack) определяет поведение системы вне действия календарных правил: оно должно явно разрешать или запрещать доступ к сервису, когда ни одно из расписаний не активно:
OpenUDS. Ограничение доступа к сервису по календарю

58.3.10.2. Запланированные действия

Правила календаря также можно использовать для автоматизации задач в пуле услуг. Для этого следует выбрать пул услуг, перейти на вкладку Запланированные действия и нажать кнопку Новый:
OpenUDS. Вкладка «Запланированные действия»
В открывшемся окне необходимо указать:
  • календарь;
  • время действия;
  • выполняемое действие.
OpenUDS. Новое запланированное действие
Список доступных действий зависит от типа поставщика услуг, используемого в пуле. Возможные действия:
  • Установить начальные сервисы — задаёт минимальное количество созданных и готовых к использованию виртуальных рабочих столов;
  • Установить размер кеша — определяет количество ВМ в основном кеше (готовых к немедленному назначению);
  • Установить максимальное количество сервисов — изменяет верхний лимит виртуальных рабочих столов в пуле;
  • Установить размер L2 кеша — задаёт количество ВМ в спящем или выключенном состоянии (L2-кеш);
  • Публикация — запускает новую публикацию в пуле услуг;
  • Добавить транспорт — добавляет существующий транспорт в пул;
  • Удалить транспорт — удаляет указанный транспорт из пула;
  • Удалить все транспорты — удаляет все транспорты, назначенные пулу;
  • Добавить группу — добавляет существующую группу пользователей в пул;
  • Удалить группу — удаляет указанную группу из пула;
  • Удалить все группы — удаляет все группы, назначенные пулу;
  • Установить игнорирование неиспользуемых — включает или отключает параметр Игнорировать неиспользуемые;
  • Удалить ВСЕ назначенные пользовательские сервисы — отменяет все текущие назначения;
  • Удалить СТАРЫЕ назначенные пользовательские службы — удаляет назначения, которые не использовались в течение заданного времени;
  • Персонализированное сообщение на панелях запуска — задаёт текст сообщения, отображаемого при запуске службы.
После сохранения создаётся запланированная задача, которая будет автоматически выполнять указанное действие в заданное время.

58.3.11. Настройка разрешений

В OpenUDS можно назначать пользователям и группам права доступа к различным элементам интерфейса администрирования. Разрешения, назначенные элементу, применяются к нему самому и ко всем его подэлементам.

Примечание

Чтобы пользователь мог получить доступ к функциям администрирования, ему должна быть назначена роль Штатный сотрудник:
OpenUDS. Роль пользователя
Для предоставления разрешения на конкретный элемент администрирования следует выбрать этот элемент и нажать кнопку Разрешения:
OpenUDS. Кнопка Разрешения
В окне разрешений следует нажать ссылку Новое разрешение… для групп или пользователей, затем:
  1. Выбрать аутентификатор.
  2. Указать группу или пользователя, к которому будет применяться разрешение.
  3. Задать уровень доступа:
    • Только чтение — просмотр элемента без возможности внесения изменений;
    • Полный доступ — полное управление элементом и его подэлементами.
OpenUDS. Новое разрешение для пула
После сохранения настроек пользователи с ролью Штатный сотрудник, которым назначены соответствующие разрешения, получат доступ к указанному элементу администрирования в соответствии с установленным уровнем прав.

Примечание

Разрешения типа Полный доступ (Управление) могут применяться только к элементам второго уровня, таким как Календари, Пулы услуг и т.д.

58.3.12. Уведомители

В OpenUDS можно зарегистрировать два типа уведомителей, чтобы автоматически отправлять события определённых уровней: Warning (Предупреждение), Error (Ошибка) и Critical (Критическая ошибка).
Чтобы создать новый уведомитель, необходимо перейти в раздел ИнструментыУведомители и нажать кнопку Новый:
OpenUDS. Создание уведомителя
Доступны два типа уведомителей: по электронной почте и через Telegram.

58.3.12.1. Telegram

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

Примечание

Для получения уведомлений через Telegram, чат должен быть подписан на канал бота. Подписка выполняется с помощью команды:
/join <secret>
где <secret> — секретный ключ, указанный в настройках Telegram-уведомлений OpenUDS. Только после успешной подписки сообщения от бота будут доставляться в данный чат.
Отписаться можно с помощью команды:
/leave

58.3.12.2. Электронная почта

Этот уведомитель отправляет сообщения по электронной почте.
Параметры конфигурации для уведомителя Электронная почта:
  • вкладка Основной:
    • Имя — название уведомителя;
    • Уровень — уровень событий, которые будут отправляться;
    • Включено — если активно, уведомления будут отправляться;
    OpenUDS. Создание уведомителя Электронная почта (Основной)
  • вкладка SMTP-сервер:
    • SMTP-хост — адрес почтового сервера для отправки;
    • Безопасность — тип защиты соединения (например, SSL/TLS или STARTTLS);
    • Имя пользователя — учётная запись с правами на отправку писем через указанный SMTP-сервер;
    • Пароль — пароль для указанной учётной записи;
    OpenUDS. Создание уведомителя Электронная почта (SMTP-сервер)
  • вкладка Конфигурация:
    • Отправитель — адрес отправителя, который будет отображаться в письмах;
    • Отправить по электронной почте — адрес получателя уведомлений;
    • Включить HTML — если включено, в теле письма разрешено использование HTML-разметки.
    OpenUDS. Электронная почта (вкладка «Конфигурация»)

58.3.13. Конфигурация OpenUDS

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

Важно

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

Примечание

После изменения любого параметра конфигурации необходимо перезапустить сервер OpenUDS, чтобы изменения вступили в силу.
Конфигурация OpenUDS
Вкладка UDS:
  • autorunService — автоматический запуск единственной службы. Если включено, пользователи, которым назначена только одна служба, будут подключаться к ней напрямую, минуя экран выбора сервисов, с использованием предварительно настроенного транспорта. По умолчанию: нет;
  • cacheCheckDelay — определяет интервал (в секундах), с которым система проверяет состояние кеша для создания или удаления виртуальных машин. Чем меньше значение, тем быстрее реагирует система, но слишком низкие значения могут вызвать перегрузку гипервизора. По умолчанию: 19;
  • Calendar access denied text — текст сообщения, отображаемый всем пользователям при попытке доступа к службе, ограниченной календарными правилами;
  • checkUnusedTime — время (в секундах), по истечении которого система удаляет непостоянную службу, если она не используется. Применяется только к службам с менеджером ОС типа Удалить сервис. Для других менеджеров параметр игнорируется. По умолчанию: 631;
  • disallowGlobalLogin — скрыть выбор аутентификаторов на странице входа. Если включено, на странице входа не отображается список аутентификаторов — используется только аутентификатор по умолчанию. Для входа через другие аутентификаторы необходимо добавить соответствующую метку в URL (например, ?auth=freeipa). По умолчанию: нет;
  • keepInfoTime — время хранения информации о завершённых событиях. Определяет, как долго (в секундах) записи о завершённых сессиях в пуле услуг остаются видимыми в журналах. По умолчанию: 14401 секунд (4 часа + 1 секунда);
  • sessionExpireTime — тайм-аут пользовательской ессии после публикации. Максимальное время (в часах), в течение которого сессия пользователя остаётся активной после создания новой публикации. По истечении этого времени сессия завершается, и служба может быть удалена. Если для службы настроен менеджер ОС с опцией Держать сервис привязанным даже в новой публикации, этот параметр игнорируется. По умолчанию: 24 часа;
  • statsDuration — период хранения статистики. Время (в днях), в течение которого OpenUDS сохраняет статистические данные. По умолчанию: 365 дней.
Вкладка Security:
  • Allowed IP Forwarders — список IP-адресов доверенных серверов пересылки (например, балансировщиков нагрузки или прокси), чьи заголовки X-Forwarded-For будут приниматься системой. Это особенно важно в конфигурациях с высокой доступностью. Значение «*» (по умолчанию) означает, что принимаются все IP-адреса серверов пересылки;
  • allowRootWebAccess — разрешить вход суперпользователю через веб-интерфейс. Позволяет пользователю, созданному при первоначальной установке OpenUDS, входить в панель администрирования. По умолчанию: да;
  • Behind a proxy — работа за прокси-сервером. Указывает, что OpenUDS размещён за обратным прокси (например, HAProxy, Nginx). Это влияет на обработку заголовков X-Forwarded-For и X-Real-IP. По умолчанию: нет;
  • Block ip on login failure — блокировка IP при неудачных попытках входа. При включении блокирует как пользователя, так и его IP-адрес после превышения лимита неудачных попыток (см. maxLoginTries). По умолчанию: нет;
  • Enforce Zero-Trust Mode — режим нулевого доверия. Запрещает OpenUDS хранить учётные данные (пароли) в открытом виде или в кеше. Все аутентификационные данные должны передаваться напрямую провайдеру. По умолчанию: нет;
  • loginBlockTime — время блокировки после неудачного входа. Длительность блокировки (в секундах) после превышения лимита попыток входа. Количество попыток указывается в переменной maxLoginTries. По умолчанию: 300 секунд (5 минут);
  • maxLoginTries — максимальное число попыток входа. Количество неудачных попыток аутентификации, после которого пользователь и/или IP-адрес блокируются. По умолчанию: 5;
  • RootPass — пароль суперпользователя. Рекомендуется использовать надёжный пароль: не менее 12 символов, с комбинацией заглавных и строчных букв, цифр и специальных символов;
  • SuperUser — имя суперпользователя, созданного при первоначальной настройке сервера OpenUDS;
  • Session timeout for Admin — тайм-аут сессии администратора. Время бездействия (в секундах), после которого сессия администратора автоматически завершается. По умолчанию: 14400 секунд (4 часа);
  • Session timeout for User — тайм-аут сессии обычного пользователя. Аналогично для пользователей (не администраторов). По умолчанию: 14400 секунд (4 часа);
  • Trusted Hosts — доверенные хосты. Список IP-адресов, подсетей или диапазонов, которым разрешено выполнять чувствительные («sensitive») запросы к API OpenUDS (например, создание токенов). Допустимые значения: подсеть, диапазон IP-адресов, конкретные IP-адреса (192.168.1.0/24, 10.0.0.5-10.0.0.10, 203.0.113.1). По умолчанию: "*" (всё разрешено).
Вкладка Admin:
  • Enable VNC for user services — при включении добавляет кнопку VNC в интерфейсе назначенных служб. При нажатии создаётся файл с настройками для подключения через VNC-клиент. VNC-клиент должен быть установлен на клиентской машине. Должно существовать прямое сетевое подключение между клиентом и виртуальной машиной. По умолчанию: нет;
  • List page size — количество элементов, отображаемых на одной странице в разделах администрирования. Применяется глобально ко всем спискам (пулы, транспорты, календари и т.д.);
  • Trusted Hosts for Admin — доверенные хосты для администрирования. Определяет, с каких IP-адресов разрешён доступ к веб-интерфейсу и API администрирования. Формат аналогичен полю Trusted Hosts. По умолчанию: "*" (всё разрешено).
Вкладка Custom (параметры кастомизации пользовательского интерфейса):
  • Cookies consent enabled — если включено, на страницах OpenUDS отображается уведомление о использовании файлов cookie. Важно: OpenUDS использует только собственные (first-party) cookie, необходимые для работы системы. Сторонние cookie не применяются;
  • Cookies consent text — текст уведомления о согласии на использование файлов cookie. Заменяет стандартное сообщение по умолчанию;
  • CSS — пользовательский CSS-код для изменения стиля страниц OpenUDS;
  • Logo name — текст, отображаемый рядом с логотипом (например, название организации);
  • Min. Services to show filter — минимальное количество назначенных пользователю служб, при котором на странице появляется панель фильтрации;
  • Show Filter on Top — расположение панели поиска на странице пользовательских служб: вверху или внизу;
  • Site copyright info — текст копирайта;
  • Site copyright link — URL, на который ведёт ссылка из копирайта;
  • Site information — HTML-код, вставляемый под полями входа на странице авторизации (например, для отображения контактной информации или уведомлений);
  • Site name — заголовок на странице входа (отображается над полями логина и пароля).

58.4. Подготовка шаблона виртуальной машины

Для возможности использования виртуальной машины (ВМ) в качестве шаблона OpenUDS, на ней необходимо:
  • настроить удалённый доступ (RDP, X2Go и т.д.);
  • установить и зарегистрировать OpenUDS Actor.

58.4.1. Шаблон ВМ с ОС Альт

Подготовить шаблон ВМ (все действия выполняются на ВМ):
  1. Установить пакет openuds-actor:
    # apt-get install openuds-actor
    
  2. Включить автозапуск службы udsactor.service:
    # systemctl enable udsactor.service
    
  3. Зарегистрировать OpenUDS Actor на сервере OpenUDS:
    • запустить OpenUDS Actor, например, командой:
      $ /usr/sbin/UDSActorConfig-pkexec
      
      Потребуется ввести пароль администратора.
    • на вкладке UDS Server необходимо указать:
      • SSL Validation — уровень проверки SSL-сертификата при подключении к серверу OpenUDS;
      • UDS Server — имя или IP-адрес сервера OpenUDS;
      • Authenticator — аутентификатор, к которому принадлежит пользователь-администратор (аутентификатор Administration соответствует суперпользователю). Список доступных аутентификаторов отображается только при наличии связи с сервером OpenUDS;
      • Username — имя пользователя с правами администратора в OpenUDS (должен принадлежать выбранному аутентификатору);
      • Password — пароль пользователя;
    • нажать кнопку Register with UDS (Зарегистрироваться в UDS):
      OpenUDS. UDS Actor Configuration
    • на вкладке Advanced можно указать дополнительные параметры:
      • Preconnect — скрипт, запускаемый непосредственно перед подключением пользователя к виртуальному рабочему столу. OpenUDS Broker автоматически передаёт в скрипт следующие параметры: имя пользователя, протокол, IP-адрес клиента, имя хоста клиента;
      • Runonce — скрипт, выполняемый один раз перед настройкой UDS Actor. После выполнения скрипт удаляется из конфигурации;

        Важно

        Скрипт должен завершаться перезагрузкой виртуальной машины.
      • Postconfig — скрипт, запускаемый после завершения настройки UDS Actor. Выполняется один раз, но перезагрузка не требуется;
      • Log Level — уровень журналирования;

      Примечание

      Чтобы применить изменения, внесённые на вкладке «Advanced», необходимо перерегистрировать UDS Actor.
  4. Настроить один из вариантов удаленного доступа:
    • XRDP:
      • установить пакет xrdp:
        # apt-get install xrdp
        
      • включить и запустить службы xrdp и xrdp-sesman:
        # systemctl enable --now xrdp
        # systemctl enable --now xrdp-sesman
        
      • для доступа к терминальному сеансу добавить пользователя в группу tsusers:
        # gpasswd -a user tsusers
        
    • X2Go:
      • установить пакет x2goserver:
        # apt-get install x2goserver
        
      • включить и запустить службу x2goserver:
        # systemctl enable --now x2goserver
        
Регистрацию OpenUDS Actor можно выполнить и в командной строке, например:
# UDSActorRegister
SSL validation (yes/no): no
Hostname: 192.168.0.53
Authenticator ['Internal', 'radiusauth', 'freeipa', 'AD', 'admin']: admin
Username: root
Password:
Pre connect:
Run once:
Post config:
Log level ['debug', 'info', 'error', 'fatal']: error
Registration with UDS completed.
Можно использовать переменные окружения:
# export OPENUDS_ACTOR_SSL_VALIDATION=no
# export OPENUDS_HOST=192.168.0.53
# export OPENUDS_AUTHENTICATOR=admin
# export OPENUDS_ACTOR_POST_CONFIG=/home/user/test.sh
# export OPENUDS_ACTOR_LOG_LEVEL=error
# UDSActorRegister
Username: root
Password:
Pre connect:
Run once:
Registration with UDS completed.
При регистрации UDS Actor в командной строке необходимо указать следующие параметры (в скобках приведены соответствующие переменные окружения):
  • SSL Validation — проверки SSL-сертификата (OPENUDS_ACTOR_SSL_VALIDATION);
  • Hostname — имя или IP-адрес сервера OpenUDS (OPENUDS_HOST);
  • Authenticator — аутентификатор (OPENUDS_AUTHENTICATOR);
  • Username — имя администратора в OpenUDS (OPENUDS_USERNAME);
  • Password — пароль пользователя (OPENUDS_PASSWORD);
  • Pre connect — путь к скрипту предподключения (OPENUDS_ACTOR_PRE_CONNECT);
  • Run once — путь к однократному скрипту (OPENUDS_ACTOR_RUN_ONCE);
  • Post config — путь к скрипту постнастройки (OPENUDS_ACTOR_POST_CONFIG);
  • Log Level — уровень журналирования (OPENUDS_ACTOR_LOG_LEVEL).

58.4.2. Шаблон ВМ с ОС Windows

Примечание

В данном разделе описана настройка ВМ с Windows 10 Pro x64 в качестве шаблона для OpenUDS.
Требования к шаблону ВМ:
  • рекомендуется отключить автоматические обновления Windows, чтобы они не запускались на клонированных рабочих столах;
  • машина должна получать IP-адрес по DHCP;
  • шаблон не нужно добавлять в домен Active Directory. Если требуется присоединение рабочих столов к домену, настройка должна быть выполнена в панели управления OpenUDS;
  • автоматический вход пользователя должен быть отключён (учётные данные должны запрашиваться при каждом подключении).

Примечание

Для последующего присоединения ВМ к домену в шаблоне должен быть настроен DNS-сервер с записями контроллера домена.
Настройка удалённого рабочего стола (RDP):
  1. Открыть окно Параметры (Win+I).
  2. Выбрать раздел СистемаУдаленный рабочий стол.
  3. Перевести ползунок Включить удаленный рабочий стол в положение Вкл.:
    Включить удаленный рабочий стол
  4. Выбрать учётные записи, которым разрешено удаленное подключение. Для этого нажать ссылку Выберите пользователей, которые могут получить доступ к этому компьютеру и добавить нужных пользователей:
    Удаленный рабочий стол. Пользователи
  5. Проверить возможность подключения к машине удаленно.

Примечание

Для совместимости с клиентами Linux рекомендуется снять отметку с пункта Требовать использование компьютерами аутентификации на уровне сети для подключения в разделе Дополнительные параметры:
Удаленный рабочий стол. Дополнительные параметры

Важно

Необходимо убедиться, что межсетевой экран не блокирует порт 3389.
Настройка и настройка OpenUDS Actor:
  1. Скачать OpenUDS Actor из панели управления OpenUDS Server: пункт Загрузки (пункт доступен пользователям с правами администратора):
    Загрузка OpenUDS Actor
    На открывшейся странице выбрать нужную версию:
    Загрузка OpenUDS Actor

    Примечание

    Для Windows доступны две версии OpenUDS Actor:
    • UDSActorSetup — для управляемых Windows-машин (виртуализация);
    • UDSActorUnmanagedSetup — для неуправляемых Windows-машин (физические серверы или статические ВМ без клонирования).
  2. Установить OpenUDS Actor как обычное приложение Windows.
  3. Запустить UDSActorConfig от имени администратора. (в контекстном меню пункта UDSActorConfig выбрать ДополнительноЗапуск от имени администратора):
    Запуск UDSActorConfig от имени администратора
  4. Зарегистрировать OpenUDS Actor на сервере:
    • для Managed OpenUDS Actor (управляемые ВМ): на вкладке UDS Server указать имя или IP-адрес сервера OpenUDS, аутентификатор (значение Administration соответствует суперпользователю), имя и пароль администратора OpenUDS и нажать кнопку Register with UDS (Зарегистрироваться в UDS):
      Регистрация Managed OpenUDS Actor для Microsoft Windows
    • для регистрации Unmanaged OpenUDS Actor (неуправляемые ВМ) указать имя или IP-адрес сервера OpenUDS, ключ, заданный при создании услуги типа Статический множественный IP-адрес и нажать кнопку Save Configuration (Сохранить конфигурацию):
      Регистрация Unmanaged OpenUDS Actor для Microsoft Windows

      Примечание

      Unmanaged OpenUDS Actor уведомляет OpenUDS о входе и выходе пользователя. Это позволяет автоматически освобождать машину после завершения сессии. Для работы этой функции при создании услуги Статический множественный IP-адрес необходимо задать ключ услуги:
      Регистрация услуги «Статический множественный IP-адрес»
      Если оставить поле Ключ услуги пустым, сессия останется назначенной пользователю до ручного удаления администратором.

58.5. Настройка клиента OpenUDS

Для возможности подключения к брокеру OpenUDS и последующего доступа к виртуальному рабочему окружению на клиентской машине необходимо установить:
  • клиент OpenUDS;
  • клиенты протоколов удалённого доступа, используемых в пулах (RDP, X2Go, SPICE и др.).

58.5.1. Клиент с ОС Альт

Установить пакет openuds-client:
# apt-get install openuds-client
Для подключения к виртуальным рабочим столам также требуются клиенты соответствующих протоколов:
  • xfreerdp3 — для подключения по протоколу RDP;
  • x2goclient — для подключения к серверу X2Go;
  • remote-viewer из пакета virt-viewer — для подключения по протоколу SPICE.

58.5.2. Клиент с ОС Windows

Установка клиента OpenUDS:
  1. Скачать OpenUDS Client для Windows из панели управления OpenUDS Server: выбрать пункт Клиент UDS и на открывшейся странице выбрать клиент Windows:
    Загрузка OpenUDS Client for Microsoft Windows
  2. Установить OpenUDS Client как обычное приложение Windows.
Для подключения к виртуальным рабочим столам должны быть установлены клиенты используемых протоколов:
  • RDP — встроен в Windows (дополнительная установка не требуется);
  • X2Go — необходимо загрузить и установить клиент X2Go для Windows (см. X2Go);
  • SPICE — необходимо установить пакет Virt-Viewer (см. virt-viewer).

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

Подключиться к серверу OpenUDS можно с помощью браузера:
  1. Открыть в браузере адрес сервера OpenUDS: https://<адрес_openuds>.
  2. Ввести имя пользователя и пароль (если настроено несколько аутентификаторов, выбрать нужный способ проверки подлинности).
OpenUDS. Аутентификация пользователя
После входа отобразится панель с доступными виртуальными рабочими столами (или приложениями), назначенными пользователю:
OpenUDS. Подключение пользователя к виртуальному рабочему месту
При выборе пула автоматически запускается клиент OpenUDS. Он:
  • обрабатывает специальный URL;
  • получает параметры подключения к свободной ВМ;
  • формирует файл сессии;
  • передаёт файл сессии соответствующему клиенту удалённого доступа (RDP, X2Go и т.д.);
  • клиент удалённого доступа устанавливает соединение с ВМ.
После успешного подключения виртуальный рабочий стол становится доступен для работы.
OpenUDS. Виртуальный рабочий стол

Примечание

Если для пула настроено несколько транспортов, в правом верхнем углу элемента службы появляется кнопка выбора. При прямом клике по ВМ используется транспорт по умолчанию (с наивысшим приоритетом, то есть с наименьшим числовым значением поля Приоритет). Чтобы использовать другой транспорт, нужно выбрать его из раскрывающегося списка.
При выходе пользователя из виртуальной машины:
  • останавливается OpenUDS Actor;
  • брокер OpenUDS фиксирует освобождение ВМ.
Дальнейшие действия зависят от типа пула:
  • постоянный пул — ВМ остаётся включённой и готовой к следующему подключению;
  • временный (динамический) пул — ВМ удаляется, а при следующем запросе создаётся новая из мастер-образа.

Примечание

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

58.7. Отказоустойчивое решение

Компоненты OpenUDS можно настроить в режиме высокой доступности (HA).
Для обеспечения отказоустойчивости необходимо:
  • развернуть несколько экземпляров OpenUDS Server и OpenUDS Tunnel;
  • настроить репликацию базы данных;
  • использовать балансировщик нагрузки для распределения подключений к серверам OpenUDS и туннельным узлам.
Основные компоненты отказоустойчивого решения OpenUDS:
  • Сервер MySQL — база данных является критически важным компонентом OpenUDS. Рекомендуется обеспечить её отказоустойчивость с помощью:
    • полной резервной копии;
    • или конфигурации активной/пассивной репликации.
    В данном руководстве описана настройка двух серверов MySQL в режиме мастер-реплика.
  • HAProxy-сервер — распределяет подключения к OpenUDS Server и OpenUDS Tunnel. Через него осуществляется доступ пользователей к веб-интерфейсу и сервисам. На HAProxy-серверах настраивается виртуальный IP-адрес (VIP), который активен только на основном узле. При отказе основного сервера VIP автоматически переносится на резервный узел.
  • OpenUDS Server — наличие нескольких серверов обеспечивает непрерывный доступ к веб-интерфейсу и управлению пулами, даже при отказе одного из узлов.
  • OpenUDS Tunnel — несколько туннельных серверов обеспечивают доступ к рабочим столам и приложениям через туннелированные соединения и HTML5.

    Примечание

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

Таблица 58.2. Системные требования

Компонент
Количество
ОЗУ
ЦП
Диск
SQL Server
2
1 ГБ
2 vCPU
10 ГБ
HAProxy
2
1 ГБ
2 vCPU
10 ГБ
OpenUDS Server
2
2 ГБ
2 vCPU
8 ГБ
OpenUDS Tunnel
2
2 ГБ
2 vCPU
13 ГБ

Примечание

Для HAProxy необходимо три IP-адреса:
  • по одному физическому адресу для каждого сервера (Master/Slave);
  • один общий виртуальный IP-адрес (VIP), который будет использоваться для балансировки.

58.7.1. Конфигурация серверов MySQL

На обоих серверах установить MySQL (MariaDB):
# apt-get install mariadb
Запустить службу и добавить её в автозагрузку:
# systemctl enable --now mariadb.service
Выполнить базовую настройку безопасности:
# mysql_secure_installation

58.7.1.1. Настройка репликации между серверами

58.7.1.1.1. Главный узел (Master)
Отредактировать файл конфигурации MariaDB (/etc/my.cnf.d/server.cnf):
  • закомментировать параметр skip-networking;
  • раскомментировать и настроить параметры:
    server-id = 1
    log-bin = mysql-bin
    bind-address = 192.168.0.128
    
    где 192.168.0.128 — IP-адрес главного сервера.
Перезагрузить службу MariaDB:
# systemctl restart mariadb
Создать пользователя для репликации:
  1. Войти в консоль MySQL с правами root:
    $ mysql -p
    
  2. Создать пользователя (в примере пользователь «replica» с паролем «uds»):
    MariaDB [(none)]> CREATE USER 'replica'@'%' IDENTIFIED BY 'uds';
    Query OK, 0 rows affected (0.009 sec)
    
  3. Предоставить права replication slave пользователю:
    MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'
    Query OK, 0 rows affected (0.002 sec)
    
  4. Получите текущее состояние бинарного лога:
    MariaDB [(none)]> SHOW MASTER STATUS\G
    
    Пример вывода:
    *************************** 1. row ***************************
                File: mysql-bin.000002
            Position: 328
        Binlog_Do_DB:
    Binlog_Ignore_DB:
    1 row in set (0.001 sec)
    
    В данном примере:
    • mysql-bin.000002 — имя файла;
    • 328 — позиция двоичного файла.
    Эти данные понадобятся при настройке вторичного узла.
58.7.1.1.2. Вторичный узел (Slave)
Отредактировать файл /etc/my.cnf.d/server.cnf:
  • закомментировать параметр skip-networking;
  • раскомментировать и настроить параметры:
    server-id = 2
    log-bin = mysql-bin
    bind-address = 192.168.0.129
    
    где 192.168.0.129 — IP-адрес вторичного сервера.
Перезагрузить службу MariaDB:
# systemctl restart mariadb
Настроить параметры, которые вторичный сервер (Slave) будет использовать для подключения к основному серверу (Master):
  1. Войти в консоль MySQL с правами root:
    $ mysql -p
    
  2. Остановить репликацию:
    MariaDB [(none)]> STOP SLAVE;
    Query OK, 0 rows affected, 1 warning (0.001 sec)
    
  3. Настроить репликацию между основным сервером и вторичным сервером:
    MariaDB [(none)]> CHANGE MASTER TO
        MASTER_HOST='192.168.0.128',
        MASTER_USER='replica',
        MASTER_PASSWORD='uds',
        MASTER_LOG_FILE='mysql-bin.000002',
        MASTER_LOG_POS=328;
    
    Query OK, 0 rows affected (0.020 sec)
    
    где:
    • 192.168.0.128 — IP-адрес основного сервера;
    • replica — пользователь, с правами которого будет производиться репликация;
    • uds — пароль пользователя replica;
    • mysql-bin.000002 — имя файла, полученного на предыдущем шаге;
    • 328 — позиция двоичного файла.
  4. Запустить репликацию:
    MariaDB [(none)]> START SLAVE;
    Query OK, 0 rows affected (0.001 sec)
    
  5. Убедиться, что репликация работает:
    MariaDB [(none)]> SHOW SLAVE STATUS\G
    *************************** 1. row ***************************
                    Slave_IO_State: Waiting for master to send event
                       Master_Host: 192.168.0.128
                       Master_User: replica
                       Master_Port: 3306
                     Connect_Retry: 60
                   Master_Log_File: mysql-bin.000004
               Read_Master_Log_Pos: 328
                    Relay_Log_File: mysqld-relay-bin.000006
                     Relay_Log_Pos: 555
             Relay_Master_Log_File: mysql-bin.000004
                  Slave_IO_Running: Yes
                 Slave_SQL_Running: Yes
    …
    
    IP-адрес основного сервера должен быть указан корректно, в выводе должны быть строки:
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    

58.7.1.2. Проверка репликации

Для проверки репликации можно создать тестовую базу данных на главном сервере и убедиться, что она автоматически реплицируется на вторичном сервере:
  1. На главном сервере создать тестовую базу данных:
    MariaDB [(none)]> CREATE DATABASE replicatest;
    Query OK, 1 row affected (0.001 sec)
    
    MariaDB [(none)]> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | replicatest        |
    +--------------------+
    4 rows in set (0.001 sec)
    
  2. На вторичном сервере убедиться, что база успешно реплицировалась на этот сервер:
    MariaDB [(none)]> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | replicatest        |
    +--------------------+
    4 rows in set (0.002 sec)
    
  3. После проверки можно удалить тестовую базу, выполнив команду на главном сервере:
    MariaDB [(none)]> DROP DATABASE replicatest;
    

58.7.1.3. Создание рабочей базы данных

На главном сервере создать базу данных для OpenUDS:
$ mysql -p
Enter password:

MariaDB [(none)]> CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> CREATE USER 'dbuds'@'%' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;
Настроить все серверы OpenUDS на подключение к этой базе данных (указав IP главного сервера в файле /etc/openuds/settings.py).

58.7.1.4. Отказ сервера

При недоступности одного из серверов баз данных необходимо выполнить ряд задач.
58.7.1.4.1. Отказ главного узла (Master)
Если недоступен главный сервер БД (Master), доступ к среде VDI будет утерян. В этом случае необходимо:
  1. Переключить OpenUDS на вторичный сервер:
    • в файлах /etc/openuds/settings.py на всех серверах OpenUDS заменить IP-адрес базы данных на IP вторичного сервера (192.168.0.129);
    • перезапустить службы OpenUDS:
      # systemctl restart openuds-web openuds-taskmanager
    После перезапуска сервера доступ к среде VDI будет восстановлен.
  2. Восстановить репликацию. Поскольку репликация в MariaDB/MySQL односторонняя, текущий Slave нельзя напрямую сделать Master без дополнительных действий. Рекомендуется один из следующих подходов:
    1. Настроить текущий Slave как новый Master, создать новый сервер-реплику, и восстановить на нём данные из резервной копии (так как репликация передаёт только изменения, а не полное состояние).
    2. Сделать резервную копию с текущего Slave (предварительно остановив все серверы OpenUDS), развернуть новый сервер Master, восстановить на нём резервную и перенастроить репликацию.

Примечание

Перед любыми операциями по восстановлению рекомендуется создавать резервную копию:
# mysqldump -u dbuds -ppassword --databases dbuds > dbuds_dump.sql
Все серверы OpenUDS должны быть остановлены во время создания резервной копии, чтобы обеспечить согласованность данных.
58.7.1.4.2. Отказ вторичного узла (Slave)
Если недоступен вторичный сервер, доступ к VDI сохраняется, но репликация прерывается.
Чтобы восстановить Slave необходимо:
  1. Остановить все серверы OpenUDS.
  2. Создать резервную копию с главного сервера.
  3. Развернуть новый Slave-сервер.
  4. Восстановить на нём данные из резервной копии.
  5. Настроить репликацию заново.
Во время всего процесса восстановления серверы OpenUDS должны быть выключены, чтобы избежать рассогласования данных между Master и новым Slave.

58.7.2. Настройка серверов HAProxy

Конфигурация балансировщика нагрузки
В рассматриваемой конфигурации используется служба Keepalived и виртуальный IP-адрес, общий для основного (Master) и резервного (Slave) узлов. Keepalived привязывает виртуальный IP к основному узлу и отслеживает доступность службы HAProxy. При недоступности HAProxy на основном узле виртуальный IP автоматически переносится на резервный узел, что минимизирует время простоя.

Примечание

Пользователи должны обращаться к OpenUDS только через виртуальный IP-адрес. Этот же адрес следует использовать при регистрации OpenUDS Actor (см. раздел Подготовка шаблона виртуальной машины).

Важно

Порты, используемые HAProxy (в примере: 80, 443, 1443, 10443), должны быть свободны на обоих узлах.

58.7.2.1. Настройка SSL-сертификата

На основном узле сгенерировать самоподписанный сертификат:
# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /root/ssl.key -out /root/ssl.crt
Создать файл .pem (предварительно следует убедиться, что каталог /etc/openssl/private существует):
# mkdir -p /etc/openssl/private
# cat /root/ssl.crt /root/ssl.key > /etc/openssl/private/haproxy.pem

Примечание

Сертификат, созданный на первичном сервере HAProxy, необходимо скопировать в тот же каталог /etc/openssl/private на резервном узле. Если используется корпоративный сертификат, корпоративный сертификат, его также следует разместить на обоих серверах.

58.7.2.2. Установка и настройка HAProxy

На обоих серверах необходимо выполнить:
  1. Установить пакеты haproxy и keepalived:
    # apt-get install haproxy keepalived
    
  2. Заменить содержимое файла /etc/haproxy/haproxy.cfg следующим:
    global
            log /dev/log    local0
            log /dev/log    local1 notice
            chroot /var/lib/haproxy
            stats socket /var/lib/haproxy/admin.sock mode 660 level admin
            stats timeout 30s
            maxconn 2048
            user _haproxy
            group _haproxy
            daemon
    
            # Настройки SSL
            ssl-default-bind-options ssl-min-ver TLSv1.2 prefer-client-ciphers
            ssl-default-bind-ciphers ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES256:ECDH+AES128:!aNULL:!SHA1:!AESCCM
            tune.ssl.default-dh-param 2048
    
    
    defaults
            log     global
            mode    http
            option  httplog
            option  dontlognull
            option  forwardfor
            retries 3
            option  redispatch
    
            stats enable
            stats uri /haproxystats
            stats realm Strictly\ Private
            stats auth stats:haproxystats
    
            timeout connect 5000
            timeout client  50000
            timeout server  50000
    
    frontend http-in
            bind *:80
            mode http
            http-request set-header X-Forwarded-Proto http
            default_backend openuds-backend
    
    frontend https-in
            bind *:443 ssl crt /etc/openssl/private/haproxy.pem
            mode http
            http-request set-header X-Forwarded-Proto https
            default_backend openuds-backend
    
    frontend tunnel-in
            bind *:1443
            mode tcp
            option tcplog
            default_backend tunnel-backend-ssl
    
    frontend tunnel-in-guacamole    # HTML5
            bind *:10443
            mode tcp
            option tcplog
            default_backend tunnel-backend-guacamole
    
    backend openuds-backend
            option http-keep-alive
            balance roundrobin
            server udss1 192.168.0.85:80 check inter 2000 rise 2 fall 5
            server udss2 192.168.0.86:80 check inter 2000 rise 2 fall 5
    
    backend tunnel-backend-ssl
            mode tcp
            option tcplog
            balance roundrobin
            server udst1 192.168.0.87:7777 check inter 2000 rise 2 fall 5
            server udst2 192.168.0.88:7777 check inter 2000 rise 2 fall 5
    
    backend tunnel-backend-guacamole
            mode tcp
            option tcplog
            balance source
            server udstg1 192.168.0.87:10443 check inter 2000 rise 2 fall 5
            server udstg2 192.168.0.88:10443 check inter 2000 rise 2 fall 5
    
  3. Включить в ядре поддержку привязки не локальных IP-адресов:
    # echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
    # sysctl -p
    

58.7.2.3. Настройка Keepalived

Создать файл /etc/keepalived/keepalived.conf.
Содержимое файла /etc/keepalived/keepalived.conf на основном узле:
global_defs {
    # Keepalived process identifier
    lvs_id haproxy_DH
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}
# Виртуальный интерфейс
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 101
    # Виртуальный IP-адрес
    virtual_ipaddress {
        192.168.0.49
    }
    track_script {
        check_haproxy
    }
}
где enp0s3 — сетевой интерфейс для виртуального IP.
Содержимое файла на резервном узле:
global_defs {
    # Keepalived process identifier
    lvs_id haproxy_DH_passive
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}
# Виртуальный интерфейс
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    # Виртуальный IP-адрес
    virtual_ipaddress {
        192.168.0.49
    }
    track_script {
        check_haproxy
    }
}
где eth0 — интерфейс для виртуального IP.

Примечание

Имя сетевого интерфейса можно узнать выполнив команду ip a.
Запустить службы haproxy и keepalived:
# systemctl enable --now haproxy
# systemctl enable --now keepalived
Убедиться, что виртуальный IP активен на основном узле:
$ ip a |grep enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.0.52/24 brd 192.168.0.255 scope global noprefixroute enp0s3
    inet 192.168.0.49/32 scope global enp0s3

58.7.3. Настройка OpenUDS

После настройки MySQL и HAProxy можно приступить к установке и настройке компонентов OpenUDS Server и Tunnel.

58.7.3.1. Настройка OpenUDS Server

На обоих узлах OpenUDS Server:
  1. Установить OpenUDS Server:
    # apt-get install openuds-server-nginx
    
  2. Отредактировать файл /etc/openuds/settings.py, указав корректные данные для подключения к главному MySQL-серверу:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'OPTIONS': {
                'isolation_level': 'read committed',
            },
            'NAME': 'dbuds',
            'USER': 'dbuds',
            'PASSWORD': 'password',
            'HOST': '192.168.0.128',  # IP главного  MySQL
            'PORT': '3306',
        }
    }
    
  3. Заполнить базу данных начальными данными (этот пункт выполняется только на одном узле!):
    # su -s /bin/bash - openuds
    $ cd /usr/share/openuds
    $ python3 manage.py migrate
    $ exit
    
  4. Запустить службы:
    # systemctl enable --now openuds-web.service
    # ln -s ../sites-available.d/openuds.conf /etc/nginx/sites-enabled.d/openuds.conf
    # systemctl enable --now nginx.service
    # systemctl enable --now openuds-taskmanager.service
    
  5. Подключиться к серверу OpenUDS через виртуальный IP: (https://<Виртуальный_IP-адрес>).

58.7.3.2. Настройка OpenUDS Tunnel

На каждом узле OpenUDS Tunnel:
  1. Установить OpenUDS Tunnel:
    # apt-get install openuds-tunnel
    
  2. Настроить туннель:
    • указать виртуальный IP-адрес в файле /etc/openuds-tunnel/udstunnel.conf :
      uds_server = http://192.168.0.49/uds/rest/tunnel/ticket
      uds_token = 5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b
      
    • запустить службу:
      # systemctl enable --now openuds-tunnel.service
      
  3. Настроить Guacamole (HTML5). В файле /etc/guacamole/guacamole.properties указать:
    uds-base-url=http://192.168.0.49/uds/guacamole/auth/5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b
    
    где 192.168.0.49 — виртуальный IP-адрес;
  4. Настроить Tomcat для HTTPS (порт 10443), для этого в файл /etc/tomcat/server.xml добавить новый Connector с корректными путями к сертификатам:
    <Connector port="10443"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               SSLEnabled="true"
               ciphers="TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305"
               maxThreads="500"
               scheme="https"
               secure="true"
               SSLCertificateFile="/etc/openuds-tunnel/ssl/certs/openuds-tunnel.pem"
               SSLCertificateKeyFile="/etc/openuds-tunnel/ssl/private/openuds-tunnel.key"
               maxKeepAliveRequests="1000"
               clientAuth="false"
               sslProtocol="TLSv1.2+TLSv1.3" />
    
  5. Запустить службы Guacamole:
    # systemctl enable --now guacd tomcat
    
На сервере OpenUDS зарегистрировать каждый туннельный узел:
# openuds_tunnel_register -H 192.168.0.87 -n Tunnel1 \
 -t 5ba9d52bb381196c2a22e495ff1c9ba4bdc03440b726aa8b \
 -m 08:00:27:31:2d:14

# openuds_tunnel_register -H 192.168.0.88 -n Tunnel2 \
 -t 9ba4bdc03440b726aa8b5ba9d52bb381196c2a22e495ff1c \
 -m 08:00:27:31:ac:22

Примечание

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

Примечание

На сервере OpenUDS при создании туннеля необходимо указывать:
  • для обычных туннелей (RDP, X2Go): виртуальный IP-адрес и порт из секции frontend tunnel-in файла /etc/haproxy/haproxy.cfg (в примере: 192.168.0.49:1443):
    OpenUDS. Туннель с виртуальным IP
  • для HTML5-туннелей: виртуальный IP-адрес и порт из секции frontend tunnel-in-guacamole (в примере: 192.168.0.49:10443).

Глава 59. Система резервного копирования Proxmox Backup Server

59.1. Терминология
59.2. Установка PBS
59.2.1. Установка сервера PBS
59.2.2. Установка клиента PBS
59.3. Веб-интерфейс PBS
59.4. Настройка хранилища данных
59.4.1. Управление дисками
59.4.2. Создание локального хранилища данных
59.4.3. Съёмные хранилища данных
59.4.4. Управление хранилищами данных
59.5. Управление трафиком
59.6. Управление пользователями
59.6.1. Области аутентификации
59.6.2. API-токены
59.6.3. Управление доступом
59.6.4. Двухфакторная аутентификация
59.7. Управление удалёнными PBS и синхронизация хранилищ
59.7.1. Удалённые сервера
59.7.2. Задания синхронизации
59.8. Клиент резервного копирования
59.8.1. Создание резервной копии
59.8.2. Создание зашифрованной резервной копии
59.8.3. Восстановление данных
59.8.4. Аутентификация и завершение сеанса
59.9. Интеграция с PVE
59.10. Резервное копирование на ленту
59.10.1. Поддерживаемое оборудование
59.10.2. Быстрый старт
59.10.3. Настройка резервного копирования
59.10.4. Администрирование
59.11. Уведомления
59.11.1. Цели уведомлений (Notification Targets)
59.11.2. Триггеры уведомлений (Notification Matchers)
59.11.3. Пересылка системной почты
59.11.4. Разрешения
59.11.5. Режим уведомления
Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и данных с физических узлов. Решение оптимизировано для работы с Proxmox VE (PVE). PBS поддерживает инкрементное резервное копирование с полной дедупликацией, что значительно снижает нагрузку на сеть и экономит пространство для хранения.
Все взаимодействия между клиентом и сервером шифруются с использованием TLS. Кроме того, данные могут быть зашифрованы на стороне клиента перед отправкой на сервер, что повышает безопасность резервного копирования.
Сервер резервного копирования хранит данные резервного копирования и предоставляет API для создания хранилищ данных и управления ими. С помощью API также можно управлять дисками и другими ресурсами на стороне сервера.
Клиент резервного копирования использует этот API для доступа к резервным копиям. С помощью инструмента командной строки proxmox-backup-client можно создавать резервные копии и восстанавливать данные (в PVE клиент встроен).
Для управления настройками резервного копирования и самими резервными копиями используется веб-интерфейс. Все административные задачи можно выполнять в веб-браузере. Веб-интерфейс также предоставляет встроенную консоль.

59.1. Терминология

Архивы образов (<name>.img)
Используются для образов виртуальных машин и других больших двоичных данных. Содержимое разбивается на фрагменты фиксированного размера.
Архивы файлов (<name>.pxar)
Хранят полное дерево каталогов в формате Proxmox (.pxar), разбитом на фрагменты переменного размера. Формат оптимизирован для эффективной дедупликации.
Двоичные данные (BLOB)
Используются для хранения небольших (< 16 МБ) двоичных объектов, например файлов конфигурации. Более крупные файлы следует хранить как архивы образов.
Файл каталога (catalog.pcat1)
Является индексом для архивов файлов. Содержит список включенных файлов и используется для ускорения операций поиска.
Манифест (index.json)
Содержит список всех файлов резервной копии, их размеры и контрольные суммы. Используется для проверки согласованности резервной копии.
Пространство имен резервной копии
Позволяет использовать один домен дедупликации для нескольких источников, избегая конфликтов имен и обеспечивая гибкий контроль доступа.
Тип резервной копии
Сервер резервного копирования группирует резервные копии по типу:
  • vm — используется для виртуальных машин. Обычно резервная копия состоит из файла конфигурации виртуальной машины и архива образа для каждого диска;
  • ct — используется для контейнеров. Резервная копия состоит из конфигурации контейнера и одного архива файла для содержимого файловой системы;
  • host — используется для резервных копий файлов/каталогов, с физического или виртуального хоста. Такие резервные копии могут содержать архивы файлов и образов.
Backup ID
Уникальный идентификатор для определенного типа резервной копии и пространства имен резервной копии. Обычно это ID ВМ/контейнера или имя хоста.
Backup Time
Время создания резервной копии.
Backup Group
Кортеж <type>/<id> называется группой резервного копирования. Такая группа может содержать один или несколько снимков резервной копии.
Снимок резервной копии
Триплет <type>/<id>/<time> однозначно идентифицирует конкретную резервную копию. Примеры:
ct/100/2025-04-05T09:41:43Z
host/server/2025-04-06T10:36:33Z

59.2. Установка PBS

59.2.1. Установка сервера PBS

Установить пакет сервер PBS:
# apt-get install proxmox-backup-server
или через компоненты:
# alteratorctl components install proxmox-backup-server
Запустить и добавить в автозагрузку службу Proxmox Backup API Proxy:
# systemctl enable --now proxmox-backup-proxy.service
Служба proxmox-backup-proxy предоставляет API управления PBS по адресу 127.0.0.1:82. Она имеет права на выполнение всех привилегированных операций.

Примечание

Для работы с локальным ZFS-хранилищем должен быть установлен модуль ядра с поддержкой ZFS (пакет kernel-modules-zfs-<версия ядра>, например, kernel-modules-zfs-6.12).
Модуль ядра с поддержкой ZFS не входит в состав ISO-образа дистрибутива и устанавливается из репозитория p11.
Загрузить модуль:
# modprobe zfs
Чтобы модуль загружался автоматически при старте системы, следует раскомментировать строку:
#zfs
в файле /etc/modules-load.d/zfs.conf.

59.2.2. Установка клиента PBS

Установить клиент PBS:
# apt-get install proxmox-backup-client

59.3. Веб-интерфейс PBS

Веб-интерфейс PBS доступен по адресу https://<имя-компьютера|IP-адрес>:8007. Для входа требуется аутентификация (логин по умолчанию: root, пароль задаётся в процессе установки ОС):
Аутентификация в веб-интерфейсе PBS
Веб-интерфейс PBS:
Веб-интерфейс PBS

59.4. Настройка хранилища данных

59.4.1. Управление дисками

В веб-интерфейсе на вкладке УправлениеХранилище/Диски можно увидеть диски, подключённые к системе:
PBS. Диски, подключенные к системе
Просмотр списка дисков в командной строке:
# proxmox-backup-manager disk list
Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:
PBS. Создание файловой системы на диске
Пример создания файловой системы в командной строке (будет создана файловая система ext4 и хранилище данных на диске nvme0n3, хранилище данных будет создано по адресу /mnt/datastore/store1):
# proxmox-backup-manager disk fs create store1 \
--disk nvme0n3 --filesystem ext4 --add-datastore true

create datastore 'store1' on disk nvme0n3
Chunkstore create: 1%
Chunkstore create: 2%
…
Chunkstore create: 99%
TASK OK
Для создания zpool в веб-интерфейсе, следует перейти в раздел Хранилище/Диски, открыть вкладку ZFS и нажать кнопку Создать: ZFS. В открывшемся окне Создать: ZFS следует указать параметры zpool (задать имя хранилища, выбрать необходимые диски, выбрать уровень RAID) и нажать кнопку Создать:
PBS. Создание zpool
Команда для создания зеркального zpool с использованием двух дисков и монтированием в /mnt/datastore/zfs_st:
# proxmox-backup-manager disk zpool create zfs_st \
--devices nvme0n1,nvme0n2 --raidlevel mirror
Для мониторинга состояния локальных дисков используется пакет smartmontools. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:
# proxmox-backup-manager disk smart-attributes sdX

59.4.2. Создание локального хранилища данных

Хранилище данных — это место, где хранятся резервные копии. В текущей реализации PBS для хранения данных резервного копирования используется каталог в стандартной файловой системе (ext4, xfs или zfs) . Информация о конфигурации хранилищ данных хранится в файле /etc/proxmox-backup/datastore.cfg.
Необходимо настроить как минимум одно хранилище данных. Каждое хранилище идентифицируется по имени и указывает на каталог в файловой системе. Для каждого хранилища задаются параметры хранения, определяющие, сколько снимков резервных копий следует сохранять для каждого временного интервала (ежечасно, ежедневно, еженедельно, ежемесячно, ежегодно).
Для создания локального хранилища в веб-интерфейсе необходимо:
  1. Перейти в раздел Хранилище данных в боковом меню.
  2. Нажать кнопку Добавить хранилище данных.
  3. В открывшемся окне необходимо указать:
    • Имя — название хранилища данных;
    • Datastore Type (Тип хранилища) — выбрать Локальный. Доступные варианты: локальное, съёмное (removable), S3;
    • Путь к каталогу хранилища — абсолютный путь к каталогу, в котором будет создано хранилище данных;
    • Расписание сборщика мусора — частота, с которой запускается сборка мусора;
    • Расписание очистки — частота, с которой происходит удаление ранее созданных резервных копий;
    • Параметры очистки — количество резервных копий, которые необходимо хранить.
PBS. Создание локального хранилища данных
Создание локального хранилища данных в командной строке:
# proxmox-backup-manager datastore create store2 /mnt/backup/disk1
После создания хранилища в указанном каталоге появляется следующий макет:
# ls -arilh /mnt/backup/disk1/
итого 1,1M
2228231 -rw-r--r-- 1 backup backup    0 апр  4 15:55 .lock
2228230 drwxr-x--- 1 backup backup 1,1M апр  4 15:55 .chunks
2228228 drwxr-xr-x 3 root   root   4,0K апр  4 15:55 ..
2228229 drwxr-xr-x 3 backup backup 4,0K апр  4 15:55 .
где:
  • .lock — пустой файл, используемый для блокировки процесса;
  • .chunks — каталог, содержащий подкаталоги с именами от 0000 до ffff. В них будут храниться фрагментированные данные, полученные в результате резервного копирования.

59.4.3. Съёмные хранилища данных

Хранилища данных можно создавать на съёмных носителях для автономного хранения.
Съёмные хранилища данных привязаны к конкретному устройству и могут быть смонтированы и демонтированы. В остальном они ведут себя так же, как и обычные хранилища данных.
Съёмные хранилища можно создавать на уже отформатированных разделах с файловыми системами ext4 или xfs.

Примечание

Большинство современных файловых систем, поддерживаемых ядром Linux, подходят для использования. Однако, файловые системы на основе FAT не поддерживаются, так как:
  • они не реализуют концепцию владения файлами в стиле POSIX;
  • имеют ограничения на количество файлов в одном каталоге.
Если внешний диск отформатирован в FAT, его необходимо переформатировать в подходящую файловую систему перед использованием в качестве съёмного хранилища.
Для создания съёмного хранилища в веб-интерфейсе необходимо:
  1. Перейти в раздел Хранилище данных в боковом меню.
  2. Нажать кнопку Добавить хранилище данных.
  3. В открывшемся окне в списке Datastore Type (Тип хранилища) выбрать пункт Removable (Съёмное) и указать:
    • Имя — название хранилища данных;
    • Путь на устройстве — относительный путь к каталогу на съёмном устройстве, в котором будет создано хранилище данных;
    • Расписание сборщика мусора — частота, с которой запускается сборка мусора;
    • Расписание очистки — частота, с которой происходит удаление ранее созданных резервных копий;
    • Устройство — съёмный диск;
    • Параметры очистки — количество резервных копий, которые необходимо хранить.
PBS. Создание съёмного хранилища данных
Одно устройство может содержать несколько хранилищ данных, при условии, что они не вложены друг в друга.
Съёмные хранилища создаются по заданному относительному пути на устройстве. Чтобы использовать одно и то же хранилище хранилище на нескольких экземплярах PBS, при добавлении его на новом экземпляре PBS необходимо установить отметку Повторное использование существующего хранилища данных. Путь, указанный при создании съёмного хранилища, определяет, как PBS идентифицирует несколько хранилищ на одном устройстве, поэтому он должен совпадать на всех экземплярах.
Создание съёмного хранилища данных в командной строке:
# proxmox-backup-manager datastore create my_disk2 \
data --backing-device bc995ea6-e296-4682-82a9-5480de4f583c
где:
  • my_disk2 — имя хранилища;
  • data — относительный путь к каталогу на съёмном устройстве;
  • bc995ea6-e296-4682-82a9-5480de4f583c — UUID съёмного устройства.
Съёмное хранилище также можно создать на полностью неиспользуемом диске через УправлениеХранилище/ДискиКаталог, установив отметку в поле Съёмное хранилище данных:
PBS. Создание съёмного хранилища на неразмеченном диске
При использовании этого метода диск будет автоматически размечен и отформатирован для использования в качестве хранилища данных.
Устройства, на которых размещено только одно хранилище данных, монтируются автоматически. Размонтирование следует выполнять через пользовательский интерфейс, для этого нужно нажать кнопку Размонтировать на вкладке Сводка съёмного хранилища, или в командной строке:
# proxmox-backup-manager datastore unmount my_disk
В обоих случаях устройство будет отключено после завершения всех запущенных задач.
PBS. Вкладка «Сводка» съёмного хранилища
Если размонтирование не удается, причина фиксируется в журнале задач размонтирования, а хранилище данных переходит в режим обслуживания размонтирования, который блокирует любые операции ввода-вывода. В таких случаях режим обслуживания должен быть сброшен вручную.
PBS. Режим обслуживания
Перевести хранилище в режим обслуживания (offline):
# proxmox-backup-manager datastore update <имя_хранилища> --maintenance-mode offline
Вывести хранилище из режима обслуживания:
# proxmox-backup-manager datastore update <имя_хранилища> --delete maintenance-mode
Все съёмные хранилища монтируются в каталог /mnt/datastore/<имя_хранилища>, при этом указанный при создании путь определяет подкаталог на самом устройстве..
Вывести список хранилищ, присутствующих на устройстве, можно с помощью команды proxmox-backup-debug:
# proxmox-backup-debug inspect device /dev/sde1
Device contains 2 stores
---------------
Datastore at "/my_disk" | VM: 0, CT: 2, HOST: 0, NS: 0
Datastore at "/data" | VM: 0, CT: 0, HOST: 0, NS: 0
Задания проверки, очистки и сбора мусора пропускаются, если съёмное хранилище не смонтировано в момент их запуска. Задания синхронизации запускаются, но завершаются с ошибкой, указывающей, что хранилище данных не было смонтировано.

59.4.4. Управление хранилищами данных

Вывести список существующих хранилищ:
# proxmox-backup-manager datastore list
Изменить расписание сборки мусора и вывести настройки хранилища:
# proxmox-backup-manager datastore update store2 --gc-schedule 'Tue 04:27'
# proxmox-backup-manager datastore show store2
Удалить хранилище данных:
# proxmox-backup-manager datastore remove store2
Данная команда удаляет только конфигурацию хранилища данных. Данные в базовом каталоге сохраняются и не удаляются.

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

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

Примечание

Ограничение скорости не применяется к заданиям синхронизации. Чтобы ограничить входящий трафик, создаваемый заданием синхронизации, необходимо настроить ограничение скорости непосредственно в параметрах самого задания.
Настройка правила управления трафиком в веб-интерфейсе (в разделе КонфигурацияУправление трафиком нажать кнопку Добавить):
PBS. Настройка правила управления трафиком
Управление трафиком в консоли:
  • создать правило для ограничения трафика всех IPv4-клиентов (сеть 0.0.0.0/0) до 100 МБ/с:
    # proxmox-backup-manager traffic-control create rule0 \
      --network 0.0.0.0/0 \
      --rate-in 100MB --rate-out 100MB \
      --comment "Default rate limit (100MB/s) for all clients"
    
  • ограничить действие правила временными рамками (например, с 8 до 19 часов в будние дни):
    # proxmox-backup-manager traffic-control update rule0 \
      --timeframe "mon..fri 8-19"
    
  • вывести список текущих правил:
    # proxmox-backup-manager traffic-control list
    
  • удалить правило:
    # proxmox-backup-manager traffic-control remove rule0
    
  • показать текущее состояние (скорость передачи данных) по всем настроенным правилам:
    # proxmox-backup-manager traffic-control traffic
    

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

PBS поддерживает несколько источников аутентификации:
Выбор типа аутентификации в веб-интерфейсе
Данные пользователей хранятся в файле /etc/proxmox-backup/user.cfg.
Пользователя обычно идентифицируют по его имени и области аутентификации в формате <user>@<realm>.
После установки PBS существует один пользователь root@pam, соответствующий суперпользователю ОС. Этого пользователя нельзя удалить. Все системные уведомления отправляются на адрес электронной почты, назначенный этому пользователю. Поскольку суперпользователь обладает неограниченными правами, рекомендуется создать дополнительных пользователей с ограниченными привилегиями.

59.6.1. Области аутентификации

PBS поддерживает следующие области (методы) аутентификации:
  • Стандартная аутентификация Linux PAM (Linux PAM standart authentication) — пользователь аутентифицируется с помощью своего обычного системного пароля;
  • Сервер аутентификации Proxmox Backup (Proxmox Backup authentication server) — собственный механизм аутентификации PBS. Хешированные пароли хранятся в файле /etc/proxmox-backup/shadow.json;
  • Сервер Active Directory — позволяет аутентифицировать пользователей через AD. Поддерживает LDAP в качестве протокола аутентификации;
  • Сервер LDAP — позволяет использовать внешний LDAP-сервер для аутентификации пользователей (например, OpenLDAP);
  • Сервер OpenID Connect — уровень идентификации поверх протокола OAuth 2.0. Позволяет аутентифицировать пользователей на основе данных, предоставляемых внешним сервером авторизации.

59.6.1.1. Стандартная аутентификация Linux PAM

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

59.6.1.2. Сервер аутентификации PBS

Область аутентификации PBS представляет собой хранилище паролей в стиле Unix (/etc/proxmox-backup/shadow.json). Пароли хешируются с использованием алгоритма yescrypt.
Область аутентификации PBS создается по умолчанию.
Для добавления пользователя в веб-интерфейсе следует в разделе КонфигурацияУправление доступом перейти на вкладку Управление пользователями и нажать кнопку Добавить:
PBS. Добавление пользователя
Примеры команд для управления пользователями PBS:
  • просмотреть список пользователей:
    # proxmox-backup-manager user list
    
  • создать пользователя:
    # proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt
    
  • обновить свойства пользователя:
    # proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов
    
  • отключить учетную запись:
    # proxmox-backup-manager user update backup_u@pbs --enable 0
    
  • удалить учетную запись:
    # proxmox-backup-manager user remove backup_u@pbs
    

59.6.1.3. Аутентификация LDAP (FreeIPA)

В данном разделе приведён пример настройки LDAP-аутентификации с использованием сервера FreeIPA. В примере используются следующие исходные данные:
  • ipa.example.test, 192.168.0.113 — сервер FreeIPA;
  • admin@example.test — учётная запись с правами чтения в LDAP;
  • pve — группа, члены которой могут аутентифицироваться в PBS.
Для настройки аутентификации FreeIPA необходимо выполнить следующие шаги:
  1. Создать область аутентификации LDAP. Для этого в разделе КонфигурацияУправление доступомОбласти нажать кнопку ДобавитьСервер LDAP:
    Создать область аутентификации LDAP
  2. В открывшемся окне на вкладке Общее указать следующие данные:
    • Область — идентификатор области;
    • Имя основного домена (base_dn) — каталог, в котором выполняется поиск пользователей (cn=accounts,dc=example,dc=test);
    • Атрибут имени пользователя (user_attr) — атрибут LDAP, содержащий имя пользователя, с которым пользователи будут входить в систему (uid);
    • Имя домена привязки — имя пользователя, имеющего право поиска в каталоге (uid=admin,cn=users,cn=accounts,dc=example,dc=test);
    • Пароль привязки — пароль указанного пользователя;
    • Сервер — IP-адрес или имя FreeIPA-сервера (ipa.example.test или 192.168.0.113);
    • Резервный сервер (опционально) — адрес резервного сервера на случай, если основной сервер недоступен;
    • Порт — порт, который прослушивает сервер LDAP (обычно 389 без ssl, 636 с ssl).
    Настройка аутентификации FreeIPA (вкладка Общее)

    Примечание

    Если установить отметку Default Realm (Область по умолчанию), данная область будет использоваться на экране входа по умолчанию.
  3. На вкладке Параметры синхронизации заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
    • Атрибут имени (опционально) — атрибут LDAP, содержащий имя пользователя (givenname);
    • Атрибут фамилии (опционально) — атрибут LDAP, содержащий фамилию пользователя (sn);
    • Атрибут электронной почты (опционально) — атрибут LDAP, содержащий электронную почту пользователя (mail);
    • Классы пользователей — класс пользователей LDAP (inetOrgPerson);
    • Фильтр пользователей — фильтр пользователей (memberOf=cn=pve,cn=groups,cn=accounts,dc=example,dc=test).
    Настройка аутентификации FreeIPA (вкладка Параметры синхронизации)
  4. Нажать кнопку Добавить.
  5. Выбрать созданную область и нажать кнопку Синхронизировать:
    Кнопка Синхронизировать
  6. При необходимости указать параметры синхронизации и нажать кнопку Синхронизировать:
    Параметры синхронизации области аутентификации
    После синхронизации пользователи из FreeIPA появятся в PBS. Их можно просмотреть на вкладке Управление пользователями.
  7. Настроить разрешения для пользователя на вкладке Разрешения.

Примечание

Команда ручной синхронизации:
# proxmox-backup-manager ldap sync example.test
Для автоматической синхронизации пользователей и групп можно добавить эту команду в планировщик задач.

59.6.1.4. Аутентификация LDAP (Альт Домен)

В данном разделе приведён пример настройки LDAP-аутентификации для Альт Домен. В примере используются следующие исходные данные:
  • dc1.test.alt, 192.168.0.132 — сервер Альт Домен;
  • administrator@test.alt — учётная запись администратора (для большей безопасности рекомендуется использовать отдельную учетную запись с правами только на чтение);
  • office — группа, члены которой могут аутентифицироваться в PBS.
Для настройки LDAP-аутентификации необходимо выполнить следующие шаги:
  1. Создать область аутентификации LDAP. Для этого в разделе КонфигурацияУправление доступомОбласти нажать кнопку ДобавитьСервер LDAP:
    Создать область аутентификации LDAP
  2. На вкладке Общее указать следующие данные:
    • Область — идентификатор области;
    • Имя основного домена (base_dn) — каталог, в котором выполняется поиск пользователей (dc=test,dc=alt);
    • Атрибут имени пользователя (user_attr) — атрибут LDAP, содержащий имя пользователя, с которым пользователи будут входить в систему (sAMAccountName);
    • Имя домена привязки — имя пользователя, имеющего право поиска в каталоге (cn=Administrator,cn=Users,dc=test,dc=alt);
    • Пароль привязки — пароль указанного пользователя;
    • Сервер — IP-адрес или имя сервера (dc1.test.alt или 192.168.0.132);
    • Резервный сервер (опционально) — адрес резервного сервера на случай, если основной сервер недоступен;
    • Порт — порт, который прослушивает сервер LDAP (обычно 389 без ssl, 636 с ssl).
    Настройка аутентификации Альт Домен (вкладка Общее)

    Примечание

    Если установить отметку Default Realm (Область по умолчанию), данная область будет использоваться на экране входа по умолчанию.
  3. На вкладке Параметры синхронизации заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
    • Атрибут имени (опционально) — атрибут LDAP, содержащий имя пользователя (givenname);
    • Атрибут фамилии (опционально) — атрибут LDAP, содержащий фамилию пользователя (sn);
    • Атрибут электронной почты (опционально) — атрибут LDAP, содержащий электронную почту пользователя (mail);
    • Классы пользователей — класс пользователей LDAP (user);
    • Фильтр пользователей — фильтр пользователей ((&(objectclass=user)(samaccountname=*)(MemberOf=CN=office,cn=Users,dc=TEST,dc=ALT))).
    Настройка аутентификации Альт Домен (вкладка Параметры синхронизации)
  4. Нажать кнопку Добавить.
  5. Выбрать добавленную область и нажать кнопку Синхронизировать.
  6. При необходимости указать параметры синхронизации и нажать кнопку Синхронизировать:
    Параметры синхронизации области аутентификации
    После синхронизации пользователи из Альт Домена появятся в PBS. Сведения о пользователях можно просмотреть на вкладке Управление пользователями.
  7. Настроить разрешения для пользователя на вкладке Разрешения.

Примечание

Команда для ручной синхронизации:
# proxmox-backup-manager ldap sync test.alt
Для автоматической синхронизации пользователей и групп можно добавить эту команду в планировщик задач.

59.6.2. API-токены

Любой аутентифицированный пользователь может генерировать API-токены, которые, в свою очередь, можно использовать для настройки клиентов резервного копирования вместо прямого указания имени пользователя и пароля.
Назначение API-токенов:
  • возможность быстрого отзыва в случае компрометации клиента;
  • возможность ограничить разрешения для каждого клиента или токена в рамках прав самого пользователя.
Генерация API-токена в веб-интерфейсе:
PBS. Добавление API-токена
API-токен состоит из двух частей:
  • идентификатор (Token ID), который формируется из имени пользователя, области и имени токена (user@realm!имя токена);
  • секретное значение (secret).
Обе части необходимо предоставить клиенту вместо имени пользователя и пароля.
PBS. API-токен

Примечание

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

Примечание

Токен можно пересоздать, нажав кнопку Regenerate Secret. При этом все клиенты, использующие предыдущее секретное значение, потеряют доступ.
Создание API-токена в консоли:
# proxmox-backup-manager user generate-token backup_u@pbs client1
Result: {
  "tokenid": "backup_u@pbs!client1",
  "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
}

59.6.3. Управление доступом

По умолчанию новые пользователи и API-токены не имеют никаких разрешений. Чтобы предоставить доступ, необходимо назначить роли пользователям или токенам для определённых объектов, таких как хранилища данных или удалённые устройства.
Роль — это набор привилегий. В PBS предопределены следующие роли:
  • NoAccess — отсутствие привилегий (используется для явного запрета доступа);
  • Admin — полные привилегии;
  • Audit — доступ только для чтения;
  • DatastoreAdmin — полные привилегии для хранилищ данных;
  • DatastoreAudit — просмотр настроек хранилищ и их содержимого без возможности чтения фактических данных;
  • DatastoreBackup — создание и восстановление собственных резервных копий;
  • DatastorePowerUser — создание, восстановление и удаление собственных резервных копий;
  • DatastoreReader — просмотр содержимого хранилища и восстановление данных;
  • RemoteAdmin — полные привилегии для удалённых серверов PBS;
  • RemoteAudit — просмотр настроек удалённых серверов PBS;
  • RemoteDatastoreAdmin — полные привилегии для удаленных хранилищ;
  • RemoteDatastorePowerUser — удаленная очистка хранилищ данных;
  • RemoteSyncOperator — оператор синхронизации (чтение данных с удаленных PBS);
  • RemoteSyncPushOperator — оператор синхронизации (отправка данных по push);
  • TapeAdmin — полные привилегии для резервного копирования на ленту;
  • TapeAudit — просмотр настроек, метрик и состояния ленточных устройств;
  • TapeOperator — создание и восстановление резервных копий на ленту без возможности изменения конфигурации;
  • TapeReader — чтение и проверка конфигурации ленточных устройств.
PBS использует систему управления доступом на основе ролей и путей. Запись в таблице разрешений позволяет пользователю или токену выполнять определённый набор действий (роль) в отношении конкретного объекта (путь). Такое правило доступа можно представить в виде тройки (путь, пользователь/токен, роль), где роль роль определяет разрешённые действия, а путь указывает на цель этих действий.
Информация о правах доступа хранится в файле /etc/proxmox-backup/acl.cfg. Каждая строка файла содержит пять полей, разделённых двоеточием (':'):
acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin
Поля имеют следующее назначение:
  • тип записи — всегда acl;
  • статус — 1 (включено) или 0 (отключено);
  • путь к объекту — например, /datastore/store2;
  • идентификатор пользователч или токена — например, backup_u@pbs или backup_u@pbs!client1;
  • назначаемая роль — например, DatastoreAdmin.
Добавление разрешения в веб-интерфейсе (КонфигурацияУправление доступом вкладка Разрешения):
PBS. Добавление разрешения
Управление разрешениями в консоли:
  • добавить разрешение (назначить пользователю backup_u@pbs роль администратора хранилища store2, расположенного в /mnt/backup/disk1/store2):
    # proxmox-backup-manager acl update /datastore/store2 DatastoreAdmin --auth-id backup_u@pbs
    
  • вывести список всех разрешений:
    # proxmox-backup-manager acl list
    
  • просмотреть действующие разрешения для пользователя или токена:
    # proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store2
    Privileges with (*) have the propagate flag set
    
    Path: /datastore/store2
    - Datastore.Audit (*)
    - Datastore.Backup (*)
    - Datastore.Modify (*)
    - Datastore.Prune (*)
    - Datastore.Read (*)
    - Datastore.Verify (*)
    

Примечание

Для API-токенов необходимо создавать отдельные записи ACL. Токены не могут иметь больше прав, чем соответствующий пользователь.

59.6.4. Двухфакторная аутентификация

Примечание

Двухфакторная аутентификация реализована только для веб-интерфейса.
PBS. Двухфакторная аутентификация
PBS поддерживает следующие методы двухфакторной аутентификации:
  • TOTP (Time-Based One-Time Password) — одноразовый пароль, генерируемый на основе времени. Код обновляется каждые 30 секунд с использованием алгоритма TOTP;
  • WebAuthn (веб-аутентификация) — реализуется с помощью аппаратных ключей безопасности, встроенных TPM или других совместимых устройств. Для работы WebAuthn обязательно требуется HTTPS-соединение;
  • Ключи восстановления — набор одноразовых кодов, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть активен только один набор ключей восстановления.
Настройка аутентификации TOTP:
  • Добавление аутентификации TOTP на сервере:
    PBS. Настройка аутентификации TOTP
  • Использование TOTP при аутентификации пользователя:
    PBS. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе
Настройка аутентификации Ключи восстановления:
  • Создание набора ключей:
    PBS. Настройка аутентификации Ключи восстановления
  • Использование Ключей восстановления при аутентификации пользователя:
    PBS. Запрос второго фактора (Recovery Key) при аутентификации пользователя в веб-интерфейсе

Примечание

После 8 неудачных попыток ввода кода TOTP фактор TOTP для пользователя автоматически блокируется Разблокировка возможна только с использованием ключа восстановления. Если TOTP был единственным доступным методом двухфакторной аутентификации, потребуется вмешательство администратора. В этом случае настоятельно рекомендуется немедленно сменить пароль пользователя.
Администратор может разблокировать двухфакторную аутентификацию пользователя в веб-интерфейсе:
PBS. Разблокировка двухфакторной аутентификации
или в командной строке:
# proxmox-backup-manager user tfa unlock backup_u@pbs

59.7. Управление удалёнными PBS и синхронизация хранилищ

59.7.1. Удалённые сервера

Управлять удалёнными серверами PBS можно:
  • в веб-интерфейсе — на вкладке Удалённые хранилища;
  • в командной строке с помощью команды proxmox-backup-manager remote.
Информация о конфигурации удалённых серверов хранится в файле /etc/proxmox-backup/remote.cfg.
Чтобы добавить удалённый сервер PBS следует перейти в раздел КонфигурацияУдалённые хранилища и нажать кнопку Добавить:
PBS. Добавление удалённого PBS

Примечание

Отпечаток TLS-сертификата можно получить в веб-интерфейсе удалённого сервера PBS:
PBS. Отпечаток TLS-сертификата
Или в командной строке:
# proxmox-backup-manager cert info | grep Fingerprint
Управление удалёнными серверами в консоли:
  • добавить удалённый сервер:
    # proxmox-backup-manager remote create pbs2 \
      --host pbs2.test.alt --auth-id root@pam --password 'SECRET' \
      --fingerprint 42:5d:ff:3a:50:38:53:5a:9b:f7:50:...:ab:1b
    
  • вывести список удалённых серверов:
    # proxmox-backup-manager remote list
    
  • удалить удалённый сервер:
    # proxmox-backup-manager remote remove pbs2
    

Примечание

Удалить удалённый сервер можно только если с ним не связано ни одно задание синхронизации

59.7.2. Задания синхронизации

Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью заданий синхронизации.
Задания синхронизации — это автоматизированные задачи, которые копируют данные между хранилищами, обеспечивая резервирование и географическое распределение резервных копий. Они работают по принципу инкрементного копирования, передавая только изменения, что экономит время и пропускную способность сети.
Задания синхронизации работают в двух направлениях:
  • pull — копирование данных с удалённого сервера в локальное хранилище;
  • push — копирование данных с локального сервера на удаленный (полезно, если удаленный сервер не может инициировать подключения к локальному).
Задания синхронизации в направлении push отличаются от pull из-за ограниченного доступа к целевому хранилищу через API удалённого сервера. В частности, отправляемые данные всегда будут принадлежать пользователю, указанному в конфигурации удаленного сервера, независимо от локального пользователя, указанного в задании синхронизации. Последний используется исключительно для проверки разрешений и области действия на стороне отправителя.

Примечание

Для каждого задания синхронизации в направлении push рекомендуется создавать отдельную конфигурацию удалённого сервера с выделенным пользователем на удалённой стороне. В противном случае задания, отправляющие данные в одно и то же хранилище, могут удалить снимки и/или группы друг друга (если установлен флаг remove vanished), или пропустить снимки (если расписание не обеспечивает строго инкрементное резервное копирование).
Для заданий синхронизации направления pull требуются следующие разрешения:
  • Remote.Read на пути /remote/{remote}/{remote-store};
  • Datastore.Backup на локальном хранилище данных (/datastore/{store}).
Для заданий синхронизации направления push требуются следующие разрешения:
  • Remote.Audit для /remote/{remote} и Remote.DatastoreBackup для /remote/{remote}/{remote-store}/{remote-ns};
  • Datastore.Read и Datastore.Audit для локального пространства имен (/datastore/{store}/{ns}) или Datastore.Backup, если это пользователь является владельцем задания;
  • Remote.DatastorePrune для пути /remote/{remote}/{remote-store}/{remote-ns} для возможности удаления исчезнувших снимков и групп;
  • Remote.DatastoreModify для пути /remote/{remote}/{remote-store}/{remote-ns} для возможности удаления исчезнувших пространств имен.
На удалённом сервере следует использовать пользователя с минимально необходимыми правами.
Заданиями можно синхронизации управлять:
  • в веб-интерфейсе — на вкладке Задания синхронизации (в панели хранилища данных или самого хранилища);
  • в командной строке с помощью команды proxmox-backup-manager sync-job.
Конфигурация заданий хранится в файле /etc/proxmox-backup/sync.cfg.
Для настройки задачи синхронизации необходимо:
  1. В разделе Хранилище данных перейти на вкладку Задания синхронизации.
  2. Нажать кнопку Добавить и выбрать направление синхронизации:
    PBS. Выбор направления синхронизации
  3. В открывшемся окне на вкладке Options указать синхронизируемые хранилища, владельца и расписание синхронизации:
    PBS. Настройки задания синхронизации (pull-направление)
  4. На вкладке Фильтр групп настроить фильтрацию резервных копий. Будут синхронизироваться только те снимки, которые соответствуют хотя бы одному из критериев. Доступны следующие критерии:
    • Тип (type) — виртуальная машина (vm), контейнер (ct), хост (host);
    • Группа (group) — полный идентификатор группы (например, group:vm/100);
    • Регулярное выражение (regex) — регулярное выражение, сопоставленное с полным идентификатором группы (например, regex:'^vm/1\d{2,3}$').
    PBS. Настройки задания синхронизации (фильтр групп)
    Фильтры можно инвертировать, указав их в разделе Exclude filters.
Правила применения фильтров:
  • если фильтры не заданы — синхронизируются все резервные копии;
  • если заданы только фильтры включения (includes) — синхронизируются только соответствующие снимки;
  • если заданы только фильтры исключения (exclude) — синхронизируются все снимки, кроме исключённых;
  • если заданы оба типа фильтров — синхронизируются снимки, соответствующие фильтрам включения, за исключением тех, что попадают под фильтры исключения.
После создания задание запускается по расписанию, а также может быть запущено вручную (кнопка Запустить сейчас).
Управление заданиями синхронизации в консоли:
  • создать задание синхронизации (по умолчанию направление pull):
    # proxmox-backup-manager sync-job create test_job \
      --store zfs_st --owner root@pam \
      --remote pbs2 --remote-store remotestore \
      --schedule 'Sat 18:15'
    
  • создать задание в направлении push:
    # proxmox-backup-manager sync-job create test_job_push \
      --sync-direction push --store zfs_st --owner root@pam \
      --remote pbs2 --remote-store my_disk --schedule '0/2:00'
    
  • добавить комментарий к заданию:
    # proxmox-backup-manager sync-job update test_job --comment 'offsite'
    
  • добавить фильтр (синхронизировать резервные копии контейнеров, кроме ct/100):
    # proxmox-backup-manager sync-job update test_job \
      --group-filter type:ct --group-filter exclude:group:ct/100
    
  • вывести список заданий:
    # proxmox-backup-manager sync-job list
    
  • удалить задание:
    # proxmox-backup-manager sync-job remove test_job
    

59.8. Клиент резервного копирования

Клиент резервного копирования использует следующий формат для указания репозитория хранилища данных на сервере резервного копирования (имя пользователя указывается в виде user@realm):
[[пользователь@]сервер[:порт]:]datastore
Значение по умолчанию для пользователя — root@pam. Если сервер не указан, используется localhost.
Репозиторий можно задать, передав его в параметре --repository, или установив переменную окружения PBS_REPOSITORY, например:
# export PBS_REPOSITORY=pbs.test.alt:store1

Таблица 59.1. Примеры репозиториев

Пример
Пользователь
Хост:Порт
Хранилище
store1
root@pam
localhost:8007
store1
pbs.test.alt:store1
root@pam
pbs.test.alt:8007
store1
backup_u@pbs@pbs.test.alt:store1
backup_u@pbs
pbs.test.alt:8007
store1
backup_u@pbs!client1@pbs.test.alt:store1
backup_u@pbs!client1
pbs.test.alt:8007
store1
192.168.0.123:1234:store1
root@pam
192.168.0.123:1234
store1

59.8.1. Создание резервной копии

В этом разделе описано, как создать резервную копию на клиентской машине (физическом хосте, ВМ или контейнере). Такие резервные копии могут содержать файловые архивы или образы блочных устройств.
Создание резервной копии домашнего каталога пользователя user (будет создан архив user.pxar):
$ proxmox-backup-client backup user.pxar:/home/user/ \
  --repository pbs.test.alt:store1

Password for "root@pam": ***
Starting backup: host/server/2025-04-06T10:36:33Z
Client name: server
Starting backup protocol: Sun Apr  6 12:36:35 2025
fingerprint: 14:a3:8f:58:a4:5d:fd:8d:3a:71:cf:40:8d:d4:54:1b:01:47:bf:70:4b:31:15:a1:94:93:4b:8e:56:d2:5b:0a
Are you sure you want to continue connecting? (y/n): y
No previous manifest available.
Upload directory '/home/user/' to 'store1' as user.pxar.didx
user.pxar: had to backup 24.408 KiB of 24.408 KiB (compressed 8.303 KiB) in 0.01 s (average 2.254 MiB/s)
Uploaded backup catalog (598 B)
Duration: 6.49s
End Time: Sun Apr  6 12:36:42 2025
Команда proxmox-backup-client backup принимает список параметров резервного копирования, включая имя архива на сервере, тип архива и источник архива на клиенте, в формате:
<archive-name>.<type>:<source-path>
Тип .pxar используется для файловых архивов, а тип .img — для образов блочных устройств.
Создание резервной копии блочного устройства:
$ proxmox-backup-client backup mydata.img:/dev/mylvm/mydata \
  --repository pbs.test.alt:zfs_st

Password for "root@pam": ***
Starting backup: host/server/2025-04-06T14:21:00Z
Client name: server
Starting backup protocol: Sun Apr  6 16:21:02 2025
fingerprint: 14:a3:8f:58:a4:5d:fd:8d:3a:71:cf:40:8d:d4:54:1b:01:47:bf:70:4b:31:15:a1:94:93:4b:8e:56:d2:5b:0a
Are you sure you want to continue connecting? (y/n): y
storing login ticket failed: $XDG_RUNTIME_DIR must be set
Downloading previous manifest (Sun Apr  6 16:06:55 2025)
Couldn't re-use previous manifest - missing key - manifest was created with key a9:25:e2:c8:24:26:23:3b
Upload image '/dev/mylvm/mydata' to 'zfs_st' as mydata.img.fidx
mydata.img: had to backup 4 MiB of 4.766 GiB (compressed 159 B) in 8.21 s (average 499.086 KiB/s)
mydata.img: backup was done incrementally, reused 4.762 GiB (99.9%)
Duration: 15.70s
End Time: Sun Apr  6 16:21:18 2025

Примечание

Сообщение:
'Previous manifest does not contain an archive called 'mydata.img.fidx', skipping download..'
не является ошибкой — это часть нормального процесса при первом резервном копировании.

Примечание

Ход выполнения резервного копирования можно отслеживать в веб-интерфейсе PBS, нажав кнопку Задачи:
PBS. Выполняется резервное копирование

59.8.2. Создание зашифрованной резервной копии

PBS поддерживает шифрование на стороне клиента с использованием AES-256 в режиме GCM.
Cначала следует создать ключ шифрования:
$ proxmox-backup-client key create my-backup.key
Encryption Key Password: ******
Verify Password: ******
Создание зашифрованной резервной копии:
$ proxmox-backup-client backup user.pxar:/home/user/ \
--repository pbs.test.alt:store1 --keyfile ./my-backup.key

Password for "root@pam": ***
Starting backup: host/server/2025-04-06T14:06:55Z
Client name: server
Starting backup protocol: Sun Apr  6 16:06:57 2025
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption key fingerprint: a9:25:e2:c8:24:26:23:3b
Downloading previous manifest (Sun Apr  6 12:36:33 2025)
Upload directory '/home/user/' to 'store1' as user.pxar.didx
user.pxar: had to backup 24.905 KiB of 24.905 KiB (compressed 8.69 KiB) in 0.00 s (average 7.099 MiB/s)
Uploaded backup catalog (620 B)
Duration: 4.22s
End Time: Sun Apr  6 16:07:01 2025

Содержимое хранилища store1:
PBS. Содержимое хранилища store1

59.8.3. Восстановление данных

Просмотр списка снимков на сервере:
$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
Password for "root@pam": ******

┌─────────────────────────────────────┬────────────┬─────────────────────────────────────┐
│ snapshot                            │       size │ files                               │
╞═════════════════════════════════════╪════════════╪═════════════════════════════════════╡
│ host/server/2025-04-06T10:36:33Z    │ 25.359 KiB │ catalog.pcat1 index.json user.pxar  │
├─────────────────────────────────────┼────────────┼─────────────────────────────────────┤
│ host/server/2025-04-06T14:21:00Z    │  4.766 GiB │ index.json mydata.img               │
└─────────────────────────────────────┴────────────┴─────────────────────────────────────┘
Просмотр содержимого снимка:
$ proxmox-backup-client catalog dump \
host/server/2025-04-06T10:36:33Z --repository pbs.test.alt:store1
Команда восстановления архива из резервной копии:
proxmox-backup-client restore <снимок> <имя-архива> <целевой-путь> [ОПЦИИ]
Восстановление архива user.pxar в каталог /home/user/restore:
$ proxmox-backup-client restore  host/server/2025-04-06T10:36:33Z user.pxar \
/home/user/restore --repository pbs.test.alt:store1
Получить содержимое любого архива можно, восстановив файл index.json в репозитории по целевому пути «-»:
$ proxmox-backup-client restore  host/server/2025-04-06T10:36:33Z \
index.json - --repository pbs.test.alt:store1
Результат будет выведен в стандартный поток вывода.
Если необходимо восстановить несколько отдельных файлов, можно использовать интерактивное восстановление:
$ proxmox-backup-client catalog shell host/server/2025-04-06T10:36:33Z \
user.pxar --repository pbs.test.alt:store1

Starting interactive shell
pxar:/ > ls
…
Пример поиска в содержимом архива и восстановление данных:
pxar:/ > find  *.txt --select
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > list-selected
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > restore-selected /home/user/restore/
pxar:/ > restore /home/user/conf/ --pattern *.conf
pxar:/ > exit
где:
  • find *.txt --select — найти все файлы с расширением .txt и добавить их в список для восстановления;
  • list-selected — вывести список выбранных файлов;
  • restore-selected /home/user/restore/ — восстановить выбранные файлы в указанный каталог;
  • restore /home/user/conf/ --pattern *.conf — восстановить все файлы с расширением .conf в /home/user/conf/ на локальном хосте.

59.8.4. Аутентификация и завершение сеанса

При первом обращении к серверу через proxmox-backup-client, требуется ввести пароль. Сервер проверяет учётные данные и выдаёт билет аутентификации, действительный 2 часа. Клиент использует его для последующих запросов к серверу
Можно вручную инициировать аутентификацию и завершение сеанса.
Ручная аутентификация:
$ proxmox-backup-client login --repository pbs.test.alt:store1
Password for "root@pam": ******
Завершение сеанса (удаление билета):
$ proxmox-backup-client logout --repository pbs.test.alt:store1

59.9. Интеграция с PVE

PBS можно интегрировать в автономную или кластерную установку PVE, добавив его как хранилище резервных копий:
PVE. Добавление хранилища Proxmox Backup Server
Диалог создания хранилища pbs_backup типа Proxmox Backup Server для хранения резервных копий:
PVE. Диалог создания хранилища Proxmox Backup Server

Примечание

Отпечаток TLS-сертификата можно получить в веб-интерфейсе сервера резервного копирования:
PBS. Отпечаток TLS-сертификата
Или, выполнив следующую команду на сервере резервного копирования:
# proxmox-backup-manager cert info | grep Fingerprint
Fingerprint (sha256): c8:26:af:4a:c3:dc:60:72:4a:0b:4d:c1:e6:58:02:62:90:39:cb:fc:75:5d:00:9a:57:ca:3d:28:a0:2c:99:a5
Добавление хранилища в командной строке:
# pvesm add pbs pbs_backup \
  --server pbs.test.alt --datastore store1 \
  --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5 \
  --username root@pam --password
Проверка состояния хранилища:
# pvesm status --storage pbs_backup
Name              Type     Status           Total            Used       Available        %
pbs_backup         pbs     active        30786448         3097752        26099504   10.06%
После добавления хранилища типа Proxmox Backup Server в PVE можно создавать резервные копии ВМ и контейнеров в него так же, как и в любые другие хранилища.

59.10. Резервное копирование на ленту

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

Примечание

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

59.10.1. Поддерживаемое оборудование

PBS поддерживает ленточные накопители Linear Tape-Open 5-го поколения (LTO-5) и новее, а также обеспечивает ограниченную поддержку 4-го поколения (LTO-4).
Смена лент осуществляется по протоколу SCSI Medium Changer, поэтому все современные ленточные библиотеки совместимы с PBS.
Современные ленты LTO-8 обеспечивают скорость чтения/записи до 360 МБ/с Даже при максимальной скорости полная запись или чтения одной ленты занимает не менее 9 часов.
Единственный способ увеличить общую пропускную способность — использовать несколько приводов одновременно. Таким образом, можно запускать несколько заданий резервного копирования параллельно или выполнять восстановление на одних приводах, пока другие заняты резервным копированием.
Необходимо также учитывать, что данные сначала считываются из дискового хранилища. Однако обычные жёсткие диски не способны выдавать данные со скоростью 360 МБ/с. На практике скорость чтения обычно составляет 60–100 МБ/с, поэтому для чтения 12 ТБ, необходимых для заполнения ленты LTO-8, требуется около 33 часов. Чтобы записывать на ленту на полной скорости, необходимо, чтобы исходное хранилище данных обеспечивало соответствующую производительность (например, использовать SSD).
Начиная с LTO-9, при первом использовании любой новый носитель необходимо калибровать (инициализировать) в ленточном приводе для достижения максимальной ёмкости и надёжности записи. Калибровка занимает от 40 до 120 минут на каждый носитель. Рекомендуется выполнять инициализацию с помощью инструментов, предоставляемых производителем привода или чейнджера. Некоторые устройства смены лент поддерживают массовую инициализацию.
Форматирование лент в PBS особым образом, чтобы избежать повторной оптимизации при каждом форматировании или маркировке. Если носитель нужно отформатировать впервые или после использования с другой программой, следует либо использовать встроенные функции привода/чейнджера, либо выполнить «медленное» форматирование в командной строке:
# proxmox-tape format --drive your-drive --fast 0
Эта команда полностью стирает все данные и запускает этап оптимизации.
Если носитель LTO-9 форматируется «быстрым» методом (по умолчанию или с параметром --fast 1), форматируется только первый раздел ленты.

59.10.2. Быстрый старт

Для настройки резервного копирования на ленту необходимо:
  • настроить оборудование (ленточные приводы и устройства смены лент);
  • создать один или несколько пулов носителей;
  • промаркировать ленточные картриджи;
  • запустить задание резервного копирования на ленту.
Дополнительно рекомендуется выполнить следующие настройки:
  1. Убедиться, что загружен модуль ядра sg:
    # lsmod | grep sg
    
    Если вывод пуст, загрузить модуль sg:
    # modprobe sg
    
    Чтобы модуль загружался автоматически при загрузке системы, необходимо создать файл /etc/modules-load.d/sg.conf, в который добавить имя модуля:
    # echo sg > /etc/modules-load.d/sg.conf
    
  2. Установить пакеты mt-st и mtx (если они еще не установлены):
    # apt-get install mt-st mtx
    
  3. Для удобства отображения устройств на шине SCSI можно также установить пакет lsscsi и проверить подключённые устройства:
    # apt-get install lsscsi
    # lsscsi -g
    
    либо:
    # lsscsi -vd
    
    В выводе должны присутствовать наименования устройств, с указанием устройств в служебной ФС ядра /dev, например:
    # lsscsi -g
    [1:2:0:0] tape HP Ultrium 5-SCSI Z39W /dev/st0 /dev/sg4 (ленточный привод)
    [1:2:0:1] mediumx HP MSL G3 Series 6.20 /dev/sch0 /dev/sg5 (устройство смены лент)
    
  4. Использовать утилиту mtx для управления роботом:
    # mtx <устройство> команда
    
    Например:
    # mtx -f /dev/sg5 status
    Storage Changer /dev/sg5:1 Drives, 16 Slots (
    0 Import/Export ) Data Transfer Element 0:Empty Storage Element 1:Empty
    Storage Element 2:Empty Storage Element 3:Empty Storage Element 4:Empty
    Storage Element 5:Empty Storage Element 6:Empty Storage Element 7:Empty
    Storage Element 8:Empty Storage Element 9:Empty Storage Element
    10:Empty Storage Element 11:Empty Storage Element 12:Empty Storage
    Element 13:Empty Storage Element 14:Empty Storage Element 15:Empty
    Storage Element 16:Empty
    
    Основные команды mtx:
    • status — отображает текущее состояние;
    • inventory — выполняет инвентаризацию лент;
    • load <номер_слота> [<номер_привода>] — загружает ленту из слота в привод;
    • unload [<номер_слота>] [<номер_привода>] — выгружает ленту из привода.

    Примечание

    • mtx — низкоуровневый интерфейс для управления устройством смены лент
    • mt — низкоуровневый интерфейс для управления ленточным приводом

Примечание

Пакеты mt-st, mtx и lsscsi не входят в состав ISO-образа дистрибутива и устанавливаются из репозитория p11.

59.10.3. Настройка резервного копирования

Все настройки можно выполнять как в веб-интерфейсе, так и в командной строке.

Примечание

Если при работе с новой лентой возникает ошибка
TASK ERROR: media read error - read failed - Blank Check, Additional sense: End-of-data not found
необходимо выполнить команду:
# pmt rewind

59.10.3.1. Устройства смены лент (Tape changers)

Этот шаг можно пропустить, если используется автономный ленточный привод (без библиотеки).
Устройства смены лент (роботы) являются частью ленточной библиотеки. Они содержат несколько слотов для ленточных картриджей, считыватель штрих-кода для идентификации картриджей с лентой и автоматизированный механизм загрузки лент в привод.
Сканирование доступных устройств:
# proxmox-tape changer scan
┌─────────────────────────────┬─────────┬──────────────┬────────┐
│ path                        │ vendor  │ model        │ serial │
╞═════════════════════════════╪═════════╪══════════════╪════════╡
│ /dev/tape/by-id/scsi-CC2C52 │ Quantum │ Superloader3 │ CC2C52 │
└─────────────────────────────┴─────────┴──────────────┴────────┘
Чтобы использовать устройство с PBS, необходимо создать конфигурацию устройства:
# proxmox-tape changer create CHGR1 --path /dev/tape/by-id/scsi-CC2C52
где CHGR1 — произвольное имя.

Примечание

Имена вида /dev/sg* могут изменяться после перезагрузки. Необходимо использовать постоянные имена устройств, например: /dev/tape/by-id/.
Операцию добавления устройства смены лент также можно выполнить в веб-интерфейсе. Для этого в разделе Резервное копирование на лентуСменщики, необходимо нажать кнопку Добавить:
Резервное копирование на ленту. Устройства смены лент
Откроется диалоговое окно, в котором следует указать имя и выбрать устройство:
Резервное копирование на ленту. Добавление нового устройства смены ленты
Просмотр конфигурации:
# proxmox-tape changer config CHGR1
┌──────┬─────────────────────────────┐
│ Name │ Value                       │
╞══════╪═════════════════════════════╡
│ name │ CHGR1                       │
├──────┼─────────────────────────────┤
│ path │ /dev/tape/by-id/scsi-CC2C52 │
└──────┴─────────────────────────────┘
Список всех настроенных устройств:
# proxmox-tape changer list
┌──────┬─────────────────────────────┬─────────┬──────────────┬────────────┐
│ name │ path                        │ vendor  │ model        │ serial     │
╞══════╪═════════════════════════════╪═════════╪══════════════╪════════════╡
│ CHGR1│ /dev/tape/by-id/scsi-CC2C52 │ Quantum │ Superloader3 │ CC2C52     │
└──────┴─────────────────────────────┴─────────┴──────────────┴────────────┘
Производитель, модель и серийный номер определяются автоматически, но отображаются только в том случае, если устройство подключено.
Проверка статуса устройства:
# proxmox-tape changer status CHGR1
┌───────────────┬──────────┬────────────┬─────────────┐
│ entry-kind    │ entry-id │ label-text │ loaded-slot │
╞═══════════════╪══════════╪════════════╪═════════════╡
│ drive         │        0 │ vtape1     │           1 │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        1 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        2 │ vtape2     │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ ...           │      ... │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │       16 │            │             │
└───────────────┴──────────┴────────────┴─────────────┘
Ленточные библиотеки часто имеют специальные слоты импорта/экспорта («почтовые слоты»). Ленты в них доступны снаружи и считаются автономными, поэтому не используются в заданиях резервного копирования. Такие слоты автоматически помечаются как слоты import-export в выводе команды proxmox-tape changer status.
Некоторые компактные ленточные библиотеки не имеют таких слотов и не предоставляют к ним доступ через SCSI. Поэтому их нельзя увидеть в выводе команды proxmox-tape changer status.
В этом случае можно вручную назначить обычные слоты как слоты экспорта:
# proxmox-tape changer update CHGR1 --export-slots 15,16
Теперь эти слоты будут отображаться как import-export::
# proxmox-tape changer status CHGR1
┌───────────────┬──────────┬────────────┬─────────────┐
│ entry-kind    │ entry-id │ label-text │ loaded-slot │
╞═══════════════╪══════════╪════════════╪═════════════╡
│ drive         │        0 │ vtape1     │           1 │
├───────────────┼──────────┼────────────┼─────────────┤
│ import-export │       15 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ import-export │       16 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        1 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        2 │ vtape2     │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ ...           │      ... │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │       14 │            │             │
└───────────────┴──────────┴────────────┴─────────────┘
В зависимости от модели устройства может потребоваться настройка дополнительных параметров. Например, для некоторых устройств необходимо извлекать ленту перед выгрузкой:
# proxmox-tape changer update CHGR1 --eject-before-unload true

59.10.3.2. Ленточные накопители (приводы)

Сканирование доступных приводов:
# proxmox-tape drive scan
┌────────────────────────────────┬────────┬─────────────┬────────┐
│ path                           │ vendor │ model       │ serial │
╞════════════════════════════════╪════════╪═════════════╪════════╡
│ /dev/tape/by-id/scsi-12345-sg  │ IBM    │ ULT3580-TD4 │  12345 │
└────────────────────────────────┴────────┴─────────────┴────────┘
Чтобы использовать этот привод с PBS, необходимо создать конфигурацию привода. Это можно сделать в веб-интерфейсе Резервное копирование на лентуДискиДобавить:
Резервное копирование на ленту. Добавление нового ленточного привода
Или с помощью команды:
# proxmox-tape drive create mydrive --path /dev/tape/by-id/scsi-<цифры>-sg

Примечание

Необходимо использовать постоянные имена устройств (/dev/tape/by-id/), а не /dev/sg*.
При наличии ленточной библиотеки, также необходимо настроить соответствующее устройство смены лент:
# proxmox-tape drive update mydrive --changer CHGR1 --changer-drivenum 0
Параметр --changer-drivenum необходим только при наличии нескольких приводов в библиотеке (номера отображаются в выводе команды proxmox-tape changer status).

Примечание

Значение 0, указанное в параметре --changer-drivenum, не сохраняется явно в конфигурации, поскольку используется по умолчанию.
Просмотр конфигурации:
# proxmox-tape drive config mydrive
┌─────────┬────────────────────────────────┐
│ Name    │ Value                          │
╞═════════╪════════════════════════════════╡
│ name    │ mydrive                        │
├─────────┼────────────────────────────────┤
│ path    │ /dev/tape/by-id/scsi-12345-sg  │
├─────────┼────────────────────────────────┤
│ changer │ CHGR1                          │
└─────────┴────────────────────────────────┘
Список всех настроенных приводов:
# proxmox-tape drive list
┌────────┬──────────────────────────────┬────────┬───────┬────────────┬────────┐
│ name   │ path                         │ changer│ vendor│ model      │ serial │
╞════════╪══════════════════════════════╪════════╪═══════╪════════════╪════════╡
│ mydrive│ /dev/tape/by-id/scsi-12345-sg│ CHGR1  │ IBM   │ ULT3580-TD4│ 12345  │
└────────┴──────────────────────────────┴────────┴───────┴────────────┴────────┘
Производитель, модель и серийный номер отображаются только если устройство подключено.
Проверка состояния привода:
# proxmox-tape status --drive mydrive
┌────────────────┬──────────────────────────┐
│ Name           │ Value                    │
╞════════════════╪══════════════════════════╡
│ blocksize      │ 0                        │
├────────────────┼──────────────────────────┤
│ density        │ LTO4                     │
├────────────────┼──────────────────────────┤
│ compression    │ 1                        │
├────────────────┼──────────────────────────┤
│ buffer-mode    │ 1                        │
├────────────────┼──────────────────────────┤
│ alert-flags    │ (empty)                  │
├────────────────┼──────────────────────────┤
│ file-number    │ 0                        │
├────────────────┼──────────────────────────┤
│ block-number   │ 0                        │
├────────────────┼──────────────────────────┤
│ manufactured   │ Fri Dec 13 01:00:00 2019 │
├────────────────┼──────────────────────────┤
│ bytes-written  │ 501.80 GiB               │
├────────────────┼──────────────────────────┤
│ bytes-read     │ 4.00 MiB                 │
├────────────────┼──────────────────────────┤
│ medium-passes  │ 20                       │
├────────────────┼──────────────────────────┤
│ medium-wearout │ 0.12%                    │
├────────────────┼──────────────────────────┤
│ volume-mounts  │ 2                        │
└────────────────┴──────────────────────────┘

Примечание

Размер блока всегда должен быть равен 0 (режим переменного размера блока).

59.10.3.3. Медиа-пулы (пулы носителей)

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

    Примечание

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

    Примечание

    Срок хранения начинается с момента создания нового набора носителей.
  • Всегда создавать новый набор носителей (always).
    Каждое задание резервного копирования создает новый набор носителей. Это менее эффективно по использованию места, поскольку носитель из последнего набора может быть записан не полностью, а оставшееся пространство останется неиспользованным.
    Такой подход обеспечивает:
    • минимальный размер наборы носителей;
    • простоту перемещения и хранения;
    • быстрое восстановление.

    Примечание

    Срок хранения начинается с момента создания набора носителей.
  • Создать новый набор по расписанию (systemd.time).
    Позволяет задавать моменты создания нового набора с помощью синтаксиса systemd (см. man systemd.time). Например, значение weekly (или Mon *-*-* 00:00:00) создаёт новый набор каждую неделю.
    Этот режим балансирует между эффективностью и удобством управления.

    Примечание

    Срок хранения начинается либо с момента создания следующего набора, либо, если он не запланирован, — с момента следующего срабатывания календарного события после начала текущего набора.
Дополнительные условия создания нового набора:
  • требуемая лента находится в автономном режиме (и используется ленточная библиотека);
  • текущий набор содержит поврежденные или устаревшие ленты;
  • изменён ключ шифрования пула;
  • обнаружены ошибки согласованности базы данных (например, отсутствует или противоречива информация в описи).
Политика хранения определяет, как обрабатываются ленты после завершения записи:
  • всегда перезаписывать носитель (overwrite);
  • защищать данные в течение указанного срока;
  • никогда не перезаписывать данные (keep).
Ленточные накопители LTO-4 (или более поздних версий) поддерживают аппаратное шифрование. При включении шифрования в пуле все данные записываются с использованием заданного ключа, что предотвращает несанкционированный доступ.

Примечание

Если клиент резервного копирования также шифрует данные, то данные на ленте будут зашифрованы дважды.
Защищенный паролем ключ хранится на каждой ленте и может быть восстановлен по паролю.
Для добавления нового пула носителей в Резервное копирование на лентуПулы носителей следует нажать кнопку Добавить:
Резервное копирование на ленту. Добавление нового пула
Или воспользоваться командой:
# proxmox-tape pool create <Имя> [OPTIONS]
Пример добавления пула:
# proxmox-tape pool create daily
# proxmox-tape pool update daily --allocation daily --retention 7days
Список настроенных пулов:
# proxmox-tape pool list
┌───────┬──────────┬────────────┬───────────┬──────────┐
│ name  │ drive    │ allocation │ retention │ template │
╞═══════╪══════════╪════════════╪═══════════╪══════════╡
│ daily │ mydrive  │ daily      │ 7days     │          │
└───────┴──────────┴────────────┴───────────┴──────────┘

59.10.3.4. Задания резервного копирования на ленту

Для автоматизации резервного копирования на ленту создаются задания, которые по расписанию копируют данные из хранилища в пул носителей.
При создании задания резервного копирования на ленту необходимо указать:
  • store — хранилище данных, резервную копию которого нужно создать;
  • pool — пул носителей (используются только ленточные картриджи из этого пула);
  • drive — ленточный привод;
  • schedule — расписание заданий.
Пример настройки задания резервного копирования на ленту для хранилища данных pve-backup:
# proxmox-tape backup-job create job2 --store pve-backup \
  --pool mypool --drive mydrive --schedule daily
Дополнительные настройки:
  • Включать только последние снимки (по умолчанию резервная копия включает все снимки из группы резервного копирования):
    # proxmox-tape backup-job update job2 --latest-only
    
  • Указать получателя уведомлений о запросах на ленту или отчетов об ошибках:
    # proxmox-tape backup-job update job2 --notify-user root@pam
    

    Примечание

    Для возможности отправки электронной почты должен быть установлен пакет postfix и запущена соответствующая служба:
    # systemctl enable --now postfix
  • Извлекать ленту после завершения резервного копирования:
    # proxmox-tape backup-job update job2 --eject-media
    
    Для автономных приводов опция --eject-media извлекает ленту, гарантируя, что следующая резервная копия не сможет использовать ленту (если только кто-то вручную не загрузит ленту). Для ленточных библиотек этот параметр выгружает ленту в свободный слот.

    Примечание

    В случае если задание завершается ошибкой, лента остается в приводе.
  • Переместить весь набор в слот экспорта:
    # proxmox-tape backup-job update job2 --export-media-set
    
    Это гарантирует, что ленты больше не будут использоваться, и принудительно запускает новый набор.
Запуск задания резервного копирования вручную:
# proxmox-tape backup-job run job2
Удаление задания резервного копирования:
# proxmox-tape backup-job remove job2
По умолчанию резервная копия включает все рекурсивные пространства имён. Можно ограничить копирование, указав одно пространство имен с помощью параметра --ns и глубину с помощью параметра --max-deep. Например:
# proxmox-tape backup-job update job2 --ns mynamespace --max-depth 3
Если --max-deep не указан, копируются все вложенные пространства имён.
Операции с заданиями резервного копирования можно также выполнять в веб-интерфейсе на вкладке Резервное копирование на лентуЗадания резервного копирования. При создании задания резервного копирования в поле Локальное хранилище данных следует указать хранилище данных, для которого будет создаваться резервная копию, а в поле Пул носителей — пул, в который выполняется резервное копирование:
Резервное копирование на ленту. Добавление задания резервного копирования

59.10.4. Администрирование

Во многих подкомандах proxmox-tape используется параметр --drive для указанием привода, с которым будет происходить работа. Для удобства можно задать привод через переменную окружения:
# export PROXMOX_TAPE_DRIVE=mydrive
После этого параметр --drive можно опускать в командах.. Если привод связан с устройством смены лент, также можно не указывать параметр --changer в командах, которым требуется устройство смены лент, например:
# proxmox-tape changer status
Эта команда отобразит статус устройства смены лент, связанного с приводом mydrive.

59.10.4.1. Этикетки

По умолчанию все ленточные картриджи выглядят одинаково, поэтому для идентификации на них необходимо нанести этикетку. Сначала следует наклеить на картридж физическую этикетку с текстом. Затем необходимо записать тот же текст на ленту с помощью ПО.
Для автономного привода необходимо вставить новый ленточный картридж в привод и выполнить команду:
# proxmox-tape label --label-text <текст метки> [--pool <имя пула>]
Аргумент --pool можно опустить, чтобы разрешить использование ленты любым пулом.

Примечание

По соображениям безопасности команда label не выполняется, если лента содержит данные.
Чтение метки:
# proxmox-tape read-label
┌─────────────────┬──────────────────────────────────────┐
│ Name            │ Value                                │
╞═════════════════╪══════════════════════════════════════╡
│ label-text      │ vtape1                               │
├─────────────────┼──────────────────────────────────────┤
│ uuid            │ 7f42c4dd-9626-4d89-9f2b-c7bc6da7d533 │
├─────────────────┼──────────────────────────────────────┤
│ ctime           │ Wed Jul 24 09:13:36 2024             │
├─────────────────┼──────────────────────────────────────┤
│ pool            │ daily                                │
├─────────────────┼──────────────────────────────────────┤
│ media-set-uuid  │ 00000000-0000-0000-0000-000000000000 │
├─────────────────┼──────────────────────────────────────┤
│ media-set-ctime │ Wed Jul 24 09:13:36 2024             │
└─────────────────┴──────────────────────────────────────┘

Примечание

Значение media-set-uuid, состоящее из одних нулей, указывает на пустую ленту (не используемую ни одним набором носителей).
Если используется ленточная библиотека, сначала необходимо наклеить на картриджи этикетки со штрих-кодом, загрузить пустые ленты в библиотеку и пометить все непомеченные ленты с помощью команды:
# proxmox-tape barcode-label [--pool <имя пула>]

59.10.4.2. Запуск резервного копирования на ленту

Для запуска задания резервного копирования вручную необходимо нажать кнопку Запустить сейчас в веб-интерфейсе или использовать команду:
# proxmox-tape backup <хранилище> <пул> [OPTIONS]
Доступны следующие опции:
  • --eject-media — извлечь ленту после завершения работы;
  • --export-media-set — переместить все ленты набора в слоты импорта/экспорта;
  • --ns — пространство имён для копирования (по умолчанию — корневое);
  • --max-depth — глубина рекурсии (0 — без рекурсии).

59.10.4.3. Восстановление с ленты

Восстановление выполняется на уровне набора носителей. Сначала нужно определить, какой набор содержит нужные данные. Эта информация хранится в медиа-каталоге. Если каталог отсутствует, его можно восстановить. Следует обратить внимание, что для поиска данных каталог обязателен, но для полного восстановления набора — не требуется.
Следующая команда выводит список содержимого лент (из каталога):
# proxmox-tape media content
Задание восстановления считывает данные с набора носителей и перемещает их обратно на диск данных (хранилище данных):
# proxmox-tape restore <media-set-uuid> <хранилище>
Например:
# proxmox-tape restore 9da37a55-aac7-4deb-91c6-482b3b675f30 pve-backup
Иногда нет необходимости восстанавливать весь носитель, а только некоторые отдельные снимки с ленты. Этого можно добиться с помощью параметра snapshot:
# proxmox-tape restore <media-set-uuid> <хранилище> [<snapshot>]
Например:
# proxmox-tape restore 9da37a55-aac7-4deb-91c6-482b3b675f30 pve-backup sourcestore:host/hostname/2024-04-01T00:01:00Z
Снимок сначала восстанавливается во временное расположение, затем — архивы фрагментов, и только потом — данные в целевое хранилище.
Параметр snapshot можно передавать несколько раз, чтобы восстановить несколько снимков одним действием.

Примечание

При восстановлении нескольких снимков лента проходится многократно, что может занять больше времени, чем восстановление всего набора.
Во время восстановления можно выбрать и сопоставить определенные пространства имен из набора носителей. Это возможно с помощью параметра --namespaces. Формат параметра:
store=<source-datastore>[,source=<source-ns>][,target=<target-ns>][,max-depth=<depth>]
Если source или target не указаны, предполагается корневое пространство имен. Если не указан max-depth, исходное пространство имен будет полностью рекурсивно.
Пример команды восстановления:
# proxmox-tape restore 9da37a55-aac7-4deb-91c6-482b3b675f30 pve-backup \
  --namespaces store=sourcedatastore,source=ns1,target=ns2,max-depth=2
Параметр --namespaces можно указывать несколько раз и комбинировать с snapshot.

59.10.4.4. Восстановление каталога

Чтобы восстановить каталог с ленты, достаточно вставить ленту в привод и выполнить:
# proxmox-tape catalog
Восстановление всего набора возможно без существующего каталога — он будет создан автоматически.

59.10.4.5. Управление ключами шифрования

Ключами шифрования можно управлять:
  • в веб-интерфейсе: Резервное копирование на лентуКлючи шифрования:
    Резервное копирование на ленту. Ключи шифрования
  • в CLI: с помощью команды proxmox-tape key.
Создание ключа шифрования:
# proxmox-tape key create --hint "tape pw 2025"
Tape Encryption Key Password: ********
Verify Password: ********
"aa:8e:53:82:9f:b0:37:9b:e5:55:ae:cf:53:1b:2b:54:ac:97:65:f9:43:b6:88:71:dc:71:41:2f:22:db:2e:89"
Список ключей:
# proxmox-tape key list
┌───────────────────────────────────────────────────┬───────────────┐
│ fingerprint                                       │ hint          │
╞═══════════════════════════════════════════════════╪═══════════════╡
│ aa:8e:53:82:9f:b0:37:9b: ...   :41:2f:22:db:2e:89 │ tape pw 2025  │
└───────────────────────────────────────────────────┴───────────────┘
Просмотр сведений о ключе шифрования:
# proxmox-tape key show aa:8e:53:82:9f:b0:37:9b: ... :2f:22:db:2e:89
┌─────────────┬───────────────────────────────────────────────┐
│ Name        │ Value                                         │
╞═════════════╪═══════════════════════════════════════════════╡
│ kdf         │ scrypt                                        │
├─────────────┼───────────────────────────────────────────────┤
│ created     │ Fri Apr  4 16:17:56 2025                      │
├─────────────┼───────────────────────────────────────────────┤
│ modified    │ Fri Apr  4 16:17:56 2025                      │
├─────────────┼───────────────────────────────────────────────┤
│ fingerprint │ aa:8e:53:82:9f:b0:37:9b: ...  :2f:22:db:2e:89 │
├─────────────┼───────────────────────────────────────────────┤
│ hint        │ tape pw 2025                                  │
└─────────────┴───────────────────────────────────────────────┘
Подкоманду paperkey можно использовать для создания QR-кода ключа шифрования ленты. Например, создать QR-код и записать его в текстовый файл для удобной печати:
# proxmox-tape key paperkey <fingerprint> --output-format text > qrkey.txt
Для восстановления ключа шифрования с ленты необходимо загрузить в привод ленту, которую нужно восстановить, и нажать кнопку Восстановить ключ в веб-интерфейсе или запустить команду (потребуется ввести пароль, заданный при создании ключа):
# proxmox-tape key restore
Tape Encryption Key Password: ***********
При правильном пароле ключ импортируется в базу данных. Задания восстановления используют любой доступный ключ автоматически.

59.10.4.6. Очистка ленты

Ленточные накопители LTO требуют регулярной чистки. Это делается путем загрузки в привод чистящего картриджа (для автономных приводов выполняется вручную).
В ленточных библиотеках чистящие картриджи обозначаются специальными этикетками, начинающимися с «CLN». Например, в ленточной библиотеке CHGR1 в слоте 3 имеется чистящий картридж:
# proxmox-tape changer status CHGR1
┌───────────────┬──────────┬────────────┬─────────────┐
│ entry-kind    │ entry-id │ label-text │ loaded-slot │
╞═══════════════╪══════════╪════════════╪═════════════╡
│ drive         │        0 │ vtape1     │           1 │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        1 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        2 │ vtape2     │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        3 │ CLN001CU   │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ ...           │      ... │            │             │
└───────────────┴──────────┴────────────┴─────────────┘
Запуск очистки:
# proxmox-tape clean
Команда:
  1. Находит чистящую ленту (слот 3).
  2. Выгружает текущую ленту (в слот 1).
  3. Загружает чистящую ленту.
  4. Выполняет очистку.
  5. Возвращает чистящую ленту в исходный слот.

59.11. Уведомления

Система уведомлений (нотификаций) в PBS предназначена для информирования администраторов о ключевых событиях, происходящих в системе, таких как успешное или неудачное выполнение задач резервного копирования, проблемы с хранилищем, предупреждения о состоянии системы и другие важные изменения.
При возникновении значимого события PBS генерирует событие уведомления, которое обрабатывается системой уведомлений. Каждое событие содержит метаданные: временную метку, уровень серьёзности, тип и другие атрибуты.
Сопоставители уведомлений направляют события в один или несколько целевых объектов уведомления (каналов доставки). Для выборочной маршрутизации сопоставители могут использовать правила фильтрации, основанные на метаданных события.
Цель уведомления — это конечный пункт назначения, в который направляется событие. PBS поддерживает следующие типы целей:
  • Sendmail — отправка уведомлений через локальный почтовый сервер;
  • SMTP — отправка уведомлений через внешний SMTP-сервер;
  • Gotify — отправка уведомлений в сервис Gotify (легковесный сервер для push-уведомлений);
  • Webhook — выполнение HTTP-запросов к настраиваемому URL-адресу.
Хранилища данных и задания резервного копирования на ленту поддерживают настраиваемый режим уведомления, позволяющий выбирать между системой уведомлений PBS и классической отправкой по электронной почте.
Систему уведомлений можно настроить:
  • в веб-интерфейсе (раздел КонфигурацияУведомления);
  • через конфигурационные файлы;
  • в командной строке.
Конфигурация системы уведомлений хранится в файлах:
  • notifications.cfg — основные настройки;
  • notifications-priv.cfg — конфиденциальные параметры (пароли, токены аутентификации). Файл доступен для чтения только пользователю root.

59.11.1. Цели уведомлений (Notification Targets)

59.11.1.1. Sendmail

Цель уведомлений Sendmail использует команду sendmail для отправки электронных писем указанным получателям. Если в качестве получателя указан пользователь PBS, используется адрес электронной почты из его профиля (адрес электронной почты пользователя можно настроить в разделе КонфигурацияУправление доступомУправление пользователями). Если у пользователя не указан адрес электронной почты, письмо не будет отправлено.

Примечание

Команда sendmail предоставляется почтовым агентом (например, Postfix). Для корректной доставки может потребоваться настройка Postfix (например, указание внешнего ретранслятора). В случае ошибок необходимо проверить системные журналы на наличие сообщений, зарегистрированных демоном Postfix (journalctl -u postfix).
Для настройки цели Sendmail необходимо выполнить следующие шаги:
  1. Перейти в раздел КонфигурацияУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьSendmail:
    Создать цель уведомлений Sendmail
  3. В открывшемся окне указать (в скобках приведены параметры файла notifications.cfg):
    • Имя конечной точки — идентификатор цели;
    • Включить (disable) — статус (включено/отключено);
    • Получатель (получатели) (mailto-user) — пользователи PBS, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg;
    • Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты (email-адреса);
    • Комментарий (comment) — комментарий для этой цели;
    • Автор (author) — имя отправителя (по умолчанию: Proxmox Backup Server - $hostname);
    • Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Если параметр не задан, используется email_from из node.cfg, а при его отсутствии — значение по умолчанию root@$hostname, где $hostname — имя узла.
    Настройка цели уведомлений Sendmail
Пример создания цели Sendmail в командной строке:
# proxmox-backup-manager notification endpoint sendmail create \
  sendmail-admins --mailto-user kim@test.alt \
  --mailto-user orlov@test.alt --mailto-user root@pam \
  --mailto user@example.test --comment "Отправка уведомлений администраторам"
Пример конфигурации (/etc/proxmox-backup/notifications.cfg):
sendmail: sendmail-admins
    comment Отправка уведомлений администраторам
    mailto user@example.test
    mailto-user kim@test.alt
    mailto-user orlov@test.alt
    mailto-user root@pam

59.11.1.2. SMTP

Цель уведомлений SMTP отправляет письма напрямую через SMTP-сервер, не используя системный MTA.

Примечание

В отличие от Sendmail, SMTP-цель не поддерживает очередь повторных отправок в случае сбоя доставки почты.
Для настройки цели SMTP необходимо:
  1. Перейти в раздел КонфигурацияУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьSMTP:
    Создать цель уведомлений SMTP
  3. В открывшемся окне указать (в скобках приведены параметры файла notifications.cfg):
    • Имя конечной точки — идентификатор цели;
    • Включить (disable) — статус (включено/отключено);
    • Сервер (server) — адрес SMTP-сервера;
    • Шифрование (mode) — метод шифрования: insecure, starttls или tls (по умолчанию tls);
    • Порт (port) — порт: 465 (TLS), 587 (STARTTLS), 25 (без шифрования);
    • Выполнять аутентификацию — добавить данные для аутентификации SMTP;
    • Имя пользователя (username) — имя пользователя для аутентификации SMTP. Если имя пользователя не задано, аутентификация не будет выполнена. Поддерживаются методы аутентификации PLAIN и LOGIN;
    • Пароль (password) — пароль для аутентификации SMTP;
    • Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Ретрансляторы SMTP могут потребовать, чтобы этот адрес принадлежал пользователю. Поле Отправитель в электронном письме будет установлено на $author <$from-address>;
    • Получатель (получатели) (mailto-user) — пользователи PBS, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg;
    • Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты;
    • Комментарий (comment) — комментарий для этой цели;
    • Автор (author) — имя отправителя (по умолчанию: Proxmox Backup Server - $hostname).
    Настройка цели уведомлений SMTP
Пример создания цели SMTP в командной строке:
# proxmox-backup-manager notification endpoint smtp create \
  smtp --from-address pve-mail@test.alt  --server mail.test.alt \
  --username pve-mail --password "123" --mailto-user root@pam \
  --mailto-user orlov@test.alt
Пример конфигурации (/etc/proxmox-backup/notifications.cfg):
smtp: smtp
    from-address pve-mail@test.alt
    mailto-user root@pam
    mailto-user orlov@test.alt
    mode tls
    server mail.test.alt
    username pve-mail

59.11.1.3. Webhook

Цели уведомлений Webhook выполняют HTTP-запросы к указанному URL. Поддерживается шаблонизация с использованием Handlebars.
Для настройки цели Webhook необходимо:
  1. Перейти в раздел КонфигурацияУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьWebhook:
    Создать цель уведомлений Webhook
  3. В открывшемся окне указать (в скобках приведены параметры файла notifications.cfg):
    • Имя конечной точки — идентификатор цели;
    • Включить (disable) — статус (включено/отключено);
    • Метод/URL-адрес (method/url) — HTTP-метод (POST/PUT/GET) и URL-адрес, по которому следует выполнять HTTP-запросы. URL-адрес поддерживает шаблонизацию для внедрения содержимого сообщения, метаданных и секретов;
    • Заголовки (header) — массив HTTP-заголовков, которые следует задать для запроса (с шаблонизацией);
    • Тело письма (body) — содержимое запроса (в формате base64, с шаблонами);
    • Секреты (secret) — массив секретных пар ключ-значение. Они хранятся в защищенном файле конфигурации (notifications-priv.cfg), доступном для чтения только пользователю root. Для любых конечных точек API, возвращающих конфигурацию конечной точки, будет возвращено только имя секрета, но не значение. Доступ к секретам можно получить в шаблонах body/header/URL через пространство имен secrets.
    • Комментарий (comment) — комментарий для этой цели;
    Настройка цели уведомлений Webhook (ntfy.sh)
Пример создания цели Webhook в командной строке:
# proxmox-backup-manager notification endpoint webhook create ntfy \
  --method post \
  --url "https://ntfy.sh/pbs_sync_job_144" \
  --body e3sgbWVzc2FnZSB9fQo= \  # Закодированный {{ message }}
  --secret name=channel,value=cGJzX3N5bmNfam9iXzE0NA== \  # pbs_sync_job_144
  --comment "Отправка PUSH уведомлений"
Значения body и secret.value должны быть закодированы в base64.

Примечание

Закодировать строку в base64 можно, выполнив команду:
$ echo -n ' pbs_sync_job_144' | base64 -w 0
cGJzX3N5bmNfam9iXzE0NA==
Пример конфигурации (/etc/proxmox-backup/notifications.cfg):
webhook: ntfy
	body e3sgbWVzc2FnZSB9fQ==
	comment Отправка PUSH уведомлений
	method post
	url https://ntfy.sh/pbs_sync_job_144
Доступные переменные в шаблонах:
  • {{ title }} — заголовок уведомления;
  • {{ message }} — тело уведомления;
  • {{ difficulty }} — уровень серьёзности;
  • {{ timestamp }} — временная метка в виде эпохи UNIX (в секундах);
  • {{ fields.<name> }} — метаданные (например, fields.type содержит тип уведомления);
  • {{ secrets.<name> }} — секреты (например, секретный именованный токен доступен через secrets.token).
Вспомогательные функции:
  • {{ url-encode <value/property> }} — URL-кодирование свойства/литерала;
  • {{ escape <value/property> }} — экранирование управляющих символов, которые не могут быть безопасно представлены как строка JSON;
  • {{ json <value/property> }} — преобразование в JSON. Может быть полезно для передачи целого подпространства имен (например, полей) как части полезной нагрузки JSON (например, {{{ json fields }}).

Примечание

Цели Webhook учитывают настройки HTTP-прокси из раздела КонфигурацияДругоеПрокси HTTP.

59.11.2. Триггеры уведомлений (Notification Matchers)

Триггеры уведомлений направляют события к целям уведомлений на основе правил сопоставления. Эти правила могут учитывать различные свойства уведомления, такие как временная метка (match-calendar), уровень серьёзности (match-severity) или поля метаданных (match-field). Если уведомление соответствует правилам триггера, все связанные с ним цели получают уведомление.
Можно создать произвольное количество триггеров, каждый со своими правилами и списком целей. При этом каждая цель получает уведомление не более одного раза на одно событие, даже если она указана в нескольких триггерах.
Триггер без правил срабатывает на любое уведомление (настроенные цели всегда будут уведомлены):
matcher: always-matches
    comment Это сопоставление всегда срабатывает
    mode all
    target mail-to-root

59.11.2.1. Правила сопоставления по календарю (match-calendar)

Правило match-calendar фильтрует уведомления по временной метке события.
Используется специальный синтаксис для задания временных интервалов.
Примеры:
  • match-calendar 8-12 — ежедневно с 8 до 12 часов;
  • match-calendar 8:00-15:30 — ежедневно с 8 часов до 15:30;
  • match-calendar mon..fri 9:00-17:00 — в будние дни с 9 до 17 часов;
  • match-calendar sun,tue..wed,fri 9-17 — в воскресенье вторник, среду и пятницу с 9 до 17 часов.

59.11.2.2. Правила сопоставления по полям (match-field)

Опция match-field фильтрует уведомления по значениям полей метаданных.
При использовании режима exact, значения можно перечислять через запятую. Правило срабатывает, если поле содержит любое из указанных значений.
При использовании regex применяется регулярное выражение.
Примеры:
  • match-field exact:type=gc — только уведомления для заданий по сборке мусора;
  • match-field exact:type=prune,verify — уведомления о заданиях prune и verify;
  • match-field regex:datastore=^backup-.*$ — уведомления для хранилищ, имя которых начинается с backup.
Если у события отсутствует указанное поле, правило не сработает. Например, match-field regex:datastore=.* сработает только для уведомлений, содержащих поле datastore.

59.11.2.3. Правила сопоставления по уровню серьёзности (match-severity)

Опция match-severity фильтрует уведомления по уровню серьёзности (severity) события. Поддерживаются следующие уровни: info, notice, warning, error, unknown.
Примеры:
  • match-severity error — только ошибки;
  • match-severity warning,error — предупреждения и ошибки.

59.11.2.4. События уведомлений

В таблице Список событий уведомлений приведен список всех типов уведомлений в PBS, их уровень серьезности и доступные поля метаданных. Эти данные можно использовать в правилах сопоставления.

Таблица 59.2. Список событий уведомлений

Событие
Тип
Серьёзность
Поля метаданных (в дополнение к типу)
Обновление сертификата ACME не удалось
acme
error
hostname
Сбой сбора мусора
gc
error
datastore, hostname
Успешный сбор мусора
gc
info
datastore, hostname
Доступны обновления пакетов
package-updates
info
hostname
Ошибка задания Prune
prune
error
datastore, hostname, job-id
Успешное выполнение задания Prune
prune
info
datastore, hostname, job-id
Ошибка удалённой синхронизации
sync
error
datastore, hostname, job-id
Удалённая синхронизация выполнена успешно
sync
info
datastore, hostname, job-id
Почта для root
system-mail
unknown
hostname
Ошибка задания резервного копирования на ленту
tape-backup
error
datastore, hostname, media-pool, job-id
Успешное выполнение задания резервного копирования на ленту
tape-backup
info
datastore, hostname, media-pool, job-id
Запрос на загрузку ленты
tape-load
notice
hostname
Ошибка задания проверки
verify
error
datastore, hostname, job-id
Успешное выполнение задания проверки
verify
info
datastore, hostname, job-id
В таблице Описание полей метаданных содержится описание полей метаданных. Все эти поля могут использоваться в правилах match-field.

Таблица 59.3. Описание полей метаданных

Поле
Описание
datastore
Имя хранилища данных
hostname
Имя сервера резервного копирования
job-id
Идентификатор задания
media-pool
Имя пула ленточных носителей
type
Тип события уведомления
Примеры конфигурации (/etc/proxmox-backup/notifications.cfg):
  • уведомлять администраторов в рабочее время:
    matcher: workday
            match-calendar mon..fri 9-17
            target admin
            comment Notify admins during working hours
    
  • уведомлять дежурных в нерабочее время:
    matcher: night-and-weekend
            match-calendar mon..fri 9-17
            invert-match true
            target on-call-admins
            comment Separate target for non-working hours
    
  • при ошибках в хранилище zfs, отправлять уведомления в рабочие часы через SMTP:
    matcher: zfs-error
            match-calendar mon..fri 8-17
            match-field exact:datastore=zfs
            match-severity error
            mode all
            target smtp
    

59.11.2.5. Создание триггера уведомлений

Для создания правила сопоставления необходимо:
  1. Перейти в раздел КонфигурацияУведомленияСредства сопоставления уведомлений.
  2. Нажать кнопку Добавить.
  3. В открывшемся окне на вкладке Общее в поле Имя средства сопоставления уведомлений указать название триггера:
    Создание триггера уведомления
  4. На вкладке Правила совпадений настроить условия:
    Создание триггера уведомления. Правила совпадений
  5. На вкладке Получатели уведомлений выбрать цели:
    Создание триггера уведомления. Выбор целей
Пример создания триггера уведомлений в командной строке:
# proxmox-backup-manager notification matcher create workday \
  --mode all \
  --match-calendar "mon..fri 8-17" \
  --match-severity "error" \
  --match-field "exact:datastore=zfs" \
  --target sendmail-admins

59.11.3. Пересылка системной почты

Некоторые локальные системные демоны, например smartd, отправляют уведомления локальному пользователю root. PBS перехватывает такие письма и передаёт их в систему уведомлений как события типа system-mail с уровнем серьёзности unknown.
При пересылке на цель Sendmail содержимое и заголовки письма передаются без изменений. Для всех остальных типов целей система пытается извлечь тему и основной текст из содержимого электронного письма. Если письмо состоит исключительно из HTML-контента, оно автоматически преобразуется в текстовый формат.

59.11.4. Разрешения

Чтобы изменить/просмотреть конфигурацию для целей уведомлений, требуются разрешения Sys.Modify/Sys.Audit для узла ACL /system/notifications.

59.11.5. Режим уведомления

Хранилища данных, а также задания резервного копирования и восстановления на ленту имеют параметр notification-mode, который может принимать одно из двух значений:
  • legacy-sendmail — отправлять уведомления по электронной почте с помощью системной команды sendmail. Система уведомлений PBS игнорируется. Этот режим соответствует поведению PBS до версии 3.2;
  • notification-system — использовать встроенную систему уведомлений PBS.
Если параметр notification-mode не задан, PBS по умолчанию использует legacy-sendmail.
Начиная с PBS 3.2, хранилища данных, созданные в веб-интерфейсе, автоматически используют режим notification-system. Если хранилище создаётся с помощью API или CLI (proxmox-backup-manager), параметр notification-mode необходимо явно установить в notification-system, чтобы задействовать новую систему уведомлений.

59.11.5.1. Настройки для режима legacy-sendmail

Если notification-mode имеет значение legacy-sendmail, PBS отправляет уведомления с помощью системной команды sendmail на адрес электронной почты, указанный для пользователя, установленного в параметре notify-user (или root@pam, если параметр notify-user не установлен).
Для хранилищ данных можно дополнительно настроить уровень уведомлений с помощью параметра notify:
  • always — отправлять уведомление для любой запланированной задачи, независимо от результата;
  • errors — отправлять уведомление только при ошибках;
  • never — не отправлять уведомления вообще.
Параметры notify-user и notify игнорируются, если параметр notification-mode установлен в notification-system.

Глава 60. Система резервного копирования UrBackup

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

Примечание

В настоящее время резервные копии образов (снапшоты) работают только с томами в формате NTFS и с клиентами Windows. Резервное копирование образов предназначено в основном для резервного копирования загрузочного тома (C:) систем Windows. Для архивирования других данных следует воспользоваться резервным копированием файлов.
Для управления настройкой резервного копирования и резервными копиями используется веб-интерфейс.

60.1. Установка UrBackup

60.1.1. Сервер UrBackup

Установить сервер UrBackup:
# apt-get install urbackup-server
Создать каталог для резервных копий:
# mkdir -p /mnt/backups/urbackup
Каталог должен принадлежать пользователю urbackup и у этого пользователя должны быть права на чтение/запись:
# chown -R urbackup:urbackup /mnt/backups/urbackup
Добавить UrBackup-сервер в автозапуск и запустить его:
# systemctl enable --now urbackup-server

Примечание

UrBackup по умолчанию прослушивает порты 55413 и 55414.
Веб-интерфейс UrBackup будет доступен по адресу http://<ip-сервера>:55414:
Веб-интерфейс UrBackup

Важно

Если появляется ошибка: «Каталог, где UrBackup будет сохранять резервные копии, недоступен…», следует изменить путь к каталогу резервных копий, выбрав пункт меню Настройки, либо изменить права доступа к каталогу.

Примечание

Сразу после установки доступ к веб-интерфейсу UrBackup будет возможен без аутентификации. Чтобы в дальнейшем требовался ввод имени пользователя и пароля необходимо создать администратора (перейти на вкладку НастройкиПользователи и нажать кнопку Добавить пользователя):
UrBackup. Создание пользователя

60.1.2. Клиент UrBackup

Установить клиент UrBackup:
# apt-get install urbackup-client
Добавить UrBackup-клиент в автозапуск и запустить его:
# systemctl enable --now urbackup-client
Локальные клиенты будут обнаружены сервером автоматически и появятся в веб-интерфейсе на вкладке Статус:
Клиент на сервере UrBackup

60.2. Настройка резервного копирования

В веб-интерфейсе на вкладке НастройкиГлавные можно изменять настройки UrBackup. Некоторые настройки влияют только на сервер резервного копирования. Остальные настройки влияют и на клиентов резервного копирования, для этих настроек администратор может установить значения по умолчанию или переопределить настройки клиента.
На вкладке Сервер можно указать каталог для хранения резервных копий:
Настройки UrBackup. Вкладка Сервер
На вкладке Файловые бэкапы можно указать настройки файловых резервных копий, в том числе каталоги, которые будут включены в резервную копию (каталоги перечисляются через «;»). Здесь также настраиваются интервалы резервного копирования.
Настройки UrBackup. Вкладка Файловые бэкапы
На вкладке Клиент (поле Расписание) можно установить окно резервного копирования, в пределах которого сервер будет стараться выполнять задания. Начатое задание будет выполняться до завершения, даже если оно не вписывается в указанное время. Примеры окна резервного копирования:
  • 1-7/0-24 — резервное копирование может производиться в любое время;
  • 1-5/8:00-9:00, 19:30-20:30;6,7/0-24 — резервное копирование в рабочие дни может производиться с 8 до 9 и с 19:30 до 20:30, а в субботу и воскресенье в любое время.
Клиенты могут сами инициировать процесс резервного копирования в любой момент (см. ниже описание утилиты urbackupclientctl).
Для более удобного администрирования можно создать несколько групп, распределить клиенты по группам, и задавать настройки отдельно для каждой группы клиентов:
Настройки UrBackup. Настройка группы клиентов UrBackup

60.3. Создание резервных копий

Инкрементные и полные резервные копии будут создаваться согласно настроенному расписанию.
Процесс создания резервной копии можно запустить вручную, отметив клиента и выбрав тип резервной копии в выпадающем списке:
UrBackup. Запуск резервного копирования
Более подробно отслеживать активность резервного копирования можно на вкладках В работе, Бэкапы, Логи.
UrBackup. Вкладка В работе
Отчёты/содержимое резервных копий можно просмотреть на вкладке Бэкапы:
UrBackup. Вкладка Бэкапы
Выбрав клиента, можно просмотреть список его резервных копий:
Список резервных копий клиента client2.test.alt

Примечание

Если отметка в столбце Архивировано установлена, резервная копия архивируется. Пока резервная копия заархивирована, её нельзя удалить средствами UrBackup.
Выбрав резервную копию, можно просмотреть её содержимое:
Содержимое резервной копии
Резервные копии сохраняются в каталоге, который был указан в веб-интерфейсе. В этом каталоге для каждого клиента создается свой подкаталог. Резервные копии файлов находятся в подкаталогах вида <YYMMDD-HHMM>. Каталог current является ссылкой на последнюю резервную копию. Резервные копии папок с файлами сохраняются в открытом виде. Образы дисковых разделов хранятся в виде файлов в формате vhdz (имя файла будет иметь вид Image_<Drive>_<YYMMDD-HHMM>.vhdz).

60.4. Утилита urbackupclientctl

Для работы с UrBackup на клиенте предназначена утилита urbackupclientctl:
  • urbackupclientctl start — запустить инкрементное/полное резервное копирование;
  • urbackupclientctl status — получить текущий статус резервного копирования;
  • urbackupclientctl browse — просмотр списка резервных копий и файлов в резервных копиях;
  • urbackupclientctl restore-start — восстановить файлы из резервной копии;
  • urbackupclientctl set-settings — установить параметры резервного копирования;
  • urbackupclientctl add-backupdir — добавить новый каталог в список каталогов, для которых выполняется резервное копирование;
  • urbackupclientctl list-backupdirs — вывести список каталогов, для которых выполняется резервное копирование;
  • urbackupclientctl remove-backupdir — удалить каталог из списока каталогов, для которых выполняется резервное копирование.
Справку по конкретной команде можно получить, выполнив команду:
urbackupclientctl <command> --help
Ниже приведены примеры использования утилиты urbackupclientctl.
Вывести список резервных копий:
$ urbackupclientctl browse
[{
"archived": 0,
"backuptime": 1742848011,
"disable_delete": true,
"id": 3,
"incremental": 1,
"size_bytes": 2945033
}
,{
"archived": 0,
"backuptime": 1742847646,
"id": 1,
"incremental": 0,
"size_bytes": 101610098
}
]
Запустить процесс создания полной резервной копии:
$ urbackupclientctl start -f
Waiting for server to start backup... done
Preparing... -
Completed successfully.
Восстановить файлы из резервной копии:
# urbackupclientctl restore-start -b 3
Starting restore. Waiting for backup server...  done
[=============================================================> ] 97% 2.33831 GB/2.41119 GB at 76.024 KBit/s
Restore completed successfully.

Часть IX. Управление виртуализацией на основе libvirt

libvirt — это набор инструментов, предоставляющий единый API к множеству различных технологий виртуализации.
Помимо управления виртуальными машинами и контейнерами, libvirt поддерживает управление виртуальными сетями и хранилищами образов.
Для управления из консоли используется набор утилит virt-install, virt-clone, virsh и другие. Для управления через графическую оболочку доступен virt-manager.
Любой виртуальный ресурс, необходимый для создания ВМ (вычислительные ресурсы, сеть, хранилище) представлен в libvirt в виде объекта. Процесс описания и создания этих объектов реализуется через различные XML-файлы. Сама ВМ в терминологии libvirt называется доменом (domain) — это тоже объект, описываемый отдельным XML-файлом.
При первоначальной установке и запуске libvirt по умолчанию создает мост (bridge) virbr0 с минимальной конфигурацией. Этот мост не подключается ни к одному физическому интерфейсу, но может использоваться для связи ВМ внутри одного гипервизора.

Содержание

61. Установка сервера
62. Утилиты управления
62.1. Утилита Virsh
62.2. Утилита virt-install
62.3. Утилита qemu-img
62.4. Менеджер виртуальных машин virt-manager
63. Подключение к гипервизору
63.1. Управление доступом к libvirt через SSH
63.2. Подключение к гипервизору с помощью virsh
63.3. Настройка соединения с удаленным гипервизором в virt-manager
64. Создание виртуальных машин
64.1. Создание ВМ на основе файла конфигурации (утилита virsh)
64.2. Создание ВМ с помощью virt-install
64.3. Создание ВМ с помощью virt-manager
65. Запуск и управление функционированием ВМ
65.1. Управление состоянием ВМ в командной строке
65.2. Управление состоянием ВМ в менеджере виртуальных машин
65.3. Подключение к виртуальному монитору ВМ
65.3.1. Использование протокола SPICE
65.3.2. Использование протокола VNC
66. Управление ВМ
66.1. Редактирование файла конфигурации ВМ
66.2. Получение информации о ВМ
66.3. Конфигурирование ВМ в менеджере виртуальных машин
66.4. Мониторинг состояния
67. Управление виртуальными сетевыми интерфейсами и сетями
67.1. Управление виртуальными сетями в командной строке
67.2. Управление виртуальными сетями в менеджере виртуальных машин
67.3. Режимы работы виртуальной сети
67.3.1. Сеть на основе моста
67.3.2. Маршрутизируемая сеть
67.3.3. Сеть на основе NAT
67.3.4. Изолированная сеть
68. Управление хранилищами
68.1. Управление хранилищами в командной строке
68.2. Настройка хранилищ в менеджере виртуальных машин
69. Миграция ВМ
69.1. Миграция с помощью virsh
69.2. Миграция ВМ в менеджере виртуальных машин
70. Снимки ВМ
70.1. Управления снимками ВМ в консоли
70.2. Управления снимками ВМ в менеджере виртуальных машин
71. Регистрация событий libvirt
72. Управление доступом в виртуальной инфраструктуре
73. GNOME Boxes — создание и управление ВМ
73.1. Создание ВМ
73.2. Настройки ВМ
73.3. Взаимодействие с гостевой ОС
73.3.1. Настройки сети
73.3.2. Перенаправление USB-устройств
73.3.3. Создание общей сетевой папки
73.4. Управление снимками ВМ
73.5. Изменение каталога ВМ

Глава 61. Установка сервера

В качестве сервера для развертывания libvirt удобно использовать дистрибутив Альт Сервер. Он уже содержит все необходимые компоненты.
Если же libvirt разворачивается в уже установленной системе на базе Одиннадцатой платформы, достаточно установить необходимые пакеты на всех нодах (узлах) любым штатным способом:
# apt-get install libvirt libvirt-kvm libvirt-qemu
Добавить службу libvirtd в автозапуск и запустить её:
# systemctl enable --now libvirtd
Для непривилегированного доступа (не от root) к управлению libvirt пользователь должен быть включён в группу vmusers:
# gpasswd -a user vmusers
Сервер виртуализации использует следующие каталоги хостовой файловой системы:
  • /etc/libvirt/ — каталог с файлами конфигурации libvirt;
  • /var/lib/libvirt/ — рабочий каталог сервера виртуализации;
  • /var/log/libvirt — файлы журналов libvirt.

Глава 62. Утилиты управления

Основные утилиты командной строки для управления ВМ:
  • qemu-img — управление дисковыми образами ВМ. Позволяет создавать образы различных форматов, конвертировать их, получать информацию об образах и объединять снимки ВМ (для форматов, поддерживающих эту функцию);
  • virsh — консольный интерфейс для управления ВМ, виртуальными дисками и сетями;
  • virt-clone — клонирование ВМ;
  • virt-install — создание ВМ с помощью параметров командной строки;
  • virt-xml — редактирование XML-файлов описаний ВМ.

62.1. Утилита Virsh

virsh — утилита для командной строки, предназначенная для управления ВМ и гипервизорами KVM.
virsh использует API libvirt и служит альтернативой графическому интерфейсу virt-manager.
С помощью virsh можно сохранять состояние ВМ, переносить их между гипервизорами, а также управлять виртуальными сетями.
Для получения списка доступных команд и параметров virsh можно использовать команду:
$ virsh help

Таблица 62.1. Управление виртуальными машинами через virsh

Команда
Описание
help
Краткая справка
list
Просмотр всех ВМ
dumpxml
Вывод XML-конфигурации указанной ВМ
create
Создание ВМ из XML-файла и запуск
start
Запуск неактивной ВМ
destroy
Принудительная остановка ВМ
define
Определение XML-файла конфигурации ВМ
domid
Просмотр идентификатора ВМ
domuuid
Просмотр UUID ВМ
dominfo
Просмотр информации о ВМ
domname
Просмотр имени ВМ
domstate
Просмотр состояния ВМ
quit
Выход из интерактивного режима
reboot
Перезагрузка ВМ
restore
Восстановление ВМ из файла
resume
Возобновление приостановленной ВМ
save
Сохранение состояния ВМ в файл
shutdown
Корректное завершение работы ВМ
suspend
Приостановка работы ВМ
undefine
Удаление всех конфигурационных файлов ВМ
migrate
Перенос ВМ на другой узел

Таблица 62.2. Управление ресурсами ВМ и гипервизора через virsh

Команда
Описание
setmem
Установка объёма выделенной ВМ памяти
setmaxmem
Установка максимального объёма памяти, доступного гипервизору
setvcpus
Изменение числа виртуальных процессоров ВМ
vcpuinfo
Просмотр информации о виртуальных процессорах
vcpupin
Настройка соответствия виртуальных процессоров
domblkstat
Просмотр статистики блочных устройств ВМ
domifstat
Просмотр статистики сетевых интерфейсов ВМ
attach-device
Подключение устройства (из XML-файла) к ВМ
attach-disk
Подключение нового дискового устройства к ВМ
attach-interface
Подключение нового сетевого интерфейса к ВМ
detach-device
Отключение устройства от ВМ (по XML, как и attach-device)
detach-disk
Отключение дискового устройства от ВМ
detach-interface
Отключение сетевого интерфейса от ВМ

62.2. Утилита virt-install

virt-install — это инструмент для создания ВМ.

Примечание

Должен быть установлен пакет virt-install (из репозитория p11):
# apt-get install virt-install
Описание всех доступных опций утилиты virt-install можно получить, выполнив команду:
$ man virt-install

Таблица 62.3. Параметры команды virt-install

Команда
Описание
-n NAME, --name=NAME
Имя новой ВМ. Это имя должно быть уникально внутри одного гипервизора
--memory MEMORY
Объём оперативной памяти, выделенной ВМ, например:
  • --memory 1024 (в МБ)
  • --memory memory=1024,currentMemory=512
Просмотреть список всех доступных параметров можно с помощью опции --memory=?
--vcpus VCPUS
Количество виртуальных ЦПУ, например:
  • --vcpus 5
  • --vcpus 5,maxvcpus=10,cpuset=1-4,6,8
  • --vcpus sockets=2,cores=4,threads=2
--cpu CPU
Модель и параметры ЦП, например:
  • --cpu coreduo,+x2apic
  • --cpu host-passthrough
  • --cpu host
--metadata METADATA
Метаданные ВМ
Метод установки
--cdrom CDROM
Установочный CD-ROM. Может указывать на файл ISO-образа или физическое устройство CD/DVD
-l LOCATION, --location LOCATION
Источник установки, например, https://host/path
--pxe
Загрузка из сети с использованием протокола PXE
--import
Пропустить установку ОС и создать ВМ на основе существующего образа диска
--boot BOOT
Параметры загрузки ВМ, например:
  • --boot hd,cdrom,menu=on
  • --boot init=/sbin/init (для контейнеров)
--os-variant=DISTRO_VARIANT
Гостевая ОС. Позволяет выбрать оптимальные параметры, включая VirtIO. Примеры значений: alt.p10, alt10.1, win10
--disk DISK
Настройки пространства хранения данных, например:
  • --disk size=10 (новый образ на 10 ГБ в выбранном по умолчанию месте)
  • --disk /my/existing/disk,cache=none
  • --disk device=cdrom,bus=scsi
  • --disk=?
-w NETWORK, --network NETWORK
Конфигурация сетевого интерфейса ВМ, например:
  • --network bridge=mybr0
  • --network network=my_libvirt_virtual_net
  • --network network=mynet,model=virtio,mac=00:11...
  • --network none
--graphics GRAPHICS
Настройки графики, например:
  • --graphics spice
  • --graphics vnc,port=5901,listen=0.0.0.0
  • --graphics none
--input INPUT
Конфигурация устройства ввода, например:
  • --input tablet
  • --input keyboard,bus=usb
--hostdev HOSTDEV
Конфигурация физических USB/PCI и других устройств хоста для совместного использования ВМ
-filesystem FILESYSTEM
Предоставление каталога хоста гостевой системе, например:
  • --filesystem /my/source/dir,/dir/in/guest
Параметры платформы виртуализации
-v, --hvm
ВМ с полной виртуализацией
-p, --paravirt
ВМ с паравиртуализацией
--container
Тип ВМ — контейнер
--virt-type VIRT_TYPE
Тип гипервизора (kvm, qemu и т.п.)
--arch ARCH
Эмулируемая архитектура процессора
--machine MACHINE
Эмулируемый тип компьютера
Прочие параметры
--autostart
Автоматический запуск ВМ при старте хоста
--transient
Создать временный домен
--noautoconsole
Не подключаться к гостевой консоли автоматически
-q, --quiet
Подавлять вывод (за исключением ошибок)
-d, --debug
Вывод отладочной информации
Утилита virt-install поддерживает как графическую установку (через VNC и Spice), так и текстовую — через последовательный порт. ВМ может использовать несколько дисков, сетевых интерфейсов, аудиоустройств, а также физические USB и PCI-устройства.
Установочный носитель может быть как локальным, так и удалённым (например, через NFS, HTTP или FTP). В таком случае virt-install получает минимальный набор файлов и позволяет установщику ОС загрузить остальное. Поддерживается также загрузка по сети (PXE) и создание ВМ/контейнера без установки ОС или загрузка по сети предустановленной системы.
Утилита virt-install предоставляет множество параметров, позволяющих создать полностью готовую к работе ВМ, что делает её удобной для автоматизации установки.

62.3. Утилита qemu-img

qemu-img — инструмент для работы с образами дисков ВМ QEMU.
Использование:
qemu-img [опции] команда [параметры команды]
Для манипуляции с образами используются следующие команды:
  • create — создание нового образа диска;
  • check — проверка образа на ошибки;
  • convert — преобразование образа в другой формат;
  • info — информация об образе;
  • snapshot — управление снимками состояния (snapshot);
  • commit — сохранение изменений в базовый образ;
  • rebase — создает новый базовый образ на основании существующего.
Поддерживаемые форматы:
  • raw — простой и переносимый формат. Занимает место только за реально записанные данные. Действительный объем пространства, занимаемый образом, можно определить с помощью команд qemu-img info или ls -ls;
  • qcow2 — основной формат QEMU. Поддерживает сжатие, шифрование, снимки;
  • qcow — устаревший формат QEMU, используется для совместимости;
  • cow — устаревший формат COW (Copy On Write), используется для совместимости;
  • vmdk — формат, совместимый с VMware;
  • cloop — сжатый формат CLOOP (Compressed Loop), использовавшийся, например, в Knoppix.
Команда получения сведений о дисковом образе:
# qemu-img info /var/lib/libvirt/images/alt-server-test.qcow2
image: /var/lib/libvirt/images/alt-server-test.qcow2
file format: qcow2
virtual size: 60 GiB (64424509440 bytes)
disk size: 9.57 MiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: /var/lib/libvirt/images/alt-server-test.qcow2
    protocol type: file
    file length: 60 GiB (64434601984 bytes)
    disk size: 9.57 MiB
Пример создания образа диска (динамически расширяемый):
# qemu-img create -f qcow2 /var/lib/libvirt/images/hdd.qcow2 20G
Пример конвертации из raw в qcow2:
# qemu-img convert -f raw -O qcow2 disk_hd.img disk_hd.qcow2

62.4. Менеджер виртуальных машин virt-manager

Менеджер виртуальных машин virt-manager предоставляет графический интерфейс для доступа к гипервизорам и ВМ в локальной и удаленных системах. С помощью virt-manager можно создавать ВМ. Кроме того, virt-manager выполняет управляющие функции:
  • выделение памяти;
  • выделение виртуальных процессоров;
  • мониторинг производительности;
  • сохранение и восстановление, приостановка и возобновление работы, запуск и завершение работы виртуальных машин;
  • доступ к текстовой и графической консоли;
  • автономная и живая миграция.

Примечание

На управляющей машине должен быть установлен пакет virt-manager.
Для запуска менеджера виртуальных машин, в меню приложений необходимо выбрать СистемныеМенеджер виртуальных машин.
В главном окне менеджера, при наличии подключения к гипервизору, будут показаны все запущенные ВМ:
Главное окно менеджера виртуальных машин
Двойной щелчок на имени ВМ открывает её консоль.

Глава 63. Подключение к гипервизору

63.1. Управление доступом к libvirt через SSH

В дополнение к SSH-аутентификации необходимо также настроить управление доступом к службе libvirt на хост-системе.
Доступ к libvirt с удаленного узла
Для настройки подключения к удаленному серверу виртуализации необходимо сгенерировать SSH-ключ и скопировать его публичную часть на сервер. Для этого на узле, с которого будет производиться подключение, от имени пользователя, от которого будет производиться подключение, следует выполнить команды:
$ ssh-keygen -t ed25519
$ ssh-copy-id user@192.168.0.147
где 192.168.0.147 — IP-адрес сервера с libvirt.
В результате получаем возможность подключаться к серверу и работать с его ресурсами от имени пользователя user.
Для доступа к libvirt достаточно добавить пользователя user в группу vmusers на сервере, либо скопировать публичный ключ в домашний каталог пользователя root и подключаться к серверу по SSH от имени root.

Примечание

По умолчанию libvirt требует прав администратора или членства в группе vmusers для доступа к системному гипервизору (/system).

63.2. Подключение к гипервизору с помощью virsh

Команда подключения к гипервизору:
virsh -c URI
Если параметр URI не задан, libvirt попытается определить наиболее подходящий гипервизор.
Параметр URI может принимать следующие значения:
  • qemu:///system — подключение к службе, управляющей KVM/QEMU-доменами, запущенной от имени пользователя root. Этот вариант используется по умолчанию в virt-manager;
  • qemu:///session — подключение к службе, управляющей KVM/QEMU-доменами, запущенной от имени непривилегированного пользователя;
  • lxc:/// — подключение к гипервизору для создания LXC-контейнеров (должен быть установлен пакет libvirt-lxc).
Чтобы установить соединение только для чтения, к команде следует добавить опцию --readonly.
Пример локального подключения:
$ virsh -c qemu:///system list --all
 ID   Имя          Состояние
------------------------------
 -    alt-server-test   выключен

Примечание

Чтобы не вводить каждый раз -c qemu:///system, можно установить переменную окружения:
export LIBVIRT_DEFAULT_URI=qemu:///system
Подключение к удаленному гипервизору QEMU по SSH:
$ virsh -c qemu+ssh://user@192.168.0.147/system
Добро пожаловать в virsh — интерактивный терминал виртуализации.

Введите  «help» для получения справки по командам
         «quit», чтобы завершить работу и выйти.

virsh #
где:
  • user — имя пользователя на удаленном хосте, входящего в группу vmusers;
  • 192.168.0.147 — IP-адрес или имя хоста виртуальных машин.

63.3. Настройка соединения с удаленным гипервизором в virt-manager

На клиентской системе можно запустить virt-manager с подключением к удалённому гипервизору, выполнив следующую команду:
$ virt-manager -c qemu+ssh://user@192.168.0.147/system
где:
  • user — имя пользователя на удалённой системе, входящего в группу vmusers;
  • 192.168.0.147 — IP-адрес или имя хоста виртуальных машин.
virt-manager поддерживает одновременное подключение к нескольким удалённым хостам.
Подключение virt-manager к удаленным хостам также можно настроить в графическом интерфейсе:
  1. В главном меню virt-manager выбрать ФайлДобавить соединение….
  2. В открывшемся окне выбрать сессию гипервизора, отметить пункт Подключиться к удалённому хосту с помощью SSH, указать имя пользователя и адрес сервера, нажать кнопку Подключиться:
    Добавление соединения в менеджере виртуальных машин

Глава 64. Создание виртуальных машин

Наиболее важным этапом в процессе использования виртуализации является создание ВМ.Именно на этом этапе задаются тип виртуализации, способы доступа к ВМ, параметры подключения к локальной сети, а также другие характеристики виртуального оборудования.
Создание и установка ВМ могут быть выполнены из командной строки с помощью утилит virsh и virt-install, либо через графический интерфейс программы virt-manager.

Важно

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

64.1. Создание ВМ на основе файла конфигурации (утилита virsh)

ВМ можно создавать на основе конфигурационных файлов. Для этого описание конфигурации ВМ должно быть представлено в формате XML.
Команда для создания ВМ из XML-файла:
$ virsh create guest.xml
Domain 'altK' created from guest.xml
Для получения файла конфигурации можно сделать копию XML-файла существующей ВМ, либо воспользоваться опцией dumpxml:
virsh dumpxml <domain>
Эта команда выводит конфигурацию ВМ в формате XML в стандартный поток вывода (stdout). Чтобы сохранить результат в файл (в примере guest.xml), можно выполнить команду:
$ virsh -c qemu:///system dumpxml alt-server > guest.xml
Полученный файл можно отредактировать для настройки дополнительных устройств, изменения параметров ВМ или для развёртывания других ВМ на его основе.

Примечание

Подключение к ВМ по протоколу SPICE и VNC рассмотрено в разделе Подключение к виртуальному монитору ВМ

64.2. Создание ВМ с помощью virt-install

Для создания ВМ с помощью утилиты virt-install необходимо как минимум задать следующие параметры: --name, --memory, хранилище (--disk, --filesystem или --nodisks) и опции установки.
Перед использованием команды virt-install необходимо загрузить ISO-образ ОС, которая будет устанавливаться.
Пример команды для создания ВМ:
# virt-install --connect qemu:///system \
--name alt-server-test \
--os-variant=linux2022 \
--cdrom /var/lib/libvirt/images/alt-server-11.0-x86_64.iso \
--graphics spice,listen=0.0.0.0 \
--video qxl \
--disk pool=default,size=60,bus=virtio,format=qcow2 \
--memory 4096 \
--vcpus=2 \
--network network=default \
--hvm \
--virt-type=kvm
где:
  • --name alt-server — название ВМ;
  • --os-variant=linux2022 — вариант ОС (для корректной оптимизации);
  • --cdrom /var/lib/libvirt/images/alt-server-11.0-x86_64.iso — путь к ISO-образу установочного диска;
  • --graphics spice,listen=0.0.0.0 — графическая консоль с доступом по протоколу SPICE;
  • --disk pool=default,size=60,bus=virtio,format=qcow2 — хранилище: диск объёмом 60 ГБ в формате qcow2 из пула default;
  • --memory 4096 — объем оперативной памяти (в МБ);
  • --vcpus=2 — количество виртуальных процессоров;
  • --network network=default — подключение к виртуальной сети default;
  • --hvm — использование полной (аппаратной) виртуализации;
  • --virt-type=kvm — указание гипервизора KVM как основы виртуализации.
Последние два параметра (--hvm и --virt-type) оптимизируют ВМ под аппаратную виртуализацию. Если эти параметры не заданы явно, они применяются по умолчанию.

Примечание

Для использования UEFI в качестве загрузчика необходимо добавить параметр --boot loader=…, указывающий путь к UEFI-образу (например, OVMF):
# virt-install --connect qemu:///system \
--name alt-server-test \
--os-variant=linux2022 \
--cdrom /var/lib/libvirt/images/alt-server-11.0-x86_64.iso \
--graphics spice,listen=0.0.0.0 \
--video qxl \
--disk pool=default,size=60,bus=virtio,format=qcow2 \
--memory 4096 \
--vcpus=2 \
--network network=default \
--hvm \
--virt-type=kvm \
--boot loader=/usr/share/OVMF/OVMF_CODE.fd
где /usr/share/OVMF/OVMF_CODE.fd — путь к файлу прошивки UEFI.

Примечание

Список доступных вариантов ОС можно получить, выполнив команду:
$ osinfo-query os
Дополнительные примеры:
  • запуск Live CD в ВМ без создания виртуального диска:
    # virt-install \
     --hvm \
     --name demo \
     --memory 500 \
     --nodisks \
     --livecd \
     --graphics vnc \
     --cdrom /var/lib/libvirt/images/altlive.iso
    
  • запуск контейнера (LXC) с ограничением памяти в 512 МБ и одним ядром:
    # virt-install \
     --connect lxc:/// \
     --name bash_guest \
     --memory 512 \
     --vcpus 1 \
     --init /bin/bash
    
  • создание ВМ с использованием существующего дискового тома:
    # virt-install \
     --name demo \
     --memory 512 \
     --disk /home/user/VMs/mydisk.img \
     --import
    

Примечание

Подключение к ВМ по протоколу SPICE и VNC рассмотрено в разделе Подключение к виртуальному монитору ВМ

64.3. Создание ВМ с помощью virt-manager

Новую ВМ можно создать, нажав кнопку Создать виртуальную машину в главном окне virt-manager (либо выбрав в меню ФайлСоздать виртуальную машину):
Создание ВМ
На первом шаге создания ВМ необходимо выбрать способ установки ОС и нажать кнопку Вперёд:
Создание ВМ. Выбор метода установки
В следующем окне следует указать путь к ISO-образу установочного диска ОС или физическому CD/DVD-диску:
Создание ВМ. Выбор ISO образа
Интерфейс может отличаться в зависимости от ранее выбранного способа установки. Здесь также можно указать тип и версию устанавливаемой ОС.
На третьем шаге необходимо указать объём оперативной памяти и количество виртуальных процессоров:
Создание ВМ. Настройка ОЗУ и ЦПУ для ВМ
Эти параметры напрямую влияют на производительность как ВМ, так и хост-системы.
На следующем этапе необходимо выбрать или создать виртуальный диск, на который будет установлена гостевая система:
Создание ВМ. Настройка пространства хранения данных
На последнем этапе можно задать название ВМ, выбрать сеть и нажать кнопку Готово:
Создание ВМ. Выбор сети
После этого ВМ будет создана и автоматически запущена, начнётся процесс установки операционной системы.:
Установка ОС
Окружение локального рабочего стола способно перехватывать комбинации клавиш (например, Ctrl+Alt+F11) для предотвращения их отправки гостевой машине. Чтобы отправить такие последовательности, используется свойство «западания» клавиш virt-manager. Для перевода клавиши в нажатое состояние необходимо нажать клавишу модификатора (Ctrl или Alt) 3 раза. Клавиша будет считаться нажатой до тех пор пока не будет нажата любая клавиша, отличная от модификатора. Таким образом, чтобы передать гостевой системе комбинацию Ctrl+Alt+F11, необходимо последовательно нажать Ctrl+Ctrl+Ctrl+Alt+F11 или воспользоваться меню Отправить комбинацию клавиш.

Примечание

Для создания виртуальной машины с загрузкой через UEFI необходимо:
  1. На последнем шаге создания ВМ, перед нажатием кнопки Готово установить отметку в поле Проверить конфигурацию перед установкой:
    Проверить конфигурацию перед установкой
  2. В открывшемся окне на вкладке Обзор в выпадающем списке Микропрограмма выбрать вариант UEFI:
    Выбор типа загрузки UEFI
  3. Нажать кнопку Применить для сохранения изменений.
  4. Запустить установку, нажав кнопку Начать установку.

Глава 65. Запуск и управление функционированием ВМ

65.1. Управление состоянием ВМ в командной строке

Команды управления состоянием ВМ:
  • start — запуск ВМ;
  • shutdown — завершение работы. Поведение выключаемой ВМ можно контролировать с помощью параметра on_shutdown в файле конфигурации;
  • destroy — принудительная остановка. Использование virsh destroy может повредить гостевую файловую систему. Рекомендуется использовать команду shutdown;
  • reboot — перезагрузка ВМ. Поведение перезагружаемой ВМ можно контролировать с помощью параметра on_reboot в файле конфигурации;
  • suspend — приостановка ВМ. В приостановленном состоянии ВМ продолжает потреблять оперативную память, но не использует процессорные ресурсы;
  • resume — возобновление работы приостановленной ВМ;
  • save — сохранение текущего состояния ВМ. Команда останавливает ВМ и сохраняет состояние в файл (время выполнения зависит от объема ОЗУ);
  • restore — восстановление ВМ, ранее сохраненной с помощью команды virsh save. ВМ будет восстановлена из файла и перезапущена. Имя и UUID останутся прежними, но будет выдан новый идентификатор домена;
  • undefine — удаление ВМ (удаляется также её конфигурационный файл);
  • autostart — добавление ВМ в автозагрузку;
  • autostart --disable — исключение ВМ из автозагрузки;
Остановка и удаление ВМ alt-server:
$ virsh destroy alt-server
$ virsh undefine alt-server

65.2. Управление состоянием ВМ в менеджере виртуальных машин

Для запуска ВМ в менеджере виртуальных машин virt-manager необходимо выбрать нужную машину из списка и нажать кнопку Включить виртуальную машину:
Запуск ВМ
Для управления запущенной ВМ используются соответствующие кнопки на панели инструментов:
Кнопки управления состоянием ВМ
Управлять состоянием ВМ также можно, выбрав соответствующий пункт в контекстном меню ВМ:
Контекстное меню ВМ

65.3. Подключение к виртуальному монитору ВМ

Доступ к рабочему столу ВМ может быть организован по протоколам VNC и SPICE.
К каждой из ВМ можно подключиться, используя один IP-адрес и разные порты. Порт доступа к ВМ может быть назначен вручную или автоматически. Удаленный доступ к ВМ можно защитить паролем.

65.3.1. Использование протокола SPICE

Чтобы добавить поддержку SPICE в существующую ВМ, необходимо отредактировать её конфигурацию:
$ virsh edit alt-server-test
Добавить графический элемент SPICE, например:
<graphics type='spice' port='5900' autoport='yes' listen='127.0.0.1'>
    <listen type='address' address='127.0.0.1'/>
</graphics>
Добавить видеоустройство QXL:
<video>
    <model type='qxl'/>
</video>
После остановки и перезапуска ВМ она станет доступна через SPICE.
Проверка параметров подключения:
$ virsh domdisplay alt-server-test
spice://localhost:5900
В данном примере доступ к ВМ будет возможен только с локального адреса (127.0.0.1). Для удалённого подключения SPICE-сервер должен слушать на общедоступных интерфейсах. В этом случае в конфигурации ВМ нужно указать адрес 0.0.0.0:
<graphics type='spice' port='5900' autoport='yes' listen='0.0.0.0' passwd='mypasswd'>
    <listen type='address' address='0.0.0.0'/>
</graphics>
Изменение настроек доступа к рабочему столу в менеджере ВМ:
Менеджер ВМ. Вкладка «Дисплей Spice»
Для подключения к SPICE-серверу может использоваться встроенный просмотрщик virt-manager или любой SPICE-клиент. Примеры подключений (на клиентской машине должен быть установлен пакет virt-viewer):
$ virt-viewer -c qemu+ssh://user@192.168.0.147/system -d alt-server-test

$ remote-viewer "spice://192.168.0.147:5900"
Подключение к SPICE-серверу

Примечание

При подключении через SPICE-клиент используется адрес и порт хоста KVM, а не имя или IP-адрес самой ВМ.

65.3.2. Использование протокола VNC

Пример настройки доступа по VNC в файле конфигурации ВМ:
<graphics type='vnc' port='5900' autoport='no' listen='0.0.0.0' passwd='mypasswd'>
    <listen type='address' address='0.0.0.0'/>
</graphics>
Изменение настроек доступа к рабочему столу в менеджере ВМ:
Менеджер ВМ. Вкладка «Дисплей VNC»
Проверка параметров подключения:
$ virsh domdisplay alt-server-test
vnc://127.0.0.1:1
Для подключения к VNC-серверу может использоваться встроенный просмотрщик virt-manager или любой VNC-клиент. Примеры подключений (на клиенте должны быть установлены пакеты virt-viewer или tigervnc):
$ virt-viewer -c qemu+ssh://user@192.168.0.147/system -d alt-server-test

$ vncviewer 192.168.0.147:5901
Подключение к VNC-серверу (tigervnc)

Глава 66. Управление ВМ

66.1. Редактирование файла конфигурации ВМ

ВМ можно редактировать как во время их работы, так и в автономном режиме. Эту функциональность предоставляет команда virsh edit. Например, чтобы отредактировать конфигурацию ВМ с именем alt-server-test, можно выполнить команду:
$ virsh edit alt-server-test
В результате откроется текстовый редактор, заданный переменной окружения $EDITOR.

66.2. Получение информации о ВМ

Получение информации об узле:
$ virsh nodeinfo
Модель процессора: x86_64
CPU:                 16
Частота процессора: 400 MHz
Сокеты:        1
Ядер на сокет: 16
Потоков на ядро: 1
Ячейки NUMA:   1
Объём памяти: 15995768 KiB
Просмотр списка ВМ:
$ virsh list
Опции команды virsh list:
  • --inactive — показать список неактивных доменов;
  • --all — показать все ВМ, независимо от их состояния.
Пример вывода virsh list:
$ virsh list --all
 ID   Имя               Состояние
-----------------------------------
 2    alt-server-test   работает
 -    ALT_Server        выключен
 -    Education         выключен
Столбец «Состояние» может содержать следующие значения:
  • работает (running) — ВМ в активном состоянии, использует ресурсы процессора;
  • blocked — заблокирована, неактивна. Обычно ожидает операций ввода/вывода или находится в режиме сна;
  • приостановлен (paused) — приостановлена вручную или командой virsh suspend; потребляет ресурсы, но не использует CPU;
  • выключен (shutdown) — ВМ завершает работу. Поведение зависит от ОС; некоторые системы могут игнорировать сигналы завершения;
  • dying — домен завершает работу с ошибкой или не смог корректно завершиться;
  • crashed — аварийно завершённая ВМ. В этом состоянии домены находятся, если не была настроена их перезагрузка в случае сбоя.
Команда для получения информации о ВМ:
virsh dominfo <domain>
где <domain> — имя, ID или UUID домена.
Пример вывода virsh dominfo:
$ virsh dominfo alt-server-test
ID:             2
Имя:         alt-server-test
UUID:           ac44f417-278b-4ebd-b16c-917d52e4688c
Тип ОС:    hvm
Состояние: работает
CPU:            2
Время CPU: 6,5s
Макс.память: 4194304 KiB
Занято памяти: 4194304 KiB
Постоянство: yes
Автозапуск: выкл.
Управляемое сохранение: no
Модель безопасности: none
DOI безопасности: 0
Получение информации о виртуальных процессорах:
virsh vcpuinfo <domain>
Пример вывода:
$ virsh vcpuinfo alt-server-test
Виртуальный процессор:: 0
CPU:            11
Состояние: работает
Время CPU: 137,1s
Соответствие ЦП: yyyyyyyyyyyyyyyy

Виртуальный процессор:: 1
CPU:            5
Состояние: работает
Время CPU: 17,2s
Соответствие ЦП: yyyyyyyyyyyyyyyy
Команда сопоставления виртуальных процессоров физическим:
virsh vcpupin <domain> [--vcpu <число>] [--cpulist <строка>] [--config] [--live] [--current]
Параметры:
  • <domain> — имя, ID или UUID домена;
  • --vcpu <число> — номер виртуального процессора;
  • --cpulist <строка> — список физических процессоров. Если не указан, выводится текущий список;
  • --config — сохранить изменения в конфигурации;
  • --live — применить к работающей ВМ;
  • --current — применить к текущему состоянию.
Пример вывода:
$ virsh vcpupin alt-server-test
 VCPU   Соответствие ЦП
-------------------------
 0      0-15
 1      0-15
Изменение числа виртуальных процессоров (заданное число не может превышать значение, определенное при создании ВМ):
virsh setvcpus <domain> <count> [--maximum] [--config] [--live] [--current] [--guest] [--hotpluggable]
где:
  • <domain> — имя, ID или UUID домена;
  • [--count] <число> — новое количество виртуальных процессоров;
  • --maximum — установить максимальное значение;
  • --guest — состояние процессоров ограничивается гостевой ОС.
Изменение объема ОЗУ:
virsh setmem <domain> <size> [--config] [--live] [--current]
где:
  • <domain> — имя, ID или UUID домена;
  • [--size] <число> — объем (по умолчанию в КБ). Значение должно быть не менее 64 МБ и не превышать максимум, заданный при создании ВМ.
Изменение максимально допустимого объема памяти:
virsh setmaxmem <domain> <size> [--config] [--live] [--current]
где:
  • <domain> — имя, ID или UUID домена;
  • [--size] <число> — максимальный объем (по умолчанию в КБ).
Изменение максимального объема памяти может оказать влияние на функциональность ВМ только в том случае, если указанный размер меньше исходного. В таком случае использование памяти будет ограничено.
Примеры изменения параметров:
$ virsh setmaxmem --size 624000 alt-server-test
$ virsh setmem --size 52240 alt-server-test
$ virsh setvcpus --config alt-server-test 3 --maximum
Информация о блочных устройствах:
virsh domblkstat <domain> [--device <строка>] [--human]
где:
  • <domain> — имя, ID или UUID домена;
  • --device <строка> — имя блочного устройства;
  • --human — форматировать вывод.
Информация о сетевых интерфейсах:
virsh domifstat <domain> <interface>
где:
  • <domain> — имя, ID или UUID домена;
  • [--interface] <строка> — устройство интерфейса, указанное по имени или MAC-адресу.

66.3. Конфигурирование ВМ в менеджере виртуальных машин

С помощью менеджера виртуальных машин можно получить доступ к подробной информации о всех ВМ. Для этого необходимо:
  1. В главном окне менеджера выбрать нужную ВМ.
  2. Нажать кнопку Открыть:
    Окно менеджера виртуальных машин
  3. В открывшемся окне нажать кнопку Показать виртуальное оборудование:
    Окно параметров ВМ
    Появится окно просмотра сведений о ВМ.
Для изменения нужного параметра необходимо перейти на соответствующую вкладку, внести изменения и подтвердить операцию, нажав кнопку Применить:
Вкладка «Память»
Вкладка Процессоры:
Вкладка Процессоры

66.4. Мониторинг состояния

С помощью менеджера виртуальных машин можно изменить настройки мониторинга состояния ВМ.
Для этого в меню Правка следует выбрать пункт Настройки. В открывшемся окне на вкладке Статистика можно задать время обновления состояния ВМ в секундах:
Вкладка «Статистика»
На вкладке Консоль можно выбрать способ открытия консоли и указать устройство ввода:
Вкладка «Консоль»

Глава 67. Управление виртуальными сетевыми интерфейсами и сетями

Виртуальная сеть Libvirt использует концепцию виртуального сетевого коммутатора. Коммутатор виртуальной сети — это программная конструкция, работающая на физическом сервере. К этому коммутатору подключаются ВМ, и сетевой трафик от них направляется через него:
Коммутатор виртуальной сети
В конфигурации по умолчанию (виртуальная сеть default на основе NAT) гостевая ОС получает доступ к внешним сетевым службам, но остаётся недоступной из внешней сети. Сетевым интерфейсом по умолчанию, представляющим виртуальный коммутатор, является virbr0:
$ ip addr show virbr0
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:b9:5a:15 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
По умолчанию гостевая ОС получает IP-адрес из подсети 192.168.122.0/24, а хостовая ОС доступна по адресу 192.168.122.1. Из гостевой ОС можно подключаться по SSH к хосту (по адресу 192.168.122.1) и использовать scp для обмена файлами.
IP-адреса могут назначаться ВМ по DHCP. Для этого виртуальному коммутатору можно указать пул IP-адресов.

Примечание

Виртуальную сеть можно ограничить определенным физическим интерфейсом, если на хосте есть несколько сетевых устройств (например, eth0, eth1 и eth2), Интерфейс задаётся в параметре dev=<interface> или указывается при создании сети в virt-manager.
Возможные режимы работы виртуальной сети:
  • NAT — режим по умолчанию. Виртуальная внутренняя сеть с доступом во внешнюю сеть через NAT;
  • Маршрутизация (Routed) — как и NAT, обеспечивает ВМ доступ во внешнюю сеть, но без трансляции адресов (NAT). Виртуальный коммутатор может анализировать весь сетевой трафик и использовать информацию из пакетов для принятия решений о маршрутизации. В этом режиме все ВМ находятся в одной подсети, отличной от подсети хоста. Эта подсеть маршрутизируется через виртуальный коммутатор, расположенный на хосте. Режим позволяет устанавливать входящие соединения к ВМ, но требует настройки дополнительных маршрутов на внешних устройствах сети;
  • Открытый (Open) — режим, схожий с режимом Маршрутизация, но без автоматического создания правил межсетевого экрана со стороны libvirt. Это означает, что libvirt не изменяет существующие правила firewall на хосте, позволяя пользователю самостоятельно настраивать доступ и фильтрацию трафика для ВМ;
  • Изолированный (Isolated) — ВМ могут взаимодействовать между собой и с хостом, но не имеют доступа наружу;
  • Сеть на основе моста (Bridge) — ВМ подключаются к физической сети напрямую через мост. Поддерживает внешний IP и полную интеграцию с локальной сетью;
  • Буфер SR-IOV (Single-root IOV) — технология, при которой физический сетевой адаптер делится на виртуальные функции, напрямую назначаемые ВМ. Повышает производительность за счёт обхода гипервизора.

Таблица 67.1. Сравнение типов сетевых подключений ВМ

ВМ↔Хост
ВМ1↔ВМ2
ВМ→Интернет
Интернет→ВМ
Сеть на основе моста
+
+
+
+
NAT
+
+
+
-
Маршрутизация
+
+
+
+
Изолированный
+
+
-
-
Открытый
Зависит от правил межсетевого экрана хоста
Подробнее о настройках виртуальной сети в разных режимах см. раздел Режимы работы виртуальной сети.

67.1. Управление виртуальными сетями в командной строке

Команды управления виртуальными сетями:
  • virsh net-autostart имя_сети — автоматический запуск заданной сети;
  • virsh net-autostart имя_сети --disable — отключить автозапуск заданной сети;
  • virsh net-create файл_XML — создание и запуск новой сети на основе существующего XML-файла;
  • virsh net-define файл_XML — создание нового сетевого устройства на основе существующего XML-файла (устройство не будет запущено);
  • virsh net-destroy имя_сети — удаление заданной сети;
  • virsh net-dumpxml имя_сети —просмотр XML-конфигурации виртуальной сети (в формате xml);
  • virsh net-info имя_сети — просмотр общей информации о заданной виртуальной сети;
  • virsh net-list — просмотр списка виртуальных сетей;
  • virsh net-name UUID_сети — преобразование заданного идентификатора в имя сети;
  • virsh net-start имя_неактивной_сети — запуск неактивной сети;
  • virsh net-uuid имя_сети — преобразование заданного имени в идентификатор UUID;
  • virsh net-update имя_сети — обновить существующую конфигурацию сети;
  • virsh net-undefine имя_неактивной_сети — удаление определения неактивной сети.
Примеры:
$ virsh net-list --all
Имя       Состояние    Автозапуск   Постоянный
-------------------------------------------------
default   не активен   no           yes

$ virsh net-start default
Сеть default запущена

$ virsh net-autostart default
Добавлена метка автоматического запуска сети default

$ virsh net-list
Имя       Состояние   Автозапуск   Постоянный
------------------------------------------------
default   активен     yes          yes

$ virsh net-dumpxml default
<network connections='1'>
<name>default</name>
<uuid>4a1398b4-99e1-46ef-b4bd-f68c3ddd5d13lt;/uuid>
<forward mode='nat'>
<nat>
    <port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:3e:12:c7'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
    <range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>

$ virsh net-info default
Имя:         default
UUID:           4a1398b4-99e1-46ef-b4bd-f68c3ddd5d13
Активен: yes
Постоянство: yes
Автозапуск: yes
Мост:       virbr0
Иногда бывает полезно выдавать клиенту один и тот же IP-адрес независимо от момента обращения. Пример добавления статического сопоставления MAC- и IP-адреса ВМ:
  1. Получить MAC-адрес ВМ (alt-server — имя ВМ):
    $ virsh dumpxml alt-server-test | grep 'mac address'
        <mac address='52:54:00:ec:28:03'/>
    
  2. Отредактировать XML-конфигурацию сети (default — имя сети):
    $ virsh net-edit default
    
    После строки:
    <range start='192.168.122.2' end='192.168.122.254'/>
    
    Вставить строки с MAC-адресами виртуальных адаптеров:
    <host mac='52:54:00:ec:28:03' name='alt-server-test' ip='192.168.122.50'/>
    
  3. Сохранить изменения и перезапустить виртуальную сеть:
    $ virsh net-destroy default
    $ virsh net-start default
    
Изменения, внесённые с помощью команды virsh net-edit, не вступят в силу в силу до тех пор, пока сеть не будет перезапущена, что приведет к потере всеми ВМ сетевого подключения к хосту до тех пор, пока их сетевые интерфейсы повторно не подключаться.
Изменения в конфигурацию сети можно внести с помощью команды virsh net-update, которая требует немедленного применения изменений. Например, чтобы добавить запись статического хоста, можно использовать команду:
$ virsh net-update default add ip-dhcp-host \
"<host mac='52:54:00:ec:28:03' name='alt-server-test' ip='192.168.122.50' />" \
--live --config

67.2. Управление виртуальными сетями в менеджере виртуальных машин

В менеджере виртуальных машин virt-manager существует возможность настройки виртуальных сетей для обеспечения сетевого взаимодействия ВМ как между собой, так и с хостовой ОС.
Для настройки виртуальной сети с помощью virt-manager необходимо:
  1. В меню Правка выбрать пункт Свойства подключения:
    Окно менеджера виртуальных машин. Меню «Правка»
  2. В открывшемся окне перейти на вкладку Виртуальные сети:
    Окно параметров виртуальной сети
  3. Доступные виртуальные сети будут перечислены в левой части окна. Для доступа к настройкам сети необходимо выбрать сеть.
Для добавления новой виртуальной сети следует нажать кнопку Добавить сеть Добавить сеть , расположенную в нижнем левом углу диалогового окна Сведения о подключении.
В открывшемся окне следует ввести имя для новой сети и задать необходимые настройки: выбрать способ подключения виртуальной сети к физической, ввести пространство адресов IPv4 для виртуальной сети, указать диапазон DHCP, задав начальный и конечный адрес и нажать кнопку Готово:
Создание новой виртуальной сети

67.3. Режимы работы виртуальной сети

67.3.1. Сеть на основе моста

Сеть на основе моста позволяет ВМ быть полноценными участниками внешней сети. Подключение идёт через мостовой интерфейс.
Виртуальный коммутатор в режиме моста

Примечание

Сервер libvirt должен быть подключен к локальной сети через Ethernet. Если подключение осуществляется по беспроводной сети, следует использовать сеть с маршрутизацией или сеть на основе NAT.
Мост возможен только в том случае, если в сети имеется достаточно свободных IP-адресов, чтобы выделить один для каждой ВМ.
На сервере libvirt необходимо настроить Eternet-мост. Сделать это можно, например, воспользовавшись модулем ЦУС Сетевые мосты (см. раздел Сетевые мосты).
Созданный Eternet-мост можно указать при создании ВМ, например:
$ virt-install --network bridge=vmbr0 ...
Для уже существующей ВМ можно указать Eternet-мост, отредактировав XML-конфигурацию:
  • открыть конфигурацию в текстовом редакторе:
    $ virsh edit alt-server-test
    
  • найти раздел <interface>:
    <interface type='network'>
        <mac address='52:54:00:85:11:34'/>
        <source network='default'/>
        <model type='virtio'/>
        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    
  • изменить, если необходимо, существующий интерфейс, заменив type='network' на type='bridge' и <source network='default'/> на <source bridge='vmbr0'/> (vmbr0 — интерфейс моста):
    <interface type='bridge'>
        <mac address='52:54:00:85:11:34'/>
        <source bridge="vmbr0"/>
        <model type='virtio'/>
        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    
  • добавить, если необходимо, дополнительный Ethernet-интерфейс, добавив новый раздел <interface> (libvirt сгенерирует случайный MAC-адрес для нового интерфейса, если <mac> опущен):
    <interface type='bridge'>
        <source bridge="vmbr0"/>
    </interface>
    
Чтобы указать Eternet-мост в менеджере виртуальных машин virt-manager, необходимо в окне настройки сетевого интерфейса ВМ в выпадающем списке Создать на базе выбрать пункт Устройство моста… и в поле Название устройства указать интерфейс моста:
Виртуальный сетевой интерфейс на базе моста

67.3.2. Маршрутизируемая сеть

Маршрутизируемую сеть следует использовать только тогда, когда использовать сеть на базе моста невозможно (например, из-за ограничений хостинг-провайдера, либо если сервер libvirt подключен по Wi-Fi). При настройке маршрутизируемой сети все ВМ находятся в одной подсети, маршрутизируемой через виртуальный коммутатор. Пакеты, предназначенные для этих адресов, статически маршрутизируются на сервер libvirt и пересылаются на ВМ (без использования NAT).
Коммутатор виртуальной сети в режиме маршрутизатора
Маршрутизируемая сеть возможна только в том случае, если в сети имеется достаточно свободных IP-адресов, чтобы выделить один для каждой ВМ.
В первую очередь необходимо выбрать, какие IP-адреса сделать доступными для ВМ (в примере 192.168.30.0/24). Так как маршрутизатор локальной сети не знает, что выбранная подсеть расположена на сервере libvirt, необходимо настроить статический маршрут на маршрутизаторе локальной сети, например:
# ip -4 route add 192.168.30.0/24 via 192.168.0.175
Далее необходимо создать виртуальную сеть.
Настройка виртуальной сети в консоли:
  1. Создать файл /tmp/routed_network.xml со следующим содержимым:
    <network>
    <name>routed_network</name>
    <forward mode="route"/>
    <ip address="192.168.30.0" netmask="255.255.255.0">
    <dhcp>
    <range start="192.168.30.128" end="192.168.30.254"/>
    </dhcp>
    </ip>
    </network>
    
  2. Определить новую сеть, используя файл /tmp/routed_network.xml:
    $ virsh net-define /tmp/routed_network.xml
    Сеть routed_network определена на основе /tmp/routed_network.xml
    
    $ virsh net-autostart routed_network
    Добавлена метка автоматического запуска сети routed_network
    
    $ virsh net-start routed_network
    Сеть routed_network запущена
    
Настройка виртуальной сети в virt-manager:
Настройка маршрутизируемой сети
Созданную виртальную сеть можно назначить ВМ.
Назначение маршрутизируемой сети в консоли:
  • Новая ВМ:
    $ virt-install --network network=routed_network ...
    
  • Существующая ВМ:
    • открыть XML-конфигурацию ВМ в текстовом редакторе:
      $ virsh edit alt-server-test
      
    • найти раздел <interface>:
      <interface type='network'>
      <mac address='52:54:00:85:11:34'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </interface>
      
    • изменить, если необходимо, существующий интерфейс, заменив название сети на routed_network:
      <interface type='network'>
      <mac address='52:54:00:85:11:34'/>
      <source network='routed_network'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </interface>
      
    • добавить, если необходимо, дополнительный Ethernet-интерфейс, добавив новый раздел <interface> (libvirt сгенерирует случайный MAC-адрес для нового интерфейса, если <mac> опущен):
      <interface type='network'>
      <source bridge="routed_network"/>
      </interface>
      
Назначение маршрутизируемой сети в virt-manager:
Назначение маршрутизируемой сети ВМ

67.3.3. Сеть на основе NAT

Сеть на основе NAT идеальна, когда требуется только исходящий доступ (из ВМ к внешней сети). При этом сервер libvirt действует как маршрутизатор, и трафик ВМ исходит с IP-адреса сервера.
Коммутатор виртуальной сети в режиме NAT
Виртуальная сеть default (доступна после установки libvirt) основана на NAT. Можно также создать собственную сеть на основе NAT.
Настройка виртуальной сети на основе NAT:
  • В консоли:
    1. Создать файл /tmp/nat_network.xml со следующим содержимым:
      <network>
      <name>nat_network</name>
      <forward mode="nat"/>
      <ip address="192.168.20.1" netmask="255.255.255.0">
      <dhcp>
          <range start="192.168.20.128" end="192.168.20.254"/>
      </dhcp>
      </ip>
      </network>
      
    2. Определить новую сеть, используя файл /tmp/nat_network.xml:
      $ virsh net-define /tmp/nat_network.xml
      $ virsh net-autostart nat_network
      $ virsh net-start nat_network
      
  • В virt-manager:
    Сеть на основе NAT
Настройка ВМ:
  • В консоли:
    1. Новая ВМ:
      $ virt-install --network network=nat_network ...
      
    2. Существующая ВМ:
      • открыть конфигурацию XML ВМ в текстовом редакторе:
        $ virsh edit alt-server-test
        
      • найти раздел <interface>:
        <interface type='network'>
            <mac address='52:54:00:85:11:34'/>
            <source network='default'/>
            <model type='virtio'/>
            <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </interface>
        
      • изменить, если необходимо, существующий интерфейс, заменив название сети на nat_network:
        <interface type='network'>
            <mac address='52:54:00:85:11:34'/>
            <source network='nat_network'/>
            <model type='virtio'/>
            <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </interface>
        
      • добавить, если необходимо, дополнительный Ethernet-интерфейс, добавив новый раздел <interface> (libvirt сгенерирует случайный MAC-адрес для нового интерфейса, если <mac> опущен):
        <interface type='network'>
            <source bridge="nat_network"/>
        </interface>
        
  • В virt-manager:
    Сеть на основе NAT

67.3.4. Изолированная сеть

При использовании изолированного режима ВМ, подключенные к виртуальному коммутатору, могут взаимодействовать друг с другом и с физической машиной хоста, но их трафик не будет проходить за пределы физической машины хоста, и они не могут получать трафик извне физической машины хоста.
Коммутатор виртуальной сети в изолированном режиме
Настройка изолированной сети:
  • В консоли:
    1. Создать файл /tmp/isolated_network.xml со следующим содержимым:
      <network>
      <name>isolated_network</name>
      <ip address="192.168.100.1" netmask="255.255.255.0">
      <dhcp>
          <range start="192.168.100.128" end="192.168.100.254"/>
      </dhcp>
      </ip>
      </network>
      
    2. Определить новую сеть, используя файл /tmp/isolated_network.xml:
      $ virsh net-define /tmp/isolated_network.xml
      $ virsh net-autostart isolated_network
      $ virsh net-start isolated_network
      
  • В virt-manager:
    Изолированная сеть
Настройка ВМ:
  • В консоли:
    1. Новая ВМ:
      $ virt-install --network network=isolated_network ...
      
    2. Существующая ВМ:
      • открыть конфигурацию XML ВМ в текстовом редакторе:
        $ virsh edit alt-server-test
        
      • найти раздел <interface>:
        <interface type='network'>
            <mac address='52:54:00:85:11:34'/>
            <source network='default'/>
            <model type='virtio'/>
            <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </interface>
        
      • изменить, если необходимо, существующий интерфейс, заменив название сети на nat_network:
        <interface type='network'>
            <mac address='52:54:00:85:11:34'/>
            <source network='isolated_network'/>
            <model type='virtio'/>
            <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </interface>
        
      • добавить, если необходимо, дополнительный Ethernet-интерфейс, добавив новый раздел <interface> (libvirt сгенерирует случайный MAC-адрес для нового интерфейса, если <mac> опущен):
        <interface type='network'>
            <source bridge="isolated_network"/>
        </interface>
        
  • В virt-manager:
    ВМ с изолированной сетью

Глава 68. Управление хранилищами

API-интерфейс libvirt обеспечивает удобную абстракцию для размещения образов ВМ и файловых систем, которая называется storage pools (пул хранилищ). Пул хранилищ — это локальный каталог, локальное устройство хранения данных (физический диск, логический том или хранилище на основе хост-адаптера шины SCSI [SCSI HBA]), файловая система NFS (Network File System) либо сетевое хранилище блочного уровня, управляемое посредством libvirt и позволяющее создавать и хранить один или несколько образов ВМ.
По умолчанию команды libvirt используют в качестве исходного пула хранилищ каталог /var/lib/libvirt/images на хосте виртуализации.
Образ диска — это снимок содержимого виртуального диска, сохранённый в определённом формате. Libvirt поддерживает несколько форматов образов, включая образы CD/DVD. Каждый образ хранится в соответствующем хранилище.
Типы хранилищ, поддерживаемые libvirt:
  • dir — каталог в файловой системе;
  • disk — физический диск;
  • fs — отформатированное блочное устройство;
  • gluster — файловая система Gluster;
  • isci — хранилище iSCSI;
  • logical — группа томов LVM;
  • mpath — многопутевое устройство (Multipath);
  • netfs — экспорт каталога по сети;
  • rbd — блочное устройство RADOS/Ceph;
  • scsi — хост-адаптер SCSI;
  • zfs — пул ZFS.

68.1. Управление хранилищами в командной строке

Таблица 68.1. Утилита командной строки virsh. Команды управления хранилищами

Команда
Описание
pool-define
Определить неактивный постоянный пул носителей на основе XML-файла
pool-create
Создать пул из XML-файла
pool-define-as
Определить пул на основе набора аргументов
pool-create-as
Создать пул на основе набора аргументов
pool-dumpxml
Вывести XML-конфигурацию для заданного пула
pool-list
Вывести список пулов
pool-build
Создать/инициализировать пул
pool-start
Запустить ранее определённый неактивный пул
pool-autostart
Установить автозапуск пула
pool-destroy
Остановить (разрушить) пул
pool-delete
Удалить пул
pool-edit
Редактировать XML-конфигурацию пула носителей
pool-info
Просмотреть информации о пуле
pool-refresh
Обновить состояние пула
pool-undefine
Удалить определение неактивного пула
Команда virsh pool-define-as создаёт конфигурационный XML-файл для постоянного пула. Позже этот пул можно запустить командой virsh pool-start, настроить его на автоматический запуск при загрузке хоста, остановить командой virsh pool-destroy.
Команда virsh pool-create-as создаёт временный пул (без сохранения конфигурации), который сразу запускается. Такой пул удаляется командой virsh pool-destory. Временный пул хранения нельзя запустить автоматически при загрузке системы.
Чтобы преобразовать временный пул в постоянный, необходимо сохранить его конфигурацию в XML-файл:
virsh pool-dumpxml имя_пула > имя_пула.xml && virsh pool-define имя_пула.xml
Пример создания пула на основе NFS (netfs):
$ virsh pool-create-as NFS-POOL netfs \
--source-host 192.168.0.179 \
--source-path /export/storage \
--target /var/lib/libvirt/images/NFS-POOL

Пул NFS-POOL создан
где:
  • NFS-POOL — имя нового пула;
  • 192.168.0.179 — адрес хоста, экспортирующего каталог;
  • /export/storage — путь к экспортируемому каталогу;
  • /var/lib/libvirt/images/NFS-POOL — локальная точка монтирования (каталог должен существовать).

Примечание

Для возможности монтирования NFS-хранилища должна быть запущена служба nfs-client:
# systemctl enable --now nfs-client.target
Проверка состояния пулов:
$ virsh pool-list --all --details
 Имя        Состояние   Автозапуск   Постоянный   Размер       Распределение   Доступно
-------------------------------------------------------------------------------------------
 default    работает    yes          yes          898,84 GiB   22,60 GiB       876,24 GiB
 NFS-POOL   работает    no           no           48,91 GiB    20,20 GiB       28,71 GiB
Если параметр Автозапуск имеет значение no, пул не будет доступен после перезапуска. Если параметр Постоянный имеет значение no, пул вообще не будет определён после перезагрузки.
Пул считается постоянным, если его XML-описание хранится в каталоге /etc/libvirt/storage.
Чтобы создать файл XML-описания для сформированного в ручном режиме пула, следует воспользоваться командой virsh pool-dumpxml, указав в качестве ее заключительного аргумента имя пула, для которого нужно получить XML-описание. Эта команда осуществляет запись в стандартный поток вывода, поэтому необходимо перенаправить выводимую ей информацию в соответствующий файл.
Следующая команда создаст файл XML-описания для созданного ранее пула NFS-POOL и определит постоянный пул на основе этого файла:
$ virsh pool-dumpxml NFS-POOL > NFS-POOL.xml && virsh pool-define NFS-POOL.xml
Пул NFS-POOL определён на основе NFS-POOL.xml
Чтобы задать для пула хранилищ опцию Автозапуск, можно воспользоваться командой virsh pool-autostart:
$ virsh pool-autostart NFS-POOL
Добавлена метка автоматического запуска пула NFS-POOL
Маркировка пула хранилищ как автозапускаемого говорит о том, что этот пул хранилищ будет доступен после любого перезапуска хоста виртуализации (каталог /etc/libvirt/storage/autostart будет содержать символьную ссылку на соответствующий XML-файл).
Пример создания локального постоянного пула:
$ virsh pool-define-as boot --type dir --target /var/lib/libvirt/boot
Пул boot определён

$ virsh pool-list --all
Имя        Состояние    Автозапуск
-------------------------------------
boot       не активен   no
default    активен      yes
NFS-POOL   активен      yes

$ virsh pool-build boot
Пул boot собран

$ virsh pool-start boot
Пул boot запущен

$ virsh pool-autostart boot
Добавлена метка автоматического запуска пула boot

$ virsh pool-list --all
Имя        Состояние    Автозапуск
-------------------------------------
boot       активен     yes
default    активен     yes
NFS-POOL   активен     yes
Пример создания пула хранения на основе iSCSI:
$ virsh pool-create-as --name iscsi_virtimages --type iscsi \
    --source-host 192.168.0.146 \
    --source-dev iqn.2025-05.alt.test:iscsi.target1 \
    --target /dev/disk/by-path
Пул iscsi_virtimages создан
где:
  • iscsi_virtimages — имя нового пула;
  • 192.168.0.146 — адрес сервера iSCSI;
  • iqn.2025-05.alt.test:iscsi.target1 — имя iSCSI LUN;
  • /dev/disk/by-path — локальная точка монтирования (каталог должен существовать).

Примечание

Для возможности работы с iSCSI-устройствами должна быть запущена служба (должен быть установлен пакет open-iscsi):
# systemctl enable --now iscsid

68.2. Настройка хранилищ в менеджере виртуальных машин

Для настройки хранилищ через virt-manager необходимо:
  1. В меню Правка выбрать Свойства подключения:
    Окно менеджера виртуальных машин. Меню «Правка»
  2. В открывшемся окне перейти на вкладку Пространство данных:
    Вкладка Пространство данных
  3. Для добавления пула следует нажать кнопку Добавить пул Добавить пул , расположенную в нижнем левом углу диалогового окна Сведения о подключении.
  4. В открывшемся окне следует выбрать тип пула:
    Создание пула хранения. Выбор типа пула
  5. Указать параметры пула (путь, имя, источник, тип и т. д.):
    Создание пула хранения. Ввод параметров

Глава 69. Миграция ВМ

Под миграцией понимается процесс переноса ВМ с одного узла на другой.
Живая миграция позволяет перенести работающую ВМ с одного физического хоста на другой без её остановки.
Для возможности миграции ВМ она должна быть создана с использованием общего пула хранилищ (NFS, ISCSI, GlusterFS, CEPH).

Примечание

Живая миграция возможна даже без общего хранилища (с использованием опции --copy-storage-all). Однако в этом случае произойдёт передача образа ВМ между серверами, что приведёт к значительному сетевому трафику и возможному простою сервиса. Чтобы миграция была по-настоящему «живой», с незаметным простоем, необходимо использовать общее хранилище.

69.1. Миграция с помощью virsh

ВМ можно перенести на другой узел с помощью команды virsh. Для выполнения живой миграции необходимо указать параметр --live.
Команда переноса:
$ virsh migrate --live VMName DestinationURL
где:
  • VMName — имя перемещаемой ВМ;
  • DestinationURL — URL или имя хоста узла назначения. Узел назначения должен использовать тот же гипервизор, и служба libvirt на нём должна быть запущена.
После ввода команды будет запрошен пароль пользователя узла назначения.
Чтобы выполнить живую миграцию ВМ alt-server-test на узел 192.168.0.175, необходимо выполнить следующие действия:
  1. Убедиться, что ВМ запущена:
    $ virsh list
     ID   Имя               Состояние
    -----------------------------------
     3    ALT_Server        работает
     8    alt-server-test   работает
    
  2. Выполнить следующую команду, чтобы начать перенос ВМ на узел 192.168.0.175 (после ввода команды будет запрошен пароль пользователя системы назначения):
    $ virsh migrate --live alt-server-test qemu+ssh://192.168.0.175/system
    
    Процесс миграции может занять некоторое время, в зависимости от нагрузки и размера ВМ. virsh будет сообщать только об ошибках. До завершения операции ВМ продолжит работу на исходном узле;
  3. После завершения миграции убедиться, что ВМ появилась на целевом узле, выполнив на узле назначения команду:
    $ virsh list
    

69.2. Миграция ВМ в менеджере виртуальных машин

Менеджер виртуальных машин virt-manager поддерживает возможность миграции ВМ между серверами виртуализации.
Чтобы выполнить миграцию в графическом интерфейсе, необходимо выполнить следующие действия:
  1. Подключить второй сервер виртуализации (ФайлДобавить соединение…);
  2. В контекстном меню запущенной ВМ выбрать пункт Миграция…:
    Пункт Миграция… в контекстном меню ВМ
  3. В открывшемся окне выбрать целевой узел и нажать кнопку Миграция:
    Миграция ВМ
При миграции через virt-manager конфигурационный файл ВМ не перемещается на новый узел. Это значит, что при выключении ВМ она снова появится на старом хосте. Для полной миграции, включая конфигурацию, следует использовать утилиту virsh с параметрами:
$ virsh migrate --live --persistent --undefinesource \
alt-server-test qemu+ssh://192.168.0.175/system

Глава 70. Снимки ВМ

Примечание

Снимок (snapshot) текущего состояния машины можно создать только в том случае, если виртуальный жесткий диск имеет формат *.qcow2.

70.1. Управления снимками ВМ в консоли

Команда создания снимка (ОЗУ и диска) с использованием XML-файла:
virsh snapshot-create <domain> [--xmlfile <строка>] [--disk-only] [--live]...
Команда создания снимка (ОЗУ и диска) с указанием параметров вручную:
virsh snapshot-create-as <domain> [--name <строка>] [--disk-only] [--live]...
Пример создания снимка ВМ:
$ virsh snapshot-create-as --domain alt-server-test --name alt-server-test-30jun2025
Снимок домена alt-server-test-30jun2025 создан
где:
  • alt-server-test — имя ВМ;
  • alt-server-test-30jun2025 — название снимка.
После создания снимка резервные копии файлов конфигурации будут размещены в каталоге /var/lib/libvirt/qemu/snapshot/.
Пример создания дискового снимка ВМ:
$ virsh snapshot-create-as --domain alt-server-test --name 01jul2025 \
--diskspec vda,file=/var/lib/libvirt/images/alt-server-test01jul2025.qcow2 --disk-only --atomic

Снимок домена 01jul2025 создан
Просмотр существующих снимков для домена alt-server:
$ virsh snapshot-list --domain alt-server-test
 Имя                         Время создания              Состояние
------------------------------------------------------------------------
 01jul2025                   2025-06-30 13:00:55 +0200   disk-snapshot
 alt-server-test-30jun2025   2025-06-30 12:42:41 +0200   running

Восстановление ВМ из снимка:
$ virsh snapshot-revert --domain alt-server --snapshotname alt-server-test-30jun2025 --running
Удаление снимок:
$ virsh snapshot-delete --domain alt-server --snapshotname 01jul2025

70.2. Управления снимками ВМ в менеджере виртуальных машин

Для управления снимками ВМ в менеджере виртуальных машин virt-manager необходимо выполнить следующие действия:
  1. В главном окне менеджера выбрать нужную ВМ.
  2. Нажать кнопку Открыть.
  3. В открывшемся окне нажать кнопку Управление снимками:
    Управление снимками ВМ
    Откроется окно управления снимками ВМ.
Для создания нового снимка следует нажать кнопку Создать новый снимок , расположенную в нижнем левом углу окна управления снимками. В открывшемся окне следует указать название снимка и нажать кнопку Готово:
Создание снимка
Чтобы восстановить ВМ из снимка или удалить снимок, следует воспользоваться контекстным меню снимка:
Контекстное меню снимка

Глава 71. Регистрация событий libvirt

Настройка регистрации событий в libvirt осуществляется в файле /etc/libvirt/libvirtd.conf. Логи сохраняются в каталоге /var/log/libvirt.
Функция журналирования в libvirt основана на трёх ключевых понятиях:
  • сообщения журнала;
  • фильтры;
  • формат вывода.
Сообщения журнала — это информация, получаемая во время работы libvirt. Каждое сообщение включает в себя уровень приоритета (отладочное сообщение — 1, информационное — 2, предупреждение — 3, ошибка — 4). По умолчанию, log_level=1, т.е. журналируются все сообщения.
Фильтры — это набор шаблонов и приоритетов, определяющих, какие сообщения следует принять или отклонить. Если категория сообщения совпадает с фильтром, приоритет сравнивается с приоритетом фильтра. Если приоритет сообщения ниже, оно отбрасывается. В противном случае — записывается в журнал. Если сообщение не соответствует ни одному фильтру, применяется общий уровень приоритета. Это позволяет, например, фиксировать все отладочные сообщения для QEMU, а для остальных — только ошибки.
Формат фильтра:
x:name  # только сообщение журнала
x:+name # сообщение журнала + трассировка стека
где
  • name — категория, например, remote, qemu, util.json;
  • + — указывает на необходимость включения трассировки стека;
  • x — минимальный уровень ошибки (1 — 4).
Пример фильтра:
log_filtrers="3:remote 4:event"
Как только сообщение прошло через фильтрацию, формат вывода определяет, куда отправить это сообщение. Вывод также может фильтроваться по приоритету (например, вывод только ошибок в файл).
Форматы вывода:
  • x:stderr — вывод в стандартный поток ошибок (STDERR);
  • x:syslog:name — вывод в системный журнал с заданным идентификатором;
  • x:file:file_path — вывод в файл, с соответствующим filepath;
  • x:journal — вывод в systemd-журнал.
Пример настройки:
log_outputs=”3:syslog:libvirtd 1:file:/tmp/libvirt.log”
Журналы работы ВМ хранятся в каталоге /var/log/libvirt/qemu/. Например, для машины alt-server-test журнал будет расположен по адресу: /var/log/libvirt/qemu/alt-server-test.log.

Глава 72. Управление доступом в виртуальной инфраструктуре

Права пользователя можно настраивать с помощью правил polkit.
В каталоге /usr/share/polkit-1/actions/ расположены два файла, предоставленные разработчиками libvirt, содержащие описание допустимых действий:
  • org.libvirt.unix.policy — мониторинг и базовое управление ВМ;
  • org.libvirt.api.policy — конкретные действия (остановка, перезапуск и др.), разрешаемые после первичной проверки..
Перечисление конкретных свойств с комментариями доступно в файле /usr/share/polkit-1/actions/org.libvirt.api.policy.
Названия объектов и разрешений в libvirt отображаются на действия polkit по схеме:
org.libvirt.api.<объект>.<разрешение>
Например, разрешение search-storage-vols на объекте storage_pool соответствует действию:
org.libvirt.api.storage-pool.search-storage-vols
Чтобы определить правила авторизации, polkit должен однозначно определить объект. Libvirt предоставляет ряд атрибутов для определения объектов при выполнении проверки прав доступа. Набор атрибутов изменяется в зависимости от типа объекта.
Пример тонкой настройки. Необходимо разрешить пользователю test (входит в группу vmusers) только ВМ alt-server-test. Для этого необходимо выполнить следующие действия:
  1. Раскомментировать в файле /etc/libvirt/libvirtd.conf строку:
    access_drivers = [ "polkit" ]
    
  2. Перезапустить libvirt:
    # systemctl restart libvirtd
    
  3. Создать файл правил /etc/polkit-1/rules.d/100-libvirt-acl.rules (имя может быть другим):
    polkit.addRule(function(action, subject) {
      if (action.id == "org.libvirt.unix.manage" &&
          subject.user == "test") {
          return polkit.Result.YES;
      }
    });
    
    polkit.addRule(function(action, subject) {
    // разрешить пользователю test действия с доменом "alt-server-test"
    if (action.id.indexOf("org.libvirt.api.domain.") == 0  &&
       subject.user == "test")
        {
            if (action.lookup("domain_name") == 'alt-server-test')
            {
                return polkit.Result.YES;
            }
            else
            {
                return polkit.Result.NO;
            }
        }
    else {
    // разрешить другие действия: со storage, network и пр.
            if (action.id.indexOf("org.libvirt.api.") == 0 &&
            subject.user == "test")
            {
                polkit.log("org.libvirt.api.Yes");
                return polkit.Result.YES;
            }
            else
            {
                return polkit.Result.NO;
            }
        }
    })
    
  4. Перелогиниться.
  5. Проверить видимость машины alt-server-test от имени пользователя test:
    $ virsh --connect qemu:///system list --all
     ID   Имя               Состояние
    -----------------------------------
     4    alt-server-test   работает
    
В результате выполненных действий пользователю test видна только машина alt-server-test.
Права можно настраивать более тонко, например, разрешив пользователю test запускать ВМ, но запретить ему все остальные действия с ней, для этого надо разрешить действие org.libvirt.api.domain.start:
polkit.addRule(function(action, subject)
{
    // разрешить пользователю test запускать ВМ "alt-server-test"
    if (action.id. == "org.libvirt.api.domain.start") &&
    subject.user == "test")
    {
        if (action.lookup("domain_name") == 'alt-server-test')
        {
           return polkit.Result.YES;
        }
        else
        {
            return polkit.Result.NO;
        }
    }
});
Разрешить запуск ВМ только членам группы wheel:
if (action.id == "org.libvirt.api.domain.start")
{
    if (subject.isInGroup("wheel"))
    {
        return polkit.Result.YES;
    }
    else
    {
        return polkit.Result.NO;
    }
};
Разрешить остановку ВМ только группе wheel:
if (action.id == "org.libvirt.api.domain.stop")
{
    if (subject.isInGroup("wheel"))
    {
        return polkit.Result.YES;
    }
    else
    {
        return polkit.Result.NO;
    }
};
Можно также вести файл журнала, используя правила polkit. Например, делать запись в журнал при старте ВМ:
if (action.id.match("org.libvirt.api.domain.start"))
{
    polkit.log("action=" + action);
    polkit.log("subject=" + subject);
    return polkit.Result.YES;
}
Запись в журнал при останове ВМ:
if (action.id.match("org.libvirt.api.domain.stop"))
{
    polkit.log("action=" + action);
    polkit.log("subject=" + subject);
    return polkit.Result.YES;
}

Глава 73. GNOME Boxes — создание и управление ВМ

Boxes — официальная утилита рабочего окружения GNOME, предназначенная для удобного создания и управления виртуальными машинами (ВМ) из образов операционных систем. Программа предоставляет доступ к локальным ВМ и поддерживает их базовое администрирование.
ВМ в окне Boxes
Boxes использует технологии:
  • QEMU-KVM — для аппаратной виртуализации;
  • libvirt-glib — для управления виртуальными машинами;
  • SPICE-GTK — для отображения графического интерфейса ВМ с поддержкой аппаратного ускорения.
GNOME Boxes ориентирован на простоту использования и предлагает следующие преимущества:
  • упрощённый интерфейс — программа предоставляет интуитивно понятный и оптимизированный интерфейс, который минимизирует необходимость ручной настройки;
  • быстрая настройка — создание ВМ занимает всего несколько кликов. Можно использовать как предварительно подготовленные образы ОС, так и ISO-файлы;
  • поддержка снимков — GNOME Boxes позволяет создавать моментальные снимки состояния ВМ, что упрощает восстановление до нужного этапра работы.
Основные ограничения Boxes:
  • нет тонкой настройки виртуальных сетей (поддерживается только режим NAT);
  • можно работать только с одной гостевой ВМ одновременно;
  • удалённый доступ к ВМ невозможен без специальных настроек;
  • нет возможности тонкой настройки параметров гипервизора: CPU-флаги, NUMA, hugepages и другие продвинутые функции недоступны через GUI;
  • в графическом интерфейсе можно задать только объём оперативной памяти и назначить один виртуальный диск.
Установить Boxes можно через Центр приложений или в терминале:
# apt-get install gnome-boxes
После запуска Boxes открывается представление коллекции, где отображаются существующие ВМ. Если ВМ ещё не созданы, будет показано приветственное сообщение.
Окно Boxes
Для оптимальной работы Boxes рекомендуется:
  • поддержка аппаратной виртуализации (Intel VT-x / AMD-V), включённой в BIOS/UEFI;
  • не менее 8 ГБ оперативной памяти;
  • не менее 20 ГБ свободного дискового пространства (для одной ВМ).

73.1. Создание ВМ

Для создания новой ВМ необходимо нажать кнопку + в левом верхнем углу интерфейса:
Boxes. Создание новой ВМ
Далее доступны два варианта:
  • Установить из файла — использовать локальный ISO-образ;
  • Загрузить ОС — выбрать образ из списка доступных и скачать его (требуется интернет-подключение):
    Boxes. Выбор загружаемой ОС
После выбора образа откроется окно настройки параметров новой ВМ, в котором можно задать:
  • имя ВМ;
  • тип ОС (определяет рекомендуемые ресурсы);
  • тип прошивки (BIOS или UEFI);
  • объём оперативной памяти;
  • размер виртуального диска.
Boxes. Параметры создаваемой ВМ
Boxes автоматически выделяет ресурсы ВМ на основе рекомендаций разработчиков ОС. Если информация о рекомендуемых параметрах недоступна, будут установлены следующие значения по умолчанию:
  • 2 ГБ оперативной памяти;
  • 20 ГБ максимального дискового пространства.

Примечание

Фактическое использование диска может быть меньше заявленного, так как Boxes применяет динамическое выделение пространства.
Для применения настроек необходимо нажать кнопку Создать.
ВМ будет создана и автоматически запущена, начнётся процесс установки операционной системы:
Boxes. Установка ОС

73.2. Настройки ВМ

Настройки ВМ можно открыть двумя способами:
  • выбрав в контекстном меню ВМ в представлении коллекции пункт Параметры:
    Boxes. Контекстное меню ВМ
  • выбрав пункт Параметры в меню заголовка запущенной ВМ:
    Boxes. Меню ВМ
На вкладке Ресурсы окна настроек ВМ отображается:
  • Имя — имя ВМ;
  • Ресурсы ВМ:
    • ЦП — количество ядер;
    • Память — объём ОЗУ;
    • Предел хранилища — максимальный размер диска;
  • 3D-ускорение — включает аппаратное ускорение графики (если поддерживается);
  • Разрешить запуск в фоновом режиме — разрешает работу ВМ в фоне;
  • Журнал устранения неполадок — открывает файл журнала ВМ;
  • Изменить конфигурацию — позволяет вручную изменить конфигурацию домена libvirt.
Boxes. Настройки ВМ (Ресурсы)

Примечание

Изменения в параметрах ресурсов применяются только после перезапуска ВМ.
На вкладке Устройства и совместные ресурсы окна настроек ВМ отображается:
  • Устройства USB — подключение внешних USB-устройств к ВМ;
  • Совместные папки — общий доступ к файлам между хост-системой и гостевой ОС.
Boxes. Вкладка Устройства и совместные ресурсы
На вкладке Снимки можно создавать и управлять снимками состояния ВМ (Управление снимками ВМ).

73.3. Взаимодействие с гостевой ОС

По умолчанию в гостевой ОС поддерживаются следующие функции:
  • общий буфер обмена (в обе стороны);
  • перенос файлов (функция Drag and Drop);
  • масштабирование экрана;
  • сеть в режиме NAT (трансляции адресов).

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

GNOME Boxes по умолчанию использует стандартные сетевые настройки QEMU, при которых сетевой стек TCP/IP реализуется в пользовательском пространстве через SLIRP (User-Mode Networking). Это означает, что вся сетевая активность гостевой ОС проходит через специальную программную эмуляцию, без прямого доступа к физической сети хоста.
Сеть SLIRP
GNOME Boxes автоматически настраивает виртуальную сеть 10.0.2.0/24 для гостевых систем. В этой сети:
  • IP-адрес шлюза по умолчанию из виртуальной сети в сеть хоста: 10.0.2.2;
  • IP-адрес гостевой системы: всегда 10.0.2.15;
  • DNS-сервер: размещён по адресу 10.0.2.3;
  • SMB-сервер (если настроен): доступен по адресу 10.0.2.4.
Ограничения сети в GNOME Boxes:
  • значительные накладные расходы, из-за чего производительность низкая;
  • не работает трафик ICMP, поэтому использовать ping внутри гостевой системы невозможно;
  • гостевая система недоступна напрямую из хоста или из внешней сети;
  • можно инициировать SSH-соединение из гостевой системы на хост (через IP хоста или 10.0.2.2), но обратное подключение (с хоста на гостевую систему) невозможно, так как гостевая система находится за NAT.

Примечание

Включение ping в гостевой системе (все команды выполняются на хостовой машине):
  1. Создать новую группу unpriv_ping:
    # groupadd unpriv_ping
    
  2. Добавить нужных пользователей в эту группу:
    # for U in user1 user2 ... user_n; do
      gpasswd -a "$U" unpriv_ping
    done
    
    где user1 user2 ... user_n — имена пользователей, которым нужно разрешить использовать ping.
  3. Настроить параметр ядра sysctl net.ipv4.ping_group_range:
    • определить идентификатор созданной группы:
      # GROUP_ID=$(getent group unpriv_ping | cut -d: -f3)
      
    • добавить настройку в файл /etc/sysctl.conf:
      # echo "net.ipv4.ping_group_range = $GROUP_ID $GROUP_ID" >> /etc/sysctl.conf
      
    • применить изменения:
      # sysctl -p
  4. Перезагрузить систему.
После перезагрузки указанные пользователи смогут использовать команду ping из гостевой системы.

73.3.2. Перенаправление USB-устройств

Для подключения USB-устройства к ВМ:
  1. Запустить ВМ.
  2. Открыть окно настроек ВМ и перейти на вкладку Устройства и совместные ресурсы:
    Boxes. Устройства и совместные ресурсы
  3. В разделе Устройства USB включить нужное устройство с помощью переключателя.

73.3.3. Создание общей сетевой папки

Примечание

Для возможности использования общей папки в гостевой ОС необходимо установить пакет spice-webdavd:
# apt-get install spice-webdavd
После установки необходимо перезагрузить систему.
Если в качестве гостевой ОС используетcя Windows, необходимо скачать и установить следующие пакеты с официальной страницы загрузки SPICE (https://www.spice-space.org/download.html раздел GuestWindows binaries):
  • SPICE Guest Tools (spice-guest-tools) — включает драйверы и службы для улучшения производительности и интеграции SPICE;
  • Spice WebDAV daemon — обеспечивает проброс папок между хост-системой и гостевой ОС.
Для создания общей папки:
  1. Запустить ВМ.
  2. Открыть окно настроек ВМ и перейти на вкладку Устройства и совместные ресурсы;
  3. В разделе Совместные папки нажать кнопку +;
  4. Выбрать папку на хост-системе, задать имя общей папки (опционально) и нажать Сохранить:
    Boxes. Настройка общей папки

Примечание

На возможность проброса папок в Boxes может повлиять отсутствие переменной окружения XDG_PUBLICSHARE_DIR или каталога, на который она ссылается.
Если в интерфейсе Boxes недоступен выбор папки в поле Локальная папка, необходимо:
  1. Создать каталог Public и установить XDG_PUBLICSHARE_DIR:
    $ mkdir ~/Public
    $ xdg-user-dirs-update --set PUBLICSHARE ~/Public
    
  2. Перезапустить Boxes.
Для доступа к общей папке в файловом менеджере гостевой системы откройте адрес dav://localhost:9843:
Boxes. Доступ к общим папкам из ВМ

73.4. Управление снимками ВМ

Снимок — это состояние ВМ на определённый момент времени. Внутренние снимки (internal snapshots) хранятся внутри самого файла образа диска (в формате qcow2). Внутренние снимки полностью интегрированы в интерфейс GNOME Boxes.

Примечание

Внутренние снимки не поддерживаются для ВМ с прошивкой UEFI из-за технических ограничений libvirt и особенностей обработки состояния EFI.
Создание снимка:
  1. Открыть окно настроек ВМ и перейти на вкладку Снимки:
  2. Нажать кнопку + под списком снимков:
Boses. Управление снимками ВМ
Сохранённый снимок будет отображаться в списке и отражать текущее состояние ВМ.
Восстановление из снимка:
  1. Открыть окно настроек ВМ и перейти на вкладку Снимки:
  2. Выбрать нужный снимок и нажать кнопку Вернуться к снимку.

73.5. Изменение каталога ВМ

По умолчанию Boxes сохраняет образы виртуальных дисков в каталоге ~/.local/share/gnome-boxes/images/.
Так как ВМ могут занимать значительное место на диске, можно изменить каталог хранения:
$ mv ~/.local/share/gnome-boxes/ /path/to/directory
$ ln -s /path/to/directory ~/.local/share/gnome-boxes
/path/to/directory — каталог, в который нужно переместить ВМ.

Примечание

Права доступа и владелец каталога gnome-boxes должны позволять пользователю работать с файлами.

Часть X. Контейнерные технологии

В данной главе рассматриваются технологии контейнеризации и оркестрации, начиная с низкоуровневых контейнеров операционной системы (LXC), далее — прикладных контейнерных сред (Docker, Podman), и завершая системами оркестрации контейнеров в распределённых кластерах (Kubernetes).

Таблица 16. Краткое сравнение

Технология
Уровень
Основное назначение
LXC
ОС
Изолированные окружения
Docker
Приложение
Упаковка и доставка приложений
Podman
Приложение
Безопасные контейнеры
Kubernetes
Кластер
Оркестрация контейнеров

Глава 74. LXC

LXC (Linux Containers) — это подсистема контейнеризации на уровне операционной системы Linux, позволяющая запускать несколько изолированных пользовательских окружений, максимально приближённых к полноценной операционной системе Linux, но без использования аппаратной виртуализации.
В отличие от контейнеров приложений, LXC предоставляет контейнеры с полноценной иерархией процессов, init-системой и стандартными системными службами. Такой контейнер воспринимается как отдельная система, хотя фактически использует ядро хоста.
Основные возможности LXC:
  • изоляция процессов — каждый контейнер имеет свою собственную изолированную среду;
  • управление ресурсами — контроль CPU, памяти, диска и сети через cgroups;
  • сетевая изоляция — виртуальные сетевые интерфейсы, мосты, VLAN.

Примечание

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

74.1. Установка и настройка LXC

Для работы с LXC необходимо установить следующие пакеты:
# apt-get install lxc
Проверка конфигурации системы для использования LXC:
# lxc-checkconfig

Примечание

Команда lxc-checkconfig проверяет наличие необходимых возможностей ядра (namespaces, cgroups, seccomp и т.д.). Все основные пункты должны иметь статус enabled.

74.1.1. Подготовка для создания контейнера

Подготовка образа для контейнера:
  1. Перейти в каталог /var/lib/lxc:
    # cd /var/lib/lxc
    
  2. Создать пустой файл конфигурации config:
    # touch config
    
  3. Создать архив с ранее созданным файлом конфигурации:
    # tar Jcf metadata.tar.xz config
    
  4. Загрузить образ:
    # wget http://ftp.altlinux.org/pub/distributions/ALTLinux/p11/images/cloud/x86_64/alt-p11-rootfs-sysvinit-x86_64.tar.xz
    

Примечание

В примере используется пустой файл config. В реальных сценариях в конфигурации контейнера рекомендуется явно задавать параметры сети, cgroups и безопасности.
В примере используется rootfs-образ ALT Linux p11 с sysvinit. При необходимости можно использовать образы с systemd.

74.1.2. Создание контейнера

Для создания контейнера из ранее загруженного образа необходимо:
  1. Перейти в папку расположения образа:
    # cd /var/lib/lxc
    
  2. Выполнить команду:
    # lxc-create -t local -n alt1 -B dir -- --metadata metadata.tar.xz --fstree alt-p11-rootfs-sysvinit-x86_64.tar.xz
    
    где:
    • -t — определение шаблона для создания контейнера, в данном случае local, будет использован локальный архив;
    • -n — название создаваемого контейнера, в данном случае alt1;
    • -B — указание типа хранилища, в данном случае dir;
    • -- — разделитель перед дополнительными параметрами;
    • --metadata — путь к архиву метаданных контейнера;
    • --fstree — путь к архиву файловой системы контейнера.

74.1.3. Работа с контейнерами

Примечание

Для дальнейшего запуска и работы с контейнером понадобится поднятый сетевой мост (по умолчанию lxcbr0) на основной системе.
Запуск контейнера:
# lxc-start -n alt1
Остановка контейнера из основной системы:
# lxc-stop -n alt1
Просмотр списка запущенных контейнеров:
# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED
alt1 RUNNING 0         -      10.0.3.100 -    false
alt2 STOPPED 0         -      -          -    false

Примечание

Для повышения безопасности рекомендуется использовать непривилегированные контейнеры (unprivileged containers). Непривилегированные контейнеры используют отображение UID/GID и предотвращают эскалацию привилегий на хосте.
Подключение к контейнеру:
# lxc-attach -n alt1
[root@localhost /]#

Примечание

Внутри контейнера необходимо настроить сеть на интерфейсе eth0 средствами etcnet. После запуска и подключения к контейнеру проверить наличие IP-адреса:
# ip addr show eth0
2: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 10:66:6a:af:71:b4 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.100/24 brd 10.0.3.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::1266:6aff:feaf:71b4/64 scope link proto kernel_ll
    valid_lft forever preferred_lft forever
Если адрес отсутствует, перезапустить службу:
# service network stop && service network start

74.1.4. Ограничение ресурсов контейнеров

Контроль ресурсов осуществляется через cgroups:
  • ограничение CPU, памяти, I/O;
  • учёт потребления ресурсов;
  • приоритеты выполнения процессов.
Для контроля потребляемых контейнером ресурсов можно задать необходимые значения в конфигурационном файле контейнера для применения на постоянной основе или с помощью команды lxc-cgroup для текущего запущенного контейнера.
Временное ограничение приоритета использования процессорного времени запущенным контейнером:
# lxc-cgroup -n alt1 cpu.weight 50
Контейнер alt1 получает в 2 раза меньший приоритет CPU, чем контейнер с cpu.weight = 100. Чем ниже значение, тем меньшая доля CPU выделяется контейнеру при конкуренции с другими нагрузками.
Временное ограничение максимального объёма оперативной памяти, доступной для текущего запущенного контейнера:
# lxc-cgroup -n alt1 memory.max 1073741824
Ограничение памяти до 1Gb (в команде указывается значение в байтах).
Для применения ограничений на постоянной основе необходимо внести параметры в конфигурационный файл контейнера:
# cat >> /var/lib/lxc/alt1/config << EOF
> lxc.cgroup2.cpu.weight = "50"
> lxc.cgroup2.memory.max = "1073741824"
> EOF
Добавив данные строки, ограничения по загрузке CPU и максимальному объему оперативной памяти будут применяться при запуске контейнера.

Глава 75. Docker

Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеризация позволяет изолировать приложения со всеми зависимостями, делая их переносимыми между различными системами.
Основные возможности Docker:
  • создание и управление контейнерами и образами;
  • автоматизация жизненного цикла контейнеров: запуск, остановка, обновление, удаление;
  • интеграция с Docker Compose и Docker Swarm для оркестрации и масштабирования;
  • управление сетями и томами данных контейнеров;
  • переносимость и воспроизводимость приложений благодаря Dockerfile и контейнерным образам.
Для создания и управления кластером Docker используется утилита Docker Swarm.

75.1. Установка и настройка Docker

Для создания управляющего (manager) или рабочего (worker) узла необходимо установить следующие пакеты:
# apt-get install docker-engine
Запустить и включить службы Docker:
# systemctl enable --now docker

Примечание

Для работы с Docker от имени другого пользователя необходимо добавить его в группу docker:
# gpasswd -a <имя_пользователя> docker
и перезайти пользователем в систему.

75.1.1. Загрузка образов Docker

Для загрузки образов можно использовать команду docker pull, в качестве аргумента которой указывается имя образа в формате <репозиторий>/<образ>:<тег>:
$ docker pull registry.altlinux.org/p11/nginx:latest
latest: Pulling from p11/nginx
d96357fefe31: Pull complete
62dd7807dca6: Pull complete
fd4b25ec9e55: Pull complete
5b4265e5d706: Pull complete
b14e4fb67e49: Pull complete
38ed32afa007: Pull complete
9b380a7150f8: Pull complete
Digest: sha256:cf8ec144dfa76fcb56baf70db94006a8f16e204eb67da933f70b5a502b440804
Status: Downloaded newer image for registry.altlinux.org/p11/nginx:latest
registry.altlinux.org/p11/nginx:latest
Просмотр списка загруженных образов:
$ docker image ls
REPOSITORY                        TAG       IMAGE ID       CREATED        SIZE
registry.altlinux.org/p11/nginx   latest    9cb039373197   2 months ago   143MB

75.1.2. Создание контейнера Docker

Для запуска контейнера из образа используется команда docker run. В качестве аргумента указывается имя образа, а также опции, зависящие от требований приложения. Например, запуск контейнера с nginx:
$ docker run -d --name my-nginx -p 81:80 registry.altlinux.org/p11/nginx
13e18d8b468528cc1868bd15ae1953d25909c1239b0c830b1192d5e672fbab36
где:
  • -d — запуск контейнера в фоновом режиме;
  • --name — имя, которое будет присвоено контейнеру;
  • -p — публикация порта: сопоставляет порт хоста с портом внутри контейнера;
  • registry.altlinux.org/p11/nginx — имя образа.
Просмотр списка всех контейнеров:
$ docker ps -a
CONTAINER ID   IMAGE        COMMAND       CREATED          STATUS            PORTS                   NAMES
13e18d8b4685   registry.…  "nginx -g…"   8 minutes ago    Up 8 minutes      0.0.0.0:81…, [::]:81…   my-nginx

75.1.3. Основные команды Docker

Для управления контейнерами Docker используются следующие основные команды:
  • Запуск контейнера:
    $ docker start <имя_контейнера>
    
  • Остановка контейнера:
    $ docker stop <имя_контейнера>
    
  • Удаление контейнера:
    $ docker rm <имя_контейнера>
    
  • Приостановка работы контейнера:
    $ docker pause <имя_контейнера>
    
  • Принудительное завершение работы контейнера:
    $ docker kill <имя_контейнера>
    
  • Перезапуск контейнера:
    $ docker restart <имя_контейнера>
    
  • Управление образами:
    $ docker image <команда>
    
  • Удаление образа:
    $ docker rmi <образ>
    
  • Управление контейнерами:
    $ docker container <команда>
    
  • Управление томами:
    $ docker volume <команда>
    
  • Управление сетями:
    $ docker network <команда>
    

Примечание

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

75.1.4. Создание кластера Docker Swarm

Для создания кластера необходимо несколько машин (узлов), одна из которых будет управляющим узлом.
Системные требования:
  • ОЗУ: 1 ГБ или более на узел;
  • Процессор: 1 ядро или более;
  • сетевая доступность между всеми узлами;
  • открытые порты: 2377, 7946, 4789.

75.1.4.1. Инициализация кластера

Примечание

Перед началом инициализации кластера необходимо убедиться, что в конфигурационном файле /etc/docker/daemon.json параметр live-restore имеет значение false.
Для инициализации кластера нужно на управляющем узле выполнить команду:
$ docker swarm init --advertise-addr 192.168.0.103
Параметр --advertise-addr — IP-адрес, который будет использоваться для присоединения других узлов.
Если инициализация прошла успешно, будет выведено сообщение:
Swarm initialized: current node (1vtfpjhu8chni4pzym3benrkh) is now a manager.
А также команды для добавления обычных узлов:
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-58vukbb4ozrcwronalx27sk5mfcbalj5wz7qa6zr1v0efe2d2y-anr4y8r2igum1ddihd09a0rz6 192.168.0.103:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

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

Docker Swarm автоматически создает overlay сеть, но можно создать дополнительную:
$ docker network create -d overlay my-overlay-network
Получить информацию о настроенной сети можно командой:
$ docker network inspect my-overlay-network
В выводе будет показано, какой диапазон IP-адресов доступен, какие контейнеры подключены, как настроено управление адресами и какая инфраструктура участвует в поддержке сети.

75.1.4.3. Добавление узлов в кластер

На каждом worker-узле выполните команду docker swarm join, выведенную при инициализации:
$ docker swarm join --token <токен> <ip адрес>:<порт>
В данном примере:
$ docker swarm join --token SWMTKN-1-58vukbb4ozrcwronalx27sk5mfcbalj5wz7qa6zr1v0efe2d2y-anr4y8r2igum1ddihd09a0rz6 192.168.0.103:2377

This node joined a swarm as a worker.

Примечание

Получить токен, если его нет, можно, выполнив команду (на мастер-узле):
  • токен для worker-узла:
    $ docker swarm join-token worker
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-58vukbb4ozrcwronalx27sk5mfcbalj5wz7qa6zr1v0efe2d2y-anr4y8r2igum1ddihd09a0rz6 192.168.0.103:2377
    
  • токен для manager-узла:
    $ docker swarm join-token manager
    To add a manager to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-58vukbb4ozrcwronalx27sk5mfcbalj5wz7qa6zr1v0efe2d2y-3wh5uvy1ppkc6g963eholvzx8 192.168.0.103:2377
    
По умолчанию, токены не имеют срока действия. Если требуется добавить новый узел в кластер, можно использовать существующие токены или сгенерировать новые:
$ docker swarm join-token --rotate worker
Проверить список узлов (на управляющем узле):
$ docker node ls
ID                            HOSTNAME    STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
jupdrmh4qwzpjhq347z4wir9m *   manager     Ready     Active         Leader           28.3.3
xohmm9rqnu3tes59mf4ivtznv     worker-01   Ready     Active                          28.3.3
a0etres64a688omya3tqstpje     worker-02   Ready     Active                          28.3.3
Информация о кластере:
$ docker info
…
 Swarm: active
  NodeID: jupdrmh4qwzpjhq347z4wir9m
  Is Manager: true
  ClusterID: v3gna6r5kxvrxhow5wu7905rg
  Managers: 1
  Nodes: 3
…
где:
  • NodeID — уникальный идентификатор узла;
  • Is Manager — является ли текущий узел управляющим;
  • ClusterID — идентификатор Swarm-кластера;
  • Nodes/Managers — количество узлов и управляющих узлов соответственно.
Подробная информация об узле:
$ docker node inspect <имя_узла>

75.1.5. Тестовый запуск nginx

Создание и запуск сервиса:
$ docker service create --name nginx --replicas 2 --network my-overlay-network -p 80:80 nginx
где
  • --name — имя сервиса;
  • --replicas — количество реплик;
  • --network — имя сети, в которой будут работать сервисы;
  • -p — порты для публикации;
  • nginx — имя Docker-образа, на основе которого создается контейнер.
Список запущенных контейнеров:
$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS     NAMES
3d2c60ee13d6   nginx:latest   "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds   80/tcp    nginx.1.z1ng3nzcnh…
Список запущенных сервисов:
$ docker service ls
ID             NAME      MODE         REPLICAS   IMAGE          PORTS
ky1wp4yv5eum   nginx     replicated   2/2        nginx:latest   *:80->80/tcp
Список запущенных сервисов с распределением по узлам:
$ docker service ps nginx
ID             NAME      IMAGE          NODE        DESIRED STATE   CURRENT STATE           ERROR     PORTS
z1ng3nzcnhnt   nginx.1   nginx:latest   manager     Running         Running 8 minutes ago
b7e2ihl6osx3   nginx.2   nginx:latest   worker-01   Running         Running 8 minutes ago
Масштабирование сервисов в Docker достигается за счет указания необходимого количества реплик. Для увеличения или уменьшения количества узлов, обслуживающих запросы от клиента, можно выполнить команду:
$ docker service update --replicas 3 nginx
nginx
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service nginx converged
где
  • --replicas — количество реплик;
  • nginx — имя сервиса, для которого обновляется число реплик.

Примечание

Предварительно необходимо убедиться, что количество доступных узлов не меньше количества реплик. При увеличении количества реплик сервиса Docker будет запускать реплики одного сервиса на разных узлах. Если количество реплик превышает количество доступных узлов, то на некоторых узлах запустится более одного контейнера одного и того же сервиса.
Проверить работу nginx, выполнив запрос к любому worker-узлу (сервер должен вернуть код 200):
$ curl -I <ip_адрес>:<порт>
где:
  • <ip адрес> — IP-адрес любого узла;
  • <порт> — порт хоста, указанный через -p при создании контейнера.
В данном кластере возможна команда:
$ curl -I 192.168.0.102:80
HTTP/1.1 200 OK
Server: nginx/1.29.3
…

75.1.6. Отказоустойчивость

Отказоустойчивость сервиса гарантируется самим Docker, так как в кластере могут одновременно работать несколько управляющих узлов, которые могут в любой момент заменить вышедший из строя управляющий узел. Сервисы, выполняемые в кластере, легко масштабируются с помощью параметра scale. Можно указать необходимое количество реплик для каждого сервиса, и менеджер кластера автоматически адаптируется, добавляя или удаляя контейнеры для поддержания желаемого состояния. Просмотр подробной информации о сервисе в кластере:
$ docker service inspect --pretty nginx
ID:             ky1wp4yv5eum17ecnpbe0k2jj
Name:           nginx
Service Mode:   Replicated
 Replicas:      3
…
где:
  • ID — уникальный идентификатор сервиса;
  • Name — название службы;
  • Service Mode — тип развертывания, в данном случае репликация;
  • Replicas — количество реплик.
Добавить дополнительный контейнер для nginx можно командой:
$ docker service scale nginx=4
nginx scaled to 4
overall progress: 4 out of 4 tasks
1/4: running
2/4: running
3/4: running
4/4: running
verify: Service nginx converged
После добавления еще одного контейнера, он будет назначен одному из существующих узлов:
$ docker service ps nginx
ID             NAME      IMAGE          NODE        DESIRED STATE   CURRENT STATE               ERROR     PORTS
z1ng3nzcnhnt   nginx.1   nginx:latest   manager     Running         Running 3 hours ago
b7e2ihl6osx3   nginx.2   nginx:latest   worker-01   Running         Running 3 hours ago
wcpk5dpb7yx1   nginx.3   nginx:latest   worker-02   Running         Running about an hour ago
pvp3etypauyp   nginx.4   nginx:latest   worker-01   Running         Running 3 minutes ago
При отключении одного из узлов контейнеры будут перераспределены на доступные узлы:
$ docker service ps nginx
ID             NAME          IMAGE          NODE        DESIRED STATE   CURRENT STATE                 ERROR     PORTS
z1ng3nzcnhnt   nginx.1       nginx:latest   manager     Running         Running 3 hours ago
4hhntzfmxbg8   nginx.2       nginx:latest   worker-02   Running         Running about a minute ago
b7e2ihl6osx3    \_ nginx.2   nginx:latest   worker-01   Shutdown        Shutdown about a minute ago
wcpk5dpb7yx1   nginx.3       nginx:latest   worker-02   Running         Running about an hour ago
ta3zhbkd18t7   nginx.4       nginx:latest   manager     Running         Running about a minute ago
pvp3etypauyp    \_ nginx.4   nginx:latest   worker-01   Shutdown        Shutdown about a minute ago

Примечание

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

Глава 76. Podman

Podman — это инструмент для управления контейнерами и группами контейнеров (pods), совместимый с Docker CLI и образами. Podman позволяет запускать контейнеры без демонa (daemonless) и поддерживает rootless-режим для повышения безопасности.
Основные возможности Podman:
  • запуск и управление отдельными контейнерами и подами (группами контейнеров, которые разделяют сетевое пространство и ресурсы);
  • поддержка Docker-совместимых команд и образов;
  • rootless-режим (работа без прав суперпользователя);
  • отсутствие необходимости в постоянном демоне, что упрощает интеграцию с systemd и CI/CD.

76.1. Установка и настройка Podman

Для работы с Podman необходимо установить следующие пакеты:
# apt-get install podman
Проверка версии установленного пакета:
# podman --version
podman version 5.5.2

76.1.1. Настройка rootless режима

Для работы с Podman в rootless-режиме (без прав суперпользователя) необходимо:
  • проверить наличие разрешений на создание пользовательских пространств имен:
    # sysctl kernel.unprivileged_userns_clone
    kernel.unprivileged_userns_clone = 0
    
  • установить пакет разрешающий создание пользовательских пространств имен:
    # apt-get install sysctl-conf-userns
    
  • предоставить права на запуск исполняемых файлов /usr/bin/newuidmap и /usr/bin/newgidmap пользователям, не являющимся владельцами файла и не принадлежащим к группе владельца файла:
    # control newgidmap public
    # control newuidmap public
    
  • для проверки работоспособности rootless-режима получим базовый образ ALT Linux из репозитория от обычного пользователя:
    $ podman run registry.altlinux.org/alt/alt:p11 uname -a
    Trying to pull registry.altlinux.org/alt/alt:p11...
    Getting image source signatures
    Copying blob c549b474d68c done   |
    Copying blob 8d382247a69f done   |
    Copying config 97c70e35e5 done   |
    Writing manifest to image destination
    Linux e23f31a2b4f9 6.12.45-6.12-alt1 #1 SMP PREEMPT_DYNAMIC Fri Sep 12 08:34:26 UTC 2025 x86_64 GNU/Linux
    
    Если вывод отображает информацию о ядре Linux внутри контейнера, то rootless-режим настроен верно.
Просмотр списка используемых образов:
$ podman images
REPOSITORY                       TAG         IMAGE ID      CREATED       SIZE
registry.altlinux.org/alt/alt    p11         97c70e35e575  5 months ago  125 MB

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

Podman автоматически создает сеть, но можно создать дополнительную:
$ podman network create my-network
Посмотреть список созданных сетей:
$ podman network ls
NETWORK ID    NAME        DRIVER
fcb565985cc6  my-network  bridge
2f259bab93aa  podman      bridge
Получить информацию о настроенной сети можно командой:
$ podman network inspect my-network
my-network

76.1.3. Тестовый запуск nginx

Запуск контейнера с nginx:
$ podman run -d --name nginx --network my-network -p 8081:80 registry.altlinux.org/p11/nginx
9f65b8ed6971b34f65a586800852ce695ac61176a54f318d610dacae0e5d6ce6
где:
  • -d — работа в фоновом режиме;
  • --name — имя контейнера;
  • --network — имя используемой сети для запуска контейнера;
  • -p — сопоставление порта хоста с портом в контейнере (например, 8081:80 означает: порт 8081 на хосте → порт 80 в контейнере);
  • registry.altlinux.org/p11/nginx — репозиторий и название необходимого приложения.
Список запущенных контейнеров:
$ podman ps
CONTAINER ID  IMAGE               COMMAND               CREATED        STATUS        PORTS                 NAMES
9f65b8ed6971  registry.altlinux…  nginx -g daemon o...  7 minutes ago  Up 7 minutes  0.0.0.0:8081->80/tcp  nginx
Проверить работу nginx, выполнив запрос (сервер должен вернуть код 200):
$ curl -I <ip_адрес>:<порт>
где:
  • <ip адрес> — IP-адрес узла, где запущен контейнер;
  • <порт> — порт хоста, указанный через -p при создании контейнера.
В данном случае возможна команда:
$ curl -I 192.168.0.102:8081
HTTP/1.1 200 OK
Server: nginx/1.26.3
Date: Wed, 03 Dec 2025 16:31:26 GMT
…

76.1.4. Создание Pod

Создать Pod (группу контейнеров):
$ podman pod create --name my-pod --network my-network -p 8081:80
Список Pod'ов (групп контейнеров):
$ podman pod ls
POD ID        NAME        STATUS      CREATED         INFRA ID      # OF CONTAINERS
394308217ce0  my-pod      Created     12 seconds ago  286d0da0f2dc  1
Добавить контейнеры в Pod:
$ podman run -d --pod my-pod --name nginx registry.altlinux.org/p11/nginx
В Pod my-pod будет добавлен контейнер с приложением nginx.
Подробная информация о Pod:
$ podman pod inspect my-pod
Список контейнеров Pod:
$ podman pod ps --ctr-names
POD ID        NAME        STATUS      CREATED             INFRA ID      NAMES
394308217ce0  my-pod      Running     About a minute ago  bd7dd34e327f  394308217ce0-infra,nginx

76.1.5. Управление Pod

Остановить группу контейнеров целиком:
$ podman pod stop my-pod
Запустить группу контейнеров целиком:
$ podman pod start my-pod
Удалить группу контейнеров целиком:
$ podman pod rm my-pod

Глава 77. Kubernetes

Kubernetes — это система для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями. Она работает с любыми runtime-средами, совместимыми со спецификацией Container Runtime Interface (CRI), такими как containerd или CRI-O. Образы контейнеров, созданные с помощью Docker, полностью совместимы с Kubernetes.
Основные задачи Kubernetes:
  • автоматическое управление жизненным циклом приложений: запуск, перезапуск упавших контейнеров, замена неработающих узлов;
  • горизонтальное масштабирование приложений с запуском множества экземпляров на разных узлах кластера;
  • встроенная балансировка нагрузки между экземплярами приложений с помощью объектов Service и Ingress.
Утилиты для создания и управления кластером Kubernetes:
  • kubectl — утилита для взаимодействия с API-сервером и управления объектами кластера (Pods, Deployments, Services и др.);
  • kubelet — агент, запускаемый на каждом узле, отвечающий за запуск и мониторинг контейнеров;
  • kubeadm — инструмент для инициализации и настройки компонентов control plane (API-сервер, etcd, scheduler и др.) при развёртывании кластера.

77.1. Установка и настройка Kubernetes

Для создания управляющего (control plane) или вычислительного (worker) узла нужно установить следующие пакеты:
# apt-get install kubernetes1.31-kubeadm kubernetes1.31-kubelet kubernetes1.31-crio cri-tools1.31
Запустить и включить службы crio и kubelet:
# systemctl enable --now crio
# systemctl enable --now kubelet

Примечание

В данном руководстве рассмотрен процесс разворачивания кластера с использованием CRI-O.

77.1.1. Создание кластера Kubernetes

Для создания кластера необходимо несколько машин (узлов), одна из которых будет управляющим узлом.
Системные требования:
  • ОЗУ: 2 ГБ или более на узел;
  • Процессор: 2 ядра или более;
  • сетевая доступность между всеми узлами;
  • возможность разрешения имён (через DNS или /etc/hosts);
  • Swap должен быть отключен.

    Примечание

    Для отключения Swap нужно выполнить команду:
    # swapoff -a
    И удалить соответствующую строку в /etc/fstab.

77.1.1.1. Инициализация кластера

Для инициализации кластера нужно на управляющем узле выполнить одну из команд:
  • для настройки сети с использованием Flannel:
    # kubeadm init --pod-network-cidr=10.244.0.0/16
    
  • для настройки сети с использованием Calico:
    # kubeadm init --pod-network-cidr=192.168.0.0/16
    
  • с использованием образов из репозитория ALT (для Flannel)
    # kubeadm init --pod-network-cidr=10.244.0.0/16 \
      --kubernetes-version=1.31.10 \
      --image-repository=registry.altlinux.org/p11
    
  • использованием образов из репозитория ALT (для Calico):
    # kubeadm init --pod-network-cidr=192.168.0.0/16 \
      --kubernetes-version=1.31.10 \
      --image-repository=registry.altlinux.org/p11
    
Пояснение параметров:
  • --pod-network-cidr — диапазон IP-адресов для подсети Pod'ов:
    • 10.244.0.0/16 — рекомендуется для Flannel;
    • 192.168.0.0/16 — рекомендуется для Calico;
  • --image-repository — указывает реестр для образов control plane (по умолчанию registry.k8s.io);
  • --kubernetes-version — фиксирует версию компонентов control plane.
Если инициализация прошла успешно, будет выведено сообщение:
Your Kubernetes control-plane has initialized successfully!
А также команды для настройки доступа и добавления узлов:
To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.0.103:6443 --token 4o84lf.yerap79j66r4riwi \
	--discovery-token-ca-cert-hash sha256:35b569232b0e81ca19cf23948cb7b3580e17be7059bbf242c4fb0e481afd8ff6
Настроить доступ для обычного пользователя:
  1. Создать каталог ~/.kube (с правами пользователя):
    $ mkdir ~/.kube
    
  2. Скопировать конфигурацию (с правами администратора):
    # cp /etc/kubernetes/admin.conf /home/<пользователь>/.kube/config
    
  3. Изменить владельца конфигурационного файла (с правами администратора):
    # chown <пользователь>: /home/<пользователь>/.kube/config
    

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

Развернуть сеть (Container Network Interface), запустив один из двух наборов команд (на управляющем узле):
  • для Flannel:
    $ kubectl apply -f https://altlinux.space/cloud/manifests/raw/branch/master/flannel/p11/latest/kube-flannel.yml
    
  • для Calico:
    • перейти в каталог /etc/cni/net.d/:
      # cd /etc/cni/net.d/
    • создать конфигурационный файл 100-crio-bridge.conflist:
      # cp 100-crio-bridge.conflist.sample 100-crio-bridge.conflist
      
    • запустить POD'ы из calico-манифестов:
      $ kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/refs/tags/v3.25.0/manifests/tigera-operator.yaml
      $ kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/refs/tags/v3.25.0/manifests/custom-resources.yaml
      
В выводе будут отображены имена всех созданных ресурсов.
Убедиться, что все системные Pod'ы запущены:
$ kubectl get pods --namespace kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-7c65d6cfc9-f6hjb         1/1     Running   0          4m49s
coredns-7c65d6cfc9-g7hbf         1/1     Running   0          4m49s
etcd-kube03                      1/1     Running   0          4m51s
kube-apiserver-kube03            1/1     Running   0          4m54s
kube-controller-manager-kube03   1/1     Running   0          4m56s
kube-proxy-ncdxh                 1/1     Running   0          4m50s
kube-scheduler-kube03            1/1     Running   0          4m49s
coredns должны быть в состоянии Running. Количество kube-flannel и kube-proxy зависит от общего числа узлов.

77.1.1.3. Добавление узлов в кластер

На каждом worker-узле выполните команду kubeadm join, выведенную при инициализации:
# kubeadm join <ip адрес>:<порт> --token <токен>
 --discovery-token-ca-cert-hash sha256:<хеш> --ignore-preflight-errors=SystemVerification
В данном примере:
# kubeadm join 192.168.0.103:6443 --token 4o84lf.yerap79j66r4riwi \
	--discovery-token-ca-cert-hash  \
    sha256:35b569232b0e81ca19cf23948cb7b3580e17be7059bbf242c4fb0e481afd8ff6

[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-check] Waiting for a healthy kubelet at http://127.0.0.1:10248/healthz. This can take up to 4m0s
[kubelet-check] The kubelet is healthy after 502.186592ms
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

Примечание

Получить токен, если его нет, можно выполнив команду (на управляющем узле):
$ kubeadm token list
TOKEN                     TTL         EXPIRES                USAGES
4o84lf.yerap79j66r4riwi   23h         2025-08-25T09:00:31Z   authentication,signing
По умолчанию срок действия токена — 24 часа. Если требуется добавить новый узел в кластер по окончанию этого периода, можно создать новый токен:
$ kubeadm token create
Если значение параметра --discovery-token-ca-cert-hash неизвестно, его можно получить, выполнив команду (на управляющем узле):
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \
   openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'
35b569232b0e81ca19cf23948cb7b3580e17be7059bbf242c4fb0e481afd8ff6
Для ввода IPv6-адреса в параметр <control-plane-host>:<control-plane-port>, адрес control plane должен быть в квадратных скобках:
[fd00::101]:2073
Проверить наличие нод (на управляющем узле):
$ kubectl get nodes
NAME     STATUS     ROLES           AGE    VERSION
kube01   Ready      <none>          2m2s   v1.31.14
kube02   NotReady   <none>          7s     v1.31.14
kube03   Ready      control-plane   8m4s   v1.31.14
или
$ kubectl get nodes -o wide
Информация о кластере:
$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.0.103:6443
CoreDNS is running at https://192.168.0.103:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Подробная информация об узле:
$ kubectl describe node kube03

77.1.2. Тестовый запуск nginx

Тестовый запуск nginx:
  1. Создать Deployment:
    • создать файл nginx-deployment.yaml:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
        labels:
          app: nginx
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: registry.altlinux.org/p11/nginx:1.26.3
              ports:
              - containerPort: 80
      
    • применить манифест:
      $ kubectl apply -f nginx-deployment.yaml 
      deployment.apps/nginx-deployment created
      
  2. Создать сервис, с помощью которого можно получить доступ к приложению из внешней сети:
    • создать файл nginx-service.yaml:
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
        labels:
          app: nginx
      spec:
        type: NodePort
        ports:
        - port: 80
          targetPort: 80
        selector:
          app: nginx
      
    • запустить сервис:
      $ kubectl apply -f nginx-service.yaml 
      service/nginx created
      
Просмотреть порт сервиса nginx:
$ kubectl get svc nginx
NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx   NodePort   10.97.219.184   <none>        80:31781/TCP   17s
Проверить работу nginx, выполнив запрос к любому worker-узлу (сервер должен вернуть код 200):
$ curl -I <ip адрес>:<порт>
где:
  • <ip адрес> — IP-адрес любого узла;
  • <порт> — порт сервиса, полученный с помощью предыдущей команды.
В данном кластере возможна команда:
$ curl -I 192.168.0.102:31781
HTTP/1.1 200 OK
Server: nginx/1.26.3

77.2. Кластер высокой доступности Kubernetes

Kubernetes предлагает два основных способа реализации HA-кластера:
  • со стековой топологией (узлы etcd размещаются вместе с узлами плоскости управления);
  • с внешней etcd-топологией (etcd работает на узлах, отдельных от плоскости управления).

77.2.1. Стековая (составная) топология etcd

Стековая (или составная) топология etcd — это конфигурация, при которой распределенный кластер хранения данных etcd размещается на тех же узлах, что и компоненты плоскости управления, управляемые kubeadm,
Каждый узел плоскости управления запускает экземпляры kube-apiserver, kube-scheduler и kube-controller-manager. При этом kube-apiserver становится доступен рабочим узлам через балансировщик нагрузки.
На каждом узле управления разворачивается локальный экземпляр etcd, который взаимодействует исключительно с kube-apiserver этого же узла. Аналогично, kube-controller-manager и kube-scheduler работают в локальном режиме на каждом узле.
Эта топология проще в настройке и управлении по сравнению с внешним кластером etcd. Однако при выходе из строя одного узла теряются как компоненты плоскости управления, так и экземпляр etcd, что может нарушить избыточность. Этот риск можно снизить, увеличив количество узлов управления — рекомендуется использовать не менее трёх узлов для обеспечения отказоустойчивости.
Стековая топология используется используется по умолчанию в kubeadm. Локальные экземпляры etcd создаются автоматически на узлах плоскости управления при выполнении команд kubeadm init и kubeadm join --control-plane.

77.2.2. Внешняя etcd-топология

Внешняя etcd-топология предполагает, что кластер etcd размещается на отдельных узлах, не совмещённых с компонентами плоскости управления.
Каждый узел управления по-прежнему запускает kube-apiserver, kube-scheduler и kube-controller-manager, а kube-apiserver предоставляется рабочим узлам через балансировщик нагрузки. Однако все узлы управления взаимодействуют с общим кластером etcd, размещённым на выделенных хостах.
Такой подход разделяет плоскость управления и хранилище etcd, что повышает отказоустойчивость: выход из строя узла управления не затрагивает etcd, и наоборот. Это снижает риск потери кворума и обеспечивает более надёжную работу кластера в режиме высокой доступности.
Для реализации HA-кластера с внешней etcd-топологией требуется не менее трёх узлов управления и не менее трёх узлов etcd.

77.2.3. Создание HA-кластера с помощью kubeadm

Рекомендации:
  • три или более узла управления;
  • три или более рабочих узла;
  • все узлы должны быть доступны по сети друг для друга;
  • на всех узлах должны быть установлены kubeadm, kubelet и среда выполнения контейнера;
  • каждый узел должен иметь доступ к реестру образов Kubernetes (например, registry.k8s.io);
  • возможность доступа по SSH с одного узла ко всем узлам в системе.
Для внешней etcd-топологии также потребуется три или более выделенных узла для etcd.

Примечание

В приведённых примерах используется сетевой плагин Flannel.

77.2.3.1. Стековая (составная) топология etcd

На первом управляющем узле необходимо выполнить следующие действия:
  1. Инициализировать кластер:
    # kubeadm init --control-plane-endpoint 192.168.0.201:6443 \
      --upload-certs \
      --pod-network-cidr=10.244.0.0/16
    
    где:
    • --control-plane-endpoint — адрес и порт балансировщика нагрузки, общий для всех узлов управления;
    • --upload-certs — позволяет загрузить сертификаты в кластер, чтобы последующие узлы управления могли получить их при присоединении;
    • --pod-network-cidr=10.244.0.0/16 — адрес внутренней (разворачиваемой Kubernetes) сети, рекомендуется оставить данное значение для правильной работы Flannel.
    После успешной инициализации на экране отобразится команда, позволяющая присоединить остальные узлы кластера к управляющему узлу:
    …
    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    Alternatively, if you are the root user, you can run:
    
      export KUBECONFIG=/etc/kubernetes/admin.conf
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    You can now join any number of the control-plane node running the following command on each as root:
    
      kubeadm join 192.168.0.201:6443 --token lbau0b.uqv4g69t59tpscs6 \
    	--discovery-token-ca-cert-hash sha256:45988194e28aaf3789f8c2a1f81d69222638fb8bcfd0e92d8e77c3aa3abaa13c \
    	--control-plane --certificate-key c811ee11caccd900c0cb1708906705ff765aa8b7d34b6cf01664116864a65c95
    
    Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
    As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
    "kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 192.168.0.201:6443 --token lbau0b.uqv4g69t59tpscs6 \
    	--discovery-token-ca-cert-hash sha256:45988194e28aaf3789f8c2a1f81d69222638fb8bcfd0e92d8e77c3aa3abaa13c
    
    Настроить kubernetes для работы от имени обычного пользователя:
    • создать каталог ~/.kube (с правами пользователя):
      $ mkdir ~/.kube
      
    • скопировать конфигурацию (с правами администратора):
      # cp /etc/kubernetes/admin.conf /home/<пользователь>/.kube/config
      
    • изменить владельца конфигурационного файла (с правами администратора):
      # chown <пользователь>: /home/<пользователь>/.kube/config
      
  2. Развернуть сеть (CNI):
    $ kubectl apply -f https://altlinux.space/cloud/manifests/raw/branch/master/flannel/p11/latest/kube-flannel.yml
    
  3. Проверить состояние компонентов:
    $ kubectl get pod -n kube-system -w
    NAME                               READY   STATUS              RESTARTS   AGE
    coredns-78fcd69978-c5swn           1/1     Running             0          11m
    coredns-78fcd69978-zdbp8           1/1     Running             0          11m
    etcd-master01                      1/1     Running             0          11m
    kube-apiserver-master01            1/1     Running             0          11m
    kube-controller-manager-master01   1/1     Running             0          11m
    kube-flannel-ds-qfzbw              1/1     Running             0          116s
    kube-proxy-r6kj9                   1/1     Running             0          11m
    kube-scheduler-master01            1/1     Running             0          11m
    
На остальных узлах управления выполнить команду подключения узла к кластеру, выведенную после выполнения команды kubeadm init:
# kubeadm join 192.168.0.201:6443 \
  --token lbau0b.uqv4g69t59tpscs6 \
  --discovery-token-ca-cert-hash sha256:45988194e28aaf3789f8c2a1f81d69222638fb8bcfd0e92d8e77c3aa3abaa13c \
  --control-plane \
  --certificate-key c811ee11caccd900c0cb1708906705ff765aa8b7d34b6cf01664116864a65c95
Подключить рабочие узлы к кластеру (данная команда была выведена при выполнении команды kubeadm init):
# kubeadm join 192.168.0.201:6443 \
  --token lbau0b.uqv4g69t59tpscs6 \
  --discovery-token-ca-cert-hash sha256:45988194e28aaf3789f8c2a1f81d69222638fb8bcfd0e92d8e77c3aa3abaa13c
Проверьте состояние узлов (на управляющем узле):
$ kubectl get nodes
NAME       STATUS   ROLES                  AGE     VERSION
kube01     Ready    <none>                 23m     v1.31.14
kube02     Ready    <none>                 15m     v1.31.14
kube03     Ready    <none>                 2m30s   v1.31.14
master01   Ready    control-plane          82m     v1.31.14
master02   Ready    control-plane          66m     v1.31.14
master03   Ready    control-plane          39m     v1.31.14

77.2.3.2. Внешняя etcd-топология

Настройка HA-кластера с внешней etcd-топологией аналогична процедуре, используемой для стековой топологии, за исключением того, что предварительно необходимо настроить отдельный кластер etcd, а затем передать его параметры в конфигурационный файл kubeadm.
В данном примере рассматривается создание HA-кластера etcd из трёх узлов. Узлы должны иметь возможность обмениваться данными через порты:
  • 2379 — для клиентских соединений;
  • 2380 — для внутреннего общения между узлами etcd.
Основная идея метода — генерация всех сертификатов на одном узле, после чего необходимые файлы копируются на остальные узлы. Это упрощает управление безопасностью и позволяет избежать рассинхронизации конфигураций.

Примечание

kubeadm содержит все необходимое криптографические инструменты для создания сертификатов, никаких других криптографических инструментов для данного сценария не требуется.
Настройка etcd кластера:
  1. Для корректной работы etcd как статического Pod, kubelet должен быть настроен как диспетчер служб. Это достигается путём создания конфигурации KubeletConfiguration и переопределения параметров запуска. Для настройки kubelet для управления etcd на всех узлах etcd необходимо:
    1. Создать файл конфигурации kubelet:
      # cat << EOF > /etc/systemd/system/kubelet.service.d/kubelet.conf
      # Replace "systemd" with the cgroup driver of your container runtime. The default value in the kubelet is "cgroupfs".
      # Replace the value of "containerRuntimeEndpoint" for a different container runtime if needed.
      #
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      authentication:
        anonymous:
          enabled: false
        webhook:
          enabled: false
      authorization:
        mode: AlwaysAllow
      cgroupDriver: systemd
      address: 127.0.0.1
      containerRuntimeEndpoint: unix:///var/run/crio/crio.sock
      staticPodPath: /etc/kubernetes/manifests
      EOF
      
    2. Создать файл переопределения systemd, чтобы kubelet загружал эту конфигурацию:
      # cat << EOF > /etc/systemd/system/kubelet.service.d/20-etcd-service-manager.conf
      [Service]
      ExecStart=
      ExecStart=/usr/bin/kubelet --config=/etc/systemd/system/kubelet.service.d/kubelet.conf
      Restart=always
      EOF
      
    3. Перезагрузить демон systemd и перезапустить kubelet:
      # systemctl daemon-reload
      # systemctl restart kubelet
      
    4. Убедиться, что kubelet запущен:
      # systemctl status kubelet
      
  2. На первом etcd-узле создать конфигурационные файлы для всех узлов etcd. Для этого создать и запустить скрипт:
    #!/bin/sh
    # IP-адреса узлов etcd
    export HOST0=192.168.0.204
    export HOST1=192.168.0.205
    export HOST2=192.168.0.206
    
    # Имена узлов
    export NAME0="etcd01"
    export NAME1="etcd02"
    export NAME2="etcd03"
    
    # Создание временных каталогов
    mkdir -p /tmp/${HOST0}/ /tmp/${HOST1}/ /tmp/${HOST2}/
    
    HOSTS=(${HOST0} ${HOST1} ${HOST2})
    NAMES=(${NAME0} ${NAME1} ${NAME2})
    
    for i in "${!HOSTS[@]}"; do
    HOST=${HOSTS[$i]}
    NAME=${NAMES[$i]}
    cat << EOF > /tmp/${HOST}/kubeadmcfg.yaml
    ---
    apiVersion: "kubeadm.k8s.io/v1beta4"
    kind: InitConfiguration
    nodeRegistration:
        name: ${NAME}
    localAPIEndpoint:
        advertiseAddress: ${HOST}
    ---
    apiVersion: "kubeadm.k8s.io/v1beta4"
    kind: ClusterConfiguration
    etcd:
        local:
            serverCertSANs:
            - "${HOST}"
            peerCertSANs:
            - "${HOST}"
            extraArgs:
            - name: initial-cluster
              value: ${NAMES[0]}=https://${HOSTS[0]}:2380,${NAMES[1]}=https://${HOSTS[1]}:2380,${NAMES[2]}=https://${HOSTS[2]}:2380
            - name: initial-cluster-state
              value: new
            - name: name
              value: ${NAME}
            - name: listen-peer-urls
              value: https://${HOST}:2380
            - name: listen-client-urls
              value: https://${HOST}:2379
            - name: advertise-client-urls
              value: https://${HOST}:2379
            - name: initial-advertise-peer-urls
              value: https://${HOST}:2380
    EOF
    done
    
  3. Создать центр сертификации (CA).

    Примечание

    Если CA уже есть, необходимо скопировать сертификат (crt) и ключ CA в /etc/kubernetes/pki/etcd/ca.crt и /etc/kubernetes/pki/etcd/ca.key. После этого можно перейти к следующему шагу.
    Если у вас еще нет CA, на узле, где были сгенерированы файлы конфигурации kubeadm, выполнить команду:
    # kubeadm init phase certs etcd-ca
    [certs] Generating "etcd/ca" certificate and key
    
    Будут созданы два файла: /etc/kubernetes/pki/etcd/ca.crt и /etc/kubernetes/pki/etcd/ca.key.
  4. Сгенерировать сертификаты для всех etcd-узлов. Для этого создать и запустить скрипт (на первом etcd-узле):
    #!/bin/sh
    # IP-адреса узлов
    export HOST0=192.168.0.204
    export HOST1=192.168.0.205
    export HOST2=192.168.0.206
    
    # Для третьего узла
    kubeadm init phase certs etcd-server --config=/tmp/${HOST2}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-peer --config=/tmp/${HOST2}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-healthcheck-client --config=/tmp/${HOST2}/kubeadmcfg.yaml
    kubeadm init phase certs apiserver-etcd-client --config=/tmp/${HOST2}/kubeadmcfg.yaml
    cp -R /etc/kubernetes/pki /tmp/${HOST2}/
    # cleanup non-reusable certificates
    find /etc/kubernetes/pki -not -name ca.crt -not -name ca.key -type f -delete
    
    # Для второго узла
    kubeadm init phase certs etcd-server --config=/tmp/${HOST1}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-peer --config=/tmp/${HOST1}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-healthcheck-client --config=/tmp/${HOST1}/kubeadmcfg.yaml
    kubeadm init phase certs apiserver-etcd-client --config=/tmp/${HOST1}/kubeadmcfg.yaml
    cp -R /etc/kubernetes/pki /tmp/${HOST1}/
    find /etc/kubernetes/pki -not -name ca.crt -not -name ca.key -type f -delete
    
    # Для первого узла (не требует копирования)
    kubeadm init phase certs etcd-server --config=/tmp/${HOST0}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-peer --config=/tmp/${HOST0}/kubeadmcfg.yaml
    kubeadm init phase certs etcd-healthcheck-client --config=/tmp/${HOST0}/kubeadmcfg.yaml
    kubeadm init phase certs apiserver-etcd-client --config=/tmp/${HOST0}/kubeadmcfg.yaml
    
    # Удалить закрытый ключ CA с удалённых узлов (для безопасности)
    find /tmp/${HOST2} -name ca.key -type f -delete
    find /tmp/${HOST1} -name ca.key -type f -delete
    
  5. Скопировать сертификаты и файлы конфигурации kubeadm на второй и третий узлы etcd:
    HOST1=192.168.0.205
    HOST2=192.168.0.206
    USER=user
    # scp -r /tmp/${HOST1}/* ${USER}@${HOST1}:
    # ssh ${USER}@${HOST1}
    $ su -
    # chown -R root:root /home/user/pki
    # mv /home/user/pki /etc/kubernetes/
    # exit
    $ exit
    # scp -r /tmp/${HOST2}/* ${USER}@${HOST2}:
    # ssh ${USER}@${HOST2}
    $ su -
    # chown -R root:root /home/user/pki
    # mv /home/user/pki /etc/kubernetes/
    # exit
    $ exit
    
  6. Проверка структуры файлов:
    • на первом etcd-узле (там, где были сгенерированы файлы конфигурации kubeadm и сертификаты):
      /tmp/${HOST0}
      └── kubeadmcfg.yaml
      ---
      /etc/kubernetes/pki
      ├── apiserver-etcd-client.crt
      ├── apiserver-etcd-client.key
      └── etcd
          ├── ca.crt
          ├── ca.key
          ├── healthcheck-client.crt
          ├── healthcheck-client.key
          ├── peer.crt
          ├── peer.key
          ├── server.crt
          └── server.key
      
    • на втором и третьем узлах:
      $HOME
      └── kubeadmcfg.yaml
      ---
      /etc/kubernetes/pki
      ├── apiserver-etcd-client.crt
      ├── apiserver-etcd-client.key
      └── etcd
          ├── ca.crt
          ├── healthcheck-client.crt
          ├── healthcheck-client.key
          ├── peer.crt
          ├── peer.key
          ├── server.crt
          └── server.key
      
  7. На каждом etcd-узле выполнить команду kubeadm, чтобы сгенерировать статический манифест для etcd:
    • на первом узле etcd:
      # kubeadm init phase etcd local --config=/tmp/192.168.0.204/kubeadmcfg.yaml
      [etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests
      
    • на втором и третьем узлах:
      # kubeadm init phase etcd local --config=/home/user/kubeadmcfg.yaml
      [etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
      
Настроить первый узел управления:
  1. Скопировать необходимые сертификаты с первого etcd-узла на первый узел управления:
    export CONTROL_PLANE="user@192.168.0.201"
    # scp /etc/kubernetes/pki/etcd/ca.crt "${CONTROL_PLANE}":
    # scp /etc/kubernetes/pki/apiserver-etcd-client.crt "${CONTROL_PLANE}":
    # scp /etc/kubernetes/pki/apiserver-etcd-client.key "${CONTROL_PLANE}":
    
  2. На узле управления создать файл kubeadm-config.yaml:
    ---
    apiVersion: kubeadm.k8s.io/v1beta4
    kind: ClusterConfiguration
    kubernetesVersion: stable
    networking:
      podSubnet: "10.244.0.0/16"
    controlPlaneEndpoint: "192.168.0.201:6443" # IP-адрес, порт балансировщика нагрузки
    etcd:
      external:
        endpoints:
          - https://192.168.0.204:2379 # IP-адрес ETCD01
          - https://192.168.0.205:2379 # IP-адрес ETCD02
          - https://192.168.0.206:2379 # IP-адрес ETCD03
        caFile: /etc/kubernetes/pki/etcd/ca.crt
        certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
        keyFile: /etc/kubernetes/pki/apiserver-etcd-client.key
    
  3. Переместить ранее скопированные сертификаты в нужные каталоги:
    # mkdir -p /etc/kubernetes/pki/etcd/
    # cp /home/user/ca.crt /etc/kubernetes/pki/etcd/
    # cp /home/user/apiserver-etcd-client.* /etc/kubernetes/pki/
    
  4. Инициализировать узел управления:
    # kubeadm init --config kubeadm-config.yaml --upload-certs
    
    После успешной инициализации появится вывод с командами для присоединения узлов:
    …
    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    Alternatively, if you are the root user, you can run:
    
      export KUBECONFIG=/etc/kubernetes/admin.conf
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    You can now join any number of the control-plane node running the following command on each as root:
    
      kubeadm join 192.168.0.201:6443 --token sypp2l.cqttrqku3fo7jc6v \
       --discovery-token-ca-cert-hash sha256:e325640fefa4a559d2594965ae0b28f0f938ee4341cbfa3114df3ba59f9afa20 \
       --control-plane --certificate-key 71fe1376ccd1889ad07566270c690be483b0418a92e102820657269a5f647c0b
    
    Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
    As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
    "kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 192.168.0.201:6443 --token sypp2l.cqttrqku3fo7jc6v \
       --discovery-token-ca-cert-hash sha256:e325640fefa4a559d2594965ae0b28f0f938ee4341cbfa3114df3ba59f9afa20
    
    Следует сохранить этот вывод, так как токен будет использоваться для присоединения к кластеру остальных управляющих и вычислительных узлов.
  5. Настроить kubernetes для работы от обычного пользователя:
    • создать каталог ~/.kube (с правами пользователя):
      $ mkdir ~/.kube
      
    • скопировать конфигурацию (с правами администратора):
      # cp /etc/kubernetes/admin.conf /home/<пользователь>/.kube/config
      
    • изменить владельца конфигурационного файла (с правами администратора):
      # chown <пользователь>: /home/<пользователь>/.kube/config
      
  6. Установить сетевой плагин (например, Flannel):
    $ kubectl apply -f https://altlinux.space/cloud/manifests/raw/branch/master/flannel/p11/latest/kube-flannel.yml
    
  7. Проверить состояние компонентов:
    $ kubectl get pod -n kube-system -w
    
На остальных узлах управления выполнить команду подключения узла к кластеру (данная команда была выведена при выполнении команды kubeadm init на первом управляющем узле):
# kubeadm join 192.168.0.201:6443 --token sypp2l.cqttrqku3fo7jc6v \
  --discovery-token-ca-cert-hash sha256:e325640fefa4a559d2594965ae0b28f0f938ee4341cbfa3114df3ba59f9afa20 \
  --control-plane --certificate-key 71fe1376ccd1889ad07566270c690be483b0418a92e102820657269a5f647c0b
Подключить рабочие узлы к кластеру (данная команда была выведена при выполнении команды kubeadm init на первом управляющем узле):
# kubeadm join 192.168.0.201:6443 --token sypp2l.cqttrqku3fo7jc6v \
  --discovery-token-ca-cert-hash sha256:e325640fefa4a559d2594965ae0b28f0f938ee4341cbfa3114df3ba59f9afa20
Проверить состояние кластера (на управляющем узле):
$ kubectl get nodes

Часть XI.  Установка пакетов для опытных пользователей

Введение

В современных системах на базе Linux существует огромное число общих ресурсов: разделяемых библиотек, содержащих стандартные функции, исполняемые файлы, сценарии и стандартные утилиты и т.д. Этими общими ресурсами пользуются сразу несколько программ. Удаление или изменение версии одного из составляющих систему компонентов может повлечь неработоспособность других, связанных с ним компонентов, или может привести к выводу из строя всей системы. В контексте системного администрирования проблемы такого рода называют нарушением целостности системы. Задача администратора — обеспечить наличие в системе согласованных версий всех необходимых программных компонентов (обеспечение целостности системы).
Для установки, удаления и обновления программ, а также поддержания целостности системы в Linux в первую очередь стали использоваться программы менеджеры пакетов (например, такие, как rpm). С точки зрения менеджера пакетов программное обеспечение представляет собой набор компонентов — программных пакетов. Пакеты содержат в себе набор исполняемых программ и вспомогательных файлов, необходимых для корректной работы программного обеспечения. Менеджеры пакетов облегчают установку программ: они позволяют проверить наличие необходимого для работы устанавливаемой программы компонента подходящей версии непосредственно в момент установки. Менеджеры пакетов производят необходимые процедуры для регистрации программы во всех операционных средах пользователя: сразу после установки программа становится доступна пользователю из командной строки и появляется, если это было предусмотрено, в меню приложений всех графических оболочек.
Часто компоненты, используемые различными программами, выделяют в отдельные пакеты и помечают, что для работы ПО, предоставляемого пакетом A, необходимо установить пакет B. В таком случае говорят, что пакет A зависит от пакета B или между пакетами A и B существует зависимость.
Отслеживание зависимостей между такими пакетами представляет собой важную задачу для любого дистрибутива. Некоторые компоненты пакетов могут быть взаимозаменяемыми, т.е. может обнаружиться несколько пакетов, предлагающих затребованный ресурс.
Ещё более сложной является задача контроля целостности и непротиворечивости установленного в системе ПО. Представим, что некие программы A и B требуют наличия в системе компонентов C версии 1.0. Обновление версии пакета A, требующее обновления компонентов C до новой версии (например, до версии 2.0, использующей новый интерфейс доступа), влечёт за собой обязательное обновление и программы B.
На практике менеджеры пакетов оказались неспособны эффективно устранить нарушения целостности системы и предотвратить все коллизии при установке или удалении программ. Особенно остро этот недостаток сказался на обновлении систем из централизованного репозитория, в котором пакеты непрерывно обновляются, дробятся на более мелкие и т.п. Именно этот недостаток стимулировал создание систем управления программными пакетами и поддержания целостности ОС.
Для автоматизации и контроля описанных выше процессов стала применяться Усовершенствованная система управления программными пакетами APT (от англ. Advanced Packaging Tool). Автоматизация и контроль достигаются путём создания одного или нескольких внешних репозиториев. В них хранятся доступные для установки пакеты программ.
В распоряжении APT находятся две базы данных: одна описывает установленные в системе пакеты, вторая — внешний репозиторий. APT отслеживает целостность установленной системы и, в случае обнаружения противоречий в зависимостях пакетов, разрешает конфликты, находит пути их корректного устранения, руководствуясь сведениями из внешних репозиториев.
Система APT состоит из нескольких утилит. Чаще всего используется утилита управления пакетами apt-get. Она автоматически определяет зависимости между пакетами и строго следит за её соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.

Глава 78. Источники программ (репозитории)

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

Важно

Для одновременного подключения нескольких репозиториев необходимо отслеживать их совместимость друг с другом, т.е. их пакетная база должна отражать один определённый этап разработки. Совместное использование репозиториев, относящихся к разным дистрибутивам, или смешивание стабильного репозитория с нестабильной веткой разработки (Sisyphus) может привести к различным неожиданностям и трудностям при обновлении пакетов.
APT осуществляет взаимодействие с репозиториями при помощи различных протоколов доступа. Наиболее популярные — HTTP и FTP.
Для того чтобы APT мог использовать тот или иной репозиторий, информацию о нём необходимо поместить в файл /etc/apt/sources.list, либо в любой файл .list (например, mysources.list) в каталоге /etc/apt/sources.list.d/. Описания репозиториев заносятся в эти файлы в следующем виде:
rpm [подпись] метод:путь база название
rpm-src [подпись] метод:путь база название
Здесь:
  • rpm или rpm-src — тип репозитория (скомпилированные программы или исходные тексты);
  • [подпись] — необязательная строка-указатель на электронную подпись разработчиков. Наличие этого поля подразумевает, что каждый пакет из данного репозитория должен быть подписан соответствующей электронной подписью. Подписи описываются в файле /etc/apt/vendor.list;
  • метод — способ доступа к репозиторию: ftp, http, file, rsh, ssh, cdrom, copy;
  • путь — путь к репозиторию в терминах выбранного метода;
  • база — относительный путь к базе данных репозитория;
  • название — название репозитория.
Непосредственно после установки дистрибутива Альт Сервер в файлах /etc/apt/sources.list.d/*.list обычно указывается интернет-репозиторий, совместимый с установленным дистрибутивом.
После редактирования списка репозиториев в sources.list, необходимо обновить локальную базу данных APT о доступных пакетах. Это делается командой apt-get update.
Если в sources.list присутствует репозиторий, содержимое которого может изменяться (например, постоянно разрабатываемый репозиторий или репозиторий обновлений по безопасности), то прежде чем работать с APT, необходимо синхронизировать локальную базу данных с удалённым сервером командой apt-get update. Локальная база данных создаётся заново при каждом изменении в репозитории: добавлении, удалении или переименовании пакета.
При установке определённого пакета APT производит поиск самой новой версии этого пакета во всех известных ему репозиториях вне зависимости от способа доступа к ним. Так, если в репозитории, доступном в сети Интернет, обнаружена более новая в сравнении с компакт-диском версия программы, то APT начнёт загружать соответствующий пакет из сети Интернет. Поэтому, если подключение к сети Интернет отсутствует или ограничено низкой пропускной способностью канала или высокой стоимостью, то следует закомментировать строчки (добавить в начало строки символ #) в /etc/apt/sources.list, относящиеся к ресурсам в сети Интернет.

78.1. Редактирование репозиториев

78.1.1. Утилита apt-repo

Для редактирования репозиториев можно воспользоваться утилитой apt-repo:
  • просмотреть список активных репозиториев:
    apt-repo
    
  • добавить репозиторий в список активных репозиториев:
    apt-repo add репозиторий
    
  • удалить или выключить репозиторий:
    apt-repo rm репозиторий
    
  • обновить информацию о репозиториях:
    apt-repo update
    
  • справка о команде apt-repo:
    man apt-repo
    
    или
    apt-repo --help
    

Примечание

Для выполнения большинства команд необходимы права администратора.
Типичный пример использования: удалить все источники и добавить стандартный репозиторий P11 (архитектура выбирается автоматически):
# apt-repo rm all
# apt-repo add p11
Или то же самое одной командой:
# apt-repo set p11

78.1.2. Добавление репозитория на сменном носителе

Для добавления в sources.list репозитория на сменном диске в APT предусмотрена специальная утилита — apt-cdrom.
Чтобы добавить запись о репозитории на сменном диске необходимо:
  1. Создать каталог для монтирования. Точка монтирования указывается в параметре Acquire::CDROM::mount в файле конфигурации APT (/etc/apt/apt.conf), по умолчанию это /media/ALTLinux:
    # mkdir /media/ALTLinux
    
  2. Примонтировать носитель в указанную точку:
    # mount /dev/носитель /media/ALTLinux
    
    где /dev/носитель — соответствующее блочное устройство (например, /dev/cdrom — для CD/DVD-диска).
  3. Добавить носитель, выполнив команду:
    # apt-cdrom -m add
    
После этого в sources.list появится запись о подключённом носителе:
rpm cdrom:[ALT Server 11.1 x86_64 build 2025-08-12]/ ALTLinux main

Примечание

Команду mount /dev/носитель /media/ALTLinux необходимо выполнять перед каждой командой apt-get install имя_пакета.

78.1.3. Добавление репозиториев вручную

Для изменения списка репозиториев можно отредактировать в любом текстовом редакторе файлы из каталога /etc/apt/sources.list.d/.

Примечание

Для изменения этих файлов необходимы права администратора.
В файле alt.list может содержаться такая информация:
# ftp.altlinux.org (ALT Linux, Moscow)

# ALT Platform 11
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic gostcrypto
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic

rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic gostcrypto
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic

#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/x86_64 classic gostcrypto
#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/x86_64-i586 classic
#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/noarch classic
По сути, каждая строчка соответствует некому репозиторию. Не активные репозитории — строки, начинающиеся со знака #. Для добавления нового репозитория, достаточно дописать его в этот или другой файл.
После обновления списка репозиториев следует обновить информацию о них (выполнить команду apt-get update или apt-repo update).

Глава 79. Поиск пакетов

Если точное название пакета неизвестно, то для его поиска можно воспользоваться утилитой apt-cache. Данная утилита позволяет искать пакет не только по имени, но и по его описанию.
Команда apt-cache search подстрока позволяет найти все пакеты, в именах или описании которых присутствует указанная подстрока. Например:
$ apt-cache search dictionary
stardict-wn - GCIDE - The Collaborative International Dictionary of English
firefox-ru - Russian (RU) Language Pack for Firefox
gnome-dictionary-applet - GNOME panel applet for gnome-dictionary
gnome-utils - Utilities for the GNOME 2.0 desktop
libgdict - GNOME Dictionary Library.
stardict-mueller7 - V.K. Mueller English-Russian Dictionary, 7 Edition: stardict format
stardict-slovnyk_be-en - Dictionary: Slovnyk Belarusian-English
stardict-slovnyk_be-ru - Dictionary: Slovnyk Belarusian-Russian
stardict-slovnyk_be-uk - Dictionary: Slovnyk Belarusian-Ukrainian
stardict-slovnyk_cs-ru - Dictionary: Slovnyk Czech-Russian
stardict-slovnyk_en-be - Dictionary: Slovnyk English-Belarusian
stardict-slovnyk_en-ru - Dictionary: Slovnyk English-Russian
stardict-slovnyk_en-uk - Dictionary: Slovnyk English-Ukrainian
stardict-slovnyk_es-ru - Dictionary: Slovnyk Spanish-Russian
stardict-slovnyk_ru-be - Dictionary: Slovnyk Russian-Belarusian
stardict-slovnyk_ru-cs - Dictionary: Slovnyk Russian-Czech
stardict-slovnyk_ru-en - Dictionary: Slovnyk Russian-English
stardict-slovnyk_ru-es - Dictionary: Slovnyk Russian-Spanish
stardict-slovnyk_ru-uk - Dictionary: Slovnyk Russian-Ukrainian
stardict-slovnyk_uk-be - Dictionary: Slovnyk Ukrainian-Belarusian
stardict-slovnyk_uk-en - Dictionary: Slovnyk Ukrainian-English
stardict-slovnyk_uk-ru - Dictionary: Slovnyk Ukrainian-Russian
words - A dictionary of English words for the /usr/share/dict directory
Для того чтобы подробнее узнать информацию о найденном пакете и получить его подробное описание, воспользуйтесь командой apt-cache show:
$ apt-cache show stardict-mueller7
Package: stardict-mueller7
Section: Text tools
Installed Size: 3095255
Maintainer: Anton V. Boyarshinov <boyarsh@altlinux.ru>
Version: 1.0-alt7
Pre-Depends: rpmlib(PayloadIsLzma)
Depends: stardict (>= 2.4.2)
Provides: stardict-mueller7 (= 1.0-alt7)
Architecture: noarch
Size: 3135276
MD5Sum: ea95c67ca323350b454fbc26533c3548
Filename: stardict-mueller7-1.0-alt7.noarch.rpm
Description: V.K. Mueller English-Russian Dictionary, 7 Edition: stardict format
 Electronic version of V.K. Mueller English-Russian Dictionary, 7 Edition
 in stardict format. You can use it with stardict client.
При поиске с помощью apt-cache можно использовать русскую подстроку. В этом случае будут найдены пакеты, имеющие описание на русском языке. К сожалению, описание на русском языке в настоящее время есть не у всех пакетов, но наиболее актуальные описания переведены.

Глава 80. Установка или обновление пакета

Важно

Для установки пакетов требуются привилегии администратора.
Установка пакета с помощью APT выполняется командой apt-get install имя_пакета.

Важно

Перед установкой и обновлением пакетов необходимо выполнить команду обновления индексов пакетов:
# apt-get update
apt-get позволяет устанавливать в систему пакеты, требующие для работы наличие других, пока ещё не установленных пакетов. В этом случае он определяет, какие пакеты необходимо установить. apt-get устанавливает их, пользуясь всеми доступными репозиториями.
Установка пакета stardict-mueller7 командой apt-get install stardict-mueller7 приведёт к следующему диалогу с APT (если пакет еще не установлен):
# apt-get install stardict-mueller7
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены:
  stardict-mueller7
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B/3135kB архивов.
После распаковки потребуется дополнительно 3095kB дискового пространства.
Совершаем изменения...
Preparing...                 ####################### [100%]
1: stardict-mueller7         ####################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
Команда
 apt-get install имя_пакета 
используется также и для обновления уже установленного пакета или группы пакетов. В этом случае apt-get дополнительно проверяет, есть ли обновлённая, в сравнении с установленной в системе, версия пакета в репозитории.
Например, если пакет stardict-mueller7 установлен и в репозитории нет обновлённой версии этого пакета, то вывод команды apt-get install stardict-mueller7 будет таким:
# apt-get install stardict-mueller7
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия stardict-mueller7 уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 2262 не будет обновлено.
При помощи APT можно установить и отдельный rpm- пакет, не входящий в состав репозиториев (например, полученный из сети Интернет). Для этого достаточно выполнить команду
# apt-get install /путь/к/файлу.rpm
При этом APT проведёт стандартную процедуру проверки зависимостей и конфликтов с уже установленными пакетами.
Иногда в результате операций с пакетами без использования APT целостность системы нарушается, и apt-get отказывается выполнять операции установки, удаления или обновления. В этом случае необходимо повторить операцию, задав опцию -f, заставляющую apt-get исправить нарушенные зависимости, удалить или заменить конфликтующие пакеты. В этом случае необходимо внимательно следить за сообщениями, выводимыми apt-get. Любые действия в этом режиме обязательно требуют подтверждения со стороны пользователя.

Глава 81. Удаление установленного пакета

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

Важно

Для удаления пакетов требуются привилегии администратора.
При попытке с помощью apt-get удалить базовый компонент системы, вы увидите следующий запрос на подтверждение операции:
# apt-get remove filesystem
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие пакеты будут УДАЛЕНЫ:
  ...
ВНИМАНИЕ: Будут удалены важные для работы системы пакеты
Обычно этого делать не следует. Вы должны точно понимать возможные последствия!
  ...
0 будет обновлено, 0 новых установлено, 2648 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B архивов.
После распаковки будет освобождено 8994MB дискового пространства.
Вы делаете нечто потенциально опасное!
Введите фразу 'Yes, do as I say!' чтобы продолжить.

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

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

Глава 82. Обновление системы

82.1. Обновление всех установленных пакетов

Для обновления всех установленных пакетов необходимо выполнить команды:
# apt-get update && apt-get dist-upgrade
Первая команда (apt-get update) обновит индексы пакетов. Вторая команда (apt-get dist-upgrade) позволяет обновить только те установленные пакеты, для которых в репозиториях, перечисленных в /etc/apt/sources.list, имеются новые версии.

Примечание

Несмотря на то, что команда apt-get upgrade существует, использовать её следует осторожно, либо не использовать вовсе.
Она позволяет обновить только те установленные пакеты, для которых в репозиториях, перечисленных в /etc/apt/sources.list, имеются новые версии.
Никакие другие пакеты при этой операции из системы удалены не будут. Этот способ полезен при работе со стабильными пакетами приложений, относительно которых известно, что они при смене версии изменяются несущественно.
Иногда, однако, происходит изменение в наименовании пакетов или изменение их зависимостей. Такие ситуации не обрабатываются командой apt-get upgrade, в результате чего происходит нарушение целостности системы: появляются неудовлетворённые зависимости. Для разрешения этой проблемы существует режим обновления в масштабе дистрибутива — apt-get dist-upgrade.
В случае обновления всего дистрибутива APT проведёт сравнение системы с репозиторием и удалит устаревшие пакеты, установит новые версии присутствующих в системе пакетов, отследит ситуации с переименованиями пакетов или изменения зависимостей между старыми и новыми версиями программ. Всё, что потребуется поставить (или удалить) дополнительно к уже имеющемуся в системе, будет указано в отчёте apt-get, которым APT предварит само обновление.

Примечание

Команда apt-get dist-upgrade обновит систему, но ядро ОС не будет обновлено.

82.2. Обновление ядра

Для обновления ядра ОС необходимо выполнить команду:
# update-kernel

Примечание

Если индексы сегодня еще не обновлялись перед выполнением команды update-kernel необходимо выполнить команду apt-get update.
Команда update-kernel обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра.
Новое ядро загрузится только после перезагрузки системы, которую рекомендуется выполнить немедленно.
Если с новым ядром что-то пойдёт не так, вы сможете вернуться к предыдущему варианту, выбрав его в начальном меню загрузчика.
После успешной загрузки на обновленном ядре можно удалить старое, выполнив команду:
# remove-old-kernels

Часть XII. Основы администрирования Linux

Содержание

83. Общие принципы работы ОС
83.1. Процессы и файлы
83.1.1. Процессы функционирования ОС
83.1.2. Файловая система ОС
83.1.3. Структура каталогов
83.1.4. Организация файловой структуры
83.1.5. Имена дисков и разделов
83.1.6. Разделы, необходимые для работы ОС
83.2. Работа с наиболее часто используемыми компонентами
83.2.1. Виртуальная консоль
83.2.2. Командные оболочки (интерпретаторы)
83.2.3. Командная оболочка Bash
83.2.4. Команда
83.2.5. Команда и параметры
83.2.6. Команда и ключи
83.2.7. Обзор основных команд системы
83.3. Стыкование команд в системе Linux
83.3.1. Стандартный ввод и стандартный вывод
83.3.2. Перенаправление ввода и вывода
83.3.3. Использование состыкованных команд
83.3.4. Недеструктивное перенаправление вывода
84. Средства управления дискреционными правами доступа
84.1. Команда chmod
84.2. Команда chown
84.3. Команда chgrp
84.4. Команда umask
84.5. Команда chattr
84.6. Команда lsattr
84.7. Команда getfacl
84.8. Команда setfacl
85. Etcnet
85.1. Конфигурационные файлы
85.2. Управление и диагностика сетевых интерфейсов
85.2.1. Просмотр информации
85.2.2. Управление сетевыми интерфейсами
85.2.3. Настройка сети
85.3. Настройка статического IP-адреса
85.4. Настройка сетевого моста
85.5. Настройка объединения интерфейсов (bonding)
85.6. Настройка VLAN
85.6.1. Q-in-Q интерфейс
86. Режим суперпользователя
86.1. Какие бывают пользователи?
86.2. Для чего может понадобиться режим суперпользователя?
86.3. Как получить права суперпользователя?
86.4. Как перейти в режим суперпользователя?
87. Управление пользователями
87.1. Общая информация
87.2. Команда useradd
87.3. Команда passwd
87.4. Добавление нового пользователя
87.5. Настройка парольных ограничений
87.6. Управление сроком действия пароля
87.7. Настройка неповторяемости пароля
87.8. Модификация пользовательских записей
87.9. Удаление пользователей
88. Система инициализации systemd и sysvinit
88.1. Запуск операционной системы
88.1.1. Запуск системы
88.1.2. Система инициализации
88.2. Системы инициализации systemd и sysvinit
88.2.1. sysvinit
88.2.2. systemd
88.3. Примеры команд управления службами, журнал в systemd
89. Что происходит в системе
90. Документация
90.1. Экранная документация
90.1.1. man
90.1.2. info
90.2. Документация по пакетам
90.3. Документация к программам, имеющим графический интерфейс

Глава 83. Общие принципы работы ОС

83.1. Процессы и файлы

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

83.1.1. Процессы функционирования ОС

Все программы, которые выполняются в текущий момент времени, называются процессами. Процессы можно разделить на два основных класса: системные процессы и пользовательские процессы.
Системные процессы — программы, решающие внутренние задачи ОС, например, организацию виртуальной памяти на диске или предоставляющие пользователям те или иные сервисы (процессы-службы).
Пользовательские процессы — процессы, запускаемые пользователем из командного интерпретатора для решения задач пользователя или управления системными процессами. Linux изначально разрабатывался как многозадачная система. Он использует технологии, опробованные и отработанные другими реализациями UNIX, которые существовали ранее.
Фоновый режим работы процесса — режим, когда программа может работать без взаимодействия с пользователем. В случае необходимости интерактивной работы с пользователем (в общем случае) процесс будет «остановлен» ядром, и работа его продолжается только после переведения его в «нормальный» режим работы.

83.1.2. Файловая система ОС

В ОС использована файловая система Linux, которая, в отличие от файловых систем DOS и Windows(™), является единым деревом. Корень этого дерева — каталог, называемый root (рут) и обозначаемый /.
Части дерева файловой системы могут физически располагаться в разных разделах разных дисков или вообще на других компьютерах — для пользователя это прозрачно. Процесс присоединения файловой системы раздела к дереву называется монтированием, удаление — размонтированием. Например, файловая система CD-ROM в дистрибутиве монтируется по умолчанию в каталог /media/cdrom (путь в дистрибутиве обозначается с использованием /, а не \, как в DOS/Windows).
Текущий каталог обозначается ./.

83.1.3. Структура каталогов

Корневой каталог /:
  • /bin — командные оболочки (shell), основные утилиты;
  • /boot — содержит ядро системы;
  • /dev — псевдофайлы устройств, позволяющие работать с устройствами напрямую. Файлы в /dev создаются сервисом udev
  • /etc — общесистемные конфигурационные файлы для большинства программ в системе;
  • /etc/rc?.d, /etc/init.d, /etc/rc.boot, /etc/rc.d — каталоги, где расположены командные файлы, выполняемые при запуске системы или при смене её режима работы;
  • /etc/passwd — база данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, его зашифрованный пароль и другие данные;
  • /etc/shadow — теневая база данных пользователей. При этом информация из файла /etc/passwd перемещается в /etc/shadow, который недоступен для чтения всем, кроме пользователя root. В случае использования альтернативной схемы управления теневыми паролями (TCB), все теневые пароли для каждого пользователя располагаются в каталоге /etc/tcb/имя пользователя/shadow;
  • /home — домашние каталоги пользователей;
  • /lib — содержит файлы динамических библиотек, необходимых для работы большей части приложений, и подгружаемые модули ядра;
  • /lost+found — восстановленные файлы;
  • /media — подключаемые носители (каталоги для монтирования файловых систем сменных устройств);
  • /mnt — точки временного монтирования;
  • /opt — вспомогательные пакеты;
  • /proc — виртуальная файловая система, хранящаяся в памяти компьютера при загруженной ОС. В данном каталоге расположены самые свежие сведения обо всех процессах, запущенных на компьютере.
  • /root — домашний каталог администратора системы;
  • /run — файлы состояния приложений;
  • /sbin — набор программ для административной работы с системой (системные утилиты);
  • /selinux — виртуальная файловая система SELinux;
  • /srv — виртуальные данные сервисных служб;
  • /sys — файловая система, содержащая информацию о текущем состоянии системы;
  • /tmp — временные файлы.
  • /usr — пользовательские двоичные файлы и данные, используемые только для чтения (программы и библиотеки);
  • /var — файлы для хранения изменяющихся данных (рабочие файлы программ, очереди, журналы).
Каталог /usr:
  • /usr/bin — дополнительные программы для всех учетных записей;
  • /usr/sbin — команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root;
  • /usr/local — место, где рекомендуется размещать файлы, установленные без использования пакетных менеджеров, внутренняя организация каталогов практически такая же, как и корневого каталога;
  • /usr/man — каталог, где хранятся файлы справочного руководства man;
  • /usr/share — каталог для размещения общедоступных файлов большей части приложений.
Каталог /var:
  • /var/log — место, где хранятся файлы аудита работы системы и приложений;
  • /var/spool — каталог для хранения файлов, находящихся в очереди на обработку для того или иного процесса (очереди печати, непрочитанные или не отправленные письма, задачи cron т.д.).

83.1.4. Организация файловой структуры

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

83.1.5. Имена дисков и разделов

Все физические устройства вашего компьютера отображаются в каталог /dev файловой системы дистрибутива (об этом — ниже). Диски (в том числе IDE/SATA/SCSI/SAS жёсткие диски, USB-диски) имеют имена:
  • /dev/sda — первый диск;
  • /dev/sdb — второй диск;
  • и т.д.
Диски обозначаются /dev/sdX, где X — a, b, c, d, e, … в зависимости от порядкового номера диска на шине.
Раздел диска обозначается числом после его имени. Например, /dev/sdb4 — четвертый раздел второго диска.

83.1.6. Разделы, необходимые для работы ОС

Для работы ОС на жестком диске (дисках) должны быть созданы, по крайней мере, два раздела: корневой (то есть тот, который будет содержать каталог /) и раздел подкачки (swap). Размер последнего, как правило, составляет от однократной до двукратной величины оперативной памяти компьютера. Если на диске много свободного места, то можно создать отдельные разделы для каталогов /usr, /home, /var.

83.2. Работа с наиболее часто используемыми компонентами

83.2.1. Виртуальная консоль

Система Альт Сервер предоставляет доступ к виртуальным консолям, с которых можно осуществлять одновременно несколько сеансов работы в системе (login session).
Только что установленная система Альт Сервер, возможно, предоставляет доступ только к первым шести виртуальным консолям, к которым можно обращаться, нажимая комбинации клавиш Alt+F1Alt+F6 (Ctrl+Alt+F1Ctrl+Alt+F6).

83.2.2. Командные оболочки (интерпретаторы)

Для управления ОС используются командные интерпретаторы (shell).
Зайдя в систему, Вы увидите приглашение — строку, содержащую символ «$» (далее этот символ будет обозначать командную строку). Программа ожидает ваших команд. Роль командного интерпретатора — передавать ваши команды операционной системе. По своим функциям он соответствует command.com в DOS, но несравненно мощнее. При помощи командных интерпретаторов можно писать небольшие программы — сценарии (скрипты). В Linux доступны следующие командные оболочки:
  • bash — самая распространенная оболочка под linux. Она ведет историю команд и предоставляет возможность их редактирования;
  • pdksh — клон korn shell, хорошо известной оболочки в UNIX™ системах.
Проверить, какая оболочка используется в данный момент можно, выполнив команду:
$ echo $SHELL
Оболочкой по умолчанию является Bash (Bourne Again Shell) — самая распространённая оболочка под Linux, которая ведет историю команд и предоставляет возможность их редактирования. В дальнейшем описании работы с Альт Сервер будут использоваться примеры с использованием этой оболочки.

83.2.3. Командная оболочка Bash

В Bash имеется несколько приемов для работы со строкой команд. Например, можно использовать следующие сочетания:
  • Ctrl+A — перейти на начало строки;
  • Ctrl+U — вырезать/удалить все символы слева от курсора до начала строки в буфер обмена;
  • Ctrl+C — остановить текущую задачу.
Для ввода нескольких команд одной строкой можно использовать разделитель «;». По истории команд можно перемещаться с помощью клавиш («вверх») и («вниз»).
Чтобы найти конкретную команду в списке набранных, не пролистывая всю историю, можно нажать Ctrl+R и начать вводить символы ранее введенной команды.
Для просмотра истории команд можно воспользоваться командой history. Команды, присутствующие в истории, отображаются в списке пронумерованными. Чтобы запустить конкретную команду необходимо набрать:
!номер команды
Если ввести:
!!
запустится последняя из набранных команд.
В Bash имеется возможность самостоятельного завершения имен команд из общего списка команд, что облегчает работу при вводе команд, в случае, если имена программ и команд слишком длинны. При нажатии клавиши Tab Bash завершает имя команды, программы или каталога, если не существует нескольких альтернативных вариантов. Например, чтобы использовать программу декомпрессии gunzip, можно набрать следующую команду:
gu
Затем нажать клавишу Tab. Так как в данном случае существует несколько возможных вариантов завершения команды, то необходимо повторно нажать клавишу Tab, чтобы получить список имен, начинающихся с gu.
В предложенном примере можно получить следующий список:
$ gu
guile gunzip gupnp-binding-tool
Если набрать: n (gunzip — это единственное имя, третьей буквой которого является «n»), а затем нажать клавишу Tab, то оболочка самостоятельно дополнит имя. Чтобы запустить команду нужно нажать Enter.
Программы, вызываемые из командной строки, Bash ищет в каталогах, определяемых в системной переменной $PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слеш) (если только не выбран один из двух самых слабых уровней защиты). Поэтому, для запуска программы из текущего каталога, необходимо использовать команду (в примере запускается команда prog):
./prog

83.2.4. Команда

Простейшая команда состоит из одного «слова», например, команда cal, выводящая календарь на текущий месяц.
$ cal
      Март 2025
Пн Вт Ср Чт Пт Сб Вс
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

83.2.5. Команда и параметры

$ cal 1 2026
     Январь 2026
Пн Вт Ср Чт Пт Сб Вс
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Команда cal 1 2026 состоит из двух частей — собственно команды cal и «остального». То, что следует за командой, называется параметрами (или аргументами), и они вводятся для изменения поведения команды. В большинстве случаев, первое слово считается именем команды, а остальные — её параметрами.

83.2.6. Команда и ключи

Для решения разных задач одни и те же действия необходимо выполнять по-разному. Например, для синхронизации работ в разных точках земного шара лучше использовать единое для всех время (по Гринвичу), а для организации собственного рабочего дня — местное время (с учётом сдвига по часовому поясу и разницы зимнего и летнего времени). И то, и другое время показывает команда date, только для работы по Гринвичу ей нужен дополнительный параметр -u (он же --universal).
$ date
Чт 13 мар 2025 12:10:52 EET
$ date -u
Чт 13 мар 2025 10:11:05 UTC
Такого рода параметры называются ключами или модификаторами выполнения. Ключ принадлежит данной конкретной команде и сам по себе смысла не имеет. Этим он отличается от других параметров (например, имён файлов, чисел), имеющих собственный смысл, не зависящий ни от какой команды. Каждая команда может распознавать некоторый набор ключей и соответственно изменять своё поведение. Один и тот же ключ может определять для разных команд совершенно разные значения.
Для формата ключей нет жёсткого стандарта, однако существуют договорённости:
  • Если ключ начинается на -, то это однобуквенный ключ. За -, как правило, следует один символ, чаще всего буква, обозначающая действие или свойство, которое этот ключ придаёт команде. Так проще отличать ключи от других параметров.
  • Если ключ начинается на --, то он называется полнословным ключом. Полнословный формат ключа начинается на два знака --, за которыми следует полное имя обозначаемого этим ключом содержания.
Некоторые ключи имеют и однобуквенный, и полнословный формат, а некоторые — только полнословный.
Информацию о ресурсах каждой команды можно получить, используя ключ --help. К примеру, получить подсказку о том, что делает команда rm, можно, набрав в терминале rm --help.

83.2.7. Обзор основных команд системы

Все команды, приведенные ниже, могут быть запущены в режиме консоли. Для получения более подробной информации используйте команду man. Пример:
$ man ls

Примечание

Параметры команд обычно начинаются с символа «-», и обычно после одного символа «-» можно указать сразу несколько опций. Например, вместо команды ls -l -F можно ввести команду ls -lF

Учетные записи пользователей

Команда su
Команда su позволяет изменить «владельца» текущего сеанса (сессии) без необходимости завершать сеанс и открывать новый.
Синтаксис:
su [ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
Команду можно применять для замены текущего пользователя на любого другого, но чаще всего она используется для получения пользователем прав суперпользователя (root).
При вводе команды su - будет запрошен пароль суперпользователя (root), и, в случае ввода корректного пароля, пользователь получит права администратора. Чтобы вернуться к правам пользователя, необходимо ввести команду:
exit
Более подробную информацию о режиме суперпользователя вы можете прочитать в главе Режим суперпользователя.
Команда id
Команда id выводит информацию о пользователе и группах, в которых он состоит, для заданного пользователя или о текущем пользователе (если ничего не указано).
Синтаксис:
id [ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
Команда passwd
Команда passwd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.
Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.
Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. Новый пароль должен соответствовать техническим требованиям к паролям, заданным администратором системы.

Основные операции с файлами и каталогами

Команда ls
Команда ls (list) печатает в стандартный вывод содержимое каталогов.
Синтаксис:
ls [ОПЦИИ...] [ФАЙЛ...]
Основные опции:
  • -a — просмотр всех файлов, включая скрытые;
  • -l — отображение более подробной информации;
  • -R — выводить рекурсивно информацию о подкаталогах.
Команда cd
Команда cd предназначена для смены каталога. Команда работает как с абсолютными, так и с относительными путями. Если каталог не указан, используется значение переменной окружения $HOME (домашний каталог пользователя). Если каталог задан полным маршрутным именем, он становится текущим. По отношению к новому каталогу нужно иметь право на выполнение, которое в данном случае трактуется как разрешение на поиск.
Синтаксис:
cd [-L|-P] [КАТАЛОГ]
Если в качестве аргумента задано «-», то это эквивалентно $OLDPWD. Если переход был осуществлен по переменной окружения $CDPATH или в качестве аргумента был задан «-» и смена каталога была успешной, то абсолютный путь нового рабочего каталога будет выведен на стандартный вывод.
Примеры:
  • находясь в домашнем каталоге перейти в его подкаталог docs/ (относительный путь):
    cd docs/
  • сделать текущим каталог /usr/bin (абсолютный путь):
    cd /usr/bin/
  • сделать текущим родительский каталог:
    cd ..
  • вернуться в предыдущий каталог:
    cd -
  • сделать текущим домашний каталог:
    cd
Команда pwd
Команда pwd выводит абсолютный путь текущего (рабочего) каталога.
Синтаксис:
pwd [-L|-P]
Опции:
  • -P — не выводить символические ссылки;
  • -L — выводить символические ссылки.
Команда rm
Команда rm служит для удаления записей о файлах. Если заданное имя было последней ссылкой на файл, то файл уничтожается.

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

Удалив файл, вы не сможете его восстановить!
Синтаксис:
rm [ОПЦИИ...] <ФАЙЛ>
Основные опции:
  • -f —  никогда не запрашивать подтверждения;
  • -i —  всегда запрашивать подтверждение;
  • -r, -R — рекурсивно удалять содержимое указанных каталогов.
Пример. Удалить все файлы html в каталоге ~/html:
rm -i ~/html/*.html
Команда mkdir
mkdir — команда для создания новых каталогов.
Синтаксис:
mkdir [-p] [-m права] <КАТАЛОГ...>
Команда rmdir
Команда rmdir удаляет каталоги из файловой системы. Каталог должен быть пуст перед удалением.
Синтаксис:
rmdir [ОПЦИИ...] <КАТАЛОГ...>
Основные опции:
  • -p — удалить каталог и его потомки.
Команда rmdir часто заменяется командой rm -rf, которая позволяет удалять каталоги, даже если они не пусты.
Команда cp
Команда cp предназначена для копирования файлов из одного в другие каталоги.
Синтаксис:
cp [-fip] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
cp [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
cp [-R] [[-H] | [-L] | [-P]] [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
Основные опции:
  • -p — сохранять по возможности времена изменения и доступа к файлу, владельца и группу, права доступа;
  • -i — запрашивать подтверждение перед копированием в существующие файлы;
  • -r, -R — рекурсивно копировать содержимое каталогов.
Команда mv
Команда mv предназначена для перемещения файлов.
Синтаксис:
mv [-fi] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
mv [-fi] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
В первой синтаксической форме, характеризующейся тем, что последний операнд не является ни каталогом, ни символической ссылкой на каталог, mv перемещает исх_файл в цел_файл (происходит переименование файла).
Во второй синтаксической форме mv перемещает исходные файлы в указанный каталог под именами, совпадающими с краткими именами исходных файлов.
Основные опции:
  • -f — не запрашивать подтверждения перезаписи существующих файлов;
  • -i — запрашивать подтверждение перезаписи существующих файлов.
Команда cat
Команда cat последовательно выводит содержимое файлов.
Синтаксис:
cat [ОПЦИИ...] [ФАЙЛ...]
Основные опции:
  • -n, --number — нумеровать все строки при выводе;
  • -E, --show-ends — показывать $ в конце каждой строки.
Если файл не указан, читается стандартный ввод. Если в списке файлов присутствует имя «-», вместо этого файла читается стандартный ввод.
Команда head
Команда head выводит первые 10 строк каждого файла на стандартный вывод.
Синтаксис:
head [ОПЦИИ] [ФАЙЛ...]
Основные опции:
  • -n, --lines=[-]K — вывести первые К строк каждого файла, а не первые 10;
  • -q, --quiet — не печатать заголовки с именами файлов.
Команда less
Команда less позволяет постранично просматривать текст (для выхода необходимо нажать q).
Синтаксис:
less ФАЙЛ
Команда grep
Команда grep имеет много опций и предоставляет возможности поиска символьной строки в файле.
Синтаксис:
grep [шаблон_поиска] <ФАЙЛ>

Поиск файлов

Команда find
Команда find предназначена для поиска всех файлов, начиная с корневого каталога. Поиск может осуществляться по имени, типу или владельцу файла.
Синтаксис:
find [-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [ПУТЬ…] [ВЫРАЖЕНИЕ]
Ключи для поиска:
  • -name — поиск по имени файла;
  • -type — поиск по типу f=файл, d=каталог, l=ссылка(lnk);
  • -user — поиск по владельцу (имя или UID).
Когда выполняется команда find, можно выполнять различные действия над найденными файлами. Основные действия:
  • -exec команда \; — выполнить команду. Запись команды должна заканчиваться экранированной точкой с запятой. Строка «{}» заменяется текущим маршрутным именем файла;
  • -execdir команда \; — то же самое что и -exec, но команда вызывается из подкаталога, содержащего текущий файл;
  • -ok команда — эквивалентно -exec за исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе: «y»;
  • -print — вывод имени файла на экран.
Путем по умолчанию является текущий подкаталог. Выражение по умолчанию -print.
Примеры:
  • найти в текущем каталоге обычные файлы (не каталоги), имя которых начинается с символа «~»:
    find . -type f -name "~*" -print
  • найти в текущем каталоге файлы, измененные позже, чем файл file.bak:
    find . -newer file.bak -type f -print
  • удалить все файлы с именами a.out или *.o, доступ к которым не производился в течение недели:
    find / \( -name a.out -o -name '*.o' \) \ -atime +7 -exec rm {} \;
  • удалить из текущего каталога и его подкаталогов все файлы нулевого размера, запрашивая подтверждение:
    find . -size 0c -ok rm {} \;
Команда whereis
whereis сообщает путь к исполняемому файлу программы, ее исходным файлам (если есть) и соответствующим страницам справочного руководства.
Синтаксис:
whereis [ОПЦИИ...] <ФАЙЛ>
Опции:
  • -b — вывод информации только об исполняемых файлах;
  • -m — вывод информации только о страницах справочного руководства;
  • -s — вывод информации только об исходных файлах.

Мониторинг и управление процессами

Команда ps
Команда ps отображает список текущих процессов.
Синтаксис:
ps [ОПЦИИ...]
По умолчанию выводится информация о процессах с теми же действующим UID и управляющим терминалом, что и у подающего команду пользователя.
Основные опции:
  • -a — вывести информацию о процессах, ассоциированных с терминалами;
  • -f — вывести «полный» список;
  • -l — вывести «длинный» список;
  • -p список  — вывести информацию о процессах с перечисленными в списке PID;
  • -u список — вывести информацию о процессах с перечисленными идентификаторами или именами пользователей.
Команда kill
Команда kill позволяет прекратить исполнение процесса или передать ему сигнал.
Синтаксис:
kill [-s] [сигнал] [идентификатор] [...]
kill [-l] [статус_завершения]
kill [-номер_сигнала] [идентификатор] [...]
Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».
Основные опции:
  • -l — вывести список поддерживаемых сигналов;
  • -s сигнал, -сигнал — послать сигнал с указанным именем.
Если обычная команда kill не дает желательного эффекта, необходимо использовать команду kill с параметром -9 (kill -9 PID_номер).
Команда df
Команда df показывает количество доступного дискового пространства в файловой системе, в которой содержится файл, переданный как аргумент. Если ни один файл не указан, показывается доступное место на всех смонтированных файловых системах. Размеры по умолчанию указаны в блоках по 1КБ.
Синтаксис:
df [ОПЦИИ] [ФАЙЛ...]
Основные опции:
  • --total — подсчитать общий объем в конце;
  • -h, --human-readable — печатать размеры в удобочитаемом формате (например, 1K, 234M, 2G).
Команда du
Команда du подсчитывает использование диска каждым файлом, для каталогов подсчет происходит рекурсивно.
Синтаксис:
du [ОПЦИИ] [ФАЙЛ...]
Основные опции:
  • -a, --all — выводить общую сумму для каждого заданного файла, а не только для каталогов;
  • -c, --total — подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
  • -d, --max-depth=N — выводить объем для каталога (или файлов, если указано --all) только если она на N или менее уровней ниже аргументов командной строки;
  • -S, --separate-dirs — выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
  • -s, --summarize — отобразить только сумму для каждого аргумента.
Команда which
Команда which отображает полный путь к указанным командам или сценариям.
Синтаксис:
which [ОПЦИИ] <ФАЙЛ...>
Основные опции:
  • -a, --all — выводит все совпавшие исполняемые файлы по содержимому в переменной окружения $PATH, а не только первый из них;
  • -c, --total — подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
  • -d, --max-depth=N — выводить объем для каталога (или файлов, если указано --all) только если она на N или менее уровней ниже аргументов командной строки;
  • -S, --separate-dirs — выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
  • --skip-dot — пропускает все каталоги из переменной окружения $PATH, которые начинаются с точки.

Использование многозадачности

Альт Сервер — это многозадачная система.
Для того чтобы запустить программу в фоновом режиме, необходимо набрать «&» после имени программы. После этого оболочка даст возможность запускать другие приложения.
Так как некоторые программы интерактивны — их запуск в фоновом режиме бессмысленен. Подобные программы просто остановятся, если их запустить в фоновом режиме.
Можно также запускать нескольких независимых сеансов. Для этого в консоли необходимо набрать Ctrl+Alt и одну из клавиш, находящихся в интервале от F1 до F6. На экране появится новое приглашение системы, и можно открыть новый сеанс. Этот метод также позволяет вам работать на другой консоли, если консоль, которую вы использовали до этого, не отвечает или вам необходимо остановить зависшую программу.
Команда bg
Команда bg позволяет перевести задание на задний план.
Синтаксис:
bg [ИДЕНТИФИКАТОР ...]
Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».
Команда fg
Команда fg позволяет перевести задание на передний план.
Синтаксис:
fg [ИДЕНТИФИКАТОР ...]
Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».

Сжатие и упаковка файлов

Команда tar
Сжатие и упаковка файлов выполняется с помощью команды tar, которая преобразует файл или группу файлов в архив без сжатия (tarfile).
Упаковка файлов в архив чаще всего выполняется следующей командой:
tar -cf [имя создаваемого файла архива] [упаковываемые файлы и/или каталоги]
Пример использования команды упаковки архива:
tar -cf moi_dokumenti.tar Docs project.tex
Распаковка содержимого архива в текущий каталог выполняется командой:
tar -xf [имя файла архива]
Для сжатия файлов используются специальные программы сжатия: gzip, bzip2 и 7z.

83.3. Стыкование команд в системе Linux

83.3.1. Стандартный ввод и стандартный вывод

Многие команды системы имеют так называемые стандартный ввод (standard input) и стандартный вывод (standard output), часто сокращаемые до stdin и stdout. Ввод и вывод здесь — это входная и выходная информация для данной команды. Программная оболочка делает так, что стандартным вводом является клавиатура, а стандартным выводом — экран монитора.
Пример с использованием команды cat. По умолчанию команда cat читает данные из всех файлов, которые указаны в командной строке, и посылает эту информацию непосредственно в стандартный вывод (stdout). Следовательно, команда:
cat history-final masters-thesis
выведет на экран сначала содержимое файла history-final, а затем — файла masters-thesis.
Если имя файла не указано, команда cat читает входные данные из stdin и возвращает их в stdout. Пример:
cat
Hello there.
Hello there.
Bye.
Bye.
Ctrl-D
Каждую строку, вводимую с клавиатуры, команда cat немедленно возвращает на экран. При вводе информации со стандартного ввода конец текста сигнализируется вводом специальной комбинации клавиш, как правило, Ctrl+D. Сокращённое название сигнала конца текста — EOT (end of text).

83.3.2. Перенаправление ввода и вывода

При необходимости можно перенаправить стандартный вывод, используя символ >, и стандартный ввод, используя символ <.
Фильтр (filter) — программа, которая читает данные из стандартного ввода, некоторым образом их обрабатывает и результат направляет на стандартный вывод. Когда применяется перенаправление, в качестве стандартного ввода и вывода могут выступать файлы. Как указывалось выше, по умолчанию, stdin и stdout относятся к клавиатуре и к экрану соответственно. Команда sort является простым фильтром — она сортирует входные данные и посылает результат на стандартный вывод. Совсем простым фильтром является команда cat — она ничего не делает с входными данными, а просто пересылает их на выход.

83.3.3. Использование состыкованных команд

Стыковку команд (pipelines) осуществляет командная оболочка, которая stdout первой команды направляет на stdin второй команды. Для стыковки используется символ |. Направить stdout команды ls на stdin команды sort:
ls | sort -r
notes
masters-thesis
history-final
english-list
Вывод списка файлов частями:
ls /usr/bin | more
Если необходимо вывести на экран последнее по алфавиту имя файла в текущем каталоге, можно использовать следующую команду:
ls | sort -r | head -1 notes
где команда head -1 выводит на экран первую строку получаемого ей входного потока строк (в примере поток состоит из данных от команды ls), отсортированных в обратном алфавитном порядке.

83.3.4. Недеструктивное перенаправление вывода

Эффект от использования символа > для перенаправления вывода файла является деструктивным; т.е, команда
ls > file-list
уничтожит содержимое файла file-list, если этот файл ранее существовал, и создаст на его месте новый файл. Если вместо этого перенаправление будет сделано с помощью символов >>, то вывод будет приписан в конец указанного файла, при этом исходное содержимое файла не будет уничтожено.

Примечание

Перенаправление ввода и вывода и стыкование команд осуществляется командными оболочками, которые поддерживают использование символов >, >> и |. Сами команды не способны воспринимать и интерпретировать эти символы.

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

84.1. Команда chmod

Команда chmod предназначена для изменения прав доступа файлов и каталогов.
Синтаксис:
chmod [ОПЦИИ] РЕЖИМ[,РЕЖИМ]... <ФАЙЛ>
chmod [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
Основные опции:
  • -R — рекурсивно изменять режим доступа к файлам, расположенным в указанных каталогах;
  • --reference=ИФАЙЛ — использовать режим файла ИФАЙЛ.
Команда chmod изменяет права доступа каждого указанного файла в соответствии с правами доступа, указанными в параметре РЕЖИМ. Режим может быть представлен как в символьном виде, так и в числовом (восьмеричном) виде, представляющем битовую маску новых прав доступа.
Формат символьного режима следующий:
[ugoa...][[+-=][разрешения...]...]
Здесь разрешения — это ноль или более букв из набора «rwxXst» или одна из букв из набора «ugo».
Каждый аргумент — это список символьных команд изменения прав доступа, разделеных запятыми. Каждая такая команда начинается с нуля или более букв «ugoa», которые указывают, чьи права доступа к файлу будут изменены:
  • u — владелец файла;
  • g — пользователи, входящие в группу, к которой принадлежит файл (за исключением владельца);
  • o — все остальные пользователи, не являющиеся ни владельцем, ни членами группы;
  • a — все категории пользователей (u, g и o).
Если не задана ни одна буква, то автоматически будет использована буква «a», но биты, установленные в umask, не будут затронуты.

Примечание

Права доступа образуют иерархию, исключающую вышестоящие категории. Права группы не включают владельца, а права остальных пользователей не включают ни владельца, ни членов группы.
Операторы:
  • + — добавляет выбранные права доступа;
  • - — удаляет выбранные права доступа;
  • = — задаёт только указанные права, заменяя существующие.
Буквы «rwxXst» задают биты доступа для пользователей:
  • r — чтение;
  • w — запись;
  • x — выполнение (или поиск для каталогов);
  • X — выполнение/поиск только если это каталог или файл с установленным битом выполнения;
  • s — установка битов setuid (для владельца) или setgid (для группы);
  • t — sticky-бит, предотвращающий удаление другими пользователями.
Числовой режим состоит из не более чем четырёх восьмеричных цифр (от нуля до семи), которые складываются из битовых масок с разрядами «4», «2» и «1». Пропущенные разряды дополняются ведущими нулями:
  • первый разряд — установка битов setuid (4), setgid (2) и sticky (1);
  • второй разряд — права доступа файла: чтение (4), запись (2) и выполнение (1);
  • третий разряд — права доступа для группы: чтение (4), запись (2) и выполнение (1);
  • четвертый разряд — права доступа для остальных пользователей (не входящих в данную группу): чтение (4), запись (2) и выполнение (1).
Примеры:
  • установить права, позволяющие владельцу читать и писать в файл f1, а членам группы и прочим пользователям только читать. Команду можно записать двумя способами:
    $ chmod 644 f1
    $ chmod u=rw,go=r f1
    
  • позволить всем выполнять файл f2:
    $ chmod +x f2
  • запретить удаление файла f3:
    $ chmod +t f3
  • дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4:
    $ chmod =rwx,g+s f4
    $ chmod 2777 f4
    

84.2. Команда chown

Команда chown изменяет владельца и/или группу для каждого заданного файла.
Синтаксис:
chown [КЛЮЧ]…[ВЛАДЕЛЕЦ][:[ГРУППА]] <ФАЙЛ>
chown [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
Основные опции:
  • -R — рекурсивно изменять файлы и каталоги;
  • --reference=ИФАЙЛ — использовать владельца и группу файла ИФАЙЛ.
Изменить владельца может только владелец файла или суперпользователь.
Владелец не изменяется, если он не задан в аргументе. Группа также не изменяется, если не задана, но если после символьного ВЛАДЕЛЬЦА стоит символ «:», подразумевается изменение группы на основную группу текущего пользователя. Поля ВЛАДЕЛЕЦ и ГРУППА могут быть как числовыми, так и символьными.
Примеры:
  • поменять владельца каталога /u на пользователя test:
    chown test /u
  • поменять владельца и группу каталога /u:
    chown test:staff /u
  • поменять владельца каталога /u и вложенных файлов на test:
    chown -hR test /u

84.3. Команда chgrp

Команда chgrp изменяет группу для каждого заданного файла.
Синтаксис:
chgrp [ОПЦИИ] ГРУППА <ФАЙЛ>
chgrp [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
Основные опции:
  • -R — рекурсивно изменять файлы и каталоги;
  • --reference=ИФАЙЛ — использовать группу файла ИФАЙЛ.

84.4. Команда umask

Команда umask задает маску режима создания файла в текущей среде командного интерпретатора равной значению, задаваемому операндом режим. Эта маска влияет на начальное значение битов прав доступа всех создаваемых далее файлов.
Синтаксис:
umask [-p] [-S] [режим]
Пользовательской маске режима создания файлов присваивается указанное восьмеричное значение. Три восьмеричные цифры соответствуют правам на чтение/запись/выполнение для владельца, членов группы и прочих пользователей соответственно. Значение каждой заданной в маске цифры вычитается из соответствующей «цифры», определенной системой при создании файла. Например, umask 022 удаляет права на запись для членов группы и прочих пользователей (у файлов, создававшихся с режимом 777, он оказывается равным 755; а режим 666 преобразуется в 644).
Если маска не указана, выдается ее текущее значение:
$ umask
0022
или то же самое в символьном режиме:
$ umask -S
u=rwx,g=rx,o=rx
Команда umask распознается и выполняется командным интерпретатором bash.

84.5. Команда chattr

Команда chattr изменяет атрибуты файлов на файловых системах ext3, ext4.
Синтаксис:
chattr [ -RVf ] [+-=aAcCdDeFijmPsStTux] [ -v версия ] <ФАЙЛЫ> …
Опции:
  • -R — рекурсивно изменять атрибуты каталогов и их содержимого. Символические ссылки игнорируются;
  • -V — выводит расширенную информацию и версию программы;
  • -f — подавлять сообщения об ошибках;
  • -v версия — установить номер версии/генерации файла.
Формат символьного режима:
+-=aAcCdDeFijmPsStTux
Оператор «+» означает добавление выбранных атрибутов к существующим атрибутам; «-» означает их снятие; «=» означает определение только этих указанных атрибутов для файлов.
Символы «aAcCdDeFijmPsStTux» указывают на новые атрибуты файлов:
  • a — только добавление к файлу;
  • A — не обновлять время последнего доступа (atime) к файлу;
  • c — сжатый файл;
  • C — отключение режима «Copy-on-write» для указанного файла;
  • d — не архивировать (отключает создание архивной копии файла командой dump);
  • D — синхронное обновление каталогов;
  • e — включает использование extent при выделении места на устройстве (атрибут не может быть отключён с помощью chattr);
  • F — регистронезависимый поиск в каталогах;
  • i — неизменяемый файл (файл защищен от изменений: не может быть удалён или переименован, к этому файлу не могут быть созданы ссылки, и никакие данные не могут быть записаны в этот файл);
  • j — ведение журнала данных (данные файла перед записью будут записаны в журнал ext3/ext4);
  • m — не сжимать;
  • P — каталог с вложенными файлами является иерархической структурой проекта;
  • s — безопасное удаление (перед удалением все содержимое файла полностью затирается «00»);
  • S — синхронное обновление (аналогичен опции монтирования «sync» файловой системы);
  • t — отключает метод tail-merging для файлов;
  • T — вершина иерархии каталогов;
  • u — неудаляемый (при удалении файла его содержимое сохраняется, это позволяет пользователю восстановить файл);
  • x — прямой доступ к файлам (атрибут не может быть установлен с помощью chattr).

84.6. Команда lsattr

Команда lsattr выводит атрибуты файла расширенной файловой системы.
Синтаксис:
lsattr [ -RVadlpv ] <ФАЙЛЫ> …
Опции:
  • -R — рекурсивно изменять атрибуты каталогов и их содержимого. Символические ссылки игнорируются;
  • -V — выводит расширенную информацию и версию программы;
  • -a — просматривает все файлы в каталоге, включая скрытые файлы (имена которых начинаются с «.»);
  • -d — отображает каталоги так же, как и файлы вместо того, чтобы просматривать их содержимое;
  • -l — отображает параметры, используя длинные имена вместо одного символа;
  • -p — выводит номер проекта файла;
  • -v — выводит номер версии/генерации файла.

84.7. Команда getfacl

Команда getfacl выводит атрибуты файла расширенной файловой системы.
Синтаксис:
getfacl [ --aceEsRLPtpndvh ] <ФАЙЛ> …
Опции:
  • -a — вывести только ACL файла;
  • -d — вывести только ACL по умолчанию;
  • -c — не показывать заголовок (имя файла);
  • -e — показывать все эффективные права;
  • -E — не показывать эффективные права;
  • -s — пропускать файлы, имеющие только основные записи;
  • -R — для подкаталогов рекурсивно;
  • -L — следовать по символическим ссылкам, даже если они не указаны в командной строке;
  • -P — не следовать по символическим ссылкам, даже если они указаны в командной строке;
  • -t — использовать табулированный формат вывода;
  • -p — не удалять ведущие «/» из пути файла;
  • -n — показывать числовые значения пользователя/группы.
Формат вывода:
1: # file: somedir/
2: # owner: lisa
3: # group: staff
4: # flags: -s-
5: user::rwx
6: user:joe:rwx			#effective:r-x
7: group::rwx			#effective:r-x
8: group:cool:r-x
9: mask:r-x
10: other:r-x
11: default:user::rwx
12: default:user:joe:rwx	#effective:r-x
13: default:group::r-x
14: default:mask:r-x
15: default:oter:---
Строки 1 — 3 указывают имя файла, владельца и группу владельцев.
В строке 4 указаны биты setuid (s), setgid (s) и sticky (t): либо буква, обозначающая бит, либо тире (-). Эта строка включается, если какой-либо из этих битов установлен, и опускается в противном случае, поэтому она не будет отображаться для большинства файлов.
Строки 5, 7 и 10 относятся к традиционным битам прав доступа к файлу, соответственно, для владельца, группы-владельца и всех остальных. Эти три элемента являются базовыми. Строки 6 и 8 являются элементами для отдельных пользователя и группы. Строка 9 — маска эффективных прав. Этот элемент ограничивает эффективные права, предоставляемые всем группам и отдельным пользователям. Маска не влияет на права для владельца файла и всех других. Строки 11 — 15 показывают ACL по умолчанию, ассоциированный с данным каталогом.

84.8. Команда setfacl

Команда setfacl изменяет ACL к файлам или каталогам. В командной строке за последовательностью команд идет последовательность файлов (за которой, в свою очередь, также может идти последовательность команд и так далее).
Синтаксис:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] <ФАЙЛ> …
setfacl --restore=file
Опции:
  • -b — удалить все разрешенные записи ACL;
  • -k — удалить ACL по умолчанию;
  • -n — не пересчитывать маску эффективных прав, обычно setfacl пересчитывает маску (кроме случая явного задания маски) для того, чтобы включить ее в максимальный набор прав доступа элементов, на которые воздействует маска (для всех групп и отдельных пользователей);
  • -d — применить ACL по умолчанию;
  • -R — для подкаталогов рекурсивно;
  • -L — переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R);
  • -P — не переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R);
  • -L — следовать по символическим ссылкам, даже если они не указаны в командной строке;
  • -P — не следовать по символическим ссылкам, даже если они указаны в командной строке;
  • --mask — пересчитать маску эффективных прав;
  • -m — изменить текущий ACL для файла;
  • -M — прочитать записи ACL для модификации из файла;
  • -x — удалить записи из ACL файла;
  • -X — прочитать записи ACL для удаления из файла;
  • --restore=file — восстановить резервную копию прав доступа, созданную командой getfacl –R или ей подобной. Все права доступа дерева каталогов восстанавливаются, используя этот механизм. В случае если вводимые данные содержат элементы для владельца или группы-владельца, и команда setfacl выполняется пользователем с именем root, то владелец и группа-владелец всех файлов также восстанавливаются. Эта опция не может использоваться совместно с другими опциями за исключением опции --test;
  • --set=acl — установить ACL для файла, заменив текущий ACL;
  • --set-file=file — прочитать записи ACL для установления из файла;
  • --test — режим тестирования (ACL не изменяются).
При использовании опций --set, -m и -x должны быть перечислены записи ACL в командной строке. Элементы ACL разделяются одинарными кавычками.
При чтении ACL из файла при помощи опций -set-file, -M и -X команда setfacl принимает множество элементов в формате вывода команды getfacl. В строке обычно содержится не больше одного элемента ACL.
Команда setfacl использует следующие форматы элементов ACL:
  • права доступа отдельного пользователя (если не задан UID, то права доступа владельца файла):
    [d[efault]:] [u[ser]:]uid [:perms]
    
  • права доступа отдельной группы (если не задан GID, то права доступа группы-владельца):
    [d[efault]:] g[roup]:gid [:perms]
    
  • маска эффективных прав:
    [d[efault]:] m[ask][:] [:perms]
    
  • права доступа всех остальных:
    [d[efault]:] o[ther][:] [:perms]
    
Элемент ACL является абсолютным, если он содержит поле perms и является относительным, если он включает один из модификаторов: «+» или «^». Абсолютные элементы могут использоваться в операциях установки или модификации ACL. Относительные элементы могут использоваться только в операции модификации ACL. Права доступа для отдельных пользователей, группы, не содержащие никаких полей после значений UID, GID (поле perms при этом отсутствует), используются только для удаления элементов.
Значения UID и GID задаются именем или числом. Поле perms может быть представлено комбинацией символов «r», «w», «x», «-» или цифр (0 — 7).
Изначально файлы и каталоги содержат только три базовых элемента ACL: для владельца, группы-владельца и всех остальных пользователей. Существует ряд правил, которые следует учитывать при установке прав доступа:
  • не могут быть удалены сразу три базовых элемента, должен присутствовать хотя бы один;
  • если ACL содержит права доступа для отдельного пользователя или группы, то ACL также должен содержать маску эффективных прав;
  • если ACL содержит какие-либо элементы ACL по умолчанию, то в последнем должны также присутствовать три базовых элемента (т. е. права доступа по умолчанию для владельца, группы-владельца и всех остальных);
  • если ACL по умолчанию содержит права доступа для всех отдельных пользователей или групп, то в ACL также должна присутствовать маска эффективных прав.
Для того чтобы помочь пользователю выполнять эти правила, команда setfacl создает права доступа, используя уже существующие, согласно следующим условиям:
  • если права доступа для отдельного пользователя или группы добавлены в ACL, а маски прав не существует, то создается маска с правами доступа группы-владельца;
  • если создан элемент ACL по умолчанию, а трех базовых элементов не было, тогда делается их копия и они добавляются в ACL по умолчанию;
  • если ACL по умолчанию содержит какие-либо права доступа для конкретных пользователя или группы и не содержит маску прав доступа по умолчанию, то при создании эта маска будет иметь те же права, что и группа по умолчанию.
Пример. Изменить разрешения для файла test.txt, принадлежащего пользователю liza и группе docs, так, чтобы:
  • пользователь ivan имел права на чтение и запись в этот файл;
  • пользователь misha не имел никаких прав на этот файл.
Исходные данные
$ ls -l test.txt
-rw-r-r-- 1 liza docs 8 янв 22 15:54 test.txt
$ getfacl test.txt
# file: test.txt
# owner: liza
# group: docs
user::rw-
group::r--
other::r--
Установить разрешения (от пользователя liza):
$ setfacl -m u:ivan:rw- test.txt
$ setfacl -m u:misha:--- test.txt
Просмотреть разрешения (от пользователя liza):
$ getfacl test.txt
# file: test.txt
# owner: liza
# group: docs
user::rw-
user:ivan:rw-
user:misha:---
group::r--
mask::rw-
other::r--

Примечание

Символ «+» (плюс) после прав доступа в выводе команды ls -l указывает на использование ACL:
$ ls -l test.txt
-rw-rw-r--+ 1 liza docs 8 янв 22 15:54 test.txt

Глава 85. Etcnet

Etcnet (/etc/net) — это система управления настройками сети, которая использует каталог /etc/net для хранения конфигурационных файлов. В дистрибутивах ALT она заменяет или дополняет стандартные механизмы, такие как ifupdown, и предоставляет более гибкую модель настройки интерфейсов, VLAN, мостов, туннелей и других сетевых сущностей.

85.1. Конфигурационные файлы

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

Важно

Для редактирования конфигурационных файлов требуются права root. Ошибки в настройках могут привести к потере сетевого подключения.
Основные подкаталоги и файлы:
  • ifaces — каталог с подкаталогами для каждого сетевого интерфейса:
    • default — базовые настройки, общие для всех интерфейсов (не привязаны к конкретному устройству);
    • enp0s3 — настройки для интерфейса enp0s3;
    • lo — настройки для локального интерфейса (loopback);
    • unknown — шаблоны для интерфейсов, для которых нет отдельного каталога.

    Примечание

    Количество подкаталогов зависит от числа настроенных интерфейсов.
  • options.d — каталог с общими настройками etcnet. Файлы (например, 00-default) читаются в алфавитном порядке. Позволяют задать глобальные параметры;
  • scripts — каталог с пользовательскими скриптами, которые выполняются при поднятии или остановке интерфейсов;
  • sysctl.conf — файл с параметрами ядра (sysctl), применяемыми после активации интерфейсов.
Конфигурационные файлы интерфейса располагаются в каталоге /etc/net/ifaces/<название интерфейса>.
Основные файлы, используемые для настройки сетевых интерфейсов:
  • options — основные параметры интерфейса;
  • ipv4address — IP-адрес и маска сети;
  • ipv4route — маршрут по умолчанию;
  • resolv.conf — DNS-серверы и домены.
Пример файла options для получения настроек сети по DHCP (если в сети развернут DHCP-сервер):
BOOTPROTO=dhcp
TYPE=eth
NM_CONTROLLED=no
DISABLED=no
CONFIG_WIRELESS=no
CONFIG_IPV4=yes
SYSTEMD_CONTROLLED=no
ONBOOT=yes
CONFIG_IPV6=no
где:
  • BOOTPROTO — способ получения IP-адреса:
    • static — статический адрес (из файла ipv4address);
    • dhcp — автоматически через DHCP;
    • ipv4ll — адрес link-local из диапазона 169.254.0.0/16.
  • TYPE — тип соединения:
    • eth — Ethernet (проводное);
    • bri — Ethernet-мост (bridge);
    • bond — агрегация (объединение интерфейсов);
    • vlan — VLAN-интерфейс.
  • NM_CONTROLLED — управляется ли интерфейс NetworkManager (yes/no);
  • DISABLED — отключен ли интерфейс (yes/no);
  • CONFIG_WIRELESS — беспроводной интерфейс (yes/no);
  • CONFIG_IPV4 — включена ли поддержка IPv4 (yes/no);
  • SYSTEMD_CONTROLLED — управляется ли интерфейс systemd-networkd (yes/no);
  • ONBOOT — активировать при загрузке (yes/no);
  • CONFIG_IPV6 — включена ли поддержка IPv6 (yes/no).
В таблице Сетевая подсистема и параметры файла options показано соответствие параметров options сетевой подсистеме.

Таблица 85.1. Сетевая подсистема и параметры файла options

Сетевая подсистема
DISABLED
NM_CONTROLLED
SYSTEMD_CONTROLLED
BOOTPROTO
Etcnet
no
no
no
static (файл ipv4address должен существовать) или dhcp
NetworkManager (etcnet)
yes
yes
no
static (файл ipv4address должен существовать) или dhcp
NetworkManager (native)
yes
yes
no
static (файл ipv4address должен быть удалён)
systemd-networkd
yes
no
yes
Интерфейс не контролируется
yes
no
no
любое значение

85.2. Управление и диагностика сетевых интерфейсов

85.2.1. Просмотр информации

В данном разделе приведены команды для диагностики и отображения состояния сети. Они не изменяют конфигурацию.
Просмотр информации о состоянии сетевых интерфейсов:
$ ip link show
Показывает все интерфейсы, их состояние (UP/DOWN), MAC-адреса.
Просмотр информации об IP-адресах всех сетевых интерфейсов:
$ ip address
Подробный вывод: IPv4, IPv6, маски, интерфейсы. Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:19:a1:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.134/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3
       valid_lft 22677sec preferred_lft 19527sec
    inet6 fd2d:9ff1:91a6:0:a00:27ff:feb3:93a9/64 scope global dynamic mngtmpaddr proto kernel_ra
       valid_lft 4294186711sec preferred_lft 4294186711sec
где:
  • enp0s3 — имя сетевого интерфейса;
  • 08:00:27:19:a1:7d — MAC-адрес сетевой карты;
  • 192.168.0.134/24 — IPv4-адрес и маска.
  • fd2d:9ff1:91a6:0:a00:27ff:feb3:93a9/64 — IPv6-адрес и маска.
Команда:
$ ip -br addr
Это сокращённая версия ip addr, которая выводит краткую информацию о всех интерфейсах: имя, состояние, IP-адрес и маску. Пример вывода:
lo                              UNKNOWN        127.0.0.1/8
enp0s3                          UNKNOWN        192.168.0.60/24
enp0s8                          UP
enp0s9                          UP
enp0s10                         UP
bond0                           UP             192.168.0.62/24
br0                             UP             192.168.0.61/24

UP — интерфейс активен; DOWN — выключен; UNKNOWN — состояние не определено.
Просмотр информации о конкретном интерфейсе:
$ ip address show enp0s3
Пример вывода:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:19:a1:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.134/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
Вывести таблицу маршрутизации:
$ ip route
Пример вывода:
default via 192.168.0.10 dev enp0s3 proto static metric 100
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.134 metric 100
Показывает маршруты, включая шлюз по умолчанию.
Вывести ARP-таблицу:
$ ip neigh show
Пример вывода:
192.168.0.30 dev enp0s3 lladdr 00:11:32:3b:78:10 STALE
192.168.0.32 dev enp0s3 lladdr 20:1a:06:ce:f0:01 REACHABLE
192.168.0.2 dev enp0s3 lladdr 6c:3b:6b:df:79:94 STALE
Отображает соответствие IP → MAC в локальной сети.
Вывести статистику интерфейсов:
$ ip -s link
Показывает количество переданных/принятых пакетов, ошибки, сброшенные пакеты.

85.2.2. Управление сетевыми интерфейсами

Для управления настроенными сетевыми интерфейсами можно использовать следующие команды:
# ifup <имя_интерфейса> # включить указанный интерфейс
# ifdown <имя_интерфейса> # выключить указанный интерфейс
Пример:
# ifup enp0s3
# ifdown br0

Примечание

Эти команды управляют интерфейсами только в текущей сессии. После перезагрузки системы или перезапуска сервиса network состояние интерфейсов восстанавливается в соответствии с конфигурацией.
Чтобы отключить или включить автозапуск интерфейса при старте системы, необходимо изменить значение параметра ONBOOT в файле options, расположенного в каталоге интерфейса /etc/net/ifaces/<название интерфейса>/.
Пример отключения интерфейсов br0, bond0, enp0s8:
# ifdown br0 && ifdown bond0 && ifdown enp0s8
Включение ранее отключённых интерфейсов:
# ifup enp0s8 && ifup br0 && ifup bond0

Примечание

Следует убедиться, что физические интерфейсы (например, enp0s8) подняты до поднятия моста или bonding-интерфейса.

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

В данном разделе приведены команды для временного изменения сетевой конфигурации. Изменения не сохраняются после перезагрузки. Для постоянной настройки необходимо внести изменения в /etc/net/ifaces/.
Включить/выключить интерфейс:
# ip link set enp0s3 up
# ip link set enp0s3 down
Аналог ifup/ifdown.
Назначить/удалить IP:
# ip addr add 192.168.0.100/24 dev enp0s3
# ip addr del 192.168.0.100/24 dev enp0s3
Добавить/удалить маршрут:
# ip route add default via 192.168.0.1 dev enp0s3
# ip route add 10.0.0.0/8 via 192.168.0.1
# ip route del default
Применить постоянную конфигурацию:
# systemctl restart network
Применяет настройки из /etc/net/ifaces/.
Сервис network поддерживает следующие команды:
  • start — запускает все постоянные интерфейсы. Hotplug-интерфейсы настраиваются при событии;
  • startwith <профиль> — запускает с указанным профилем, а не автоматически определённым;
  • stop — останавливает все постоянные интерфейсы;
  • stopwith <профиль> — останавливает с указанным профилем;
  • restart — эквивалентно stop + start;
  • restartwith <профиль> — перезапускает в контексте указанного профиля;
  • switchto <профиль> — переключается на указанный профиль (аналог stop + startwith);
  • reload — перезагружает конфигурацию активных интерфейсов (без остановки);
  • check — проверяет целостность конфигурационных файлов.

85.3. Настройка статического IP-адреса

Пример настройки статического IP-адреса на интерфейсе enp0s3:
  1. Установить BOOTPROTO=static в файле options.
  2. Создать файл ipv4address с IP-адресом:
    # echo "192.168.0.60/24" > /etc/net/ifaces/enp0s3/ipv4address
    
  3. Создать файл ipv4route с маршрутом по умолчанию:
    # echo "default via 192.168.0.1" > /etc/net/ifaces/enp0s3/ipv4route
    
  4. При необходимости указать DNS-серверы в resolv.conf:
    # echo "nameserver 192.168.0.1" > /etc/net/ifaces/enp0s3/resolv.conf
    # echo "nameserver 8.8.8.8" >> /etc/net/ifaces/enp0s3/resolv.conf
    

    Важно

    > — перезаписывает файл, >> — добавляет строку в конец файла.
  5. Применить изменения:
    # systemctl restart network
  6. Проверить результат:
    $ ip addr show enp0s3
    $ ip route
    
    Пример вывода ip addr show enp0s3:
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 08:00:27:19:a1:7d brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.60/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3
           valid_lft 22677sec preferred_lft 19527sec
    
    Пример вывода ip route:
    default via 192.168.0.1 dev enp0s3
    192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.60
    

85.4. Настройка сетевого моста

Сетевой мост — это программный аналог физического коммутатора L2. Мост объединяет физические и виртуальные сетевые интерфейсы в один широковещательный домен, позволяя виртуальным машинам (ВМ) и контейнерам взаимодействовать друг с другом и с внешней сетью.
Пример настройки сетевого моста br0, в который будет включён физический интерфейс enp0s8:
  1. Создать или изменить файл options в каталоге /etc/net/ifaces/enp0s8/:
    # cat <<EOF > /etc/net/ifaces/enp0s8/options
    TYPE=eth
    DISABLED=no
    NM_CONTROLLED=no
    CONFIG_IPV4=YES
    EOF
    
  2. Удалить файлы с IP-адресами и маршрутами:
    # rm -f /etc/net/ifaces/enp0s8/{i,r}*
    

    Примечание

    Если интерфейс ранее имел IP-адрес, он должен быть удалён, так как IP-адрес назначается самому мосту, а не входящим в него интерфейсам.
  3. Создать каталог для интерфейса моста:
    # mkdir /etc/net/ifaces/br0
    
  4. Создать файл options:
    # cat <<EOF > /etc/net/ifaces/br0/options
    BOOTPROTO=static
    CONFIG_WIRELESS=no
    CONFIG_IPV4=yes
    HOST='enp0s8'
    ONBOOT=yes
    TYPE=bri
    EOF
    
    HOST='enp0s8' — указывает, какие интерфейсы входят в мост.

    Примечание

    Все интерфейсы, входящие в мост, должны быть перечислены в параметре HOST в настройках моста.
    В параметре HOST можно указать несколько интерфейсов:
    HOST='enp0s8 enp0s9'
  5. Создать файл ipv4address с IP-адресом интерфейса br0:
    # echo "192.168.0.61/24" > /etc/net/ifaces/br0/ipv4address
    
  6. Создать файл ipv4route с адресом шлюза:
    # echo "default via 192.168.0.1" > /etc/net/ifaces/br0/ipv4route
    
  7. Применить изменения:
    # systemctl restart network
  8. Проверить результат:
    $ ip addr show br0
    Пример вывода:
    8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 08:00:27:3f:57:63 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.61/24 scope global br0
           valid_lft forever preferred_lft forever
    
    Показать все интерфейсы:
    $ ip addr
    Пример вывода:
    …
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
        link/ether 08:00:27:3f:57:63 brd ff:ff:ff:ff:ff:ff
    8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 08:00:27:3f:57:63 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.61/24 scope global br0
           valid_lft forever preferred_lft forever
    …
    

    Примечание

    Интерфейс enp0s8 имеет флаг master br0 — это означает, что он включён в мост.

Примечание

Сетевые мосты можно создать в веб-интерфейсе ЦУС, подробнее см. Сетевые мосты.

85.5. Настройка объединения интерфейсов (bonding)

Объединение интерфейсов (bonding) — это технология, позволяющая объединить два и более физических сетевых интерфейса в один логический для повышения отказоустойчивости (если один интерфейс выходит из строя, трафик переключается на другой) или увеличения пропускной способности (в режимах балансировки нагрузки).
В таблице Режимы агрегации Linux Bond приведены режимы агрегации Linux Bond.

Таблица 85.2. Режимы агрегации Linux Bond

Режим
Название
Описание
Отказоустойчивость
Балансировка нагрузки
balance-rr или mode=0
Round-robin
Режим циклического выбора активного интерфейса для трафика. Пакеты последовательно передаются и принимаются через каждый интерфейс один за другим. Данный режим не требует применения специальных коммутаторов
Да
Да
active-backup или mode=1
Active Backup
В этом режиме активен только один интерфейс, остальные находятся в режиме горячей замены. Если активный интерфейс выходит из строя, его заменяет резервный. MAC-адрес интерфейса виден извне только на одном сетевом адаптере, что предотвращает путаницу в сетевом коммутаторе. Это самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов
Да
Нет
balance-xor или mode=2
XOR
Один и тот же интерфейс работает с определённым получателем. Передача пакетов распределяется между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Режим не требует применения специальных коммутаторов. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость
Да
Да
broadcast или mode=3
Широковещательный
Трафик идёт через все интерфейсы одновременно
Да
Нет
LACP (802.3ad) или mode=4
Агрегирование каналов по стандарту IEEE 802.3ad
В группу объединяются одинаковые по скорости и режиму интерфейсы. Все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки)
Да
Да
balance-tlb или mode=5
Адаптивная балансировка нагрузки при передаче
Исходящий трафик распределяется в соответствии с текущей нагрузкой (с учетом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт). Входящие пакеты принимаются только активным сетевым интерфейсом
Да
Да (исходящий трафик)
balance-alb или mode=6
Адаптивная балансировка нагрузки
Включает в себя балансировку исходящего трафика, плюс балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов (балансировка на приём достигается на уровне протокола ARP, перехватом ARP ответов локальной системы и перезаписью физического адреса на адрес одного из сетевых интерфейсов, в зависимости от загрузки)
Да
Да
В таблице Режимы выбора каналов при организации балансировки нагрузки приведены алгоритмы выбора каналов (распределения пакетов между физическими каналами, входящими в многоканальное соединение) для режимов balance-alb, balance-tlb, balance-xor, 802.3ad (значение параметра xmit_hash_policy).

Таблица 85.3. Режимы выбора каналов при организации балансировки нагрузки

Режим
Описание
layer2
Канал для отправки пакета однозначно определяется комбинацией MAC-адреса источника и MAC-адреса назначения. Трафик между определённой парой узлов всегда идёт по одному каналу. Алгоритм совместим с IEEE 802.3ad. Этот режим используется по умолчанию
layer2+3
Канал для отправки пакета определяется по совокупности MAC- и IP-адресов источника и назначения. Трафик между определённой парой IP-хостов всегда идёт по одному каналу (обеспечивается более равномерная балансировка трафика, особенно в случае, когда большая его часть передаётся через промежуточные маршрутизаторы). Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм совместим с IEEE 802.3ad
layer3+4
Канал для отправки пакета определяется по совокупности IP-адресов и номеров портов источника и назначения (трафик определённого узла может распределяться между несколькими каналами, но пакеты одного и того же TCP/UDP-соединения всегда передаются по одному и тому же каналу). Для фрагментированных пакетов TCP и UDP, а также для всех прочих протоколов 4 уровня, учитываются только IP-адреса. Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм не полностью совместим с IEEE 802.3ad
Пример настройки объединения (bond) интерфейсов enp0s9 и enp0s10 в логический интерфейс bond0 с режимом active-backup:
  1. Создать или изменить файлы options для каждого интерфейса (enp0s9 и enp0s10):
    # cat <<EOF > /etc/net/ifaces/enp0s9/options
    TYPE=eth
    DISABLED=no
    NM_CONTROLLED=no
    CONFIG_IPV4=YES
    EOF
    
    # cat <<EOF > /etc/net/ifaces/enp0s10/options
    TYPE=eth
    DISABLED=no
    NM_CONTROLLED=no
    CONFIG_IPV4=YES
    EOF
    
  2. Удалить IP-адреса и маршруты:
    # rm -f /etc/net/ifaces/enp0s9/{i,r}*
    # rm -f /etc/net/ifaces/enp0s10/{i,r}*
    
  3. Создать каталог для интерфейса bond0:
    # mkdir /etc/net/ifaces/bond0
    
  4. Создать файл options:
    # cat <<EOF > /etc/net/ifaces/bond0/options
    BOOTPROTO=static
    CONFIG_WIRELESS=no
    CONFIG_IPV4=yes
    HOST='enp0s9 enp0s10'
    ONBOOT=yes
    TYPE=bond
    BONDOPTIONS='miimon=100'
    BONDMODE=1
    EOF
    
    где:
    • BONDMODE=1 — режим агрегации Active Backup;
    • HOST='enp0s9 enp0s10' — интерфейсы, входящие в объединение;
    • miimon=100 —  интервал проверки состояния линка (100 мс).
  5. Создать файл ipv4address с IP-адресом для интерфейса bond0:
    # echo "192.168.0.62/24" > /etc/net/ifaces/bond0/ipv4address
    
  6. Создать файл маршрутов ipv4route:
    # echo "default via 192.168.0.1" > /etc/net/ifaces/bond0/ipv4route
    
  7. Применить изменения:
    # systemctl restart network
  8. Проверить результат:
    • просмотр статуса bonding:
      $ cat /proc/net/bonding/bond0
      Пример вывода:
      Ethernet Channel Bonding Driver: v6.12.45-6.12-alt1
      
      Bonding Mode: fault-tolerance (active-backup)
      Primary Slave: None
      Currently Active Slave: enp0s10
      MII Status: up
      MII Polling Interval (ms): 100
      Up Delay (ms): 0
      Down Delay (ms): 0
      Peer Notification Delay (ms): 0
      
      Slave Interface: enp0s10
      MII Status: up
      Speed: 1000 Mbps
      Duplex: full
      Link Failure Count: 0
      Permanent HW addr: 08:00:27:51:a2:b4
      Slave queue ID: 0
      
      Slave Interface: enp0s9
      MII Status: up
      Speed: 1000 Mbps
      Duplex: full
      Link Failure Count: 0
      Permanent HW addr: 08:00:27:76:e2:b7
      Slave queue ID: 0
      
    • просмотр интерфейса bond0:
      $ ip addr show bond0
      Пример вывода:
      9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
          link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
          inet 192.168.0.62/24 scope global bond0
             valid_lft forever preferred_lft forever
      
      просмотр всех интерфейсов:
      $ ip addr
      Пример вывода:
      …
      4: enp0s9: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
          link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff permaddr 08:00:27:76:e2:b7
      5: enp0s10: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
          link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
      9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
          link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
          inet 192.168.0.62/24 scope global bond0
             valid_lft forever preferred_lft forever
      …
      

      Примечание

      Флаги SLAVE и MASTER подтверждают корректную настройку.

Примечание

Агрегированный bond-интерфейс можно создать в веб-интерфейсе ЦУС, подробнее см. Объединение сетевых интерфейсов.

85.6. Настройка VLAN

VLAN (Virtual Local Area Network) — это сетевой стандарт IEEE 802.1Q, позволяющий создавать логически изолированные сетевые сегменты на одном физическом интерфейсе. Это используется для разделения трафика между разными сетями (например, LAN, DMZ, VoIP).

Примечание

Идентификатор VLAN (VID) может принимать значения от 1 до 4095. Следует обратить внимание, что 4094 является верхней допустимой границей идентификатора VLAN, а 4095 зарезервирован для внутренних нужд (например, отбрасывание трафика с недопустимыми тегами).
Пример настройки VLAN с ID 100 на интерфейсе enp0s3:
  1. Создать каталог для VLAN с идентификатором enp0s3.100:
    # mkdir /etc/net/ifaces/enp0s3.100
    
  2. Создать файл options:
    # cat <<EOF > /etc/net/ifaces/enp0s3.100/options
    BOOTPROTO=static
    CONFIG_WIRELESS=no
    CONFIG_IPV4=yes
    HOST=enp0s3
    ONBOOT=yes
    TYPE=vlan
    VID=100
    EOF
    
    где:
    • HOST=enp0s3 — указывает физический интерфейс;
    • VID=100 — идентификатор VLAN.
  3. Создать файл ipv4address с IP-адресом для интерфейса enp0s3.100:
    # echo "192.168.10.63/24" > /etc/net/ifaces/enp0s3.100/ipv4address
    
  4. Создать файл ipv4route с маршрутом по умолчанию для интерфейса enp0s3.100:
    # echo "default via 192.168.10.1" > /etc/net/ifaces/enp0s3.100/ipv4route
    
  5. Применить изменения:
    # systemctl restart network
  6. Показать VLAN-интерфейс:
    $ ip addr show enp0s3.100
    Пример вывода:
    12: enp0s3.100@enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 08:00:27:06:39:4d brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.63/24 scope global enp0s3.100
           valid_lft forever preferred_lft forever
    
    Показать все интерфейсы:
    $ ip addr
    Пример вывода:
    …
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 …
        inet 192.168.0.60/24 brd 192.168.0.255 scope global enp0s3
    12: enp0s3.100@enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 …
        inet 192.168.10.63/24 scope global enp0s3.100
    …
    

Примечание

VLAN можно создать в веб-интерфейсе ЦУС, подробнее см. VLAN интерфейсы.

85.6.1. Q-in-Q интерфейс

Q-in-Q (802.1Q-in-802.1Q) — технология, позволяющая инкапсулировать один VLAN-тег в другой. Используется в провайдерских сетях для передачи трафика клиентов с сохранением их внутренней структуры VLAN.
Пример настройки Q-in-Q интерфейса enp0s3.100.200 (внешняя метка — 100, внутренняя — 200):
  1. Создать каталог для Q-in-Q интерфейса:
    # mkdir /etc/net/ifaces/enp0s3.100.200
    
  2. Создать файл options:
    # cat <<EOF > /etc/net/ifaces/enp0s3.100.200/options
    BOOTPROTO=static
    HOST=enp0s3.100
    TYPE=vlan
    VID=200
    VLAN_REORDER_HDR=0
    EOF
    
    где:
    • HOST=enp0s3.100 — указывает на внешний VLAN-интерфейс;
    • VID=200 — внутренний (клиентский) VLAN;
    • VLAN_REORDER_HDR=0 — отключает переупорядочивание заголовков (важно для Q-in-Q).
  3. Создать файл ipv4address с IP-адресом для интерфейса enp0s3.100.200:
    # echo "192.168.20.64/24" > /etc/net/ifaces/enp0s3.100.200/ipv4address
    
  4. Создать файл ipv4route с настройкой маршрута:
    # echo "default via 192.168.20.1" > /etc/net/ifaces/enp0s3.100.200/ipv4route
    
  5. Применить изменения:
    # systemctl restart network
  6. Показать Q-in-Q интерфейс:
    $ ip addr show enp0s3.100.200
    Пример вывода:
    16: enp0s3.100.200@enp0s3.100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 08:00:27:06:39:4d brd ff:ff:ff:ff:ff:ff
        inet 192.168.20.64/24 scope global enp0s3.100.200
           valid_lft forever preferred_lft forever
    
    Показать все интерфейсы:
    $ ip addr
    Пример вывода:
    …
    2:  enp0s3: … inet 192.168.0.60/24
    15: enp0s3.100@enp0s3: … inet 192.168.10.63/24
    16: enp0s3.100.200@enp0s3.100: … inet 192.168.20.64/24
    …
    

    Примечание

    Интерфейс enp0s3.100.200 «привязан» к enp0s3.100, что соответствует Q-in-Q.

Глава 86. Режим суперпользователя

86.1. Какие бывают пользователи?

Linux — система многопользовательская, а потому пользователь — ключевое понятие для организации всей системы доступа в Linux. Файлы всех пользователей в Linux хранятся раздельно, у каждого пользователя есть собственный домашний каталог, в котором он может хранить свои данные. Доступ других пользователей к домашнему каталогу пользователя может быть ограничен.
Суперпользователь в Linux — это выделенный пользователь системы, на которого не распространяются ограничения прав доступа. Именно суперпользователь имеет возможность произвольно изменять владельца и группу файла. Ему открыт доступ на чтение и запись к любому файлу или каталогу системы.
Среди учётных записей Linux всегда есть учётная запись суперпользователя — root. Поэтому вместо «суперпользователь» часто говорят «root». Множество системных файлов принадлежат root, множество файлов только ему доступны для чтения или записи. Пароль этой учётной записи — одна из самых больших драгоценностей системы. Именно с её помощью системные администраторы выполняют самую ответственную работу.

86.2. Для чего может понадобиться режим суперпользователя?

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

86.3. Как получить права суперпользователя?

Для опытных пользователей, умеющих работать с командной строкой, существует два различных способа получить права суперпользователя.
Первый — это зарегистрироваться в системе под именем root.
Второй способ — воспользоваться специальной утилитой su (shell of user), которая позволяет выполнить одну или несколько команд от лица другого пользователя. По умолчанию эта утилита выполняет команду sh от пользователя root, то есть запускает командный интерпретатор. Отличие от предыдущего способа в том, что всегда известно, кто именно запускал su, а значит, ясно, кто выполнил определённое административное действие.
В некоторых случаях удобнее использовать не su, а утилиту sudo, которая позволяет выполнять только заранее заданные команды.

Важно

Для того чтобы воспользоваться командами su и sudo, необходимо быть членом группы wheel. Пользователь, созданный при установке системы, по умолчанию уже включён в эту группу.
В дистрибутивах Альт для управления доступом к важным службам используется подсистема control. control — механизм переключения между неким набором фиксированных состояний для задач, допускающих такой набор.
Команда control доступна только для суперпользователя (root). Для того чтобы посмотреть, что означает та или иная политика control (разрешения выполнения конкретной команды, управляемой control), надо запустить команду с ключом help:
# control su help
Запустив control без параметров, можно увидеть полный список команд, управляемых командой (facilities) вместе с их текущим состоянием и набором допустимых состояний.

86.4. Как перейти в режим суперпользователя?

Для перехода в режим суперпользователя наберите в терминале команду (минус важен!):
su -
Если воспользоваться командой su без ключа, то происходит вызов командного интерпретатора с правами root. При этом значение переменных окружения, в частности $PATH, остаётся таким же, как у пользователя: в переменной $PATH не окажется каталогов /sbin, /usr/sbin, без указания полного имени будут недоступны команды route, shutdown, mkswap и другие. Более того, переменная $HOME будет указывать на каталог пользователя, все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами root в каталоге пользователя, что в дальнейшем может вызвать проблемы.
Чтобы избежать этого, следует использовать su -. В этом режиме su запустит командный интерпретатор в качестве login shell, и он будет вести себя в точности так, как если бы в системе зарегистрировался root.

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

87.1. Общая информация

Пользователи и группы внутри системы обозначаются цифровыми идентификаторами — UID и GID, соответственно.
Пользователь может входить в одну или несколько групп. По умолчанию он входит в группу, совпадающую с его именем. Чтобы узнать, в какие еще группы входит пользователь, введите команду id, вывод её может быть примерно следующим:
uid=1000(test) gid=1000(test) группы=1000(test),16(rpm)
Такая запись означает, что пользователь test (цифровой идентификатор 1000) входит в группы test и rpm. Разные группы могут иметь разный уровень доступа к тем или иным каталогам; чем в большее количество групп входит пользователь, тем больше прав он имеет в системе.

Примечание

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

87.2. Команда useradd

Команда useradd регистрирует нового пользователя или изменяет информацию по умолчанию о новых пользователях.
Синтаксис:
useradd [ОПЦИИ...] <ИМЯ ПОЛЬЗОВАТЕЛЯ>
useradd -D [ОПЦИИ...]
Некоторые опции:
  • -b каталог — базовый каталог для домашнего каталога новой учётной записи;
  • -c комментарий — текстовая строка (обычно используется для указания фамилии и мени);
  • -d каталог — домашний каталог новой учётной записи;
  • -D — показать или изменить настройки по умолчанию для useradd;
  • -e дата — дата устаревания новой учётной записи;
  • -g группа — имя или ID первичной группы новой учётной записи;
  • -G группы — список дополнительных групп (через запятую) новой учётной записи;
  • -m — создать домашний каталог пользователя;
  • -M — не создавать домашний каталог пользователя;
  • -p пароль — зашифрованный пароль новой учётной записи (не рекомендуется);
  • -s оболочка — регистрационная оболочка новой учётной записи (по умолчанию /bin/bash);
  • -u UID — пользовательский ID новой учётной записи.
Команда useradd имеет множество параметров, которые позволяют менять её поведение по умолчанию. Например, можно принудительно указать, какой будет UID или какой группе будет принадлежать пользователь:
# useradd -u 1500 -G usershares new_user

87.3. Команда passwd

Команда passwd поддерживает традиционные опции passwd и утилит shadow.
Синтаксис:
passwd [ОПЦИИ...] [ИМЯ ПОЛЬЗОВАТЕЛЯ]
Возможные опции:
  • -d, --delete — удалить пароль для указанной записи;
  • -f, --force — форсировать операцию;
  • -k, --keep-tokens — сохранить не устаревшие пароли;
  • -l, --lock — блокировать указанную запись;
  • --stdin — прочитать новые пароли из стандартного ввода;
  • -S, --status — дать отчет о статусе пароля в указанной записи;
  • -u, --unlock — разблокировать указанную запись;
  • -?, --help — показать справку и выйти;
  • --usage — дать короткую справку по использованию;
  • -V, --version — показать версию программы и выйти.
Код выхода: при успешном завершении passwd заканчивает работу с кодом выхода 0. Код выхода 1 означает, что произошла ошибка. Текстовое описание ошибки выводится на стандартный поток ошибок.
Пользователь может в любой момент поменять свой пароль. Единственное, что требуется для смены пароля — знать текущий пароль.
Только суперпользователь может обновить пароль другого пользователя.

87.4. Добавление нового пользователя

Для добавления нового пользователя используйте команды useradd и passwd:
# useradd test1

# passwd test1
passwd: updating all authentication tokens for user test1.

You can now choose the new password or passphrase.

A valid password should be a mix of upper and lower case letters, digits, and
other characters.  You can use a password containing at least 7 characters
from all of these classes, or a password containing at least 8 characters
from just 3 of these 4 classes.
An upper case letter that begins the password and a digit that ends it do not
count towards the number of character classes used.

A passphrase should be of at least 3 words, 11 to 72 characters long, and
contain enough different characters.

Alternatively, if no one else can see your terminal now, you can pick this as
your password: "Burst*texas$Flow".

Enter new password:
Weak password: too short.
Re-type new password:
passwd: all authentication tokens updated successfully.
В результате описанных действий в системе появился пользователь test1 с некоторым паролем. Если пароль оказался слишком слабым с точки зрения системы, она об этом предупредит (как в примере выше). Пользователь в дальнейшем может поменять свой пароль при помощи команды passwd — но если он попытается поставить слабый пароль, система откажет ему (в отличие от root) в изменении.
В Альт Сервер для проверки паролей на слабость используется модуль PAM passwdqc.

87.5. Настройка парольных ограничений

Настройка парольных ограничений производится в файле /etc/passwdqc.conf.
Файл passwdqc.conf состоит из 0 или более строк следующего формата:
опция=значение
Пустые строки и строки, начинающиеся со знака решетка («#»), игнорируются. Символы пробела между опцией и значением не допускаются.
Опции, которые могут быть переданы в модуль (в скобках указаны значения по умолчанию): min=N0,N1,N2,N3,N4 (min=disabled,24,11,8,7) — минимально допустимая длина пароля.
Используемые типы паролей по классам символов (алфавит, число, спецсимвол, верхний и нижний регистр) определяются следующим образом:
  • тип N0 используется для паролей, состоящих из символов только одного класса;
  • тип N1 используется для паролей, состоящих из символов двух классов;
  • тип N2 используется для парольных фраз, кроме этого требования длины, парольная фраза должна также состоять из достаточного количества слов;
  • типы N3 и N4 используются для паролей, состоящих из символов трех и четырех классов, соответственно.
Ключевое слово disabled используется для запрета паролей выбранного типа N0 — N4 независимо от их длины.

Примечание

Каждое следующее число в настройке «min» должно быть не больше, чем предыдущее.
При расчете количества классов символов, заглавные буквы, используемые в качестве первого символа и цифр, используемых в качестве последнего символа пароля, не учитываются.
max=N (max=72) — максимально допустимая длина пароля. Эта опция может быть использована для того, чтобы запретить пользователям устанавливать пароли, которые могут быть слишком длинными для некоторых системных служб. Значение 8 обрабатывается особым образом: пароли длиннее 8 символов, не отклоняются, а обрезаются до 8 символов для проверки надежности (пользователь при этом предупреждается).
passphrase=N (passphrase=3) — число слов, необходимых для ключевой фразы (значение 0 отключает поддержку парольных фраз).
match=N (match=4) — длина общей подстроки, необходимой для вывода, что пароль хотя бы частично основан на информации, найденной в символьной строке (значение 0 отключает поиск подстроки). Если найдена слабая подстрока пароль не будет отклонен; вместо этого он будет подвергаться обычным требованиям к прочности при удалении слабой подстроки. Поиск подстроки нечувствителен к регистру и может обнаружить и удалить общую подстроку, написанную в обратном направлении.
similar=permit|deny (similar=deny) — параметр similar=permit разрешает задать новый пароль, если он похож на старый (параметр similar=deny — запрещает). Пароли считаются похожими, если есть достаточно длинная общая подстрока, и при этом новый пароль с частично удаленной подстрокой будет слабым.
random=N[,only] (random=47) — размер случайно сгенерированных парольных фраз в битах (от 26 до 81) или 0, чтобы отключить эту функцию. Любая парольная фраза, которая содержит предложенную случайно сгенерированную строку, будет разрешена вне зависимости от других возможных ограничений. Значение only используется для запрета выбранных пользователем паролей.
enforce=none|users|everyone (enforce=users) — параметр enforce=users задает ограничение задания паролей в passwd на пользователей без полномочий root. Параметр enforce=everyone задает ограничение задания паролей в passwd и на пользователей, и на суперпользователя root. При значении none модуль PAM будет только предупреждать о слабых паролях.
retry=N (retry=3) — количество запросов нового пароля, если пользователь с первого раза не сможет ввести достаточно надежный пароль и повторить его ввод.
Далее приводится пример задания следующих значений в файле /etc/passwdqc.conf:
min=8,7,4,4,4
enforce=everyone
В указанном примере пользователям, включая суперпользователя root, будет невозможно задать пароли:
  • типа N0 (символы одного класса) — длиной меньше восьми символов;
  • типа N1 (символы двух классов) — длиной меньше семи символов;
  • типа N2 (парольные фразы), типа N3 (символы трех классов) и N4 (символы четырех классов) — длиной меньше четырех символов.

87.6. Управление сроком действия пароля

Для управления сроком действия паролей используется команда chage.

Примечание

Должен быть установлен пакет shadow-change:
# apt-get install shadow-change
chage изменяет количество дней между сменой пароля и датой последнего изменения пароля.
Синтаксис команды:
chage [опции] логин
Основные опции:
  • -d, --lastday LAST_DAY — установить последний день смены пароля в LAST_DAY на день (число дней с 1 января 1970). Дата также может быть указана в формате ГГГГ-ММ-ДД;
  • -E, -expiredate EXPIRE_DAYS — установить дату окончания действия учётной записи в EXPIRE_DAYS (число дней с 1 января 1970) Дата также может быть указана в формате ГГГГ-ММ-ДД. Значение -1 удаляет дату окончания действия учётной записи;
  • -I, --inactive INACTIVE — используется для задания количества дней «неактивности», то есть дней, когда пользователь вообще не входил в систему, после которых его учетная запись будет заблокирована. Пользователь, чья учетная запись заблокирована, должен обратиться к системному администратору, прежде чем снова сможет использовать систему. Значение -1 отключает этот режим;
  • -l, --list — просмотр информации о «возрасте» учётной записи пользователя;
  • -m, --mindays MIN_DAYS — установить минимальное число дней перед сменой пароля. Значение 0 в этом поле обозначает, что пользователь может изменять свой пароль, когда угодно;
  • -M, --maxdays MAX_DAYS — установить максимальное число дней перед сменой пароля. Когда сумма MAX_DAYS и LAST_DAY меньше, чем текущий день, у пользователя будет запрошен новый пароль до начала работы в системе. Эта операция может предваряться предупреждением (параметр -W). При установке значения -1, проверка действительности пароля не будет выполняться;
  • -W, --warndays WARN_DAYS — установить число дней до истечения срока действия пароля, начиная с которых пользователю будет выдаваться предупреждение о необходимости смены пароля.
Пример настройки времени действия пароля для пользователя test:
# chage -M 5 test
Получить информацию о «возрасте» учётной записи пользователя test:
# chage -l test
Последний раз пароль был изменён				: мар 13, 2025
Срок действия пароля истекает					: мар 18, 2025
Пароль будет деактивирован через				: никогда
Срок действия учётной записи истекает				: никогда
Минимальное количество дней между сменой пароля			: -1
Максимальное количество дней между сменой пароля		: 5
Количество дней с предупреждением перед деактивацией пароля	: -1

Примечание

Задать время действия пароля для вновь создаваемых пользователей можно, изменив параметр PASS_MAX_DAYS в файле /etc/login.defs.

87.7. Настройка неповторяемости пароля

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

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

В данном случае системный каталог станет доступным для записи пользователям группы pw_users (создайте эту группу и включите туда пользователей).

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

База используемых паролей ведется в файле /etc/security/opasswd, в который пользователи должны иметь доступ на чтение и запись. При этом они могут читать хэши паролей остальных пользователей. Не рекомендуется использовать на многопользовательских системах.
Создайте файл /etc/security/opasswd и дайте права на запись пользователям:
# install -Dm0660 -gpw_users /dev/null /etc/security/opasswd
# chgrp pw_users /etc/security
# chmod g+w /etc/security
Для настройки этого ограничения необходимо изменить файл /etc/pam.d/system-auth-local-only таким образом, чтобы он включал модуль pam_pwhistory после первого появления строки с паролем:
password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        required        pam_pwhistory.so debug use_authtok remember=10 retry=3
После добавления этой строки в файле /etc/security/opasswd будут храниться последние 10 паролей пользователя (содержит хэши паролей всех учетных записей пользователей) и при попытке использования пароля из этого списка будет выведена ошибка:
Password has been already used. Choose another.
В случае если необходимо, чтобы проверка выполнялась и для суперпользователя root, в настройки нужно добавить параметр enforce_for_root:
password        required        pam_pwhistory.so
use_authtok enforce_for_root remember=10 retry=3

87.8. Модификация пользовательских записей

Для модификации пользовательских записей применяется утилита usermod:
# usermod -G audio,rpm,test1 test1
Такая команда изменит список групп, в которые входит пользователь test1 — теперь это audio, rpm, test1.
# usermod -l test2 test1
Будет произведена смена имени пользователя с test1 на test2.
Команды usermod -L test2 и usermod -U test2 соответственно временно блокируют возможность входа в систему пользователю test2 и возвращают всё на свои места.
Изменения вступят в силу только при следующем входе пользователя в систему.
При неинтерактивной смене или задании паролей для целой группы пользователей используйте утилиту chpasswd. На стандартный вход ей следует подавать список, каждая строка которого будет выглядеть как имя:пароль.

87.9. Удаление пользователей

Для удаления пользователей используйте userdel.
Команда userdel test2 удалит пользователя test2 из системы. Если будет дополнительно задан параметр -r, то будет уничтожен и домашний каталог пользователя. Нельзя удалить пользователя, если в данный момент он еще работает в системе.

Глава 88. Система инициализации systemd и sysvinit

88.1. Запуск операционной системы

88.1.1. Запуск системы

Алгоритм запуска компьютера приблизительно такой:
  1. BIOS компьютера.
  2. Загрузчик системы (например, LILO, GRUB или другой). В загрузчике вы можете задать параметры запуска системы или выбрать систему для запуска.
  3. Загружается ядро Linux.
  4. Запускается на выполнение первый процесс в системе — init.
Ядром запускается самая первая программа в системе init. Её задачей является запуск новых процессов и повторный запуск завершившихся. Вы можете посмотреть, где расположился init в иерархии процессов вашей системы, введя команду pstree.
От конфигурации init зависит, какая система инициализации будет использована.

88.1.2. Система инициализации

Система инициализации — это набор скриптов, которые будут выполнены при старте системы.
Существуют разные системы инициализации, наиболее популярной системой являются sysvinit и ее модификации. systemd разрабатывается как замена для sysVinit.
В Альт Сервер используется systemd.

88.2. Системы инициализации systemd и sysvinit

88.2.1. sysvinit

System V — классическая схема инициализации, на которой базируются многие дистрибутивы. Привычна и довольно проста для понимания: init описывает весь процесс загрузки в своем конфигурационном файле /etc/inittab, откуда вызываются другие программы и скрипты на определенном этапе запуска.

88.2.2. systemd

systemd является альтернативной системой инициализации Linux, вобравшей в себя достоинства классического System V init и более современных launchd (OS X), SMF (Solaris) и Upstart (Ubuntu, Fedora), но при этом лишенной многих их недостатков. Он разрабатывался для обеспечения лучшего выражения зависимостей между службами, что позволяет делать одновременно больше работы при загрузке системы, и уменьшить время загрузки системы.
systemd (system daemon) реализует принципиально новый подход к инициализации и контролю работы системы. Одним из ключевых новшеств этого подхода является высокая степень параллелизации запуска служб при инициализации системы, что в перспективе позволяет добиться гораздо более высокой скорости, чем традиционный подход с последовательным запуском взаимозависимых служб. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств). Для отслеживания групп процессов используется механизм cgroups, который также может быть использован для ограничения потребляемых ими системных ресурсов.
Удобство systemd особенно заметно на компьютерах для домашнего пользования — когда пользователи включают и перезагружают компьютер ежедневно. В отличие от sysvinit, подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки.

88.3. Примеры команд управления службами, журнал в systemd

Обратите внимание, что команды service и chkconfig продолжат работать в мире systemd практически без изменений. Тем не менее, в этой таблице показано как выполнить те же действия с помощью встроенных утилит systemctl.

Таблица 88.1. Команды управления службами

Команды Sysvinit
Команды Systemd
Примечания
service frobozz start
systemctl start frobozz.service
Используется для запуска службы (не перезагружает постоянные)
service frobozz stop
systemctl stop frobozz.service
Используется для остановки службы (не перезагружает постоянные)
service frobozz restart
systemctl restart frobozz.service
Используется для остановки и последующего запуска службы
service frobozz reload
systemctl reload frobozz.service
Если поддерживается, перезагружает файлы конфигурации без прерывания незаконченных операций
service frobozz condrestart
systemctl condrestart frobozz.service
Перезапускает службу, если она уже работает
service frobozz status
systemctl status frobozz.service
Сообщает, запущена ли уже служба
ls /etc/rc.d/init.d/
systemctl list-unit-files --type=service (preferred)
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
Используется для отображения списка служб, которые можно запустить или остановить.
Используется для отображения списка всех служб.
chkconfig frobozz on
systemctl enable frobozz.service
Включает службу во время следующей перезагрузки, или любой другой триггер
chkconfig frobozz off
systemctl disable frobozz.service
Выключает службу во время следующей перезагрузки, или любой другой триггер
chkconfig frobozz
systemctl is-enabled frobozz.service
Используется для проверки, сконфигурирована ли служба для запуска в текущем окружении
chkconfig --list
systemctl list-unit-files --type=service(preferred)
ls /etc/systemd/system/*.wants/
Выводит таблицу служб. В ней видно, на каких уровнях загрузки они (не)запускаются
chkconfig frobozz --list
ls /etc/systemd/system/*.wants/frobozz.service
Используется, для отображения на каких уровнях служба (не)запускается
chkconfig frobozz --add
systemctl daemon-reload
Используется, когда вы создаете новую службу или модифицируете любую конфигурацию

Глава 89. Что происходит в системе

Человеку, отвечающему за работоспособность системы, очень важно всегда отчётливо представлять происходящие в ней события. Теоретически, никакое происшествие не должно ускользнуть от его внимания. Однако компьютерные системы настолько сложны, что отслеживать все события в них — выше человеческих возможностей. Для того чтобы довести поток служебной информации до разумного объёма, её надо просеять (выкинуть незначащие данные), классифицировать (разделить на несколько групп сообразно тематике) и журнализировать (сохранить в доступном виде для дальнейшего анализа).
В ОС Альт Сервер функция записи информации о системных событиях и событиях безопасности обеспечивается с помощью системной службы systemd-journald. Она создает и поддерживает структурированные, индексированные журналы, на основе регистрируемой информации, полученной от ядра, от пользовательских процессов через вызов Libc syslog, от потоков STDOUT/STDERR системных служб через собственный API. Журналы данного инструмента хранятся в бинарном виде в /var/log/journal, что исключает возможность просмотра содержимого данных файлов стандартными утилитами обработки текстовых данных. Для просмотра логов используется утилита journalctl.
Можно запускать journalctl с разными ключами:
  • journalctl -b — покажет сообщения только с текущей загрузки;
  • journalctl -f — покажет только последние сообщения и продолжит печатать новые записи при добавлении их в журнал.
Можно посмотреть сообщения определенного процесса:
  • journalctl _PID=1 — покажет сообщения первого процесса (init).
Для ознакомления с прочими возможностями читайте руководство по journalctl. Для этого используйте команду man journalctl.
Стоит заметить, что некоторые службы (например, веб-сервер apache) самостоятельно ведут журнализацию своих событий, поэтому информацию о количестве и местоположении их журналов можно почерпнуть из их файлов настроек (обычно журналы хранятся в /var/log/).
Файл настройки journald находится в /etc/systemd/journald.conf. Справку по этому файлу можно получить, выполнив команду man journald.conf.
Новые рапорты, поступающие в системный журнал, наиболее актуальны, а предыдущие, по мере их устаревания, эту актуальность утрачивают. Если самые старые данные в журнале не удалять, файловая система рано или поздно окажется переполненной. Узнать объем имеющихся на текущий момент логов можно с помощью команды:
# journalctl --disk-usage
Ротация журналов:
  • для удаления старых файлов журналов с помощью указания размера используется опция --vacuum-size. Например, удалить журналы, оставив только последние 200 Мб:
    # journalctl --vacuum-size=200M
    
  • для удаления старых записей по времени используется опция --vacuum-time. Например, удалить журналы, оставив только журналы за последний месяц:
    # journalctl --vacuum-time=1months
    

Примечание

Следует обратить внимание, что запуск --vacuum-size= оказывает лишь косвенное влияние на вывод, показанный --disk-usage, поскольку последний включает активные файлы журнала, в то время как операция очистки работает только с архивными файлами журнала. Аналогично, --vacuum-time= может фактически не уменьшить количество файлов журнала ниже указанного числа, так как не удалит активные файлы журнала.
Настройки ротации файлов журнала можно прописать в конфигурационном файле /etc/systemd/journald.conf, например:
  • установить ограничения на размер хранимых файлов журнала:
    SystemMaxUse=1G
  • ограничить размер отдельных файлов журнала:
    SystemMaxFileSize=200M
  • установить максимальное время хранения записей в одном файле журнала перед ротацией в следующий:
    MaxFileSec=20day
  • ограничить время хранения файлов журнала (удалять файлы журнала, содержащие записи старше указанного промежутка времени):
    MaxRetentionSec=1months

Примечание

После внесения изменений в файл /etc/systemd/journald.conf необходимо перезапустить службу systemd-journald:
# systemctl restart systemd-journald
Некоторые файлы в /var/log/ — не текстовые, они являются неполноценными журналами и представляют собой «свалку событий» для служб авторизации и учёта. Текстовую информацию о входе пользователей в систему и выходе оттуда можно получить по команде last, а узнать о тех, кто в данный момент пользуется системой, помогут команды w и who.
Множество важной информации может дать анализ загруженности системы — сведения о процессорном времени и потреблении оперативной памяти (ps, top, vmstat), сведения об использовании дискового пространства (du, df) и сведения о работе сетевых устройств (netstat).

Глава 90. Документация

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

90.1. Экранная документация

Почти все системы семейства UNIX, включая систему Linux, имеют экранную документацию. Её тексты содержат документацию по системным командам, ресурсам, конфигурационным файлам и т. д., а также могут быть выведены на экран в процессе работы.

90.1.1. man

Для доступа к экранной документации используется команда man (сокращение от manual). Каждая страница руководства посвящена одному объекту системы. Для того чтобы прочесть страницу руководства по программе, необходимо набрать man название_программы. К примеру, если вы хотите узнать, какие опции есть у команды date, вы можете ввести команду:
$ man date
Большинство экранной документации написано для пользователей, имеющих некоторое представление о том, что делает данная команда. Поэтому большинство текстов экранной документации содержит исключительно технические детали команды без особых пояснений. Тем не менее, экранная документация оказывается очень ценной в том случае, если вы помните название команды, но её синтаксис просто выпал у вас из памяти.
Поиск по описаниям man осуществляется командой apropos. Если вы точно не знаете, как называется необходимая вам программа, то поиск осуществляется по ключевому слову, к примеру, apropos date или при помощи ввода слова, обозначающего нужное действие, после команды man -k (например, man -k copy). Слово, характеризующее желаемое для вас действие, можно вводить и на русском языке. При наличии русского перевода страниц руководства man результаты поиска будут выведены на запрашиваемом языке.
«Страница руководства» занимает, как правило, больше одной страницы экрана. Для того чтобы читать было удобнее, man запускает программу постраничного просмотра текстов. Страницы перелистывают пробелом, для выхода из режима чтения описания команд man необходимо нажать на клавиатуре q. Команда man man выдаёт справку по пользованию самой командой man.
Документация в подавляющем большинстве случаев пишется на простом английском языке. Необходимость писать на языке, который будет более или менее понятен большинству пользователей, объясняется постоянным развитием Linux. Дело не в том, что страницу руководства нельзя перевести, а в том, что её придётся переводить всякий раз, когда изменится описываемый ею объект! Например, выход новой версии программного продукта сопровождается изменением его возможностей и особенностей работы, а следовательно, и новой версией документации.
Тем не менее, некоторые наиболее актуальные руководства существуют в переводе на русский язык. Свежие версии таких переводов на русский язык собраны в пакете man-pages-ru. Установив этот пакет, вы добавите в систему руководства, для которых есть перевод, и man по умолчанию будет отображать их на русском языке.

90.1.2. info

Другой источник информации о Linux и составляющих его программах — справочная подсистема info. Страница руководства, несмотря на обилие ссылок различного типа, остаётся «линейным» текстом, структурированным только логически. Документ info — это настоящий гипертекст, в котором множество небольших страниц объединены в дерево. В каждом разделе документа info всегда есть оглавление, из которого можно перейти к нужному подразделу, а затем вернуться обратно (ссылки для перемещения по разделам текста помечены *). Для получения вспомогательной информации о перемещении по тексту используйте клавишу h. Полное руководство info вызывается командой info info. Команда info, введённая без параметров, предлагает пользователю список всех документов info, установленных в системе.

90.2. Документация по пакетам

Дополнительным источником информации об интересующей вас программе, в основном на английском языке, является каталог /usr/share/doc — место хранения разнообразной документации.
Каждый пакет также содержит поставляемую вместе с включённым в него ПО документацию, располагающуюся обычно в каталоге /usr/share/doc/имя_пакета. Например, документация к пакету file-5.45 находится в /usr/share/doc/file-5.45. Для получения полного списка файлов документации, относящихся к пакету, воспользуйтесь командой rpm -qd имя_установленного_пакета.
В документации к каждому пакету вы можете найти такие файлы как README, FAQ, TODO, СhangeLog и другие. В файле README содержится основная информация о программе — имя и контактные данные авторов, назначение, полезные советы и пр. FAQ содержит ответы на часто задаваемые вопросы; этот файл стоит прочитать в первую очередь, если у вас возникли проблемы или вопросы по использованию программы, поскольку большинство проблем и сложностей типичны, вполне вероятно, что в FAQ вы тут же найдёте готовое решение. В файле TODO записаны планы разработчиков на реализацию той или иной функциональности. В файле СhangeLog записана история изменений в программе от версии к версии.
Для поиска внешней информации о программе, например, адреса сайта программы в сети Интернет можно использовать команду rpm -qi имя_установленного_пакета. В информационном заголовке соответствующего пакета, среди прочей информации, будет выведена искомая ссылка.

90.3. Документация к программам, имеющим графический интерфейс

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

Часть XIII. Функциональность операционной системы

Содержание

91. Управление шифрованными разделами
91.1. Работа с зашифрованными дисками
91.2. Шифрование пустого блочного устройства
91.3. Шифрование существующих данных на блочном устройстве с внешним (отсоединённым) заголовком
92. Поддержка файловых систем
93. Поддержка сетевых протоколов
93.1. SMB
93.1.1. Настройка Samba
93.1.2. Настройка клиента
93.2. NFS
93.2.1. Настройка сервера NFS
93.2.2. Использование NFS
93.3. FTP
93.3.1. Настройка сервера FTP
93.3.2. Подключение рабочей станции
93.4. NTP
93.4.1. Настройка сервера NTP
93.4.2. Настройка рабочей станции
93.5. HTTP(S)
93.5.1. Настройка сервера HTTP
93.5.2. Настройка рабочей станции
94. Механизм аудита
94.1. Команда auditd
94.2. Файл конфигурации auditd.conf
94.3. Команда auditctl
94.4. Команда aureport
94.5. Команда ausearch
94.6. Настройка ротации журналов аудита
94.7. Определение правил аудита
94.7.1. Установка правил с помощью auditctl
94.7.2. Установка постоянных правил в файлах .rules
94.7.3. Файлы журнала аудита
94.7.4. Примеры

Глава 91. Управление шифрованными разделами

Шифрование блочных устройств позволяет защитить данные, сделав их недоступными без специальной аутентификации — парольной фразы или ключа. Это особенно важно для мобильных устройств и съёмных носителей: даже при физическом доступе к диску расшифровать его содержимое без ключа невозможно.
LUKS2 (Linux Unified Key Setup, версия 2) является стандартным форматом шифрования блочных устройств в Альт Сервер.
Поддерживаемые алгоритмы:
  • Шифры: aes-xts-plain64, serpent-xts-plain64, twofish-xts-plain64
  • Хеш-функции: sha256, sha512, blake2b
  • PBKDF: argon2id, pbkdf2

Примечание

Для управления шифрованными разделами можно воспользоваться командой cryptsetup. Ниже описаны лишь некоторые возможности утилиты cryptsetup. Для получения более подробной информации используйте команду man cryptsetup.
Шифрованный раздел может быть создан как при установке системы (см. Создание шифрованных разделов), так и вручную (с помощью cryptsetup).

91.1. Работа с зашифрованными дисками

В формате LUKS2 поддерживается до 32 ключевых слотов. Каждый слот может содержать свой ключ, который можно использовать для расшифровки. Пароли можно менять или удалять, при этом восстановление удалённых ключей невозможно.

Примечание

Зашифрованное блочное устройство защищено ключом. Ключ — это либо:
  • парольная фраза;
  • ключевой файл.
По умолчанию: парольные фразы могут содержать до 512 символов, а ключевые файлы — до 8192 КиБ.
Просмотреть параметры зашифрованного раздела можно, выполнив команду:
# cryptsetup luksDump /dev/sdb1
LUKS header information
Version:       	2
Epoch:         	10
Metadata area: 	16384 [bytes]
Keyslots area: 	16744448 [bytes]
UUID:          	87a00f6b-be95-ba47-af78-f38bd4fbcaed
Label:         	(no label)
Subsystem:     	(no subsystem)
Flags:       	(no flags)

Data segments:
  0: crypt
	offset: 16777216 [bytes]
	length: (whole device)
	cipher: aes-xts-plain64
	sector: 512 [bytes]

Keyslots:
  0: luks2
	Key:        256 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 256 bits
	PBKDF:      pbkdf2
	Hash:       sha256
	Iterations: 10727120
	Salt:       50 a2 ab a9 6e dc cd e7 b2 0d 60 82 11 7b 62 af
	            1a 7a 3b 14 0b 26 64 9b fc 81 da f2 14 3b 62 69
	AF stripes: 4000
	AF hash:    sha256
	Area offset:163840 [bytes]
	Area length:131072 [bytes]
	Digest ID:  0
  6: luks2
	Key:        256 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 256 bits
	PBKDF:      argon2id
	Time cost:  4
	Memory:     1000100
	Threads:    2
	Salt:       45 1a 1e e4 c1 73 ee c8 ae 30 e1 91 55 93 7a 26
	            0a 11 43 c7 c3 56 72 1f 7f 4b ec 5f df fa d3 7f
	AF stripes: 4000
	AF hash:    sha256
	Area offset:32768 [bytes]
	Area length:131072 [bytes]
	Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
	Hash:       sha256
	Iterations: 619725
	Salt:       6b 33 83 b5 9a 89 5c 0e 5f ad e2 f2 bc 21 9a 24
	            a7 46 b0 50 72 94 64 92 7e 67 39 69 cc f8 41 f2
	Digest:     65 7c fb 0b fe 73 6a 95 72 03 26 2b dd 3f 60 34
	            81 73 ac 1a 1e 22 3d cc 2b f2 69 78 2a 7c 29 6d
где /dev/sdb1 — шифрованный раздел.

Примечание

Определить является ли устройство LUKS-разделом:
# cryptsetup isLuks -v /dev/sdb1
Команда выполнена успешно.
Если команда завершилась успешно, раздел использует LUKS.
Определить, какие разделы используются системой, и какой из них зашифрован:
# lsblk
NAME                                          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0   60G  0 disk
├─sda1                                          8:17   0    2G  0 part  [SWAP]
├─sda2                                          8:18   0  512M  0 part  /boot/efi
└─sda3                                          8:19   0   38G  0 part  /
sdb                                             8:16   0   18G  0 disk
└─sdb1                                          8:17   0   18G  0 part
  └─luks-87a00f6b-be95-ba47-af78-f38bd4fbcaed 253:0    0   18G  0 crypt /home
sr0                                            11:0    1 1024M  0 rom
В выводе команды cryptsetup luksDump в разделе Keyslots будет отображен список активных слотов:
…
Keyslots:
  0: luks2
…
  6: luks2
…
Чтобы открыть зашифрованный раздел LUKS используется команда:
# cryptsetup open /dev/sdb1 sdb1_encrypted
Чтобы закрыть контейнер LUKS необходимо отмонтировать раздел и выполнить команду:
# cryptsetup close sdb1_encrypted
Команда добавления нового пароля на зашифрованный раздел (требуется предоставить уже имеющийся пароль интерактивно или посредством опции --key-file):
# cryptsetup luksAddKey /dev/sdb1
Введите любую существующую парольную фразу:
Введите новую парольную фразу для слота ключа:
Парольная фраза повторно:
Пароль будет добавлен в первый свободный слот.
Можно указать номер определенного слота с помощью опции --key-slot, например:
# cryptsetup luksAddKey /dev/sdb1 --key-slot 5
Команда замены одного из паролей на другой (старый пароль нужно ввести интерактивно или задать опцией --key-file):
# cryptsetup luksChangeKey /dev/sdb1
Введите изменяемую парольную фразу:
Введите новую парольную фразу:
Парольная фраза повторно:
Если задан номер слота (опцией --key-slot), нужно ввести старый пароль именно для заданного слота, и замена пароля произойдёт тоже в этом слоте. Если номер слота не задан и есть свободный слот, то сначала новый пароль будет записан во временный свободный слот, а потом будет затёрт слот, содержащий старый пароль. Если свободных слотов не окажется, то новый пароль будет записан прямо в слот, ранее содержащий старый пароль.
Чтобы узнать какой слот занимает заданный пароль, можно разблокировать устройство с помощью параметра -v:
# cryptsetup --test-passphrase -v open /dev/sdb1
Не найдено подходящего токена.
Введите парольную фразу для /dev/sdb1:
Слот ключа 0 разблокирован.
Команда выполнена успешно.
Для удаления ключей из заголовка могут использоваться следующие действия:
  • luksRemoveKey — удалить ключ, указав его парольную фразу/ключевой файл;
  • luksKillSlot — удалить ключ, указав его слот (будет запрошен другой действительный ключ). Данная команда полезна, если вы забыли парольную фразу, потеряли ключевой файл или не имеете к нему доступа;
  • erase — удалить все активные ключи.

Примечание

Все вышеперечисленные действия можно использовать для безвозвратного удаления последнего активного ключа для зашифрованного устройства!

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

Команда cryptsetup erase не запрашивает пароль и удаляет все ключевые слоты без подтверждения. Восстановить доступ можно только из резервной копии заголовка.
Примеры удаления паролей:
  • удалить заданный пароль (затирает слот):
    # cryptsetup luksRemoveKey /dev/sdb1
    Введите удаляемую парольную фразу:
    
  • удаление по слоту (если известен номер слота):
    # cryptsetup luksKillSlot /dev/sdb1 5
    Введите любую оставшуюся парольную фразу:
    

Важно

При удалении ключей необходимо убедиться, что остается хотя бы один рабочий ключ.

Важно

При использовании опции -q (тихий режим) удаление даже последнего пароля будет выполнено без каких-либо предупреждений. Если ни одного пароля не останется (то есть все слоты ключей будут пусты), дешифровать LUKS-раздел станет невозможно.
Создание резервной копии заголовка:
# cryptsetup luksHeaderBackup --header-backup-file luks_header.img /dev/sdb1

Примечание

Резервную копию заголовка необходимо хранить в надёжном месте вне шифруемого устройства.
Восстановление заголовка:
# cryptsetup luksHeaderRestore --header-backup-file luks_header.img /dev/sdb1
ПРЕДУПРЕЖДЕНИЕ!
========
Устройство /dev/sdb1 уже содержит заголовок LUKS2. Замена заголовка уничтожит существующие слоты ключей.

Вы уверены? (введите «yes» заглавными буквами): YES

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

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

91.2. Шифрование пустого блочного устройства

В данном раздела описана процедура шифрования пустого блочного устройства.

Примечание

Необходимо убедиться, что имеется свободное блочное устройство, на котором нет данных. Можно использовать команду lsblk, чтобы узнать, нет ли на устройстве реальных данных, например, файловой системы:
# lsblk -f
В примере ниже будет использоваться устройство /dev/sdb1.
Шифрование пустого блочного устройства:
  1. Инициализировать LUKS2 на устройстве:
    # cryptsetup luksFormat /dev/sdb1
    ПРЕДУПРЕЖДЕНИЕ!
    ========
    Данные на /dev/sdb1 будут перезаписаны без возможности восстановления.
    
    Вы уверены? (введите «yes» заглавными буквами): YES
    Введите парольную фразу для /dev/sdb1:
    Парольная фраза повторно:
    

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

    Инициализация LUKS2 на устройстве безвозвратно удалит все данные на разделе!
  2. Открыть зашифрованное устройство:
    # cryptsetup open /dev/sdb1 sdb1_encrypted
    Введите парольную фразу для /dev/sdb1:
    
    В результате выполнения данной команды появится новое блочное устройство /dev/mapper/sdb1_encrypted.
  3. Создать файловую систему на открытом устройстве:
    # mkfs -t ext4 /dev/mapper/sdb1_encrypted
    
    Внутри зашифрованного контейнера будет создана файловая система ext4.
  4. Примонтировать зашифрованное устройство:
    # mkdir /mnt/luks
    # mount /dev/mapper/sdb1_encrypted /mnt/luks
    
    Теперь можно использовать /mnt/luks как обычный каталог для чтения и записи зашифрованных данных.
Просмотр статуса зашифрованного блочного устройства:
# cryptsetup status sdb1_encrypted
/dev/mapper/sdb1_encrypted is active and is in use.
  type:    LUKS2
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: keyring
  device:  /dev/sdb1
  sector size:  512
  offset:  32768 sectors
  size:    20936704 sectors
  mode:    read/write
Закрыть устройство можно, выполнив команды:
# umount /mnt/luks
# cryptsetup close sdb1_encrypted
При попытке монтирования закрытого устройства будет запрашиваться пароль:
# mount /dev/sdb1 /mnt/luks
Password:
Разблокирование зашифрованного устройства в файловом менеджере:
Разблокирование зашифрованного устройства в файловом менеджере

91.3. Шифрование существующих данных на блочном устройстве с внешним (отсоединённым) заголовком

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

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

Во время процесса шифрования можно потерять данные из-за сбоев питания, оборудования, ядра или по ошибке пользователя. Настоятельно рекомендуется сделать резервную копию всех важных данных.
Шифрование существующих данных на блочном устройстве:
  1. Отмонтировать все файловые системы на устройстве, например:
    # umount /mnt/test
    
  2. Инициализировать шифрование с внешним заголовком:
    # cryptsetup reencrypt --encrypt --init-only --header /home/header /dev/sdb1 sdb1_encrypted
    ПРЕДУПРЕЖДЕНИЕ!
    ========
    Файл заголовка не существует, создать?
    
    Вы уверены? (введите «yes» заглавными буквами): YES
    Введите парольную фразу для /home/header:
    Парольная фраза повторно:
    
    В результате выполнения данной команды устройство будет открыто и доступно через /dev/mapper/sdb1_encrypted для оперативного шифрования.

    Примечание

    Файл /home/header содержит всю критическую метаинформацию (ключевые слоты, параметры шифрования, UUID и т.д.). Он обязателен для доступа к данным в будущем.
  3. Смонтировать временно разблокированное устройство:
    # mount /dev/mapper/sdb1_encrypted /mnt/test
    
  4. Возобновить шифрование данных:
    # cryptsetup reencrypt --resume-only --header /home/header /dev/sdb1
    Введите парольную фразу для /dev/sdb1:
    Автоматически обнаруженное активное устройство dm «sdb1_encrypted» для устройства данных /dev/sdb1.
    Выполнено, время 00м52с,    9 GiB записано, скорость 194,5 MiB/с
    
  5. Проверить, зашифрованы ли существующие данные на блочном устройстве с использованием LUKS2 с отсоединенным заголовком:
    # cryptsetup luksDump /home/header
    
    Должна отобразиться информация о шифровании, ключевых слотах и параметрах.

Примечание

Необходимо сделать резервную копию заголовка:
# cp /home/header /root/luks-header-backup
Потеря заголовка сделает невозможным расшифровку данных.
Закрыть устройство можно, выполнив команды:
# umount /mnt/test
# cryptsetup close sdb1_encrypted
Так как раздел был зашифрован с отдельным заголовком, для доступа к данным необходимо обязательно указывать внешний заголовок с помощью параметра --header:
# cryptsetup open --header /home/header /dev/sdb1 sdb1_encrypted
Введите парольную фразу для /dev/sdb1:

Глава 92. Поддержка файловых систем

Файловая система представляет собой набор правил, определяющих то, как хранятся и извлекаются документы, хранящиеся на устройстве.
В Альт Сервер поддерживаются следующие файловые системы:
  • ext2 — нежурналируемая файловая система; относительно проста в восстановлении, но нуждается в относительно долгой проверке целостности после сбоя питания или ядра. Может использоваться для /boot или readonly-разделов;
  • ext3 — журналируемая и достаточно надёжная файловая система, имеет среднюю производительность;
  • ext4 — журналируемая файловая система, логическое продолжение ext3, позволяет полностью отключить журналирование;
  • btrfs — поддерживает снимки (копии файловой системы на определенный момент времени), сжатие и подтома;
  • xfs — высокопроизводительная журналируемая файловая система, имеющая более высокую чувствительность к сбоям. Рекомендуется для активно используемых файловых систем при условии стабильного питания и качественной аппаратной части;
  • jfs — журналируемая файловая система, имеющая поддержку перекодирования имён файлов (iocharset);
  • iso9660 — файловая система ISO 9660 для дисков с данными компакт-дисков;
Файловые системы FAT/FAT32/NTFS поддерживаются в установленной системе, но не для установки на них Linux.
Проверка поддержки файловых систем ext2, ext3, ext4, iso9660, fat16, fat32, ntfs, xfs:
  1. Создать раздел объемом менее 4 Гбайт на flash-накопителе (например, /dev/vdс1).
  2. Для создания ISO-файла установить пакет genisoimage:
    # apt-get install genisoimage
    
  3. Создать каталог /mnt/filesystem, в который будет монтироваться раздел:
    # mkdir /mnt/filesystem
    
  4. Отформатировать раздел в проверяемую файловую систему:
    • для ext2:
      # mkfs.ext2 /dev/vdc1
      
    • для ext3:
      # mkfs.ext3 /dev/vdc1
      
    • для ext4:
      # mkfs.ext4 /dev/vdc1
      
    • для fat16:
      # mkfs.fat -F 16 /dev/vdc1
      
    • для fat32:
      # mkfs.fat -F 32 /dev/vdc1
      
    • для ntfs:
      # mkfs.ntfs /dev/vdc1
      
    • для xfs:
      # mkfs.xfs /dev/vdc1
      
    • для iso9660 — создать ISO-файл из каталога /etc:
      # mkisofs -r -jcharset koi8-r -o /root/cd.iso /etc
      
  5. Для проверки поддержки файловых систем ext2, ext3, ext4, fat16, fat32, ntfs:
    • примонтировать раздел с файловой системой в каталог /mnt/filesystem:
      # mount /dev/vdc1 /mnt/filesystem
      
    • проверить возможность записи файла на текущую файловую систему:
      # echo test_content > /mnt/filesystem/test.fs
      
      убедиться, что файл создан:
      # ls -l /mnt/filesystem/test.fs
      -rw-r--r--. 1 root root 13 май 23 20:10 /mnt/filesystem/test.fs
      
    • проверить возможность чтения файла с текущей файловой системы:
      # cat /mnt/filesystem/test.fs
      
  6. Для проверки поддержки файловой системы iso9660 смонтировать созданный ISO-файл в каталог /mnt/filesystem/ (файл образа диска будет примонтирован в режиме «только для чтения»):
    # mount -o loop,ro /root/cd.iso /mnt/filesystem/
    

Примечание

Для просмотра файловых систем на физических дисках можно воспользоваться командой df:
$ df -Th | grep "^/dev"
или lsblk:
$ lsblk -f
Команда fsck позволяет узнать файловую систему раздела, который ещё не примонтирован:
# fsck -N /dev/sdc1
fsck из util-linux 2.39.2
[/sbin/fsck.xfs (1) -- /dev/sdc1] fsck.xfs /dev/sdc1

Глава 93. Поддержка сетевых протоколов

93.1. SMB

Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части.

93.1.1. Настройка Samba

Настройка Samba описана в разделе Samba в режиме файлового сервера.

93.1.2. Настройка клиента

93.1.2.1. Подключение по протоколу SMB в графической среде

Для создания подключения по протоколу SMB в графической среде GNOME можно, запустить файловый менеджер, указать в адресной строке протокол и адрес сервера:
Создание подключение по протоколу SMB
Нажать клавишу Enter.
Будут показаны ресурсы с общим доступом:
Ресурсы с общим доступом
Для доступа к папке, необходимо указать имя пользователя, пароль и нажать кнопку Подключиться:
Параметры подключения к общей папке

93.1.2.2. Монтирование ресурса Samba через /etc/fstab

Просмотреть список общедоступных ресурсов на сервере:
$ smbclient -L 192.168.0.147 -U%
Просмотреть список ресурсов на сервере доступных пользователю user_samba:
$ smbclient -L 192.168.0.147 -Uuser_samba
Enter SAMBA\user_samba's password:

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    public          Disk      Public
    IPC$            IPC       IPC Service (4.21.9-alt1)
    For_doc         Disk
    user_samba      Disk      Home Directories
SMB1 disabled -- no workgroup available
Создать файл /etc/samba/sambacreds (например, командой mcedit /etc/samba/sambacreds), с содержимым:
username=имя_пользователя
password=пароль
Для защиты информации, права на файл /etc/samba/sambacreds, надо установить так, чтобы файл был доступен на чтение и запись только пользователю-владелецу файла:
# chmod 600 /etc/samba/sambacreds
и принадлежать root:
# chown root: /etc/samba/sambacreds
Для монтирования ресурса Samba в /etc/fstab необходимо прописать, строку вида:
//СЕРВЕР/ИМЯ_РЕСУРСА /mnt/точка_монтирования cifs credentials=/путь/к/полномочиям/sambacreds 0 0
Например:
//192.168.0.147/public /mnt/server_public cifs users,_netdev,x-systemd.automount,credentials=/etc/samba/sambacreds 0 0

93.2. NFS

93.2.1. Настройка сервера NFS

Установить пакет nfs-server:
# apt-get install nfs-server
Запустить NFS-сервер и включить его по умолчанию:
# systemctl enable --now nfs
В файле /etc/exports следует указать экспортируемые каталоги (каталоги, которые будет разрешено монтировать с других машин):
/mysharedir ipaddr1(rw)
Например, чтобы разрешить монтировать /home на сервере необходимо добавить в /etc/exports строку:
/home 192.168.0.0/24(no_subtree_check,rw)
где 192.168.0.0/24 — разрешение экспорта для подсети 192.168.0.X; rw — разрешены чтение и запись.
Подробную информацию о формате файла можно посмотреть командой:
$ man exports
После внесения изменений в файл /etc/exports необходимо выполнить команду:
# exportfs -r
Проверить список экспортируемых файловых систем можно, выполнив команду:
# exportfs
/home 192.168.0.0/24

93.2.2. Использование NFS

Подключение к NFS-серверу можно производить как вручную, так и настроив автоматическое подключение при загрузке.
Для ручного монтирования необходимо:
  • создать точку монтирования:
    # mkdir /mnt/nfs
    
  • примонтировать файловую систему:
    # mount -t nfs 192.168.0.131:/home /mnt/nfs
    
    где 192.168.0.131 — IP-адрес сервера NFS; /mnt/nfs — локальный каталог, куда монтируется удалённый каталог;
  • проверить наличие файлов в каталоге /mnt/nfs:
    # ls -al /mnt/nfs
    
    Должен отобразиться список файлов каталога /home, расположенного на сервере NFS.
Для автоматического монтирования к NFS-серверу при загрузке необходимо добавить следующую строку в файл /etc/fstab:
192.168.0.131:/home  /mnt/nfs   nfs   intr,soft,nolock,_netdev,x-systemd.automount    0 0

Примечание

Прежде чем изменять /etc/fstab, попробуйте смонтировать вручную и убедитесь, что всё работает.

93.3. FTP

93.3.1. Настройка сервера FTP

В состав Альт Сервер входит vsftpd (Very Secure FTP Daemon) — полнофункциональный FTP-сервер, позволяющий обслуживать как анонимные запросы, так и запросы от пользователей, зарегистрированных на сервере и имеющих полноценный доступ к его ресурсам.

Примечание

Настроить FTP-сервер можно также в ЦУС (подробнее см. FTP-сервер).
Установить пакеты vsftpd и anonftp:
# apt-get install vsftpd anonftp
Изменить настройку прав доступа в файле /etc/vsftpd.conf:
local_enable=YES
chroot_local_user=YES
local_root=/var/ftp/
Запустить vsftpd:
# systemctl start vsftpd.service
Убедиться в нормальной работе FTP-сервера:
# netstat -ant | grep 21 
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN
FTP-сервер запущен и принимает соединения на 21 порту.
Создать файл в каталоге /var/ftp/:
# echo "vsftpd test file" > /var/ftp/test.txt

93.3.2. Подключение рабочей станции

Для создания подключения по протоколу FTP в графической среде GNOME можно запустить файловый менеджер, указать в адресной строке протокол и адрес сервера:
Создание подключения по протоколу FTP
Нажать клавишу Enter.
В появившемся окне указать имя пользователя, пароль и нажать кнопку Подключиться:
Подключение по протоколу FTP
Должен отобразиться список файлов каталога /var/ftp/, расположенного на сервере FTP:
Файл на FTP-сервере

93.4. NTP

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

В качестве NTP сервера/клиента используется сервер времени chrony:
  • chronyd — демон, работающий в фоновом режиме. Он получает информацию о разнице системных часов и часов внешнего сервера времени и корректирует локальное время. Демон реализует протокол NTP и может выступать в качестве клиента или сервера.
  • chronyc — утилита командной строки для контроля и мониторинга программы. Утилита используется для тонкой настройки различных параметров демона, например, позволяет добавлять или удалять серверы времени.
Выполнить настройку NTP-сервера можно следующими способами:
  • в ЦУС настроить модуль Дата и время на получение точного времени с NTP сервера и работу в качестве NTP-сервера и нажать кнопку Применить:
    Настройка модуля Дата и время
  • указать серверы NTP в директиве server или pool в файле конфигурации NTP /etc/chrony.conf:
    allow all #Разрешить NTP-клиенту доступ из локальной сети
    pool pool.ntp.org iburst #параметр iburst используется для ускорения начальной синхронизации
    
    и перезапустить сервис командой:
    # systemctl restart chronyd
    
Убедиться в нормальной работе NTP-сервера, выполнив команду:
# systemctl status chronyd.service

93.4.2. Настройка рабочей станции

Настроить модуль Дата и время на получение точного времени с NTP-сервера (в качестве NTP-сервера указать IP-адрес сервера NTP) и нажать кнопку Применить:
Настройка модуля Дата и время на рабочей станции
Проверить текущие источники времени:
$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.0.131                 0  10     0     -     +0ns[   +0ns] +/-    0n

Проверить статус источников NTP:
$ chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

93.5. HTTP(S)

93.5.1. Настройка сервера HTTP

В состав Альт Сервер входит как веб-сервер Apache, так и nginx. Пример настройки веб-сервера nginx см. в разделе Настройка веб-сервера). Ниже рассмотрен пример настройки веб-сервера Apache.
Установить пакет apache2-base:
# apt-get install apache2-base
Запустить httpd2:
# systemctl start httpd2
Убедиться, что служба httpd2 запущена:
# systemctl status httpd2
Создать стартовую страницу для веб-сервера:
# echo "Hello, World" >/var/www/html/index.html

93.5.2. Настройка рабочей станции

Запустить браузер, перейти по адресу http://<ip-сервера>:
Обращение к серверу и получение данных по протоколу http
Можно также выполнить команду:
$ curl http://192.168.0.199
Hello, World
Происходит обращение к серверу и получение данных по протоколу http.

Глава 94. Механизм аудита

Механизм аудита состоит из нескольких компонентов:
  • модуль ядра — перехватывает системные вызовы (syscalls) и выполняет регистрацию событий;
  • служба auditd — записывает зарегистрированное событие в файл;
  • служба audit-rules — загружает правила аудита в ядро и после этого завершается;
  • служба audispd — осуществляет пересылку сообщений (выступает в роли диспетчера) к другому приложению;
  • ряд вспомогательных программ:
    • auditctl — программа, управляющая поведением системы аудита и позволяющая контролировать текущее состояние системы, создавать или удалять правила;
    • aureport — программа, генерирующая суммарные отчёты о работе системы аудита;
    • ausearch — программа, позволяющая производить поиск событий в журнальных файлах;
    • aulast — используется для просмотра истории входов пользователей, основанной на логах аудита (auditd).
Программы отсылают записи, предназначенные для журналирования, системному демону auditd, который идентифицирует тип каждой пришедшей записи и обрабатывает запись способом, определенным для данного типа.
Для каждого из регистрируемых событий в журналах указывается следующая информация:
  • дата и время;
  • субъект, осуществляющий регистрируемое действие;
  • тип события (если регистрируется запрос на доступ, то указываются объект и тип доступа);
  • успешность осуществления события (обслужен запрос на доступ или нет).
Конфигурация аудита хранится в файле /etc/audit/auditd.conf.
Правила аудита, загружаемые при запуске службы audit-rules, хранятся в файлах .rules в каталоге /etc/audit/rules.d/. Правила будут обрабатываться в определённом порядке, основанном на их естественном порядке сортировки. Механизм правил ядра использует стратегию «первый совпавший выигрывает», поэтому порядок правил имеет значение.
Для просмотра журналов используются команды ausearch и aureport. Команда auditctl позволяет настраивать правила аудита.

94.1. Команда auditd

Служба auditd — это прикладной компонент системы аудита. Она ведёт журнал аудита на диске.
Синтаксис команды:
auditd [-f] [-l] [-n] [-s disable|enable|nochange] [-c <config_file>]
Опции:
  • -f — не переходить в фоновый режим (для отладки). Сообщения программы будут направляться в стандартный вывод для ошибок (stderr), а не в файл;
  • -l — включить следование по символическим ссылкам при поиске конфигурационных файлов;
  • -n — не создавать дочерний процесс (для запуска из inittab или system);
  • -s=ENABLE_STATE — указать, должен ли auditd при старте изменять текущее значение флага ядра — enabled. Допустимые значения ENABLE_STATE: disable, enable и nochange. Значение по умолчанию enable (disable, когда auditd остановлен). Значение флага может быть изменено во время жизненного цикла auditd с помощью команды: auditctl -e;
  • -c — указать альтернативный каталог конфигурационного файла (по умолчанию: /etc/audit/). Этот же каталог будет передан диспетчеру.
Сигналы:
  • SIGHUP — перезагрузить конфигурацию — загрузить файл конфигурации с диска. Если в файле не окажется синтаксических ошибок, внесённые в него изменения вступят в силу. При этом в журнал будет добавлена запись о событии DAEMON_CONFIG. В противном случае действия службы будут зависеть от параметров space_left_action, admin_space_left_action, disk_full_action, disk_error_action в файле auditd.conf;
  • SIGTERM — прекратить обработку событий аудита и завершить работу, о чем предварительно занести запись в журнал;
  • SIGUSR1 — произвести ротацию файлов журналов auditd. Создать новый файл журнала, перенумеровав старые файлы или удалив часть из них, в зависимости от параметра max_log_size_action;
  • SIGUSR2 — попытаться возобновить ведение журналов auditd (необходимо после приостановки ведения журнала);
  • SIGCONT — выгрузить отчёт о внутреннем состоянии auditd в /var/run/auditd.state.
Файлы:
  • /etc/audit/auditd.conf — файл конфигурации службы аудита;
  • /etc/audit/audit.rules — правила аудита, загружаемые при запуске службы;
  • /etc/audit/audit-stop.rules — правила аудита, загружаемые при остановке службы;
  • /etc/audit/rules.d/ — каталог, содержащий отдельные наборы правил, которые будут скомпилированы в один файл утилитой augenrules;
  • /etc/audit/plugins.d/ — каталог, содержащий отдельные файлы конфигурации плагинов.
Для того чтобы сделать возможным аудит всех процессов, запущенных до службы аудита, необходимо добавить в строку параметров ядра (в конфигурации загрузчика) параметр audit=1. В противном случае аудит некоторых процессов будет невозможен.
Демон аудита может получать события — сообщения от других приложений через плагин audispd: audisp-remote. Демон аудита может быть связан с tcp_wrappers, чтобы контролировать, какие машины могут подключаться. В этом случае можно добавить запись в hosts.allow и отказать в соединении.

94.2. Файл конфигурации auditd.conf

В файле /etc/audit/auditd.conf определяются параметры службы аудита. Директива состоит из ключевого слова (названия параметра), знака равенства и соответствующих ему данных (значения параметра). На одной строке может быть не больше одной директивы. Все названия и значения параметров чувствительны к регистру. Допустимые ключевые слова перечислены и описаны ниже. Каждая строка должна быть ограничена 160 символами, иначе она будет пропущена. К файлу можно добавить комментарии, начав строку с символа «#».

Таблица 94.1. Описание ключевых слов файла конфигурации auditd.conf

Ключ
Значение
local_events
Ключевое слово yes/no указывающее, следует ли включать запись локальных событий (значение по умолчанию — yes). В случае если необходимо записывать только сообщения из сети, следует установить значение — no. Этот параметр полезен, если демон аудита работает в контейнере. Данный параметр может быть установлен только один раз при запуске аудита. Перезагрузка файла конфигурации никак на него не влияет
log_file
Полное имя файла, в который следует записывать журнал
write_logs
Ключевое слово yes/no, указывающее следует ли записывать журналы (значение по умолчанию — yes)
log_format
Оформление данных в журнале. Допустимы два значения: raw и enriched. При указании RAW, данные будут записываться в том виде, в котором они получаются от ядра. Значение ENRICHED разрешает информацию (вместо идентификатора, будет указано значение): идентификатор пользователя (uid), идентификатор группы (gid), системный вызов (syscall), архитектуру и адрес сокета перед записью события на диск. Это помогает осмыслить события, созданные в одной системе, но сообщенные/проанализированные в другой системе. Значение NOLOG устарело, вместо него следует установить параметр write_logs в значение no
log_group
Указывает группу, на которую распространяются права на файлы журнала (по умолчанию — root). Можно использовать либо идентификатор, либо имя группы
priority_boost
Неотрицательное число, определяющее повышение приоритета выполнения службы аудита. Значение по умолчанию — 4. Для того чтобы не изменять приоритет, следует указать — 0
flush
Стратегия работы с дисковым буфером. Допустимые значения:
  • none — отключить какие-либо дополнительные действия со стороны службы по синхронизации буфера с диском;
  • incremental — выполнять запросы на перенос данных из буфера на диск выполняются с частотой, задаваемой параметром freq;
  • incremental_async — тоже, что и incremental, за исключением того, что перенос данных выполняется асинхронно для более высокой производительности;
  • data — немедленно синхронизировать данные файла;
  • sync — немедленно синхронизировать как данные, так и метаданные файла при записи на диск.
Значение по умолчанию — incremental_async
freq
Максимальное число записей журнала, которые могут храниться в буфере. При достижении этого числа производится запись буферизованных данных на диск. Данный параметр допустим только в том случае, когда flush имеет значение incremental или incremental_async
num_logs
Максимальное количество файлов журналов. Используется в том случае, если параметр max_log_file_action имеет значение rotate. Если указано число меньше двух, при достижении ограничения на размер файла он обнуляется. Значение параметра не должно превышать 999. Значение по умолчанию — 0 (то есть ротация фалов не происходит). При указании большого числа может потребоваться увеличить ограничение на количество ожидающих запросов (в файле /etc/audit/audit.rules). Если настроена ротация журналов, демон проверяет наличие лишних журналов и удаляет их, чтобы освободить место на диске. Проверка выполняется только при запуске и при проверке изменения конфигурации
name_format
Контролирует, как имена узлов компьютеров вставляются в поток событий аудита. Допустимые значения:
  • none — имя компьютера не используется в записи аудита;
  • hostname — имя, возвращаемое системным вызовом gethostname;
  • fqd — аудит принимает имя хоста и разрешает его с помощью DNS в полное доменное имя этой машины;
  • numeric — схоже с fqd, за исключением того, что разрешается IP-адрес машины. Чтобы использовать эту опцию, нужно убедиться, что команда hostname -i или domainname -i возвращает числовой адрес. Кроме того, эта опция не рекомендуется, если используется DHCP, поскольку у одной и той же машины в разное время могут быть разные адреса;
  • user — строка, определенная администратором в параметре name.
Значение по умолчанию — none
name
Строка, определенная администратором, которая идентифицирует компьютер, если в параметре name_format указано значение user
max_log_file
Ограничение на размер файла журнала в мегабайтах. Действие, выполняемое при достижении размера файла указанного значения, можно настроить с помощью параметра max_log_file_action
max_log_file_action
Действие, предпринимаемое при достижении размером файла журнала максимального значения. Допустимые значения:
  • ignore — отключить контроль над размером файла;
  • syslog — добавить соответствующую запись в системный журнал;
  • suspend — прекратить вести журнал на диске (служба аудита будет продолжать работать);
  • rotate — произвести ротацию журналов, с удалением самых старых, чтобы освободить место на диске. Текущий файл будет переименован и будет создан новый файл. Имя предыдущего файла журнала будет дополнено числом 1, а номера других файлов (если они имеются) будут увеличены на единицу. Таким образом, чем больше номер у журнала, тем он старше. Максимальное число файлов определяется параметром num_logs (соответствие ему достигается за счет удаления самых старых журналов). Такое поведение аналогично поведению утилиты logrotate;
  • keep_logs — аналогично rotate, но число файлов не ограничено, это предотвращает потерю данных аудита. Протоколы накапливаются и не удаляются, что может вызвать событие space_left_action, если весь объём заполнится. Это значение следует использовать в сочетании с внешним сценарием, который будет периодически архивировать журналы
verify_email
Определяет, проверяется ли адрес электронной почты, указанный в параметре action_mail_acct, на предмет возможности разрешения доменного имени. Этот параметр должен быть указан до параметра action_mail_acct, иначе будет использовано значение по молчанию — yes
action_mail_acct
Адрес электронной почты. Значение по умолчанию — root. Если адрес не локальный по отношению к данной системе, необходимо чтобы в ней был настроен механизм отправки почты. В частности, требуется наличие программы /usr/lib/sendmail
space_left
Минимум свободного пространства в мегабайтах, при достижении которого должно выполняться действие, определяемое параметром space_left_action
space_left_action
Действие, предпринимаемое при достижении объемом свободного пространства на диске указанного минимума. Допустимые значения:
  • ignore — не производить никаких действий;
  • syslog — добавить соответствующую запись в системный журнал;
  • rotate — произвести ротацию журналов, с удалением самых старых, чтобы освободить место на диске;
  • email — отправить уведомление по адресу, указанному в action_mail_acct;
  • exec — запустить программу по указанному пути (передача параметров не поддерживается);
  • suspend — прекратить вести журнал на диске (служба аудита будет продолжать работать);
  • single — перевести компьютер в однопользовательский режим;
  • halt — выключить компьютер
admin_space_left
Критический минимум свободного пространства в мегабайтах, при достижении которого должно выполняться действие, определяемое параметром admin_space_left_action. Данное действие следует рассматривать как последнюю меру, предпринимаемую перед тем, как закончится место на диске. Значение настоящего параметра должно быть меньше значения space_left
admin_space_left_action
Действие, предпринимаемое при достижении объёмом свободного пространства на диске указанного критического минимума. Допустимые значения — ignore, syslog, rotate, email, exec, suspend, single и halt. Описание данных значений см. в описании параметра space_left_action
disk_full_action
Действие, предпринимаемое при обнаружении отсутствия свободного пространства на диске. Допустимые значения — ignore, syslog, rotate, exec, suspend, single и halt. Описание данных значений см. в описании параметра space_left_action
disk_error_action
Действие, предпринимаемое при возникновении ошибки в работе с диском. Допустимые значения — ignore, syslog, exec, suspend, single и halt. Описание данных значений см. в описании параметра space_left_action
tcp_listen_port
Числовое значение в диапазоне 1..65535, при указании которого служба аудита будет прослушивать соответствующий TCP-порт для аудита удаленных систем. Демон аудита может быть связан с tcp_wrappers, чтобы контролировать, какие машины могут подключаться. В этом случае можно добавить запись в hosts.allow и отказать в соединении. Если решение развернуто в ОС на основе systemd может потребоваться изменить параметр After
tcp_listen_queue
Количество разрешенных ожидающих подключений (запрошенных, но не принятых). Значение по умолчанию — 5. Установка слишком маленького значения может привести к отклонению соединений при одновременном запуске нескольких хостов (например, после сбоя питания)
tcp_max_per_addr
Количество одновременных подключений с одного IP-адреса. Значение по умолчанию — 1, максимальное значение — 1024. Установка слишком большого значения может привести к атаке типа «отказ в обслуживании» при ведении журнала сервером. Значение по умолчанию подходит в большинстве случаев
use_libwrap
Следует ли использовать tcp_wrappers для распознавания попыток подключения с разрешенных компьютеров. Допустимые значения yes или no. Значение по умолчанию — yes
tcp_client_ports
Порты, с которых можно принимать соединение. Значением параметра может быть либо число, либо два числа, разделенные тире (пробелы не допускаются). Если порт не указан, соединения принимаются с любого порта. Допустимые значения 1..65535. Например, для указания клиенту использовать привилегированный порт, следует указать значение 1-1023 для этого параметра, а также установить опцию local_port в файле audisp-remote.conf. Проверка того, что клиенты отправляют сообщения с привилегированного порта, это функция безопасности, предотвращающая атаки с использованием инъекций
tcp_client_max_idle
Количество секунд, в течение которых клиент может бездействовать (то есть, какое время от него нет никаких данных). Используется для закрытия неактивных соединений, если на компьютере клиенте возникла проблема, из-за которой он не может завершить соединение корректно. Это глобальный параметр, его значение должно быть больше (желательно, в два раза), чем любой параметр клиента heartbeat_timeout. Значение по умолчанию — 0, что отключает эту проверку
transport
Если установлено значение TCP, будут использоваться только TCP-соединения в виде открытого текста. Если установлено значение KRB5, для аутентификации и шифрования будет использоваться Kerberos 5. Значение по умолчанию — TCP
enable_krb5
При значении yes — использовать Kerberos 5 для аутентификации и шифрования. Значение по умолчанию — no
krb5_principal
Принципал для этого сервера. Значение по умолчанию — auditd. При значении по умолчанию, сервер будет искать ключ с именем типа auditd/hostname@EXAMPLE.COM в /etc/audit/audit.key для аутентификации себя, где hostname — имя сервера, возвращаемое запросом DNS-имени по его IP-адресу
krb5_key_file
Расположение ключа для принципала этого клиента. Файл ключа должен принадлежать пользователю root и иметь права 0400. По умолчанию — файл /etc/audit/audit.key
distribute_network
При значении yes, события, поступающие из сети, будут передаваться диспетчеру аудита для обработки. Значение по умолчанию — no
q_depth
Числовое значение, указывающее, насколько большой должна быть внутренняя очередь диспетчера событий аудита. Очередь большего размера позволяет лучше обрабатывать поток событий, но может содержать события, которые не обрабатываются при завершении работы демона. Если вы получаете сообщения в системном журнале об удалении событий, увеличьте это значение. Значение по умолчанию — 2000
overflow_action
Определяет, как демон должен реагировать на переполнение своей внутренней очереди. Когда это происходит, это означает, что принимается больше событий, чем можно передать дочерним процессам. Эта ошибка означает, что текущее событие, которое он пытается отправить, будет потеряно. Допустимые значения:
  • ignore — не производить никаких действий;
  • syslog — добавить соответствующую запись в системный журнал;
  • suspend — прекратить отправку событий дочерним процессам (служба аудита будет продолжать работать);
  • single — перевести компьютер в однопользовательский режим;
  • halt — выключить компьютер
max_restarts
Неотрицательное число, которое сообщает диспетчеру событий аудита, сколько раз он может попытаться перезапустить вышедший из строя плагин. По умолчанию — 10
plugin_dir
Место, где auditd будет искать файлы конфигурации своего плагина
end_of_event_timeout
Неотрицательное количество секунд, используемое библиотечными процедурами пользовательского пространства auparse() и утилитами aureport(8), ausearch(8) для того, чтобы считать событие завершенным при анализе потока журнала событий. Если для обрабатываемого потока событий время текущего события превышает end_of_event_timeout секунд по сравнению с совмещенными событиями, то событие считается завершенным

Примечание

Для файла /var/log/audit рекомендуется выделять специальный раздел. Кроме того, параметру flush необходимо присвоить значение sync или data.
Параметры max_log_file и num_logs необходимо настроить так, чтобы была возможность полностью использовать раздел. Следует учитывать, что чем больше файлов необходимо ротировать, тем больше времени потребуется, чтобы вернуться к получению событий аудита. Параметру max_log_file_action рекомендуется присвоить значение keep_logs.
Для параметра space_left должно быть установлено такое значение, которое даст администратору достаточно времени, чтобы отреагировать на предупреждение и освободить дисковое пространство. Обычно это предполагает запуск команды aureport –t и архивирование самых старых журналов. Значение параметра space_left зависит от системы, в частности от частоты поступления сообщений о событиях. Параметр space_left_action рекомендуется установить в значение email. Если требуется отправка сообщения snmp trap, нужно указать вариант exec.
Для параметра admin_space_left должно быть установлено такое значение, чтобы хватило свободного места для хранения записей о действиях администратора. Значение параметра admin_space_left_action следует установить в single, ограничив, таким образом, способ взаимодействия с системой консолью.
Действие, указанное в disk_full_action, выполняется, когда в разделе уже не осталось свободного места. Доступ к ресурсам машины должен быть полностью прекращен, так как больше нет возможности контролировать работу системы. Это можно сделать, указав значение single или halt.
Значение параметра disk_error_action следует установить в syslog, single, либо halt в зависимости от соглашения относительно обработки сбоев аппаратного обеспечения.
Указание единственного разрешённого клиентского порта может затруднить перезапуск подсистемы аудита у клиента, так как он не сможет восстановить соединение с теми же адресами и портами хоста, пока не истечет таймаут закрытия соединения TIME_WAIT.

94.3. Команда auditctl

Команда auditctl используется для настройки параметров ядра, связанных с аудитом, получения состояния и добавления/удаления правил аудита.
Синтаксис команды:
auditctl [опции]

Таблица 94.2. Опции конфигурации команды auditctl

Опция
Описание
-b <количество>
Установить максимальное количество доступных для аудита буферов, ожидающих обработки (значение в ядре по умолчанию — 64). В случае если все буферы заняты, то ядром будет выставлен флаг сбоя
--backlog_wait_time <время_ожидания>
Установить время ожидания для ядра достижения значения backlog_limit (значение в ядре по умолчанию — 60*HZ), прежде, чем ставить в очередь дополнительные события аудита для их передачи аудиту. Число должно быть больше или равно нулю, но меньше, чем десятикратное значение по умолчанию
--reset_backlog_wait_time_actual
Сбросить счетчик фактического времени ожидания невыполненной работы, показанный командой состояния
Продолжать загружать правила, несмотря на ошибку. Суммирует результат загрузки правил. Код завершения будет ошибочным, если какое-либо правило не будет загружено
-D
Удалить все правила и точки наблюдения. Может также принимать параметр -k
-e [0..2]
Установить флаг блокировки: 0 — отключить аудит, 1 — включить аудит, 2 — защитить конфигурацию аудита от изменений. Для использования данной возможности необходимо внести данную команду последней строкой в файл audit.rules. После её выполнения все попытки изменить конфигурацию будут отвергнуты с уведомлением в журналах аудита (чтобы задействовать новую конфигурацию аудита, необходимо перезагрузить систему)
-f [0..2]
Установить способ обработки для флага сбоя: 0=silent, 1=printk, 2=panic. Позволяет определить, каким образом ядро будет обрабатывать критические ошибки. Например, флаг сбоя выставляется при следующих условиях: ошибки передачи в пространство службы аудита, превышение лимита буферов, ожидающих обработки, выход за пределы памяти ядра, превышение лимита скорости выдачи сообщений (значение, установленное по умолчанию — 1, для систем с повышенными требованиями к безопасности, значение 2 может быть более предпочтительно)
-h
Краткая помощь по аргументам командной строки
-i
Если опция задана сама по себе, ошибки при чтении правил из файла будут игнорироваться. Если опция передана как аргумент -s, то значения полей будут интерпретироваться в понятные человеку слова, если это возможно
--loginuid-immutable
Сделать login UID неизменяемым сразу после его установки. Для изменения login UID требуется CAP_AUDIT_CONTROL, поэтому непривилегированный пользователь не может его изменить. Установка этого параметра может вызвать проблемы в некоторых контейнерах
-q точка-<монтирования,поддерево>
При наличии точки наблюдения за каталогом и объединении или перемещении монтирования другого поддерева в наблюдаемое поддерево, необходимо указать ядру, сделать монтируемое поддерево эквивалентным просматриваемому каталогу. Если поддерево уже смонтировано во время создания точки наблюдения за каталогом, поддерево автоматически помечается для просмотра. Эти два значения разделяет запятая, отсутствие запятой приведет к ошибке
-r <частота>
Установить ограничение скорости выдачи сообщений в секунду (0 — нет ограничения). В случае если эта частота не нулевая, и она превышается в ходе аудита, флаг сбоя выставляется ядром для выполнения соответствующего действия. Значение, установленное по умолчанию — 0
--reset-lost
Сбросить счетчик потерянных записей, отображаемых командой статуса
-R <файл>
Читать правила из файла. Правила должны быть организованы следующим образом: располагаться по одному в строке и в том порядке, в каком должны исполняться. Накладываются следующие ограничения: владельцем файла должен быть root, и доступ на чтение должен быть только у него. Файл может содержать комментарии, начинающиеся с символа «#». Правила, расположенные в файле, идентичны тем, что набираются в командной строке, без указания слова auditctl
--signal <сигнал>
Отправить сигнал демону аудита. Поддерживаемые сигналы: TERM, HUP, USR1, USR2, CONT и удобные для пользователей версии stop, reload, rotate, resume, state
-t
Обрезать поддеревья после команды монтирования

Таблица 94.3. Опции состояния команды auditctl

Опция
Описание
-l
Вывести список всех правил по одному правилу в строке. Этой команде могут быть предоставлены две опции: ключ фильтрации (-k), чтобы вывести список правил, соответствующих ключу, либо опция (-i) интерпретирующая значения полей от a0 до a3, для корректного определения значений аргументов системных вызовов
-m <текст>
Послать в систему аудита пользовательское сообщение. Команда может быть выполнена только под учетной записью root
-s
Получить статус аудита. Будут показаны значения, которые можно установить с помощью опций -e, -f, -r и -b. Значение pid — это номер процесса службы аудита. Значение pid 0 указывает, что служба аудита не работает. Поле lost сообщает, сколько записей событий аудита было отброшено из-за переполнения буфера аудита. Поле backlog сообщает, сколько записей событий аудита находится в очереди, ожидая, когда auditd прочитает их. С этим параметром можно использовать опцию -i для интерпретации значений некоторых полей
-v
Вывести версию auditctl

Таблица 94.4. Опции правил команды auditctl

Опция
Описание
-a <список,действие| действие,список>
Добавить правило с указанным действием к концу списка. Необходимо учитывать, что значения «список» и «действия» разделены запятой, и её отсутствие вызовет ошибку. Поля могут быть указаны в любом порядке
-A <список,действие>
Добавить правило с указанным действием в начало списка
-C <f=f | f!=f>
Создать правило сравнения между полями. Можно передавать несколько сравнений в одной командной строке. Каждое из них должно начинаться с -C. Каждое правило сравнения добавляется друг к другу, а также к правилам, начинающимся с -F для инициирования записи аудита. Поддерживаются два оператора — равно и не равно. Допустимые поля: auid, uid, euid, suid, fsuid, obj_uid; и gid, egid, sgid, fsgid, obj_gid. Две группы uid и gid не могут быть смешаны. Внутри группы может быть сделано любое сравнение
-d <список,действие>
Удалить правило с указанным действием из списка. Правило удаляется только в том случае, если полностью совпали и имя системного вызова и поля сравнения
-D
Удалить все правила и точки наблюдения. Может также принимать параметр -k
-F <n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v>
Задать поле сравнения для правила. Атрибуты поля следующие: объект, операция, значение. В одной команде допускается задавать до шестидесяти четырех полей сравнения. Каждое новое поле должно начинаться с -F. Аудит будет генерировать запись, если произошло совпадение по всем полям сравнения. Допустимо использование одного из следующих восьми операторов: равно, не равно, меньше, больше, меньше либо равно, больше либо равно, битовая маска (n&v) и битовая проверка (n&=v). Битовая проверка выполняет операцию «and» над значениями и проверяет, равны ли они. Битовая маска просто выполняет операцию «and». Поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя — программа автоматически получит идентификатор пользователя из его имени. То же самое можно сказать и про имя группы
-k <ключ>
Установить на правило ключ фильтрации. Ключ фильтрации — это произвольная текстовая строка длиной не больше 31 символа. Ключ помогает уникально идентифицировать записи, генерируемые в ходе аудита за точкой наблюдения. Поиск значения ключа можно выполнить с помощью команды ausearch. Ключ также можно использовать для удаления всех правил (-D), или правил с определенным ключом (-l). В правиле можно использовать несколько ключей
-p <r|w|x|a>
Установить фильтр прав доступа для точки наблюдения: r=чтение, w=запись, x=исполнение, a=изменение атрибута. Эти разрешения не являются стандартными разрешениями для файлов, а представляют собой своего рода системный вызов, который может делать подобные вещи (системные вызовы «read» и «write» не включены в этот набор, поскольку логи аудита были бы перегружены информацией о работе этих вызовов)
-S <имя или номер системного вызова|all>
В случае если какой-либо процесс выполняет указанный системный вызов, то аудит генерирует соответствующую запись. В случае если значения полей сравнения заданы, а системный вызов не указан, правило будет применяться ко всем системным вызовам. В одном правиле может быть задано несколько системных вызовов — это положительно сказывается на производительности, поскольку заменяет обработку нескольких правил. Следует указывать по два правила: одно для 32-битной архитектуры, другое для 64-битной, чтобы убедиться, что ядро находит все ожидаемые события
-w <путь>
Добавить точку наблюдения за файловым объектом, находящимся по указанному пути. Добавление точки наблюдения к каталогу верхнего уровня запрещено ядром. Групповые символы (wildcards) также не могут быть использованы, попытки их использования будут генерировать предупреждающее сообщение. Внутренне точки наблюдения реализованы как слежение за inode. Установка точки наблюдения за файлом аналогична использованию параметра path в правиле системного вызова -F. Установка точки наблюдения за каталогом аналогична использованию параметра dir в правиле системного вызова -F. Единственными допустимыми параметрами при использовании точек наблюдения являются -p и -k. Не рекомендуется использовать эту опцию, т.к. она устарела
-W <путь>
Удалить точку наблюдения за файловым объектом. Правило должно точно совпадать

Таблица 94.5. Объекты поля сравнения

Объект
Описание
a0, a1, a2, a3
Четыре первых аргумента, переданных системному вызову. Строковые аргументы не поддерживаются. Это связано с тем, что ядро должно получать указатель на строку, а проверка поля по значению адреса указателя не желательна. Таким образом, необходимо использовать только цифровые значения
arch
Архитектура процессора, на котором выполняется системный вызов. Для определения архитектуры необходимо использовать команду uname -m. Можно написать правила, которые в некоторой степени не зависят от архитектуры, потому что тип будет определяться автоматически. Однако системные вызовы могут зависеть от архитектуры, и то, что доступно на x86_64, может быть недоступно на PPC. Опция arch должна предшествовать опции -S, чтобы auditctl знал, какую внутреннюю таблицу использовать для поиска номеров системных вызовов
auid
Идентификатор пользователя, использованный для входа в систему. Можно использовать либо имя пользователя, либо идентификатор пользователя
devmajor
Главный номер устройства (Device Major Number)
devminor
Вспомогательный номер устройства (Device Minor Number)
dir
Полный путь к каталогу для создания точки наблюдения. Помещает точку наблюдения в каталог и рекурсивно во всё его поддерево. Можно использовать только в списке exit
egid
Действительный идентификатор группы
euid
Действительный идентификатор пользователя
exe
Абсолютный путь к приложению, к которому будет применяться это правило. Можно использовать только в списке exit
exit
Значение, возвращаемое системным вызовом при выходе
fsgid
Идентификатор группы, применяемый к файловой системе
fsuid
Идентификатор пользователя, применяемый к файловой системе
filetype
Тип целевого файла: файл, каталог, сокет, ссылка, символ, блок или FIFO
gid
Идентификатор группы
inode
Номер inode
key
Альтернативный способ установить ключ фильтрации
msgtype
Используется для проверки совпадения с числом, описывающим тип сообщения. Может использоваться только в списках exclude и user
obj_uid
UID объекта
obj_gid
GID объекта
path
Полный путь к файлу для точки наблюдения. Может использоваться только в списке exit
perm
Фильтр прав доступа для файловых операций. Может использоваться только в списке exit. Можно использовать без указания системного вызова, при этом ядро выберет системные вызовы, которые удовлетворяют запрашиваемым разрешениям
pers
Персональный номер операционной системы
pid
Идентификатор процесса
ppid
Идентификатор родительского процесса
sessionid
Идентификатор сеанса пользователя
sgid
Установленный идентификатор группы
success
Если значение, возвращаемое системным вызовом, больше либо равно 0, данный объект будет равен true/yes, иначе false/no. При создании правила нужно использовать 1 вместо true/yes и 0 вместо false/no
suid
Установленный идентификатор пользователя
uid
Идентификатор пользователя

94.4. Команда aureport

Команда aureport генерирует итоговые отчёты на основе логов службы аудита и может принимать данные со стандартного ввода (stdin) до тех пор, пока на входе будут необработанные данные логов. Все отчёты, кроме основного итогового отчёта, содержат номера событий аудита. Используя их, можно получить полные данные о событии с помощью команды ausearch -a <номер события>. В случае, если в отчёте слишком много данных, можно задать время начала и время окончания для уточнения временного промежутка.
Отчёты, генерируемые aureport, могут быть использованы как исходный материал для получения развернутых отчётов.
Синтаксис команды:
aureport [опции]

Таблица 94.6. Опции команды aureport

Опция
Описание
-au, --auth
Отчёт о попытках аутентификации
-a, --avc
Отчёт о avc сообщениях
--comm
Отчёт о выполнении команд
-c, --config
Отчёт об изменениях конфигурации
-cr, --crypto
Отчёт о событиях, связанных с кодированием
--debug
Записывать некорректные события, которые пропускаются, в stderr
--eoe-timeout <секунды>
Установить тайм-аут окончания анализа событий (см. end_of_event_timeout в auditd.conf). Установка этого значения переопределит любое настроенное значение, найденное в /etc/auditd/auditd.conf
-e, --event
Отчёт о событиях
--escape <опция>
Экранировать вывод. Возможные значения: raw, tty, shell и shell_quote. Каждый режим включает в себя символы предыдущего режима и экранирует больше символов. То есть shell включает все символы, экранируемые tty, и добавляет новые. Значение по умолчанию — tty
-f, --file
Отчёт о файлах и сокетах
--failed
Для обработки в отчётах выбирать только неудачные события. По умолчанию показываются как удачные, так и неудачные события
-h, --host
Отчёт о хостах
-i, --interpret
Транслировать числовые значения в текстовые. Например, идентификатор пользователя будет транслирован в имя пользователя. Трансляция выполняется с использованием данных с той машины, где запущена команда aureport
-if, --input <файл>|<каталог>
Использовать указанный файл или каталог вместо логов аудита. Это может быть полезно при анализе логов с другой машины или при анализе частично сохраненных логов
--input-logs
Использовать местоположение файла журнала из auditd.conf как исходные данные для анализа. Применяется при использовании команды aureport в задании cron
--integrity
Отчёт о событиях целостности
-k, --key
Отчёт о ключевых словах в правилах
-l, --login
Отчёт о попытках входа в систему
-m, --mods
Отчёт об изменениях пользовательских учетных записей
-ma, --mac
Отчет о событиях Mandatory Access Control (MAC)
-n, --anomaly
Отчёт об аномальных событиях. Эти события включают переход сетевой карты в беспорядочный режим и ошибки сегментации
--node <имя узла>
Отобразить в отчёте только события со строкой <имя узла>. По умолчанию включены все узлы. Допускается перечисление нескольких узлов
-nc, --no-config
Не включать событие CONFIG_CHANGE. Это особенно полезно для ключевого отчёта, поскольку правила аудита во многих случаях имеют ключевые метки. Использование этой опции избавляет от ложных срабатываний
-p, --pid
Отчёт о процессах
-r, --response
Отчёт о реакциях на аномальные события
-s, --syscall
Отчёты о системных вызовах
--success
Для обработки в отчётах выбирать только удачные события. По умолчанию показываются как удачные, так и неудачные события
--summary
Генерировать итоговый отчёт, который дает информацию только о количестве элементов в том или ином отчёте. Такой режим есть не у всех отчётов
-t, --log
Генерация отчётов о временных рамках каждого отчёта
--tty
Отчёты о нажатых клавишах
-te, --end <дата> <время>
Искать события, которые произошли раньше (или во время) указанной временной точки. Формат даты и времени зависит от региональных настроек. В случае если дата не указана, то подразумевается текущий день (today). В случае если не указано время, то подразумевается текущий момент (now)
-tm, --terminal <терминал>
Отчёт о терминалах
--ts, --start <дата> <время>
Искать события, которые произошли после (или во время) указанной временной точки
-u, --user
Отчёт о пользователях
-v, --version
Вывести версию программы и выйти
--virt
Отчет о событиях виртуализации
-x, --executable
Отчёт об исполняемых объектах
Нотацию времени следует использовать в формате «24 часа», а не «AM/PM». Например, дата может быть задана как «10/24/2005», а время — как «18:00:00». Также допускается использовать следующие ключевые слова:
  • now — сейчас;
  • recent — десять минут назад;
  • boot — время за секунду до того, когда система загружалась в последний раз;
  • today — первая секунда после полуночи текущего дня;
  • yesterday — первая секунда после полуночи предыдущего дня;
  • this-week — первая секунда после полуночи первого дня текущей недели, первый день недели определяется из региональных настроек;
  • week-ago — первая секунда после полуночи ровно 7 дней назад;
  • this-month — первая секунда после полуночи первого числа текущего месяца;
  • this-year — первая секунда после полуночи первого числа первого месяца текущего года.

94.5. Команда ausearch

Команда ausearch является инструментом поиска по журналу аудита. ausearch может также принимать данные со стандартного ввода (stdin) до тех пор, пока на входе будут необработанные данные логов. Все условия, указанные в параметрах, объединяются логическим «И».
Каждый системный вызов ядра из пользовательского пространства в ядро и возврат из него имеет уникальный идентификатор события, общий для всех записей, связанных с этим вызовом.
Разные подсистемы ядра могут добавлять дополнительные записи в одно событие. Например, в событие аудита для системного вызова «open» добавляется запись PATH с именем файла. Команда ausearch выводит все записи события целиком. Это означает, что при поиске по определённому типу записи результат может включать и записи SYSCALL.
Не все типы записей содержат одинаковую информацию. Например, запись PATH не содержит имя узла или loginuid.
Синтаксис команды:
ausearch [опции]

Таблица 94.7. Опции команды ausearch

Опция
Описание
-a, --event <идентификатор события>
Искать события с заданным идентификатором события. В сообщении: msg=audit(1116360555.329:2401771), идентификатор события — число после «:». Все записи, относящиеся к одному системному вызову, имеют одинаковый идентификатор
--arch <CPU>
Искать события для указанной архитектуры процессора. Определить архитектуру можно командой uname –m. Если архитектура неизвестна, необходимо b32 для 32-битных системных вызовов, если она поддерживается ПЭВМ, можно использовать b32 или b64 для 64-битных
-c, --comm <comm-name>
Искать события с заданным «comm name», именем исполняемого файла из структуры задачи
--debug
Записывать отладочные сообщения в stderr
--checkpoint <файл контрольной точки>
Контрольная точка — это вывод между последовательными вызовами ausearch, так что в последующих вызовах будут выводиться только события, не попавшие в предыдущий вывод.
Событие auditd состоит из одной или нескольких записей. При обработке события ausearch определяет события как завершенные и незавершенные. Завершенное событие — это одно событие записи или то, которое произошло раньше, чем за две секунды по сравнению с текущим обрабатываемым событием. Контрольная точка обеспечивается путем записи последнего завершенного события вывода вместе с номером устройства и индексом файла последнего завершившегося события в файл контрольной точки. При следующем вызове ausearch загрузит данные контрольной точки и при обработке файлов журнала, будет отбрасывать все завершенные события, пока они не соответствуют контрольной точке, в этот момент ausearch начнет выводить события
--eoe-timeout <секунды>
Установить тайм-аут для определения окончания события. Это значение переопределяет настройку из /etc/auditd/auditd.conf
-e, --exit <код>
Искать события по коду возврата системного вызова exit или errno
--escape <режим>
Указать способ экранирования вывода. Возможные значения: raw, tty, shell и shell_quote. Каждый следующий режим включает правила предыдущего и добавляет дополнительное экранирование. Значение по умолчанию — tty
--extra-keys
Если параметр format имеет значение csv, добавить столбец с дополнительной информацией.
Доступно только для записей SYSCALL, созданных по правилам аудита с указанием ключа (-k)
--extra-labels
Если параметр format имеет значение csv, добавить метки субъекта и объекта (если они присутствуют)
--extra-obj2
Если параметр format имеет значение csv, добавить информацию о втором объекте (если он существует). Второй объект иногда является частью записи, например, при переименовании файла или монтировании устройства
--extra-time
Если параметр format имеет значение csv, добавить информацию о времени простоя
-f, --file <файл>
Искать события, связанные с указанным именем файла
--format <режим>
Указать формат вывода. Поддерживаемые форматы: raw, default, interpret, csv и text. Значение raw описано в опции raw. При значении default строки выводятся без форматирования, в выводе используется одна строка в качестве визуального разделителя, далее указывается метка времени, а затем следуют записи события. Значение interpret объясняется в описании опции -i. При значении csv результат поиска выводится в формате CSV. Значение text преобразует вывод к формату предложений, что упрощает понимание вывода, но происходит это за счет потери деталей
-ga, --gid-all <идентификатор группы>
Искать события по указанному идентификатору группы или имени группы, независимо от того, является ли он действительным (real) или эффективным (effective)
-ge, --gid-effective <эффективный идентификатор группы>
Искать события по указанному эффективному идентификатору группы
-gi, --gid <идентификатор группы>
Искать события по указанному идентификатору группы или имени группы
-h, --help
Справка
-hn, --host <имя узла>
Искать события с указанным именем узла. Поддерживаются: имя хоста, FQDN или IP-адрес
-i, --interpret
Преобразовать числовые значения в текстовые. Например, идентификатор пользователя будет преобразован в имя пользователя. Преобразование выполняется с использованием данных с той машины, где запущена команда ausearch
-if, --input <файл>|<каталог>
Использовать указанный файл или каталог вместо стандартных журналов аудита. Это может быть полезно при анализе логов с другой машины или при анализе частично сохраненных логов
--input-logs
Использовать путь к логам из auditd.conf. Применяется при использовании команды ausearch в задании cron
--just-one
Остановиться после после вывода первого найденного события
-k, --key <ключевое слово>
Искать события по заданному ключевому слову
-l, --line-buffered
Сбрасывать буфер вывода после каждой строки
-m, --message <тип>|<список типов>
Искать события по типу записи. Можно указать несколько типов через запятую. Допустимо использовать «ALL» для вывода всех типов. Тип может быть строкой или числом. Пробелы в списке не допускаются
-n , --node
Искать события с указанного узла. Можно указать несколько узлов (для вывода достаточно совпадение любого узла)
-p, --pid <идентификатор процесса>
Искать события по идентификатору процесса
-pp, --ppid <идентификатор процесса>
Искать события по идентификатору родительского процесса
-r, --raw
Выводить записи в необработанном виде. Подходит для дальнейшего анализа
-sc, --syscall <системный вызов>
Искать события по системному вызову. Можно указать имя или номер. Имена проверяются по таблице системных вызовов на машине, где запущена команда ausearch
--session <идентификатор сеанса>
Искать события по идентификатору сеанса. Этот атрибут устанавливается при входе пользователя в систему и может связать любой процесс с определенным именем пользователя
-sv, --success <флаг>
Искать события по флагу успешности выполнения. Допустимые значения: yes (успешно) и no (неудачно)
-te, --end <дата> <время>
Искать события, которые произошли раньше (или во время) указанной временной точки. Формат даты и времени зависит от региональных настроек. Если дата не указана, используется текущий день (today). Если время не указано — текущий момент (now)
--ts, --start <дата> <время>
Искать события, которые произошли после (или во время) указанной временной точки
-tm, --terminal <терминал>
Искать события с заданным терминалом. Некоторые службы (например, cron и atd) используют имя службы как имя терминала
-ua, --uid-all <идентификатор пользователя>
Искать события, где любой из идентификатора пользователя, эффективного идентификатора пользователя или loginuid (auid) совпадает с заданным
-ue, --uid-effective <эффективный идентификатор пользователя>
Искать события по эффективному идентификатору пользователя (EUID)
-ui, --uid <идентификатор пользователя>
Искать события по идентификатору пользователя (UID)
-ul, --loginuid <идентификатор пользователя>
Искать события по идентификатору пользователя входа (loginuid). Все программы, которые его используют, должны использовать pam_loginuid
-uu, --uuid <идентификатор>
Искать события по идентификатору гостевой системы
-v, --version
Показать версию и выйти
--vm, --vm-name <имя>
Искать события по имени гостевой системы
-x, --executable <программа>
Искать события по имени исполняемого файла
Время следует указывать в 24-часовом формате. Например, дата может быть задана как «10/24/2005», а время — как «18:00:00». Также допускается использовать следующие ключевые слова:
  • now — текущий момент времени;
  • recent — десять минут назад;
  • boot — время за секунду до того, когда система загружалась в последний раз;
  • today — первая секунда после полуночи текущего дня;
  • yesterday — первая секунда после полуночи предыдущего дня;
  • this-week — первая секунда после полуночи первого дня текущей недели, первый день недели определяется из региональных настроек;
  • week-ago — первая секунда после полуночи ровно 7 дней назад;
  • this-month — первая секунда после полуночи первого числа текущего месяца;
  • this-year — первая секунда после полуночи первого числа первого месяца текущего года.

94.6. Настройка ротации журналов аудита

Правила ротации журналов аудита настраиваются в файле /etc/audit/auditd.conf.
Например, для того чтобы при нехватке места на диске старые записи затирались новыми, необходимо внести следующие изменения в файл /etc/audit/auditd.conf:
max_log_file = 8
space_left = 100
space_left_action = ROTATE
где:
  • max_log_file — максимальный размер файла журнала в Мбайт;
  • space_left — минимум свободного пространства в Мбайт;
  • space_left_action — действие (в данном случае старые файлы журналов будут удаляться, освобождая место для новых).
После внесения изменения в файл /etc/audit/auditd.conf, для того чтобы новые настройки вступили в силу, необходимо перечитать конфигурацию auditd:
# service auditd reload

94.7. Определение правил аудита

Система аудита работает на основе набора правил, определяющих, что должно фиксироваться в файлах журналов. Можно указать следующие типы правил аудита:
  • правила конфигурации — правила позволяющие изменить поведение системы аудита и некоторых её настроек;
  • правила файловой системы — позволяют проверять доступ к определенному файлу или каталогу;
  • правила системных вызовов — регистрируют системные вызовы, выполняемые указанной программой.
Правила аудита могут быть установлены:
  • в командной строке с помощью утилиты auditctl (эти правила не сохраняются после перезагрузки системы);
  • в файлах /etc/audit/rules.d/*.rules.

Примечание

Примеры правил аудита можно просмотреть в каталоге /usr/share/audit-rules. Чтобы использовать их, достаточно скопировать выбранные правила в /etc/auditd/rules.d.

94.7.1. Установка правил с помощью auditctl

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

Примечание

Все команды, которые взаимодействуют со службой аудита и файлами журнала аудита, требуют привилегий root.
Правила аудита бывают 3 видов: команды управления (control), правила файловой системы (file) и правила системных вызовов (syscall).
Команды управления обычно включают настройку системы аудита, а не указание, за чем ей следить. Обычно эти правила находятся в верхней части файла правил.
Примеры правил изменения конфигурации:
  • установить максимальное количество существующих буферов аудита в ядре:
    # auditctl -b 256
    
  • установить способ обработки для флага сбоя (действие, которое выполняется при обнаружении критической ошибки):
    # auditctl -f 2
    
    в данной конфигурации в случае критической ошибки будет вызван kernel panic;
  • защитить конфигурацию аудита от изменений:
    # auditctl -e 2
    
    в результате все попытки изменить конфигурацию аудита будет отвергнуты:
    Operation not permitted
    
  • вывести конфигурацию аудита:
    # auditctl -s
    
  • вывести список всех загруженных в данный момент правил аудита:
    # auditctl -l
    
  • удалить все загруженные в данный момент правила аудита:
    # auditctl -D
    

Примечание

Есть два способа получения информации о работе системы аудита:
  • получить базовую информацию можно, выполнив команду:
    # auditctl -s
    enabled 1
    failure 1
    pid 795
    rate_limit 0
    backlog_limit 8192
    lost 0
    backlog 0
    backlog_wait_time 60000
    backlog_wait_time_actual 0
    loginuid_immutable 0 unlocked
    
  • получить внутренние метрики аудита, выполнив команды:
    # auditctl --signal state
    # cat /var/run/auditd.state
    audit version = 4.0.5
    current time = 10/14/25 20:32:41
    process priority = -4
    writing to logs = yes
    current log size = 708 KB
    max log size = 5120 KB
    logs detected last rotate/shift = 0
    space left on partition = yes
    Logging partition free space 35335 MB
    space_left setting 75 MB
    admin_space_left setting 50 MB
    logging suspended = no
    file system space action performed = no
    admin space action performed = no
    disk error detected = no
    Number of active plugins = 0
    current plugin queue depth = 0
    max plugin queue depth used = 0
    plugin queue size = 0
    plugin queue overflow detected = no
    plugin queueing suspended = no
    listening for network connections = no
    
Правила файловой системы используются для аудита доступа к определенным файлам или каталогам. Если путь, указанный в правиле наблюдения, является каталогом, то используемое правило рекурсивно применяется к нижней части дерева каталогов, исключая любые каталоги, которые могут быть точками монтирования.
Чтобы определить правило файловой системы, используется следующий синтаксис:
# auditctl -a always,exit -F arch=b64 -F path=путь_к_файлу -F perm=разрешения -F key=имя_ключа
где:
  • путь_к_файлу — файл или каталог, подлежащий аудиту;
  • разрешения — разрешения, которые регистрируются:
    • r — доступ на чтение файла или каталога;
    • w — доступ на запись к файлу или каталогу;
    • x — доступ на исполнение к файлу или каталогу;
    • a — изменение атрибута файла или каталога;
  • имя_ключа — необязательная строка, которая помогает определить, какое правило или набор правил создали конкретную запись в журнале.
Для лучшей производительности следует указать поле arch в правиле.
Примеры правил файловой системы:
  • записывать все попытки изменения файла /etc/shadow:
    # auditctl -a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=shadow
    
  • записывать все попытки изменения файлов в каталоге /etc/httpd2/:
    # auditctl -a always,exit -F arch=b64 -F dir=/etc/httpd2/ -F perm=wa -F key=apache
    
  • регистрировать выполнение команды /sbin/modprobe:
    # auditctl -a always,exit -F arch=b64 -F path=/sbin/modprobe -F perm=x -F key=modules
    
Правила системных вызовов загружаются в механизм сопоставления, который перехватывает каждый системный вызов, который делают все программы в системе. Очень важно использовать правила системных вызовов только тогда, когда это необходимо, поскольку они влияют на производительность. Чем больше правил, тем больше падение производительности. Можно повысить производительность, объединяя системные вызовы в одно правило, когда это возможно.
Для добавления правил системных вызовов используется следующая форма записи:
# auditctl -a список,действие -F arch=[b64|b32] -S имя_системного_вызова -F фильтры -k имя_ключа
Здесь список — это список событий, в который следует добавить правило. Доступные списки:
  1. task — добавить правило к списку, отвечающему за процессы. Этот список правил используется только во время создания процесса — когда родительский процесс вызывает fork() или clone(). При использовании этого списка можно использовать только те поля, которые известны во время создания процесса (uid, gid и так далее);
  2. exit — добавить правило к списку, отвечающему за точки выхода из системных вызовов. Этот список применяется, когда необходимо создать событие для аудита, привязанное к точкам выхода из системных вызовов;
  3. user — добавить правило, отвечающее за список фильтрации пользовательских сообщений. Этот список используется ядром, чтобы отфильтровать события, приходящие из пользовательского пространства, перед тем как они будут переданы службе аудита. Могут быть использованы только следующие поля: uid, auid, gid, pid, subj_user, subj_role, subj_type, subj_sen, subj_clr, и msgtype. Все остальные поля будут обработаны, как если бы они не совпали;
  4. exclude — добавить правило к списку, отвечающего за фильтрацию событий определенного типа. Этот список используется, чтобы отфильтровывать ненужные события. События могут быть исключены по идентификатору процесса, идентификатору пользователя, идентификатору группы, идентификатору логина пользователя, типу сообщения или контексту предмета.
Второй параметр опции -a — это действие, которое должно произойти в ответ на возникшее событие:
  1. never — аудит не будет генерировать никаких записей. Может использоваться для подавления генерации событий. Обычно необходимо подавлять генерацию сверху списка, а не снизу, поскольку событие инициируется на первом совпавшем правиле;
  2. always — установить контекст аудита. Всегда заполнять его во время входа в системный вызов, и всегда генерировать запись во время выхода из системного вызова.
Далее указывается опция -S, задающая имя системного вызова, при обращении к которому должен срабатывать триггер (например, open, close, exit). Вместо имени может быть использовано числовое значение. Можно указать более одного системного вызова в правиле, указав еще одну опцию -S.
Одна или несколько опций -F используются для указания дополнительных параметров фильтрации события.
Примеры правил системных вызовов:
  • вести журнала событий, связанных с использованием системного вызова open(), и регистрировать при этом только обращения к файлам каталога /etc:
    # auditctl -a always,exit -F arch=b64 -S open -F dir=/etc/
    
  • регистрировать только те события, при которых файл открывается только на запись и изменение атрибутов:
    # auditctl -a always,exit -F arch=b64 -S open -F dir=/etc/ -F perm=aw
    
  • записывать все системные вызовы, используемые определённым процессом:
    # auditctl -a always,exit -F arch=b64 -S all -F pid=1005
    
  • записывать все файлы, открытые определённым пользователем:
    # auditctl -a always,exit -F arch=b64 -S openat -F auid=1000
    
  • записывать неудачные попытки вызова системной функции openat:
    # auditctl -a exit,always -F arch=b64 -S openat -F success!=0
    
  • записывать попытки изменения файла /etc/shadow:
    # auditctl -a always,exit -F path=/etc/shadow -F perm=wa
    
Чтобы определить правило для исполняемого файла, необходимо использовать следующий синтаксис:
# auditctl -a список,действие [ -F arch=cpu -S имя_системного_вызова] -F exe=путь_к_файлу -k имя_ключа
Например, правило для файла /usr/bin/ping:
# auditctl -a always,exit -F exe=/usr/bin/ping -F arch=b64 -S execve -k execution_ping

94.7.2. Установка постоянных правил в файлах .rules

Чтобы определить правила аудита, сохраняющиеся при перезагрузках, необходимо включить их в файлы *.rules в каталоге /etc/audit/rules.d/.
Скрипт augenrules считывает правила, расположенные в каталоге /etc/audit/rules.d/, и компилирует их в файл /etc/audit/audit.rules. Этот скрипт обрабатывает файлы *.rules, в определенном порядке, основанном на их естественном порядке сортировки.

Примечание

Редактирование /etc/audit/audit.rules вручную не рекомендуется, так как изменения могут быть перезаписаны.
Файлы *.rules должны содержать правила аудита в формате auditctl. Пустые строки и текст после знака решетки (#) игнорируются. В файл записываются правила без имени команды. Например:
-a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=passwd
Команду auditctl также можно использовать для чтения правил из указанного файла с помощью опции -R, например:
# auditctl -R /home/user/audit/rules/30-net.rules
Файл .rules может содержать только следующие правила контроля, изменяющие поведение системы аудита: -b, -D, -e, -f, -r, --loginuid-immutable и --backlog_wait_time. Например:
# Удалить все предыдущие правила
-D

# Установить размер буфера
-b 8192

# Защитить конфигурацию аудита от изменений
-e 2
Правила файловой системы и системных вызовов определяются в файлах .rules с использованием синтаксиса auditctl. Например:
-a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=shadow
-a always,exit -F arch=b64 -F path=/sbin/modprobe -F perm=x -F key=modules

-a always,exit -F arch=b64 -S openat -F auid=1000
Чтобы загрузить правила из каталога /etc/audit/rules.d/ следует запустить службу audit-rules:
# systemctl start audit-rules.service
или выполнить команду augenrules с параметром --load:
# augenrules --load
Проверить загруженные правила можно, выполнив команду:
# auditctl -l

94.7.3. Файлы журнала аудита

По умолчанию система аудита сохраняет записи журнала в файле /var/log/audit/audit.log.
События аудита бывают двух видов: простые и составные. Простое событие отправляется из доверенного приложения, например, sshd. Такое событие содержит только одну запись. Составное событие содержит несколько записей об одном и том же событии. Записи, относящиеся к одному и тому же событию, имеют одинаковую временную метку и серийный номер.
Для примера создадим правило аудита, которое регистрирует каждую попытку чтения или изменения файла /etc/autofs.conf:
# auditctl -a always,exit -F arch=b64 -F path=/etc/autofs.conf -F perm=warx -F key=autofs
Если служба auditd запущена, выполнение следующей команды создаст новое событие в файле журнала аудита:
$ cat /etc/autofs.conf
Событие в /var/log/audit/audit.log:
type=SYSCALL msg=audit(1742997845.965:860): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffd62966448 a2=0 a3=0 items=1 ppid=16840 pid=22257 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=90 comm="cat" exe="/usr/bin/cat" key="autofs"ARCH=x86_64 SYSCALL=openat AUID="user" UID="user" GID="user" EUID="user" SUID="user" FSUID="user" EGID="user" SGID="user" FSGID="user"
type=CWD msg=audit(1742997845.965:860): cwd="/home/user"
type=PATH msg=audit(1742997845.965:860): item=0 name="/etc/autofs.conf" inode=1051168 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0OUID="root" OGID="root"
type=PROCTITLE msg=audit(1742997845.965:860): proctitle=636174002F6574632F6175746F66732E636F6E66
Данное событие состоит из четырех записей, имеющих один серийный номер и одну и ту же отметку времени. Каждая запись состоит из нескольких пар имя=значение, разделенных пробелом или запятой. Ниже каждая запись рассмотрена подробнее.

Примечание

Некоторые значения в журнале закодированы в шестнадцатеричном формате. При поиске записей аудита с помощью команды ausearch можно использовать параметр -i для автоматического преобразования шестнадцатеричных значений в удобочитаемые эквиваленты.
Первая запись:
  • type=SYSCALL — тип записи. Значение SYSCALL указывает, что запись была вызвана системным вызовом ядра;
  • msg=audit(1742997845.965:860) — в поле msg записывается:
    • отметка времени и уникальный идентификатор записи в формате audit(time_stamp:ID). Несколько записей могут иметь одну и ту же отметку времени и идентификатор, если они были созданы в рамках одного и того же события аудита. Отметка времени использует формат времени Unix (секунды с 00:00:00 UTC 1 января 1970 года);
    • различные пары имя=значение, зависящие от события, предоставляемые приложениями ядра или пользовательского пространства;
  • arch=c000003e — содержит информацию об архитектуре ЦП системы. Значение c000003e закодировано в шестнадцатеричном формате (c000003e интерпретируется как x86_64);
  • syscall=257 — тип системного вызова, отправленного ядру. Утилита ausyscall позволяет преобразовывать номера системных вызовов в их удобочитаемые эквиваленты. В данном примере 257 — системный вызов openat;
  • success=yes — указывает, был ли системный вызов, записанный в этом конкретном событии, успешным или неудачным. В данном примере вызов успешный;
  • exit=3 — значение, указывающее код выхода, возвращаемый системным вызовом. Это значение варьируется для разных системных вызовов;
  • a0=ffffff9c a1=7ffc39880600 a2=0 a3=0 — первые четыре аргумента системного вызова в этом событии, закодированные в шестнадцатеричной системе счисления;
  • items=1 — количество вспомогательных записей PATH, следующих за записью системного вызова;
  • ppid=16840 — идентификатор родительского процесса;
  • pid=22257 — идентификатор процесса (PID);
  • auid=1000 — идентификатор пользователя аудита, то есть логин. Этот идентификатор присваивается пользователю при входе в систему и наследуется каждым процессом, даже если личность пользователя меняется, например, при переключении учетных записей пользователей с помощью команды su -;
  • uid=1000 — идентификатор пользователя, запустившего анализируемый процесс. Идентификатор пользователя можно интерпретировать в имя пользователя с помощью команды ausearch -i --uid UID;
  • gid=1000 — идентификатор группы пользователя, запустившего анализируемый процесс;
  • euid=1000 — эффективный идентификатор пользователя, запустившего анализируемый процесс;
  • suid=1000 — установленный идентификатор пользователя, запустившего анализируемый процесс;
  • fsuid=1000 — идентификатор пользователя файловой системы, запустившего анализируемый процесс;
  • egid=1000 — эффективный идентификатор группы пользователя, запустившего анализируемый процесс;
  • sgid=1000 — заданный групповой идентификатор пользователя, запустившего анализируемый процесс;
  • fsgid=1000 — идентификатор группы файловой системы пользователя, запустившего анализируемый процесс;
  • tty=pts2 — терминал, с которого был вызван анализируемый процесс;
  • ses=90 — идентификатор сеанса, из которого был вызван анализируемый процесс;
  • comm="cat" — имя команды, которая использовалась для вызова анализируемого процесса;
  • exe="/usr/bin/cat" — путь к исполняемому файлу, который использовался для запуска анализируемого процесса;
  • key="autofs" — определенная администратором строка, связанная с правилом, создавшим это событие в журнале аудита;
Вторая запись:
  • type=CWD — тип записи. Значение CWD используется для записи рабочего каталога, из которого был выполнен процесс, вызвавший системный вызов, указанный в первой записи. Цель этой записи — записать местоположение текущего процесса на случай, если относительный путь будет зафиксирован в связанной записи PATH. Так можно восстановить абсолютный путь;
  • cwd="/home/user" — путь к каталогу, в котором был вызван системный вызов.
Третья запись:
  • type=PATH — событие аудита содержит запись типа PATH для каждого пути, который передается системному вызову в качестве аргумента. В этом событии аудита в качестве аргумента использовался только один путь (/etc/autofs.conf);
  • item=0 — указывает, какой элемент из общего числа элементов, указанных в записи типа SYSCALL, является текущей записью. Это число начинается с нуля; значение 0 означает, что это первый элемент;
  • name="/etc/autofs.conf" — путь к файлу или каталогу, который был передан системному вызову в качестве аргумента;
  • inode=1051168 — номер индексного дескриптора, связанный с файлом или каталогом, записанным в этом событии. Отобразить файл или каталог, связанный с номером индексного дескриптора можно, выполнив команду:
    # find / -inum 1051168 -print
    /etc/autofs.conf
    
  • dev=08:02 — вспомогательный и основной идентификатор устройства, которое содержит файл или каталог, записанный в этом событии (в данном примере /dev/08/02);
  • mode=0100644 — права доступа к файлу или каталогу, закодированные в числовой форме, возвращаемые командой stat в поле st_mode (в данном примере -rw-r--r--);
  • ouid=0 — идентификатор пользователя владельца объекта;
  • ogid=0 — идентификатор группы владельца объекта;
  • rdev=00:00 — записанный идентификатор устройства только для специальных файлов. В данном случае он не используется, поскольку записанный файл является обычным файлом;
  • nametype=NORMAL — указывает на тип пути в контексте события. Возможные значения:
    • NORMAL — обычный путь к файлу, который был использован в системном вызове;
    • DELETE — путь к файлу, который был удалён;
    • PARENT — путь к родительскому каталогу целевого файла;
    • CREATE — путь к новому файлу, который был создан;
    • UNKNOWN — неизвестный тип пути.
    Значение nametype=NORMAL здесь означает, что /etc/autofs.conf является целевым файлом операции;
  • cap_fp=0 — данные, относящиеся к настройке разрешенных возможностей файловой системы для объекта файла или каталога;
  • cap_fi=0 — данные, относящиеся к настройке унаследованных возможностей файловой системы для объекта файла или каталога;
  • cap_fe=0 — установка эффективного бита возможностей файловой системы объекта файла или каталога;
  • cap_fver=0 — версия возможностей файловой системы объекта файла или каталога.
  • cap_frootid=0OUID="root" OGID="root" — указывает, что файл /etc/autofs.conf принадлежит пользователю root и группе root.
Четвёртая запись:
  • type=PROCTITLE — тип записи. Значение PROCTITLE указывает, что эта запись содержит полную командную строку, которая инициировала это событие аудита, вызванное системным вызовом ядра;
  • proctitle — полная командная строка, которая использовалась для запуска анализируемого процесса. Поле закодировано в шестнадцатеричном формате. Текст декодируется в команду, которая вызвала это событие аудита. При поиске записей аудита с помощью команды ausearch следует использовать параметр -i для автоматического преобразования шестнадцатеричных значений в удобочитаемые эквиваленты. Значение 636174002F6574632F6175746F66732E636F6E66 интерпретируется в «cat /etc/autofs.conf».
Эти же записи в выводе команды ausearch -i:
# ausearch -i -k autofs
----
type=PROCTITLE msg=audit(14.10.2025 16:04:05.965:860) : proctitle=cat /etc/autofs.conf
type=PATH msg=audit(14.10.2025 16:04:05.965:860) : item=0 name=/etc/autofs.conf inode=1051168 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(14.10.2025 16:04:05.965:860) : cwd=/home/user
type=SYSCALL msg=audit(14.10.2025 16:04:05.965:860) : arch=x86_64 syscall=openat success=yes exit=3 a0=AT_FDCWD a1=0x7ffd62966448 a2=O_RDONLY a3=0x0 items=1 ppid=16840 pid=22257 auid=user uid=user gid=user euid=user suid=user fsuid=user egid=user sgid=user fsgid=user tty=pts2 ses=90 comm=cat exe=/usr/bin/cat key=autofs

94.7.4. Примеры

94.7.4.1. Запуск и завершение выполнения функций аудита

Поиск записей аудита, связанных с запуском и завершением функции аудита:
# ausearch -m DAEMON_START -m DAEMON_END
----
time->Tue Oct 14 15:12:53 2025
type=DAEMON_START msg=audit(1742988833.862:4634): op=start ver=4.0.5
format=enriched kernel=6.12.45-6.12-alt1 auid=4294967295 pid=5631 uid=0 ses=4294967295 res=success
----
time->Tue Oct 14 15:13:53 2025
type=DAEMON_END msg=audit(1742994773.359:4635): op=terminate auid=0 uid=0 ses=4294967295 pid=1 res=success
----
time->Tue Oct 14 15:16:53 2025
type=DAEMON_START msg=audit(1742995147.170:2639): op=start ver=4.0.5
format=enriched kernel=6.12.45-6.12-alt1 auid=4294967295 pid=16461 uid=0 ses=4294967295 res=success

94.7.4.2. Модификация конфигурации аудита

События модификации конфигурации аудита, происходящие во время сбора данных аудита, записываются в файл журнала аудита /var/log/audit/audit.log.
Поиск записей аудита, связанных с модификацией конфигурации аудита:
# ausearch -m CONFIG_CHANGE
----
time->Tue Oct 14 15:24:01 2025
type=PROCTITLE msg=audit(1742995441.576:556): proctitle=617564697463746C002D660032
type=SOCKADDR msg=audit(1742995441.576:556): saddr=100000000000000000000000
type=SYSCALL msg=audit(1742995441.576:556): arch=c000003e syscall=44 success=yes exit=60 a0=3 a1=7ffccc6a5f50 a2=3c a3=0 items=0 ppid=2648 pid=16536 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10 comm="auditctl" exe="/usr/sbin/auditctl" key=(null)
type=CONFIG_CHANGE msg=audit(1742995441.576:556): op=set audit_failure=2 old=1 auid=1000 ses=10 res=1
Можно также создать правило аудита, которое будет отслеживать изменения конфигурации аудита:
# auditctl -a always,exit -F arch=b64 -F path=/etc/audit -F perm=w -F key=audit_config
Найти такие записи аудита можно, выполнив команду:
# ausearch -k audit_config
----
time->Tue Oct 14 15:26:36 2025
type=PROCTITLE msg=audit(1742995596.829:558): proctitle=617564697463746C002D77002F6574632F6175646974002D700077002D6B0061756469745F636F6E666967
type=PATH msg=audit(1742995596.829:558): item=0 name="/etc/audit" inode=1050346 dev=08:02 mode=040700 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1742995596.829:558): cwd="/root"
type=SOCKADDR msg=audit(1742995596.829:558): saddr=100000000000000000000000
type=SYSCALL msg=audit(1742995596.829:558): arch=c000003e syscall=44 success=yes exit=1080 a0=4 a1=7ffd79dbf240 a2=438 a3=0 items=1 ppid=2648 pid=16559 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10 comm="auditctl" exe="/usr/sbin/auditctl" key=(null)
type=CONFIG_CHANGE msg=audit(1742995596.829:558): auid=1000 ses=10 op=add_rule key="audit_config" list=4 res=1

94.7.4.3. События, связанные с операцией чтения записей аудита

Можно создать правило аудита, связанное с неуспешными попытками чтения записей аудита:
# auditctl -a always,exit -F arch=b64 -S open -F exit=-EACCES -F key=open -k audit_log_EACCES
# auditctl -a always,exit -F arch=b64 -S open -F exit=-EPERM -F key=open -k audit_log_EPERM
После попыток прочитать данные аудита напрямую из файла /var/log/audit/audit.log и с помощью команды ausearch от имени обычного пользователя:
$ cat /var/log/audit/audit.log
cat: /var/log/audit/audit.log: Отказано в доступе
$ /sbin/ausearch -i -k audit_log
Error opening config file (Отказано в доступе)
NOTE - using built-in end_of_event_timeout: 2
NOTE - using built-in logs: /var/log/audit/audit.log
Error opening /var/log/audit/audit.log (Отказано в доступе
Будут созданы следующие записи, связанные с операцией чтения записей аудита:
# ausearch -i -k audit_log
----
type=PROCTITLE msg=audit(14.10.2025 15:56:57.706:818) : proctitle=auditctl -a always,exit -F arch b64 -S open -F exit -EACCES -F key=open -k audit_log_EACCES
type=SOCKADDR msg=audit(14.10.2025 15:56:57.706:818) : saddr={ saddr_fam=netlink nlnk-fam=16 nlnk-pid=0 }
type=SYSCALL msg=audit(14.10.2025 15:56:57.706:818) : arch=x86_64 syscall=sendto success=yes exit=1080 a0=0x4 a1=0x7ffdd2ea59c0 a2=0x438 a3=0x0 items=0 ppid=5446 pid=22054 auid=user uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=56 comm=auditctl exe=/usr/sbin/auditctl key=(null)
type=CONFIG_CHANGE msg=audit(14.10.2025 15:56:57.706:818) : auid=user ses=56 op=add_rule key=open key=audit_log_EACCES list=exit res=yes
----
type=PROCTITLE msg=audit(14.10.2025 15:57:04.099:819) : proctitle=auditctl -a always,exit -F arch b64 -S open -F exit -EPERM -F key=open -k audit_log_EPERM
type=SOCKADDR msg=audit(14.10.2025 15:57:04.099:819) : saddr={ saddr_fam=netlink nlnk-fam=16 nlnk-pid=0 }
type=SYSCALL msg=audit(14.10.2025 15:57:04.099:819) : arch=x86_64 syscall=sendto success=yes exit=1076 a0=0x4 a1=0x7ffeceb891b0 a2=0x434 a3=0x0 items=0 ppid=5446 pid=22056 auid=user uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=56 comm=auditctl exe=/usr/sbin/auditctl key=(null)
type=CONFIG_CHANGE msg=audit(14.10.2025 15:57:04.099:819) : auid=user ses=56 op=add_rule key=open key=audit_log_EPERM list=exit res=yes

94.7.4.4. Хранение журнала аудита

Аудит регистрирует события следующего типа:
  • DAEMON_ERR — служба аудита остановилась из-за внутренней ошибки;
  • DAEMON_RESUME — служба аудита возобновила ведение журнал;
  • DAEMON_ROTATE — произошла ротация файлов журнала аудита;
  • DAEMON_ABORT — служба аудита остановилась из-за ошибки.
Поиск записей аудита, сделанных при ротации файлов журнала аудита:
# ausearch -m DAEMON_ROTATE

94.7.4.5. Аудит попыток экспорта информации

Создание правила для записей аудита, связанных с попытками экспортировать информацию:
# auditctl -a always,exit -F arch=b64 -S open,openat
Поиск записей аудита, связанных с попытками экспортировать информацию:
# ausearch -x /usr/bin/rsync | head

94.7.4.6. Аудит событий, связанных с достижением ограничения неуспешных попыток аутентификации

Примечание

Должна быть настроена блокировка учётной записи после последовательных неудачных входов в систему. Например, блокирование учётной записи после четырёх последовательных неудачных входов в систему в течение пяти минут (файл /etc/pam.d/system-auth-local-only):
auth            requisite       pam_faillock.so preauth deny=4 unlock_time=300
auth            sufficient      pam_tcb.so shadow fork nullok
auth            [default=die]   pam_faillock.so authfail deny=4 unlock_time=300
account         required        pam_faillock.so
account         required        pam_tcb.so shadow fork
password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        required        pam_tcb.so use_authtok shadow fork nullok write_to=tcb
session         required        pam_tcb.so
Поиск записей, связанных с достижением ограничения неуспешных попыток аутентификации:
# ausearch -i -m RESP_ACCT_LOCK -m ANOM_LOGIN_FAILURES
----
type=ANOM_LOGIN_FAILURES msg=audit(14.10.2025 16:39:27.183:926) :
pid=22772 uid=root auid=unset ses=unset msg='op=pam_faillock suid=user
exe=/usr/bin/login hostname=node03 addr=? terminal=tty5 res=success'
----
type=RESP_ACCT_LOCK msg=audit(14.10.2025 16:39:27.183:927) :
pid=22772 uid=root auid=unset ses=unset msg='op=pam_faillock suid=user
exe=/usr/bin/login hostname=node03 addr=? terminal=tty5 res=success'
Событие разблокировки пользователя (faillock --user <пользователь> --reset) попадает в аудит с типом USER_ACCT и msg=pam_faillock:
# ausearch -i -m USER_ACCT

94.7.4.7. Использование механизма идентификации и аутентификации

Поиск записей аудита, связанных с использованием механизма аутентификации:
# ausearch -m USER_AUTH
----
time->Tue Oct 14 15:44:59 2025
type=USER_AUTH msg=audit(1742996699.788:610):
pid=16404 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=? acct="user"
exe="/usr/bin/login" hostname=node03 addr=? terminal=/dev/tty3 res=failed'
----
time->Tue Oct 14 15:45:23 2025
type=USER_AUTH msg=audit(1742996723.533:613):
pid=16825 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=pam_userpass,pam_tcb acct="user"
exe="/usr/sbin/sshd" hostname=192.168.0.177 addr=192.168.0.177 terminal=ssh res=success'
Поиск записей аудита, связанных с использованием механизма идентификации:
# ausearch -m USER_LOGIN -i
----
type=USER_LOGIN msg=audit(14.10.2025 15:45:01.212:611) :
pid=16404 uid=root auid=unset ses=unset msg='op=login acct=user
exe=/usr/bin/login hostname=node03 addr=? terminal=/dev/tty3 res=failed'
----
type=USER_LOGIN msg=audit(14.10.2025 15:45:23.609:619) :
pid=16825 uid=root auid=user ses=90 msg='op=login id=user
exe=/usr/sbin/sshd hostname=192.168.0.177 addr=192.168.0.177 terminal=/dev/pts/2 res=success'
Команда aureport позволяет вывести отчёт обо всех попытках входа в систему:
# aureport -l
Login Report
============================================
# date time auid host term exe success event
============================================
1. 14.10.2025 15:45:01 user node03 /dev/tty3 /usr/bin/login no 611
2. 14.10.2025 15:45:22 user 192.168.0.177 sshd /usr/sbin/sshd no 612
3. 14.10.2025 15:45:23 1000 192.168.0.177 /dev/pts/2 /usr/sbin/sshd yes 619
4. 14.10.2025 15:47:45 fgf node03 /dev/tty3 /usr/bin/login no 625
5. 14.10.2025 15:52:42 new node03 /dev/tty3 /usr/bin/login no 729
6. 14.10.2025 15:52:47 1000 node03 /dev/tty3 /usr/bin/login yes 735
Отчёт о неудачных попытках входа в систему:
# aureport -l --failed
Отчёт об изменениях пользовательских учетных записей:
# aureport -m
Иногда aureport предоставляет слишком много информации. В этом случае можно объединить команды ausearch и aureport, чтобы получить нужную информацию. Вывод ausearch при этом должен быть в «raw» формате. Например, получить список узлов, с которых пользователи входили в систему на этой неделе:
# ausearch --start this-week -m user_login --raw | aureport --host --summary

Host Summary Report
===========================
total  host
===========================
9  node03
6  192.168.0.177
1  192.168.0.193

94.7.4.8. Регистрация изменений даты и времени

Для регистрации изменений даты и времени необходимо включить контроль над изменением значения времени.
Запись событий, изменяющих время через clock_settime, settimeofday и adjtimex с правилом в зависимости от архитектуры, в примере для 64 бит (AMD, Intel):
# auditctl -a exit,always -F arch=b64 -S clock_settime -S settimeofday -S adjtimex -k FPT_STM
Изменить время с помощью модуля центра управления системой или в системной консоли, командой date.
Поиск записей аудита, связанных с операцией изменения даты и времени:
# ausearch -k FPT_STM
----
time->Tue Oct 14 16:43:15 2025
type=PROCTITLE msg=audit(1743000195.375:1043): proctitle=64617465002D2D7365743D323032352D30332D32352031363A34333A3134
type=TIME_INJOFFSET msg=audit(1743000195.375:1043): sec=-86402 nsec=623885248
type=SYSCALL msg=audit(1743000195.375:1043): arch=c000003e syscall=227 success=yes exit=0 a0=0 a1=7fffa4d5ca30 a2=0 a3=0 items=0 ppid=23512 pid=24273 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts6 ses=4294967295 comm="date" exe="/usr/bin/date" key="FPT_STM"
Пример удаления правила:
# auditctl -d exit,always -F arch=b64 -S clock_settime -S settimeofday -S adjtimex -k FPT_STM

94.7.4.9. Регистрация событий, изменяющих информацию о пользователях/группах

Для фиксации событий, которые вносят изменения в пользовательские аккаунты, можно создать файл /etc/audit/rules.d/20-account_changes.rules со следующим содержимым:
# audit_account_changes
-a always,exit -F arch=b64 -F path=/etc/group -F perm=wa -F key=audit_account_changes
-a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=audit_accout_changes
-a always,exit -F arch=b64 -F path=/etc/gshadow -F perm=wa -F key=audit_account_changes
-a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=audit_account_changes
-a always,exit -F arch=b64 -F path=/etc/security/opasswd -F perm=wa -F key=audit_account_changes
Поиск записей аудита, связанных с операциями изменения информации о пользователях/группах:
# ausearch -k audit_account_changes

94.7.4.10. Регистрация запуска ПО

Для аудита запуска ПО создать файл /etc/audit/rules.d/50-execprog.rules с правилами в зависимости от архитектуры, в примере 64 бит (AMD, Intel):
-a  always,exit -F arch=b64 -S open,openat,execve -F exit=-EACCES -F key="AVC"
-a  always,exit -F arch=b64 -S open,openat,execve -F exit=-EPERM -F key="AVC"
Поиск записей аудита:
# ausearch -k AVC

Часть XIV. Техническая поддержка продуктов «Базальт СПО»

Глава 95. Покупателям нашей продукции

«Базальт СПО» предоставляет следующие виды технической поддержки:
  • Поддержка продукта входит в стоимость лицензии и включает регулярный выпуск обновлений, исправление ошибок, устранение уязвимостей в течение всего срока жизни дистрибутива.
  • Поддержка пользователей обеспечивает качественную эксплуатацию продукта. Техническая поддержка эксплуатации продуктов «Базальт СПО» оказывается в объеме SLA. Доступны три уровня SLA («Базовый», «Стандартный» и «Расширенный»).
Право на получение консультационной и технической поддержки вы приобретаете при покупке большинства продуктов торговой марки Альт. Сроки и объём помощи указаны в сертификате технической поддержки.
Условия технической поддержки можно найти на странице сайта «Базальт СПО»: http://www.basealt.ru/support.

Глава 96. Пользователям нашей продукции

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